GNU bug report logs - #58690
emacs-ess (native-compilation): tramp and local shell used by tests

Previous Next

Package: guix;

Reported by: zimoun <zimon.toutoune <at> gmail.com>

Date: Fri, 21 Oct 2022 14:53:02 UTC

Severity: normal

To reply to this bug, email your comments to 58690 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#58690; Package guix. (Fri, 21 Oct 2022 14:53:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to zimoun <zimon.toutoune <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Fri, 21 Oct 2022 14:53:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: zimoun <zimon.toutoune <at> gmail.com>
To: bug-guix <at> gnu.org
Subject: emacs-ess (native-compilation): tramp and local shell used by tests
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




Information forwarded to bug-guix <at> gnu.org:
bug#58690; Package guix. (Wed, 30 Nov 2022 21:56:01 GMT) Full text and rfc822 format available.

Message #8 received at 58690 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: 58690 <at> debbugs.gnu.org
Cc: Ricardo Wurmus <rekado <at> elephly.net>
Subject: [PATCH] gnu: emacs-ess: Update to 18.10.2-1.01e7f5b.
Date: Wed, 30 Nov 2022 22:55:47 +0100
* gnu/packages/statistics.scm (emacs-ess): Update to 18.10.2-1.01e7f5b.
[source]: Update snippet; remove patch.
[arguments]: Use gexp; add phase "patch-test-suite"; run tests conditionally.
[inputs]: Drop package labels.
* gnu/packages/patches/emacs-ess-fix-obsolete-function-alias.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |  1 -
 ...macs-ess-fix-obsolete-function-alias.patch | 23 -----
 gnu/packages/statistics.scm                   | 87 +++++++++++++------
 3 files changed, 60 insertions(+), 51 deletions(-)
 delete mode 100644 gnu/packages/patches/emacs-ess-fix-obsolete-function-alias.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9443dd617a..f61141dd27 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1055,7 +1055,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/elogind-revert-polkit-detection.patch	\
   %D%/packages/patches/emacs-deferred-fix-number-of-arguments.patch	\
   %D%/packages/patches/emacs-exec-path.patch			\
-  %D%/packages/patches/emacs-ess-fix-obsolete-function-alias.patch	\
   %D%/packages/patches/emacs-git-email-missing-parens.patch	\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
   %D%/packages/patches/emacs-json-reformat-fix-tests.patch	\
diff --git a/gnu/packages/patches/emacs-ess-fix-obsolete-function-alias.patch b/gnu/packages/patches/emacs-ess-fix-obsolete-function-alias.patch
deleted file mode 100644
index f7b61391c3..0000000000
--- a/gnu/packages/patches/emacs-ess-fix-obsolete-function-alias.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 9cc5520e1998d03f5dec0fbb1fe71b7cdec38b65 Mon Sep 17 00:00:00 2001
-From: Alex Branham <alex.branham <at> gmail.com>
-Date: Wed, 6 Jan 2021 06:41:20 -0500
-Subject: [PATCH] Add required when to obsolete function alias
-
-Closes #1085
----
- lisp/ess-r-package.el | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lisp/ess-r-package.el b/lisp/ess-r-package.el
-index 260959955..397ce14e6 100644
---- a/lisp/ess-r-package.el
-+++ b/lisp/ess-r-package.el
-@@ -577,7 +577,7 @@ package mode. Use this function if state of the buffer such as
-   (error "As of ESS 16.04, `ess-developer' is deprecated. Use `ess-r-set-evaluation-env' instead"))
- 
- (defalias 'ess-toggle-developer 'ess-developer)
--(define-obsolete-function-alias 'ess-r-devtools-check-package-buildwin 'ess-r-devtools-check-with-winbuilder)
-+(define-obsolete-function-alias 'ess-r-devtools-check-package-buildwin 'ess-r-devtools-check-with-winbuilder "18.04")
- (define-obsolete-function-alias 'ess-r-devtools-ask 'ess-r-devtools-execute-command "18.04")
- 
- (make-obsolete-variable 'ess-developer "Please use `ess-developer-select-package' and `ess-r-set-evaluation-env' instead." "16.04")
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 16fb06e35a..3be9aea6cd 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -6426,11 +6426,10 @@ (define-public java-jdistlib
     (license license:gpl2+)))
 
 (define-public emacs-ess
-  ;; Latest release is old.  This is not the latest commit either due to bug
-  ;; reported here: <https://github.com/emacs-ess/ESS/issues/987>.
-  (let ((commit "24da603184ce39246611dd5b8602e769d7ebd5bf")
+  ;; Latest release is old.
+  (let ((commit "01e7f5b482b8a3331f1341483dedf2bd30403423")
         (version "18.10.2")
-        (revision "0"))
+        (revision "1"))
     (package
       (name "emacs-ess")
       (version (git-version version revision commit))
@@ -6441,7 +6440,7 @@ (define-public emacs-ess
                (url "https://github.com/emacs-ess/ESS")
                (commit commit)))
          (sha256
-          (base32 "0j98lv07nzwzd54d4dgcfz01wy5gj48m0mnirxzh5r45ik2myh1r"))
+          (base32 "1b40rbbqzgfxj88357aixq646g3v3f88k9kwhgmyyjy9lb2dljkb"))
          (file-name (git-file-name name version))
          (modules '((guix build utils)))
          (snippet
@@ -6459,9 +6458,6 @@ (define-public emacs-ess
              ;; Stop install-info from trying to update the info directory.
              (substitute* "doc/Makefile"
                ((".*/dir.*") ""))
-             ;; Fix r-help-mode test.
-             (substitute* "test/ess-test-r.el"
-               (("\\(equal ess-help-object \"plot.default\")") "t"))
              ;; Avoid generating ess-autoloads.el twice.
              (substitute* "Makefile"
                (("all: lisp doc etc autoloads")
@@ -6471,30 +6467,67 @@ (define-public emacs-ess
                (("mkdir -p \\$\\(ESSDESTDIR)")
                 "$(MAKE) -C lisp install; $(MAKE) -C doc install")
                (("\\$\\(INSTALL) -R \\./\\* \\$\\(ESSDESTDIR)/")
-                "$(MAKE) -C etc install"))
-             #t))
-         (patches
-          (search-patches "emacs-ess-fix-obsolete-function-alias.patch"))))
+                "$(MAKE) -C etc install"))))))
       (build-system gnu-build-system)
       (arguments
-       (let ((base-directory "/share/emacs/site-lisp"))
-         `(#:make-flags (list (string-append "PREFIX=" %output)
-                              (string-append "ETCDIR=" %output
-                                             ,base-directory "/etc")
-                              (string-append "LISPDIR=" %output
-                                             ,base-directory)
-                              (string-append "INFODIR=" %output
-                                             "/share/info"))
-           #:phases
-           (modify-phases %standard-phases
-             (delete 'configure)
-             (replace 'check
-               (lambda _ (invoke "make" "test")))))))
+       (list
+        #:make-flags
+        #~(let ((base-directory "/share/emacs/site-lisp"))
+            (list (string-append "PREFIX=" #$output)
+                  (string-append "ETCDIR=" #$output
+                                 base-directory "/etc")
+                  (string-append "LISPDIR=" #$output
+                                 base-directory)
+                  (string-append "INFODIR=" #$output
+                                 "/share/info")))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-test-suite
+              (lambda* (#:key inputs #:allow-other-keys)
+                (let ((sh (search-input-file inputs "/bin/sh")))
+                  ;; Make the TRAMP method "mock" find the shell and ls.
+                  (substitute* "test/run-tests"
+                    (("\\(require 'ess-test-r-utils\\)" m)
+                     (string-append
+                      "
+(setq tramp-remote-path (parse-colon-path (getenv \"PATH\")))
+(setq tramp-encoding-shell \"" sh "\")" m)))
+                  (substitute* "test/ess-test-r-utils.el"
+                    (("\\(tramp-remote-shell.*\"/bin/sh\"\\)")
+                     (string-append "(tramp-remote-shell \"" sh "\")")))
+                  ;; ess-r-beginning/end-of-defun-ignore-inner-fn-test does
+                  ;; not start at the beginning, so the search fails.
+                  (substitute* "test/ess-test-r.el"
+                    (("\\(with-ess-test-r-file \\(expand-file-name \"navigation.R\" ess-test-fixtures-directory\\)" m)
+                     (string-append m "(goto-char (point-min))"))
+                    ;; XXX: Disable this test.  It's off by one sub-directory.
+                    (("ert-deftest ess-test-r-startup-directory")
+                     "defun ess-test-r-startup-directory"))
+                  ;; XXX: This test is flaky, but seems harmless.  Sometimes
+                  ;; it will capture the previous empty prompt ("> \n> ").  It
+                  ;; is not clear whether this is deterministic behavior.
+                  (substitute* "test/ess-test-inf.el"
+                    (("etest-deftest command-without-trailing-newline-test")
+                     "defun command-without-trailing-newline-test"))
+                  ;; XXX: It seems that disabling individual keyword classes does
+                  ;; not work as expected.
+                  (substitute* "test/literate/fontification.R"
+                    (("\\(should \\(eq \\(face-at-point\\) 'default\\)\\)")
+                     "(should (member (face-at-point)
+(list nil 'ess-operator-face 'ess-keyword-face)))")))))
+            (delete 'configure)
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  ;; Skip tests that require an internet connection.
+                  (setenv "TRAVIS" "true")
+                  ;; Needed for some tests that try to access ~/.tramp_history
+                  (setenv "HOME" (getcwd))
+                  (invoke "make" "test")))))))
       (native-inputs
        (list perl r-roxygen2 texinfo))
       (inputs
-       `(("emacs" ,emacs-minimal)
-         ("r-minimal" ,r-minimal)))
+       (list emacs-minimal r-minimal))
       (propagated-inputs
        (list emacs-julia-mode))
       (home-page "https://ess.r-project.org/")
-- 
2.36.1





Information forwarded to bug-guix <at> gnu.org:
bug#58690; Package guix. (Fri, 02 Dec 2022 16:10:03 GMT) Full text and rfc822 format available.

Message #11 received at 58690 <at> debbugs.gnu.org (full text, mbox):

From: zimoun <zimon.toutoune <at> gmail.com>
To: Ricardo Wurmus <rekado <at> elephly.net>, 58690 <at> debbugs.gnu.org
Cc: Ricardo Wurmus <rekado <at> elephly.net>
Subject: Re: bug#58690: [PATCH] gnu: emacs-ess: Update to 18.10.2-1.01e7f5b.
Date: Fri, 02 Dec 2022 16:31:43 +0100
Hi Ricardo,

On Wed, 30 Nov 2022 at 22:55, Ricardo Wurmus <rekado <at> elephly.net> wrote:
> * gnu/packages/statistics.scm (emacs-ess): Update to 18.10.2-1.01e7f5b.
> [source]: Update snippet; remove patch.
> [arguments]: Use gexp; add phase "patch-test-suite"; run tests conditionally.
> [inputs]: Drop package labels.
> * gnu/packages/patches/emacs-ess-fix-obsolete-function-alias.patch: Remove file.
> * gnu/local.mk (dist_patch_DATA): Remove it.

LGTM.  But then,

    ./pre-inst-env guix shell emacs emacs-ess r \
          -- emacs -q /tmp/example.R

and after starting the *R* session, Emacs is frozen.  Does it work for
you?


Cheers,
simon




This bug report was last modified 1 year and 145 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.