[PATCH 0/6] Add native compilation to Emacs

  • Done
  • quality assurance status badge
Details
2 participants
  • Liliana Marie Prikler
  • (
Owner
unassigned
Submitted by
Liliana Marie Prikler
Severity
normal
L
L
Liliana Marie Prikler wrote on 9 Aug 2022 20:37
(address . guix-patches@gnu.org)
4c232648145659a2c3edca6d32725d8120cc14d3.camel@gmail.com
Hi Guix,

at long last the following patch set should enable native compilation
for both Emacs and emacs-build-system. I tested emacs-dash and at the
very least native code is generated, though I haven't yet checked
whether it is also loaded.

As with any shiny new Emacs feature, please verify that the Emacs
portion of your manifests/home configurations build and report any
related errors *before* I push this and curse your configuration.

Cheers

Liliana Marie Prikler (6):
gnu: Parameterize libgccjit.
gnu: libgccjit: Build with bootstrapped gcc.
gnu: libgccjit: Build multiple versions.
gnu: emacs: Build with native compilation.
guix: emacs-utils: Add emacs-compile-directory.
build-system: emacs: Use native compilation.

gnu/packages/emacs.scm | 64 ++++++++++++++++++++++++++++++-
gnu/packages/gcc.scm | 53 +++++++++++++++++--------
guix/build/emacs-build-system.scm | 5 ++-
guix/build/emacs-utils.scm | 26 +++++++++++++
4 files changed, 128 insertions(+), 20 deletions(-)

--
2.37.0
L
L
Liliana Marie Prikler wrote on 5 Aug 2022 05:29
[PATCH 1/6] gnu: Parameterize libgccjit.
(address . 57086@debbugs.gnu.org)
77ce1e3ecbd6b616cda3d0265401d890420e9fac.camel@gmail.com
* gnu/packages/gcc.scm (make-libgccjit): New variable.
(libgccjit): Define in terms of make-libgccjit.
---
gnu/packages/gcc.scm | 38 +++++++++++++++++++++-----------------
1 file changed, 21 insertions(+), 17 deletions(-)

Toggle diff (66 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 4c496e31b2..66f0766646 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -968,31 +968,33 @@ (define-public gdc-11
(custom-gcc gcc-11 "gdc" '("d")
%generic-search-paths)))
-(define-public libgccjit
+(define-public (make-libgccjit gcc)
(package
- (inherit gcc-9)
+ (inherit gcc)
(name "libgccjit")
(outputs (delete "lib" (package-outputs gcc)))
(properties (alist-delete 'hidden? (package-properties gcc)))
(arguments
- (substitute-keyword-arguments `(#:modules ((guix build gnu-build-system)
- (guix build utils)
- (ice-9 regex)
- (srfi srfi-1)
- (srfi srfi-26))
- ,@(package-arguments gcc))
+ (substitute-keyword-arguments (package-arguments gcc)
+ ((#:modules _ '())
+ '((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 regex)
+ (srfi srfi-1)
+ (srfi srfi-26)))
((#:configure-flags flags)
- `(append `("--enable-host-shared"
- ,(string-append "--enable-languages=jit"))
+ #~(cons* "--enable-host-shared"
+ "--enable-languages=jit"
(remove (cut string-match "--enable-languages.*" <>)
- ,flags)))
+ #$flags)))
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'install 'remove-broken-or-conflicting-files
- (lambda* (#:key outputs #:allow-other-keys)
- (for-each delete-file
- (find-files (string-append (assoc-ref outputs "out") "/bin")
- ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-broken-or-conflicting-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ (for-each delete-file
+ (find-files
+ (string-append (assoc-ref outputs "out") "/bin")
+ ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
(synopsis "GCC library generating machine code on-the-fly at runtime")
(description
"This package is part of the GNU Compiler Collection and provides an
@@ -1003,6 +1005,8 @@ (define-public libgccjit
compilers. The just-in-time (jit) part of the name is now something of a
misnomer.")))
+(define-public libgccjit (make-libgccjit gcc-9))
+
(define (make-gccgo gcc)
"Return a gccgo package based on GCC."
(let ((gccgo (custom-gcc gcc "gccgo" '("go") %generic-search-paths)))
--
2.37.0
L
L
Liliana Marie Prikler wrote on 5 Aug 2022 20:27
[PATCH 2/6] gnu: libgccjit: Build with bootstrapped gcc.
(address . 57086@debbugs.gnu.org)
9bd28a5e3c55001cfc6caec1dbbd9d79dfa7a6a7.camel@gmail.com
* gnu/packages/gcc.scm (make-libgccjit)[#:configure-flags]: Add
“--disable-bootstrap”, “--disable-libatomic”, “--disable-libgomp”,
“--disable-libquadmath”, “--disable-libssp”, and “--enable-checking=release”.
[inputs]: Remove libstdc++.
[native-inputs]: Add gcc.
---
gnu/packages/gcc.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

Toggle diff (32 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 66f0766646..4f7076d977 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -983,7 +983,13 @@ (define-public (make-libgccjit gcc)
(srfi srfi-1)
(srfi srfi-26)))
((#:configure-flags flags)
- #~(cons* "--enable-host-shared"
+ #~(cons* "--disable-bootstrap"
+ "--disable-libatomic"
+ "--disable-libgomp"
+ "--disable-libquadmath"
+ "--disable-libssp"
+ "--enable-host-shared"
+ "--enable-checking=release"
"--enable-languages=jit"
(remove (cut string-match "--enable-languages.*" <>)
#$flags)))
@@ -995,6 +1001,10 @@ (define-public (make-libgccjit gcc)
(find-files
(string-append (assoc-ref outputs "out") "/bin")
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
+ (inputs (modify-inputs (package-inputs gcc)
+ (delete "libstdc++")))
+ (native-inputs (modify-inputs (package-native-inputs gcc)
+ (prepend gcc)))
(synopsis "GCC library generating machine code on-the-fly at runtime")
(description
"This package is part of the GNU Compiler Collection and provides an
--
2.37.0
L
L
Liliana Marie Prikler wrote on 5 Aug 2022 20:30
[PATCH 3/6] gnu: libgccjit: Build multiple versions.
(address . 57086@debbugs.gnu.org)
04386956d3919e7021159ab5e77e99965ee33e1b.camel@gmail.com
* gnu/packages/gcc.scm (libgccjit-9, libgccjit-10, libgccjit-11)
(libgccjit-12): New variables.
(libgccjit): Update to libgccjit-10.
---
gnu/packages/gcc.scm | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

Toggle diff (20 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 4f7076d977..7e4fb283d8 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1015,7 +1015,12 @@ (define-public (make-libgccjit gcc)
compilers. The just-in-time (jit) part of the name is now something of a
misnomer.")))
-(define-public libgccjit (make-libgccjit gcc-9))
+(define-public libgccjit-9 (make-libgccjit gcc-9))
+(define-public libgccjit-10 (make-libgccjit gcc-10))
+(define-public libgccjit-11 (make-libgccjit gcc-11))
+(define-public libgccjit-12 (make-libgccjit gcc-12))
+
+(define-public libgccjit libgccjit-10)
(define (make-gccgo gcc)
"Return a gccgo package based on GCC."
--
2.37.0
L
L
Liliana Marie Prikler wrote on 9 Aug 2022 20:26
[PATCH 5/6] guix: emacs-utils: Add emacs-compile-directory.
(address . 57086@debbugs.gnu.org)
ffcdf3a53de7c5c938dc7e9f22a7ab57cb5c98ad.camel@gmail.com
* guix/build/emacs-utils.scm (emacs-compile-directory): New variable.
---
guix/build/emacs-utils.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (46 lines)
diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
index 8ee547f2b3..17155a0b8b 100644
--- a/guix/build/emacs-utils.scm
+++ b/guix/build/emacs-utils.scm
@@ -38,6 +38,7 @@ (define-module (guix build emacs-utils)
emacs-generate-autoloads
emacs-byte-compile-directory
+ emacs-compile-directory
emacs-header-parse
as-display
@@ -115,6 +116,31 @@ (define* (emacs-byte-compile-directory dir)
(byte-recompile-directory (file-name-as-directory ,dir) 0 1))))
(emacs-batch-eval expr)))
+(define* (emacs-compile-directory dir)
+ "Compile all files in DIR to native code.
+
+If native code is not supported, compile to bytecode instead."
+ (emacs-batch-eval
+ `(let ((byte-compile-debug t) ; for proper exit status
+ (byte+native-compile (native-comp-available-p))
+ (files (directory-files-recursively ,dir "\\.el$")))
+ (mapc
+ (lambda (file)
+ (let (byte-to-native-output-file)
+ (if byte+native-compile
+ (native-compile file (concat (file-name-sans-extension file)
+ ".eln"))
+ (byte-compile-file file))
+ ;; Sadly, we can't use pcase because quasiquote works different in
+ ;; Emacs. See `batch-byte+native-compile' in comp.el for the
+ ;; actual shape of byte-to-native-output-file.
+ (unless (null byte-to-native-output-file)
+ (rename-file (car byte-to-native-output-file)
+ (cdr byte-to-native-output-file)
+ t))))
+ files))
+ #:dynamic? #t))
+
(define (emacs-header-parse section file)
"Parse the header SECTION in FILE and return it as a string."
(emacs-batch-script
--
2.37.0
L
L
Liliana Marie Prikler wrote on 9 Aug 2022 20:32
[PATCH 6/6] build-system: emacs: Use native compilation.
(address . 57086@debbugs.gnu.org)
76e36854b8ede1216159b68eb1b651f759d75943.camel@gmail.com
* guix/build/emacs-build-system.scm (build): Use ‘emacs-compile-directory’
rather than ‘emacs-byte-compile-directory’. Also delete already compiled
files in the working directory prior to compilation.
---
guix/build/emacs-build-system.scm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

Toggle diff (22 lines)
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index 6a6918bfdd..9ecfceccf1 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -110,11 +110,14 @@ (define* (expand-load-path #:key (prepend-source? #t) #:allow-other-keys)
(define* (build #:key outputs inputs #:allow-other-keys)
"Compile .el files."
+ ;; Ensure that already compiled files in the working directory don't shadow
+ ;; the build. Might happen, because check runs first.
+ (for-each delete-file (find-files "." "\\.el[cn]$"))
(let* ((emacs (search-input-file inputs "/bin/emacs"))
(out (assoc-ref outputs "out")))
(setenv "SHELL" "sh")
(parameterize ((%emacs emacs))
- (emacs-byte-compile-directory (elpa-directory out)))))
+ (emacs-compile-directory (elpa-directory out)))))
(define* (patch-el-files #:key outputs #:allow-other-keys)
"Substitute the absolute \"/bin/\" directory with the right location in the
--
2.37.0
L
L
Liliana Marie Prikler wrote on 6 Aug 2022 00:37
[PATCH 4/6] gnu: emacs: Build with native compilation.
(address . 57086@debbugs.gnu.org)
ec0cdcedf6ea647e5431430ec05b737aca13b50c.camel@gmail.com
* gnu/packages/emacs.scm (%emacs-modules): New variable.
(emacs)[arguments]<#:modules>: Use it here.
<#:configure-flags> Add “--with-native-compilation”.
<#:make-flags>: Add “NATIVE_FULL_AOT=1”.
<#:phases>: Add ‘set-libgccjit-path’ and ‘patch-compilation-driver’.
[inputs]: Add explicit ld-wrapper, binutils, glibc, and libgccjit.
(emacs-minimal, emacs-xwidgets, emacs-no-x)
(emacs-no-x-toolkit): Adjust accordingly.
---
gnu/packages/emacs.scm | 64 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 62 insertions(+), 2 deletions(-)

Toggle diff (149 lines)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index ffd1eda08e..68afdb0446 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -45,6 +45,7 @@ (define-module (gnu packages emacs)
#:use-module (guix gexp)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (guix build-system glib-or-gtk)
#:use-module (gnu packages)
@@ -55,6 +56,7 @@ (define-module (gnu packages emacs)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages fribidi)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gd)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
@@ -81,6 +83,13 @@ (define-module (gnu packages emacs)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
+(define (%emacs-modules build-system)
+ (let ((which (build-system-name build-system)))
+ `((guix build ,(symbol-append which '-build-system))
+ (guix build utils)
+ (srfi srfi-1)
+ (ice-9 ftw))))
+
(define-public emacs
(package
(name "emacs")
@@ -129,11 +138,33 @@ (define-public emacs
(arguments
(list
#:tests? #f ; no check target
+ #:modules (%emacs-modules build-system)
#:configure-flags #~(list "--with-modules"
"--with-cairo"
+ "--with-native-compilation"
"--disable-build-details")
+ #:make-flags #~(list "NATIVE_FULL_AOT=1")
#:phases
#~(modify-phases %standard-phases
+ (add-after 'set-paths 'set-libgccjit-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (define (first-subdirectory/absolute directory)
+ (let ((files (scandir
+ directory
+ (lambda (file)
+ (and (not (member file '("." "..")))
+ (file-is-directory? (string-append
+ directory "/"
+ file)))))))
+ (and (not (null? files))
+ (string-append directory "/" (car files)))))
+ (let* ((libgccjit-libdir
+ (first-subdirectory/absolute ;; version
+ (first-subdirectory/absolute ;; host type
+ (search-input-directory inputs "lib/gcc")))))
+ (setenv "LIBRARY_PATH"
+ (string-append (getenv "LIBRARY_PATH")
+ ":" libgccjit-libdir)))))
(add-after 'unpack 'enable-elogind
(lambda _
(substitute* "configure.ac"
@@ -164,6 +195,20 @@ (define-public emacs
(("\\(tramp-compat-process-running-p \"(.*)\"\\)" all process)
(format #f "(or ~a (tramp-compat-process-running-p ~s))"
all (string-append "." process "-real"))))))
+ (add-after 'unpack 'patch-compilation-driver
+ (lambda _
+ (substitute* "lisp/emacs-lisp/comp.el"
+ (("\\(defcustom native-comp-driver-options nil")
+ (format
+ #f "(defcustom native-comp-driver-options '(~@{~s~^ ~})"
+ (string-append
+ "-B" #$(this-package-input "binutils") "/bin/")
+ (string-append
+ "-B" #$(this-package-input "glibc") "/lib/")
+ (string-append
+ "-B" #$(this-package-input "libgccjit") "/lib/")
+ (string-append
+ "-B" #$(this-package-input "libgccjit") "/lib/gcc/"))))))
(add-before 'configure 'fix-/bin/pwd
(lambda _
;; Use `pwd', not `/bin/pwd'.
@@ -256,6 +301,14 @@ (define* (emacs-byte-compile-directory dir)
(list gnutls
ncurses
+ ;; To "unshadow" ld-wrapper in native builds
+ (make-ld-wrapper "ld-wrapper" #:binutils binutils)
+
+ ;; For native compilation
+ binutils
+ glibc
+ libgccjit
+
;; Required for "core" functionality, such as dired and compression.
coreutils
gzip
@@ -377,12 +430,16 @@ (define-public emacs-minimal
(arguments
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
- #~(list "--with-gnutls=no" "--disable-build-details"))
+ #~(list "--with-gnutls=no" "--with-native-compilation"
+ "--disable-build-details"))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
(delete 'strip-double-wrap)))))
- (inputs (list ncurses coreutils gzip))
+ (inputs (list ncurses coreutils gzip
+ (make-ld-wrapper "ld-wrapper" #:binutils binutils)
+ binutils glibc libgccjit zlib))
(native-inputs (list autoconf pkg-config))))
(define-public emacs-xwidgets
@@ -395,6 +452,7 @@ (define-public emacs-xwidgets
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(cons "--with-xwidgets" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
@@ -419,6 +477,7 @@ (define-public emacs-no-x
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(delete "--with-cairo" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
@@ -437,6 +496,7 @@ (define-public emacs-no-x-toolkit
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(cons "--with-x-toolkit=no" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
--
2.37.0
(
Re: [bug#57086] [PATCH 0/6] Add native compilation to Emacs
CM1T8SY3O91F.19A38KJI5BF3W@guix-aspire
Hi Liliana,

On Tue Aug 9, 2022 at 7:37 PM BST, Liliana Marie Prikler wrote:
Toggle quote (4 lines)
> As with any shiny new Emacs feature, please verify that the Emacs
> portion of your manifests/home configurations build and report any
> related errors *before* I push this and curse your configuration.

Nice work! :D Unfortunately, Geiser fails to build with this patchset
applied:

```
starting phase `set-SOURCE-DATE-EPOCH'
phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds
starting phase `set-paths'
environment variable `PATH' set to `/gnu/store/4pwp9rw1y1dyf1w7z0w7qq38z7f4bcic-emacs-minimal-28.1/bin:/gnu/store/22n2s0vfvqg9v0as9h7fpdn1i9dmryvi-texinfo-6.7/bin:/gnu/store/g2ajyl8xk9aarxrgjbng2hkj3qm2v0z2-tar-1.34/bin:/gnu/store/iixwcv3k49ks1rf34pjgfzmzyhhgwng3-gzip-1.10/bin:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/bin:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/bin:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/bin:/gnu/store/ahmmvw21p11ik80lg1f953y7fd8bqkjm-diffutils-3.8/bin:/gnu/store/z39hnrwds1dgcbpfgj8dnv2cngjb2xbl-patch-2.7.6/bin:/gnu/store/39rsx3nl4c31952jybbjb8d6idr5hx7r-findutils-4.8.0/bin:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/bin:/gnu/store/wxgv6i8g0p24q5gcyzd0yr07s8kn9680-sed-4.8/bin:/gnu/store/xjwp2hsd9256icjjybfrmznppjicywf6-grep-3.6/bin:/gnu/store/d251rfgc9nm2clzffzhgiipdvfvzkvwi-coreutils-8.32/bin:/gnu/store/55cbpsi18mahg131nmiya6km5b4mscfa-make-4.3/bin:/gnu/store/4y5m9lb8k3qkb1y9m02sw9w9a6hacd16-bash-minimal-5.1.8/bin:/gnu/store/s2pg5k98fl2g2szg9dykxyd9zl3xihv9-ld-wrapper-0/bin:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/bin:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/bin:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/bin:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/sbin'
environment variable `EMACSLOADPATH' set to `/gnu/store/4pwp9rw1y1dyf1w7z0w7qq38z7f4bcic-emacs-minimal-28.1/share/emacs/site-lisp'
environment variable `INFOPATH' set to `/gnu/store/4pwp9rw1y1dyf1w7z0w7qq38z7f4bcic-emacs-minimal-28.1/share/info:/gnu/store/22n2s0vfvqg9v0as9h7fpdn1i9dmryvi-texinfo-6.7/share/info:/gnu/store/g2ajyl8xk9aarxrgjbng2hkj3qm2v0z2-tar-1.34/share/info:/gnu/store/iixwcv3k49ks1rf34pjgfzmzyhhgwng3-gzip-1.10/share/info:/gnu/store/ahmmvw21p11ik80lg1f953y7fd8bqkjm-diffutils-3.8/share/info:/gnu/store/39rsx3nl4c31952jybbjb8d6idr5hx7r-findutils-4.8.0/share/info:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/share/info:/gnu/store/wxgv6i8g0p24q5gcyzd0yr07s8kn9680-sed-4.8/share/info:/gnu/store/xjwp2hsd9256icjjybfrmznppjicywf6-grep-3.6/share/info:/gnu/store/d251rfgc9nm2clzffzhgiipdvfvzkvwi-coreutils-8.32/share/info:/gnu/store/55cbpsi18mahg131nmiya6km5b4mscfa-make-4.3/share/info:/gnu/store/4y5m9lb8k3qkb1y9m02sw9w9a6hacd16-bash-minimal-5.1.8/share/info:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/share/info:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/share/info:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/share/info'
environment variable `BASH_LOADABLES_PATH' unset
environment variable `C_INCLUDE_PATH' set to `/gnu/store/4pwp9rw1y1dyf1w7z0w7qq38z7f4bcic-emacs-minimal-28.1/include:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/include:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/include:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/include:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/include:/gnu/store/55cbpsi18mahg131nmiya6km5b4mscfa-make-4.3/include:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/include:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/include:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/include:/gnu/store/6mjww4iz4xdan74d5bbjfh7il8rngfkk-linux-libre-headers-5.10.35/include'
environment variable `CPLUS_INCLUDE_PATH' set to `/gnu/store/4pwp9rw1y1dyf1w7z0w7qq38z7f4bcic-emacs-minimal-28.1/include:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/include:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/include:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/include:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/include:/gnu/store/55cbpsi18mahg131nmiya6km5b4mscfa-make-4.3/include:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/include:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/include/c++:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/include:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/include:/gnu/store/6mjww4iz4xdan74d5bbjfh7il8rngfkk-linux-libre-headers-5.10.35/include'
environment variable `LIBRARY_PATH' set to `/gnu/store/4pwp9rw1y1dyf1w7z0w7qq38z7f4bcic-emacs-minimal-28.1/lib:/gnu/store/22n2s0vfvqg9v0as9h7fpdn1i9dmryvi-texinfo-6.7/lib:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/lib:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/lib:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/lib:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/lib:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/lib:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib:/gnu/store/4jdghmc65q7i7ib89zmvq66l0ghf7jc4-glibc-2.33-static/lib:/gnu/store/fnr1z6xsan0437r0yg48d0y8k32kqxby-glibc-utf8-locales-2.33/lib'
environment variable `GUIX_LOCPATH' set to `/gnu/store/fnr1z6xsan0437r0yg48d0y8k32kqxby-glibc-utf8-locales-2.33/lib/locale'
phase `set-paths' succeeded after 0.0 seconds
starting phase `install-locale'
using 'en_US.utf8' locale for category "LC_ALL"
phase `install-locale' succeeded after 0.0 seconds
starting phase `unpack'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/readme.org' -> `./readme.org'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/.gitignore' -> `./.gitignore'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/.dir-locals.el' -> `./.dir-locals.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/license' -> `./license'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/news.org' -> `./news.org'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/site.conf' -> `./doc/site.conf'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/web.texi' -> `./doc/web.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/parens.texi' -> `./doc/parens.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/macros.texi' -> `./doc/macros.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/geiser.texi' -> `./doc/geiser.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/cheat.texi' -> `./doc/cheat.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/geiser.css' -> `./doc/geiser.css'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/dir' -> `./doc/dir'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/top.texi' -> `./doc/top.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/index.texi' -> `./doc/index.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/repl.texi' -> `./doc/repl.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/install.texi' -> `./doc/install.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/intro.texi' -> `./doc/intro.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/makefile' -> `./doc/makefile'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/thanks.texi' -> `./doc/thanks.texi'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/repl-mod.png' -> `./doc/img/repl-mod.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/repl-images.png' -> `./doc/img/repl-images.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/repl-menu.png' -> `./doc/img/repl-menu.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/geiser-mode.png' -> `./doc/img/geiser-mode.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/docstring.png' -> `./doc/img/docstring.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/repls.png' -> `./doc/img/repls.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/autodoc-multi.png' -> `./doc/img/autodoc-multi.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/autodoc-var.png' -> `./doc/img/autodoc-var.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/docstring-racket.png' -> `./doc/img/docstring-racket.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/autodoc-scm.png' -> `./doc/img/autodoc-scm.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/eval-error.png' -> `./doc/img/eval-error.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/repl-autodoc.png' -> `./doc/img/repl-autodoc.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/guile-eval-error.png' -> `./doc/img/guile-eval-error.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/autodoc-req.png' -> `./doc/img/autodoc-req.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/doc/img/mod-completion.png' -> `./doc/img/mod-completion.png'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-base.el' -> `./elisp/geiser-base.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-popup.el' -> `./elisp/geiser-popup.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-company.el' -> `./elisp/geiser-company.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-autodoc.el' -> `./elisp/geiser-autodoc.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-repl.el' -> `./elisp/geiser-repl.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-custom.el' -> `./elisp/geiser-custom.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-reload.el' -> `./elisp/geiser-reload.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-menu.el' -> `./elisp/geiser-menu.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-impl.el' -> `./elisp/geiser-impl.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-edit.el' -> `./elisp/geiser-edit.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-syntax.el' -> `./elisp/geiser-syntax.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-table.el' -> `./elisp/geiser-table.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser.el' -> `./elisp/geiser.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-connection.el' -> `./elisp/geiser-connection.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-log.el' -> `./elisp/geiser-log.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-mode.el' -> `./elisp/geiser-mode.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-eval.el' -> `./elisp/geiser-eval.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-debug.el' -> `./elisp/geiser-debug.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-xref.el' -> `./elisp/geiser-xref.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-doc.el' -> `./elisp/geiser-doc.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-compile.el' -> `./elisp/geiser-compile.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-image.el' -> `./elisp/geiser-image.el'
`/gnu/store/37f6mcyinhdfs063kqd9shnv0xj1fwf8-emacs-geiser-0.23.2-checkout/elisp/geiser-completion.el' -> `./elisp/geiser-completion.el'
phase `unpack' succeeded after 0.0 seconds
starting phase `move-source-files'
phase `move-source-files' succeeded after 0.0 seconds
starting phase `expand-load-path'
source directory "/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source" prepended to the `EMACSLOADPATH' environment variable
phase `expand-load-path' succeeded after 0.0 seconds
starting phase `patch-usr-bin-file'
phase `patch-usr-bin-file' succeeded after 0.0 seconds
starting phase `patch-source-shebangs'
phase `patch-source-shebangs' succeeded after 0.0 seconds
starting phase `patch-generated-file-shebangs'
phase `patch-generated-file-shebangs' succeeded after 0.0 seconds
starting phase `check'
test suite not run
phase `check' succeeded after 0.0 seconds
starting phase `make-info'
phase `make-info' succeeded after 0.6 seconds
starting phase `install'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/doc/geiser.info' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/doc/geiser.info'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-autodoc.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-autodoc.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-base.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-base.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-company.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-company.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-compile.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-compile.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-completion.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-completion.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-connection.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-connection.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-custom.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-custom.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-debug.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-debug.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-doc.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-doc.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-edit.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-edit.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-eval.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-eval.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-image.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-image.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-impl.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-impl.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-log.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-log.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-menu.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-menu.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-mode.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-mode.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-popup.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-popup.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-reload.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-reload.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-repl.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-repl.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-syntax.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-syntax.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-table.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-table.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser-xref.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser-xref.el'
`/tmp/guix-build-emacs-geiser-0.23.2.drv-0/source/geiser.el' -> `/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-geiser-0.23.2/share/emacs/site-lisp/geiser-0.23.2/geiser.el'
phase `install' succeeded after 0.0 seconds
starting phase `make-autoloads'
INFO Scraping files for geiser-autoloads.el...
INFO Scraping files for geiser-autoloads.el...done
phase `make-autoloads' succeeded after 0.2 seconds
starting phase `enable-autoloads-compilation'
phase `enable-autoloads-compilation' succeeded after 0.0 seconds
starting phase `patch-el-files'
phase `patch-el-files' succeeded after 0.0 seconds
starting phase `ensure-package-description'
geiser-pkg.el file generated.
phase `ensure-package-description' succeeded after 0.3 seconds
starting phase `build'

In geiser-autodoc--show-signatures:
geiser-autodoc.el:69:12: Warning: ‘eldoc-message’ is an obsolete function (as
of eldoc-1.1.0); use ‘eldoc-documentation-functions’ instead.
Debugger entered--Lisp error: (error "/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-..." "Cannot find suitable directory for output in ‘nati...")
signal(error ("/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-..." "Cannot find suitable directory for output in ‘nati..."))
comp--native-compile("/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-..." nil "/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-...")
native-compile("/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-..." "/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-...")
(if byte+native-compile (native-compile file (concat (file-name-sans-extension file) ".eln")) (byte-compile-file file))
(let (byte-to-native-output-file) (if byte+native-compile (native-compile file (concat (file-name-sans-extension file) ".eln")) (byte-compile-file file)) (unless (null byte-to-native-output-file) (rename-file (car byte-to-native-output-file) (cdr byte-to-native-output-file) t)))
(lambda (file) (let (byte-to-native-output-file) (if byte+native-compile (native-compile file (concat (file-name-sans-extension file) ".eln")) (byte-compile-file file)) (unless (null byte-to-native-output-file) (rename-file (car byte-to-native-output-file) (cdr byte-to-native-output-file) t))))("/gnu/store/i0gdgbcdgki015p4b9vdq6rc9mrflyqq-emacs-...")
mapc((lambda (file) (let (byte-to-native-output-file) (if
This message was truncated. Download the full message here.
L
L
Liliana Marie Prikler wrote on 10 Aug 2022 06:19
f33516cde58af7255207a24a65987796a1aca8ed.camel@gmail.com
Am Dienstag, dem 09.08.2022 um 22:19 +0100 schrieb (:
Toggle quote (13 lines)
> Hi Liliana,
>
> On Tue Aug 9, 2022 at 7:37 PM BST, Liliana Marie Prikler wrote:
> > As with any shiny new Emacs feature, please verify that the Emacs
> > portion of your manifests/home configurations build and report any
> > related errors *before* I push this and curse your configuration.
>
> Nice work! :D Unfortunately, Geiser fails to build with this patchset
> applied:
>
> [...]
> Unfortunately, the error message is truncated, so I have no idea
> what's going on :(
It seems to want to write to the emacs package rather than its own
store path. Does this thing compile recursively?

Cheers
(
CM24JQUGW6CX.2YUN6CRI8BMZ7@guix-aspire
On Wed Aug 10, 2022 at 5:19 AM BST, Liliana Marie Prikler wrote:
Toggle quote (3 lines)
> It seems to want to write to the emacs package rather than its own
> store path. Does this thing compile recursively?

I have no idea, sorry. But it would be very fitting for Lisp if it
did :P

-- (
L
L
Liliana Marie Prikler wrote on 9 Aug 2022 20:26
[PATCH v2 5/6] guix: emacs-utils: Add emacs-compile-directory.
(name . ()(address . paren@disroot.org)
15d55f67f02be0988fb541c032190399d89a05ae.camel@gmail.com
* guix/build/emacs-utils.scm (emacs-compile-directory): New variable.
---
guix/build/emacs-utils.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (48 lines)
diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
index 8ee547f2b3..2eb8f30120 100644
--- a/guix/build/emacs-utils.scm
+++ b/guix/build/emacs-utils.scm
@@ -38,6 +38,7 @@ (define-module (guix build emacs-utils)
emacs-generate-autoloads
emacs-byte-compile-directory
+ emacs-compile-directory
emacs-header-parse
as-display
@@ -115,6 +116,33 @@ (define* (emacs-byte-compile-directory dir)
(byte-recompile-directory (file-name-as-directory ,dir) 0 1))))
(emacs-batch-eval expr)))
+(define* (emacs-compile-directory dir)
+ "Compile all files in DIR to native code.
+
+If native code is not supported, compile to bytecode instead."
+ (emacs-batch-eval
+ `(let ((byte-compile-debug t) ; for proper exit status
+ (byte+native-compile (native-comp-available-p))
+ (files (directory-files-recursively ,dir "\\.el$")))
+ (mapc
+ (lambda (file)
+ (let (byte-to-native-output-file
+ ;; For trampoline compilations
+ (native-compile-target-directory (file-name-directory file)))
+ (if byte+native-compile
+ (native-compile file (concat (file-name-sans-extension file)
+ ".eln"))
+ (byte-compile-file file))
+ ;; Sadly, we can't use pcase because quasiquote works different in
+ ;; Emacs. See `batch-byte+native-compile' in comp.el for the
+ ;; actual shape of byte-to-native-output-file.
+ (unless (null byte-to-native-output-file)
+ (rename-file (car byte-to-native-output-file)
+ (cdr byte-to-native-output-file)
+ t))))
+ files))
+ #:dynamic? #t))
+
(define (emacs-header-parse section file)
"Parse the header SECTION in FILE and return it as a string."
(emacs-batch-script
--
2.37.0
L
L
Liliana Marie Prikler wrote on 23 Aug 2022 22:07
Re: [bug#57086] [PATCH 0/6] Add native compilation to Emacs
97b63c0ce49f429cdb74b9ea0bdbc6104fc890cc.camel@gmail.com
Am Dienstag, dem 09.08.2022 um 22:19 +0100 schrieb (:
Toggle quote (9 lines)
> Hi Liliana,
>
> On Tue Aug 9, 2022 at 7:37 PM BST, Liliana Marie Prikler wrote:
> > As with any shiny new Emacs feature, please verify that the Emacs
> > portion of your manifests/home configurations build and report any
> > related errors *before* I push this and curse your configuration.
>
> Nice work! :D Unfortunately, Geiser fails to build with this patchset
> applied:
So Geiser should compile with v2, but emacs-guix still fails to build.
emacs-org also fails. Since these packages do seem somewhat popular, I
think we should try to fix it or even better fix the way emacs finds
its output directory.

Cheers
L
L
Liliana Marie Prikler wrote on 25 Aug 2022 09:08
[PATCH v3 0/7] Add native compilation to Emacs
(address . 57086@debbugs.gnu.org)
f6d038bbf7ce6a066e83cc9c6ed6fccebef95754.camel@gmail.com
Hi Guix,

After fixing some minor issues like emacs-guix, emacs-org and
emacs-yasnippet not building, this series is somewhat closer to
completion. However, I've noticed that using emacs-minimal for
native compilation and regular emacs for running things is somewhat
suboptimal, as the two have different hashes. There are some
remedies, such as using regular emacs as #:emacs when natively
compiling and emacs-minimal for cross-compiling – and also
removing native-compilation from the "minimal" packages – but
before I put those plans into actions I'd like to hear some
bug reports for this series.

My own emacs manifest builds now, so I consider this otherwise stable.

Cheers

Liliana Marie Prikler (7):
gnu: Parameterize libgccjit.
gnu: libgccjit: Build with bootstrapped gcc.
gnu: libgccjit: Build multiple versions.
gnu: emacs: Build with native compilation.
guix: emacs-utils: Add emacs-compile-directory.
build-system: emacs: Use native compilation.
gnu: emacs-yasnippet: Fix build.

gnu/packages/emacs.scm | 67 ++++++++++++++++++-
gnu/packages/gcc.scm | 53 ++++++++++-----
.../patches/emacs-yasnippet-fix-tests.patch | 30 +++++++--
guix/build/emacs-build-system.scm | 20 +++++-
guix/build/emacs-utils.scm | 30 +++++++++
5 files changed, 174 insertions(+), 26 deletions(-)

--
2.37.2
L
L
Liliana Marie Prikler wrote on 5 Aug 2022 05:29
[PATCH v3 1/7] gnu: Parameterize libgccjit.
(address . 57086@debbugs.gnu.org)
851f9ca3194c6b3c810d4c44fbd500072bda5de6.camel@gmail.com
* gnu/packages/gcc.scm (make-libgccjit): New variable.
(libgccjit): Define in terms of make-libgccjit.
---
gnu/packages/gcc.scm | 38 +++++++++++++++++++++-----------------
1 file changed, 21 insertions(+), 17 deletions(-)

Toggle diff (66 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 4c496e31b2..66f0766646 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -968,31 +968,33 @@ (define-public gdc-11
(custom-gcc gcc-11 "gdc" '("d")
%generic-search-paths)))
-(define-public libgccjit
+(define-public (make-libgccjit gcc)
(package
- (inherit gcc-9)
+ (inherit gcc)
(name "libgccjit")
(outputs (delete "lib" (package-outputs gcc)))
(properties (alist-delete 'hidden? (package-properties gcc)))
(arguments
- (substitute-keyword-arguments `(#:modules ((guix build gnu-build-system)
- (guix build utils)
- (ice-9 regex)
- (srfi srfi-1)
- (srfi srfi-26))
- ,@(package-arguments gcc))
+ (substitute-keyword-arguments (package-arguments gcc)
+ ((#:modules _ '())
+ '((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 regex)
+ (srfi srfi-1)
+ (srfi srfi-26)))
((#:configure-flags flags)
- `(append `("--enable-host-shared"
- ,(string-append "--enable-languages=jit"))
+ #~(cons* "--enable-host-shared"
+ "--enable-languages=jit"
(remove (cut string-match "--enable-languages.*" <>)
- ,flags)))
+ #$flags)))
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'install 'remove-broken-or-conflicting-files
- (lambda* (#:key outputs #:allow-other-keys)
- (for-each delete-file
- (find-files (string-append (assoc-ref outputs "out") "/bin")
- ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-broken-or-conflicting-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ (for-each delete-file
+ (find-files
+ (string-append (assoc-ref outputs "out") "/bin")
+ ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
(synopsis "GCC library generating machine code on-the-fly at runtime")
(description
"This package is part of the GNU Compiler Collection and provides an
@@ -1003,6 +1005,8 @@ (define-public libgccjit
compilers. The just-in-time (jit) part of the name is now something of a
misnomer.")))
+(define-public libgccjit (make-libgccjit gcc-9))
+
(define (make-gccgo gcc)
"Return a gccgo package based on GCC."
(let ((gccgo (custom-gcc gcc "gccgo" '("go") %generic-search-paths)))
--
2.37.2
L
L
Liliana Marie Prikler wrote on 5 Aug 2022 20:30
[PATCH v3 3/7] gnu: libgccjit: Build multiple versions.
(address . 57086@debbugs.gnu.org)
3cf1d0a3843499d498c89e0b8e2e6947b05931ff.camel@gmail.com
* gnu/packages/gcc.scm (libgccjit-9, libgccjit-10, libgccjit-11)
(libgccjit-12): New variables.
(libgccjit): Update to libgccjit-10.
---
gnu/packages/gcc.scm | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

Toggle diff (20 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 4f7076d977..7e4fb283d8 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1015,7 +1015,12 @@ (define-public (make-libgccjit gcc)
compilers. The just-in-time (jit) part of the name is now something of a
misnomer.")))
-(define-public libgccjit (make-libgccjit gcc-9))
+(define-public libgccjit-9 (make-libgccjit gcc-9))
+(define-public libgccjit-10 (make-libgccjit gcc-10))
+(define-public libgccjit-11 (make-libgccjit gcc-11))
+(define-public libgccjit-12 (make-libgccjit gcc-12))
+
+(define-public libgccjit libgccjit-10)
(define (make-gccgo gcc)
"Return a gccgo package based on GCC."
--
2.37.2
L
L
Liliana Marie Prikler wrote on 5 Aug 2022 20:27
[PATCH v3 2/7] gnu: libgccjit: Build with bootstrapped gcc.
(address . 57086@debbugs.gnu.org)
703714ed433cfad77c9aa415ea03cbb92d948562.camel@gmail.com
* gnu/packages/gcc.scm (make-libgccjit)[#:configure-flags]: Add
“--disable-bootstrap”, “--disable-libatomic”, “--disable-libgomp”,
“--disable-libquadmath”, “--disable-libssp”, and “--enable-checking=release”.
[inputs]: Remove libstdc++.
[native-inputs]: Add gcc.
---
gnu/packages/gcc.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

Toggle diff (32 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 66f0766646..4f7076d977 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -983,7 +983,13 @@ (define-public (make-libgccjit gcc)
(srfi srfi-1)
(srfi srfi-26)))
((#:configure-flags flags)
- #~(cons* "--enable-host-shared"
+ #~(cons* "--disable-bootstrap"
+ "--disable-libatomic"
+ "--disable-libgomp"
+ "--disable-libquadmath"
+ "--disable-libssp"
+ "--enable-host-shared"
+ "--enable-checking=release"
"--enable-languages=jit"
(remove (cut string-match "--enable-languages.*" <>)
#$flags)))
@@ -995,6 +1001,10 @@ (define-public (make-libgccjit gcc)
(find-files
(string-append (assoc-ref outputs "out") "/bin")
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
+ (inputs (modify-inputs (package-inputs gcc)
+ (delete "libstdc++")))
+ (native-inputs (modify-inputs (package-native-inputs gcc)
+ (prepend gcc)))
(synopsis "GCC library generating machine code on-the-fly at runtime")
(description
"This package is part of the GNU Compiler Collection and provides an
--
2.37.2
L
L
Liliana Marie Prikler wrote on 9 Aug 2022 20:26
[PATCH v3 5/7] guix: emacs-utils: Add emacs-compile-directory.
(address . 57086@debbugs.gnu.org)
3854e9646995cc34c07f92e27c949753ce7d6c5f.camel@gmail.com
* guix/build/emacs-utils.scm (emacs-compile-directory): New variable.
---
guix/build/emacs-utils.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (50 lines)
diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
index 8ee547f2b3..fdca05602e 100644
--- a/guix/build/emacs-utils.scm
+++ b/guix/build/emacs-utils.scm
@@ -38,6 +38,7 @@ (define-module (guix build emacs-utils)
emacs-generate-autoloads
emacs-byte-compile-directory
+ emacs-compile-directory
emacs-header-parse
as-display
@@ -115,6 +116,35 @@ (define* (emacs-byte-compile-directory dir)
(byte-recompile-directory (file-name-as-directory ,dir) 0 1))))
(emacs-batch-eval expr)))
+(define* (emacs-compile-directory dir)
+ "Compile all files in DIR to native code.
+
+If native code is not supported, compile to bytecode instead."
+ (emacs-batch-eval
+ `(let ((byte-compile-debug t) ; for proper exit status
+ (byte+native-compile (native-comp-available-p))
+ (files (directory-files-recursively ,dir "\\.el$")))
+ (mapc
+ (lambda (file)
+ (let (byte-to-native-output-file
+ ;; First entry is the eln-cache of the homeless shelter,
+ ;; second entry is the install directory.
+ (eln-dir (and (native-comp-available-p)
+ (cadr native-comp-eln-load-path))))
+ (if byte+native-compile
+ (native-compile file
+ (comp-el-to-eln-filename file eln-dir))
+ (byte-compile-file file))
+ ;; Sadly, we can't use pcase because quasiquote works different in
+ ;; Emacs. See `batch-byte+native-compile' in comp.el for the
+ ;; actual shape of byte-to-native-output-file.
+ (unless (null byte-to-native-output-file)
+ (rename-file (car byte-to-native-output-file)
+ (cdr byte-to-native-output-file)
+ t))))
+ files))
+ #:dynamic? #t))
+
(define (emacs-header-parse section file)
"Parse the header SECTION in FILE and return it as a string."
(emacs-batch-script
--
2.37.2
L
L
Liliana Marie Prikler wrote on 9 Aug 2022 20:32
[PATCH v3 6/7] build-system: emacs: Use native compilation.
(address . 57086@debbugs.gnu.org)
ca9746296eca3de7b3808383f37afbf0956b64e2.camel@gmail.com
* guix/build/emacs-build-system.scm (add-install-to-native-load-path):
New variable.
(build): Replace ‘emacs-byte-compile-directory’ with ‘emacs-compile-directory’.
Delete already compiled files in the working directory prior to compilation.
(%standard-phases): Add ‘add-install-to-native-load-path’ after
‘expand-load-path’.
---
guix/build/emacs-build-system.scm | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)

Toggle diff (46 lines)
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index 6a6918bfdd..3808b60445 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -108,13 +108,29 @@ (define* (expand-load-path #:key (prepend-source? #t) #:allow-other-keys)
(format #t "expanded load paths for ~{~a~^, ~}\n"
(map basename diff))))))
+(define* (add-install-to-native-load-path #:key outputs #:allow-other-keys)
+ "Append the native-site-lisp of OUTPUT to EMACSNATIVELOADPATH."
+ (let ((native-load-path (or (false-if-exception
+ (string-split (getenv "EMACSNATIVELOADPATH") #\:))
+ '()))
+ (install-directory (string-append (assoc-ref outputs "out")
+ "/lib/emacs/native-site-lisp")))
+ (setenv "EMACSNATIVELOADPATH"
+ ;; Emacs pushes these directories in reverse order, so the
+ ;; last one will be the first.
+ (string-join `(,@native-load-path ,install-directory)
+ ":"))))
+
(define* (build #:key outputs inputs #:allow-other-keys)
"Compile .el files."
+ ;; Ensure that already compiled files in the working directory don't shadow
+ ;; the build. Might happen, because check runs first.
+ (for-each delete-file (find-files "." "\\.el[cn]$"))
(let* ((emacs (search-input-file inputs "/bin/emacs"))
(out (assoc-ref outputs "out")))
(setenv "SHELL" "sh")
(parameterize ((%emacs emacs))
- (emacs-byte-compile-directory (elpa-directory out)))))
+ (emacs-compile-directory (elpa-directory out)))))
(define* (patch-el-files #:key outputs #:allow-other-keys)
"Substitute the absolute \"/bin/\" directory with the right location in the
@@ -343,6 +359,8 @@ (define %standard-phases
(modify-phases gnu:%standard-phases
(replace 'unpack unpack)
(add-after 'unpack 'expand-load-path expand-load-path)
+ (add-after 'expand-load-path 'add-install-to-native-load-path
+ add-install-to-native-load-path)
(delete 'bootstrap)
(delete 'configure)
(delete 'build)
--
2.37.2
L
L
Liliana Marie Prikler wrote on 6 Aug 2022 00:37
[PATCH v3 4/7] gnu: emacs: Build with native compilation.
(address . 57086@debbugs.gnu.org)
bbf0bb334846c0da2ec3a41e2a340d7d5cc024ce.camel@gmail.com
* gnu/packages/emacs.scm (%emacs-modules): New variable.
(emacs)[arguments]<#:modules>: Use it here.
<#:configure-flags> Add “--with-native-compilation”.
<#:make-flags>: Add “NATIVE_FULL_AOT=1”.
<#:phases>: Add ‘set-libgccjit-path’ and ‘patch-compilation-driver’.
[inputs]: Add explicit ld-wrapper, binutils, glibc, and libgccjit.
[search-paths]: Add EMACSNATIVELOADPATH.
(emacs-minimal, emacs-xwidgets, emacs-no-x)
(emacs-no-x-toolkit): Adjust accordingly.
---
gnu/packages/emacs.scm | 67 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 65 insertions(+), 2 deletions(-)

Toggle diff (159 lines)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index ffd1eda08e..6c3bee03d5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -45,6 +45,7 @@ (define-module (gnu packages emacs)
#:use-module (guix gexp)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (guix build-system glib-or-gtk)
#:use-module (gnu packages)
@@ -55,6 +56,7 @@ (define-module (gnu packages emacs)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages fribidi)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gd)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
@@ -81,6 +83,13 @@ (define-module (gnu packages emacs)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
+(define (%emacs-modules build-system)
+ (let ((which (build-system-name build-system)))
+ `((guix build ,(symbol-append which '-build-system))
+ (guix build utils)
+ (srfi srfi-1)
+ (ice-9 ftw))))
+
(define-public emacs
(package
(name "emacs")
@@ -129,11 +138,33 @@ (define-public emacs
(arguments
(list
#:tests? #f ; no check target
+ #:modules (%emacs-modules build-system)
#:configure-flags #~(list "--with-modules"
"--with-cairo"
+ "--with-native-compilation"
"--disable-build-details")
+ #:make-flags #~(list "NATIVE_FULL_AOT=1")
#:phases
#~(modify-phases %standard-phases
+ (add-after 'set-paths 'set-libgccjit-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (define (first-subdirectory/absolute directory)
+ (let ((files (scandir
+ directory
+ (lambda (file)
+ (and (not (member file '("." "..")))
+ (file-is-directory? (string-append
+ directory "/"
+ file)))))))
+ (and (not (null? files))
+ (string-append directory "/" (car files)))))
+ (let* ((libgccjit-libdir
+ (first-subdirectory/absolute ;; version
+ (first-subdirectory/absolute ;; host type
+ (search-input-directory inputs "lib/gcc")))))
+ (setenv "LIBRARY_PATH"
+ (string-append (getenv "LIBRARY_PATH")
+ ":" libgccjit-libdir)))))
(add-after 'unpack 'enable-elogind
(lambda _
(substitute* "configure.ac"
@@ -164,6 +195,20 @@ (define-public emacs
(("\\(tramp-compat-process-running-p \"(.*)\"\\)" all process)
(format #f "(or ~a (tramp-compat-process-running-p ~s))"
all (string-append "." process "-real"))))))
+ (add-after 'unpack 'patch-compilation-driver
+ (lambda _
+ (substitute* "lisp/emacs-lisp/comp.el"
+ (("\\(defcustom native-comp-driver-options nil")
+ (format
+ #f "(defcustom native-comp-driver-options '(~@{~s~^ ~})"
+ (string-append
+ "-B" #$(this-package-input "binutils") "/bin/")
+ (string-append
+ "-B" #$(this-package-input "glibc") "/lib/")
+ (string-append
+ "-B" #$(this-package-input "libgccjit") "/lib/")
+ (string-append
+ "-B" #$(this-package-input "libgccjit") "/lib/gcc/"))))))
(add-before 'configure 'fix-/bin/pwd
(lambda _
;; Use `pwd', not `/bin/pwd'.
@@ -256,6 +301,14 @@ (define* (emacs-byte-compile-directory dir)
(list gnutls
ncurses
+ ;; To "unshadow" ld-wrapper in native builds
+ (make-ld-wrapper "ld-wrapper" #:binutils binutils)
+
+ ;; For native compilation
+ binutils
+ glibc
+ libgccjit
+
;; Required for "core" functionality, such as dired and compression.
coreutils
gzip
@@ -307,6 +360,9 @@ (define* (emacs-byte-compile-directory dir)
(list (search-path-specification
(variable "EMACSLOADPATH")
(files '("share/emacs/site-lisp")))
+ (search-path-specification
+ (variable "EMACSNATIVELOADPATH")
+ (files '("lib/emacs/native-site-lisp")))
(search-path-specification
(variable "INFOPATH")
(files '("share/info")))))
@@ -377,12 +433,16 @@ (define-public emacs-minimal
(arguments
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
- #~(list "--with-gnutls=no" "--disable-build-details"))
+ #~(list "--with-gnutls=no" "--with-native-compilation"
+ "--disable-build-details"))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
(delete 'strip-double-wrap)))))
- (inputs (list ncurses coreutils gzip))
+ (inputs (list ncurses coreutils gzip
+ (make-ld-wrapper "ld-wrapper" #:binutils binutils)
+ binutils glibc libgccjit zlib))
(native-inputs (list autoconf pkg-config))))
(define-public emacs-xwidgets
@@ -395,6 +455,7 @@ (define-public emacs-xwidgets
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(cons "--with-xwidgets" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
@@ -419,6 +480,7 @@ (define-public emacs-no-x
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(delete "--with-cairo" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
@@ -437,6 +499,7 @@ (define-public emacs-no-x-toolkit
(substitute-keyword-arguments (package-arguments emacs)
((#:configure-flags flags #~'())
#~(cons "--with-x-toolkit=no" #$flags))
+ ((#:modules _) (%emacs-modules build-system))
((#:phases phases)
#~(modify-phases #$phases
(delete 'restore-emacs-pdmp)
--
2.37.2
L
L
Liliana Marie Prikler wrote on 24 Aug 2022 23:59
[PATCH v3 7/7] gnu: emacs-yasnippet: Fix build.
(address . 57086@debbugs.gnu.org)
b66f8cd47de9fbcd29c362bd0e623879f9d3d377.camel@gmail.com
* gnu/packages/patches/emacs-yasnippet-fix-tests.patch: Handle arguments
in buffer-list.
---
.../patches/emacs-yasnippet-fix-tests.patch | 30 +++++++++++++++----
1 file changed, 24 insertions(+), 6 deletions(-)

Toggle diff (71 lines)
diff --git a/gnu/packages/patches/emacs-yasnippet-fix-tests.patch b/gnu/packages/patches/emacs-yasnippet-fix-tests.patch
index 475352d8db..c70cc75d92 100644
--- a/gnu/packages/patches/emacs-yasnippet-fix-tests.patch
+++ b/gnu/packages/patches/emacs-yasnippet-fix-tests.patch
@@ -9,12 +9,13 @@ Content-Transfer-Encoding: 8bit
- Emacs 28 has a new mode ‘lisp-data-mode’ for Lisp data.
- A test that was temporarily broken passes again.
- The default for ‘org-adapt-indentation’ has changed.
+- buffer-list may be called with arguments when native-comp is enabled.
---
- yasnippet-tests.el | 41 ++++++++++++++++++++++++++---------------
- 1 file changed, 26 insertions(+), 15 deletions(-)
+ yasnippet-tests.el | 45 ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 28 insertions(+), 17 deletions(-)
diff --git a/yasnippet-tests.el b/yasnippet-tests.el
-index b8a7980f..9fadf00c 100644
+index f7ca2bb..7618ab7 100644
--- a/yasnippet-tests.el
+++ b/yasnippet-tests.el
@@ -1,6 +1,6 @@
@@ -55,7 +56,21 @@ index b8a7980f..9fadf00c 100644
;; Some org-mode versions leave trailing whitespace, some don't.
(delete-trailing-whitespace)
(should (equal expected (buffer-string))))))
-@@ -1390,7 +1393,9 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
+@@ -1195,11 +1198,11 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
+ (let ((saved-sym (make-symbol "yas--buffer-list")))
+ `(let ((,saved-sym (symbol-function 'buffer-list)))
+ (cl-letf (((symbol-function 'buffer-list)
+- (lambda ()
++ (lambda (&rest args)
+ (cl-remove-if (lambda (buf)
+ (with-current-buffer buf
+ (eq major-mode 'lisp-interaction-mode)))
+- (funcall ,saved-sym)))))
++ (funcall ,saved-sym args)))))
+ ,@body))))
+
+
+@@ -1356,7 +1359,9 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
,@(if (fboundp 'prog-mode)
'(prog-mode))
emacs-lisp-mode
@@ -66,7 +81,7 @@ index b8a7980f..9fadf00c 100644
(observed (yas--modes-to-activate)))
(should (equal major-mode (car observed)))
(should (equal (sort expected #'string<) (sort observed #'string<))))))))
-@@ -1418,7 +1423,11 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
+@@ -1384,7 +1389,11 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
'(prog-mode))
emacs-lisp-mode
and-also-this-one
@@ -79,7 +94,7 @@ index b8a7980f..9fadf00c 100644
(observed (yas--modes-to-activate)))
(should (equal expected-first
(cl-subseq observed 0 (length expected-first))))
-@@ -1691,9 +1700,11 @@ TODO: be meaner"
+@@ -1657,9 +1666,11 @@ TODO: be meaner"
"Test expansion of snippets in org source blocks."
;; org 9+ no longer runs fontification for text-mode, so our hacks
;; don't work. Note that old ert doesn't have skipping, so we have
@@ -93,3 +108,6 @@ index b8a7980f..9fadf00c 100644
:passed :failed)
(let ((text-mode-hook #'yas-minor-mode))
(do-yas-org-native-tab-in-source-block "text")))
+--
+2.37.2
+
--
2.37.2
L
L
Liliana Marie Prikler wrote on 23 Oct 2022 13:37
(address . control@debbugs.gnu.org)
52ccd7469dd567ec5de897c7507439ddd237c053.camel@gmail.com
close 57086
thanks
?