Subject: bug#53644: 29.0.50; xref-search-program breaks if programm not installed on a remote host

From: Philip Kaludercic <[email-masked]>
Date: Tue, 08 Feb 2022 21:16:41 +0000

Michael Albinus <[email-masked]> writes:

> Philip Kaludercic <[email-masked]> writes:
>
> Hi Philip,
>
>> Ok, I missed that.  But the question still remains for versions of Emacs
>> prior to 27.1.  What would you advise to do there?
>>
>> For context: In my specific case, I am using Guix so shell-file-name
>> something like
>> /gnu/store/87kif0bpf0anwbsaw0jvg8fyciw4sz67-bash-5.0.16/bin/bash.
>> Virtually every server I might connect to does not have this path (tough
>> "/bin/sh" works in that case (which would break other systems like
>> adb)).  So I don't think a version check would suffice.  All it does in
>> the patch I provided above is provide a speedup for all greps after the
>> first one.
>
> I would do something like this (untested!):
>
> (defmacro my-with-connection-local-variables (&rest body)
>   "Ensure, that `shell-file-name' and `xref-search-program' have proper values."
>   (if (bound-and-true-p enable-connection-local-variables)
>       `(with-connection-local-variables ,@body)
>     `(if (file-remote-p default-directory)
> 	 (let ((shell-file-name "/bin/sh") ;; Adapt
> 	       (xref-search-program "/bin/gerep")) ;; Adapt

But the question here remains precisely what to use instead of the
literal "/bin/sh"?

> 	   ,@body)
>        ,@body)))
> Best regards, Michael.

-- 
	Philip Kaludercic