Subject: Re: bug#62329: 30.0.50; Error in TRAMP due to variable aliasing

From: Michael Albinus <[email-masked]>
Date: Tue, 21 Mar 2023 17:20:12 +0100

Eshel Yaron <[email-masked]> writes:

 Hi Eshel,

>> I hope to find a fix, soon.
>
> Great, thanks.  In the meantime my dirty workaround is putting the
> following in my init.el:
>
> (with-eval-after-load 'compile
>   (require 'tramp-sh))
>
> This causes the defvaralias call to happen before
> tramp-use-connection-share is localized, which seems to work alright.
> The downside is that tramp-sh is loaded the first time I use M-x compile
> even if I'm only working locally.

In my local environment, I have inverted the definition of the variable
alias. This seems to solve the bug.

Could you pls try this patch?

diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 24e90447b24..339eb1fa9ab 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -106,6 +106,8 @@ tramp-initial-end-of-output
 (defconst tramp-end-of-heredoc (md5 tramp-end-of-output)
   "String used to recognize end of heredoc strings.")

+(define-obsolete-variable-alias
+  'tramp-use-ssh-controlmaster-options 'tramp-use-connection-share "30.1")
 (defcustom tramp-use-connection-share (not (eq system-type 'windows-nt))
   "Whether to use connection share in ssh or PuTTY.
 Set it to t, if you want Tramp to apply respective options. These
@@ -122,11 +124,6 @@ tramp-use-connection-share
   ;; Check with (safe-local-variable-p 'tramp-use-connection-share 'suppress)
   :safe (lambda (val) (and (memq val '(t nil suppress)) t)))

-(defvaralias 'tramp-use-connection-share 'tramp-use-ssh-controlmaster-options)
-(make-obsolete-variable
- 'tramp-use-ssh-controlmaster-options
- "Use `tramp-use-connection-share' instead" "30.1")
-
 (defvar tramp-ssh-controlmaster-options nil
   "Which ssh Control* arguments to use.

Thanks, and best regards, Michael.