Subject: emacs-ess (native-compilation): tramp and local shell used by tests

From: zimoun <[email-masked]>
Date: Fri, 21 Oct 2022 16:51:47 +0200

Hi,

The package ESS is not often released and we rely on some pinned
commit. The current one is from August 2020 and it does not correctly
support native-compilation (see below).  Upstream fixed some; for
instance let use f45542e723d7415f5e22bcf39f25e31d055d168c.  But then the
test suite is failing with,

--8<---------------cut here---------------start------------->8---
Test ess-mock-remote-process backtrace:
  signal(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  tramp-error(nil file-error "Couldn’t find local shell prompt for /bin/sh")
  tramp-signal-hook-function(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  signal(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  tramp-maybe-open-connection((tramp-file-name "mock" nil nil #("localhost" 0 9 (tramp-default t)) nil "/tmp/guix-build-emacs-ess-

[...]

Test ess-mock-remote-process condition:
    (file-error "Couldn’t find local shell prompt for /bin/sh")
   FAILED   48/157  ess-mock-remote-process (0.018617 sec)

[...]

Test ess-r-load-ESSR-github-fetch-no backtrace:
  signal(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  tramp-error(nil file-error "Couldn’t find local shell prompt for /bin/sh")
  tramp-signal-hook-function(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  signal(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  tramp-maybe-open-connection((tramp-file-name "mock" nil nil #("localhost" 0 9 (tramp-default t)) nil "/tmp/guix-build-emacs-ess-

[...]

Test ess-r-load-ESSR-github-fetch-no condition:
    (file-error "Couldn’t find local shell prompt for /bin/sh")
   FAILED   70/157  ess-r-load-ESSR-github-fetch-no (0.337567 sec)
Test ess-r-load-ESSR-github-fetch-yes backtrace:
  signal(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  tramp-error(nil file-error "Couldn’t find local shell prompt for /bin/sh")
  tramp-signal-hook-function(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  signal(file-error ("Couldn’t find local shell prompt for /bin/sh"))
  tramp-maybe-open-connection((tramp-file-name "mock" nil nil #("localhost" 0 9 (tramp-default t)) nil "/tmp/guix-build-emacs-ess-

[...]

Test ess-r-load-ESSR-github-fetch-yes condition:
    (file-error "Couldn’t find local shell prompt for /bin/sh")
--8<---------------cut here---------------end--------------->8---

And the package ’emacs’ contains,

--8<---------------cut here---------------start------------->8---
                  ;; Make sure Tramp looks for binaries in the right places on
                  ;; remote Guix System machines, where 'getconf PATH' returns
                  ;; something bogus.
                  (substitute* "net/tramp.el"
                    ;; Patch the line after "(defcustom tramp-remote-path".
                    (("\\(tramp-default-remote-path")
                     (format #f "(tramp-default-remote-path ~s ~s ~s ~s "
                             "~/.guix-profile/bin" "~/.guix-profile/sbin"
                             "/run/current-system/profile/bin"
                             "/run/current-system/profile/sbin")))
[...]

          (add-after 'unpack 'patch-program-file-names
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* '("src/callproc.c"
                             "lisp/term.el"
                             "lisp/htmlfontify.el"
                             "lisp/textmodes/artist.el"
                             "lisp/progmodes/sh-script.el")
                (("\"/bin/sh\"")
                 (format #f "~s" (search-input-file inputs "/bin/sh"))))

--8<---------------cut here---------------end--------------->8---

Well, for the record, the starting point is AOT native-compilation
failing with Guix 00ff6f7,

--8<---------------cut here---------------start------------->8---
$ guix build emacs-ess --with-input=emacs-minimal=emacs
[...]

In toplevel form:
ess-inf.el:39:1: Error: Cannot find suitable directory for output in ‘native-comp-eln-load-path’
make[1]: *** [Makefile:48: ess-inf.elc] Error 1
make[1]: Leaving directory '/tmp/guix-build-emacs-ess-18.10.2-0.24da603.drv-0/source/lisp'
make: *** [Makefile:29: lisp] Error 2
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "make" arguments: ("-j" "16" "PREFIX=/gnu/store/p3wxpf95l1rc8kgxsrsgisad1ir1bac6-emacs-ess-18.10.2-0.24da603" "ETCDIR=/gnu/store/p3wxpf95l1rc8kgxsrsgisad1ir1bac6-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/etc" "LISPDIR=/gnu/store/p3wxpf95l1rc8kgxsrsgisad1ir1bac6-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp" "INFODIR=/gnu/store/p3wxpf95l1rc8kgxsrsgisad1ir1bac6-emacs-ess-18.10.2-0.24da603/share/info") exit-status: 2 term-signal: #f stop-signal: #f> 
phase `build' failed after 1.0 seconds
command "make" "-j" "16" "PREFIX=/gnu/store/p3wxpf95l1rc8kgxsrsgisad1ir1bac6-emacs-ess-18.10.2-0.24da603" "ETCDIR=/gnu/store/p3wxpf95l1rc8kgxsrsgisad1ir1bac6-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/etc" "LISPDIR=/gnu/store/p3wxpf95l1rc8kgxsrsgisad1ir1bac6-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp" "INFODIR=/gnu/store/p3wxpf95l1rc8kgxsrsgisad1ir1bac6-emacs-ess-18.10.2-0.24da603/share/info" failed with status 2
builder for `/gnu/store/hhy8qm9wfsqxask40iy9z564fcz1qw9n-emacs-ess-18.10.2-0.24da603.drv' failed with exit code 1
build of /gnu/store/hhy8qm9wfsqxask40iy9z564fcz1qw9n-emacs-ess-18.10.2-0.24da603.drv failed
View build log at '/var/log/guix/drvs/hh/y8qm9wfsqxask40iy9z564fcz1qw9n-emacs-ess-18.10.2-0.24da603.drv.gz'.
guix build: error: build of `/gnu/store/hhy8qm9wfsqxask40iy9z564fcz1qw9n-emacs-ess-18.10.2-0.24da603.drv' failed
--8<---------------cut here---------------end--------------->8---

but this AOT native-compilation issues need another bug report. :-)

Cheers,
simon