guix: emacs-utils: Make emacs-compile-directory forwards-compatible.

Newer (development) builds of Emacs 30 mark a number of functions related to
native compilation as ‘internal’.  Since we rely on such functions and there
does not appear to be a high-level replacement at the moment, let's work
around this case.

* guix/build/emacs-utils.scm (emacs-compile-directory): Require comp early
and check if ‘comp-write-bytecode-file’ is available.

Fixes: Upstream renamed comp-write-bytecode-file <https://bugs.gnu.org/69201>
This commit is contained in:
Liliana Marie Prikler 2024-03-02 16:56:13 +01:00
parent 3d4fc910f7
commit 7f3f70eedb
No known key found for this signature in database
GPG Key ID: 442A84B8C70E2F87

View File

@ -136,7 +136,14 @@ 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$")))
(files (directory-files-recursively ,dir "\\.el$"))
(write-bytecode
(and (native-comp-available-p)
(progn
(require 'comp)
(if (fboundp 'comp-write-bytecode-file)
'comp-write-bytecode-file
'comp--write-bytecode-file)))))
(mapc
(lambda (file)
(let (byte-to-native-output-buffer-file
@ -152,7 +159,7 @@ If native code is not supported, compile to bytecode instead."
(byte-compile-file file))
;; After native compilation, write the bytecode file.
(unless (null byte-to-native-output-buffer-file)
(comp-write-bytecode-file nil))))
(funcall write-bytecode nil))))
files))
#:dynamic? #t))