From: Hilton Chain via Guix-patches via <guix-patches@gnu.org>
To: Liliana Marie Prikler <liliana.prikler@gmail.com>
Cc: 65478@debbugs.gnu.org, Andrew Tropin <andrew@trop.in>
Subject: [bug#65478] [PATCH emacs-team] gnu: emacs-flim-lb: Explicitly compile files to bytecode.
Date: Mon, 28 Aug 2023 12:21:30 +0800 [thread overview]
Message-ID: <87y1hv6blh.wl-hako@ultrarare.space> (raw)
In-Reply-To: <2ea4d41e810638483c6c8e9f2dbfd901ecae8c98.camel@gmail.com>
On Sun, 27 Aug 2023 23:49:49 +0800,
Liliana Marie Prikler wrote:
>
> Am Sonntag, dem 27.08.2023 um 23:39 +0800 schrieb Hilton Chain:
> > Currently on master:
> >
> > $ guix build emacs-flim-lb
> > has elc files.
> >
> > $ guix build emacs-flim-lb --with-input=emacs-minimal=emacs
> > has elc and eln files.
> >
> > $ guix build emacs-flim-lb --with-input=emacs-minimal=emacs-next
> > has eln files.
> >
> > And I tried to build it with 'build phase deleted as well. Had them
> > all tested and came to the conclusion that elc files are required.
> Hmm, this sounds like a failure of emacs-build-system then. The
> assumption (based on Emacs 28) had been that both bytecode and native
> compilation are done with one function call. Maybe that no longer
> holds?
Found a change in `batch-byte+native-compile' with
$ git diff emacs-28.2..emacs-29.1 lisp/emacs-lisp/comp.el
--8<---------------cut here---------------start------------->8---
+(defun comp-write-bytecode-file (eln-file)
+ "After native compilation write the bytecode file for ELN-FILE.
+Make sure that eln file is younger than byte-compiled one and
+return the filename of this last.
+
+This function can be used only in conjuntion with
+`byte+native-compile' `byte-to-native-output-buffer-file' (see
+`batch-byte+native-compile')."
+ (pcase byte-to-native-output-buffer-file
+ (`(,temp-buffer . ,target-file)
+ (unwind-protect
+ (progn
+ (byte-write-target-file temp-buffer target-file)
+ ;; Touch the .eln in order to have it older than the
+ ;; corresponding .elc.
+ (when (stringp eln-file)
+ (set-file-times eln-file)))
+ (kill-buffer temp-buffer))
+ target-file)))
;;;###autoload
(defun batch-byte+native-compile ()
@@ -4221,17 +4345,16 @@ Generate .elc files in addition to the .eln files.
Force the produced .eln to be outputted in the eln system
directory (the last entry in `native-comp-eln-load-path') unless
`native-compile-target-directory' is non-nil. If the environment
-variable 'NATIVE_DISABLED' is set, only byte compile."
+variable \"NATIVE_DISABLED\" is set, only byte compile."
(comp-ensure-native-compiler)
(if (equal (getenv "NATIVE_DISABLED") "1")
(batch-byte-compile)
(cl-assert (length= command-line-args-left 1))
- (let ((byte+native-compile t)
- (byte-to-native-output-file nil))
- (batch-native-compile)
- (pcase byte-to-native-output-file
- (`(,tempfile . ,target-file)
- (rename-file tempfile target-file t))))))
+ (let* ((byte+native-compile t)
+ (byte-to-native-output-buffer-file nil)
+ (eln-file (car (batch-native-compile))))
+ (comp-write-bytecode-file eln-file)
+ (setq command-line-args-left (cdr command-line-args-left)))))
--8<---------------cut here---------------end--------------->8---
And the following patch should work for Emacs 29, but not 28:
--8<---------------cut here---------------start------------->8---
diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
index 850b1f5f2a..6c27b186e3 100644
--- a/guix/build/emacs-utils.scm
+++ b/guix/build/emacs-utils.scm
@@ -138,7 +138,7 @@ (define* (emacs-compile-directory dir)
(files (directory-files-recursively ,dir "\\.el$")))
(mapc
(lambda (file)
- (let (byte-to-native-output-file
+ (let (byte-to-native-output-buffer-file
;; First entry is the eln-cache of the homeless shelter,
;; second entry is the install directory.
(eln-dir (and (native-comp-available-p)
@@ -148,12 +148,12 @@ (define* (emacs-compile-directory dir)
(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))))
+ ;; Emacs. See `comp-write-bytecode-file' in comp.el for the actual
+ ;; shape of byte-to-native-output-buffer-file.
+ (unless (null byte-to-native-output-buffer-file)
+ (byte-write-target-file
+ (car byte-to-native-output-buffer-file)
+ (cdr byte-to-native-output-buffer-file)))))
files))
#:dynamic? #t))
--8<---------------cut here---------------end--------------->8---
next prev parent reply other threads:[~2023-08-28 4:23 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-23 18:00 [bug#65478] [PATCH emacs-team] gnu: emacs-flim-lb: Explicitly compile files to bytecode Hilton Chain via Guix-patches via
2023-08-27 6:24 ` Liliana Marie Prikler
2023-08-27 12:52 ` Hilton Chain via Guix-patches via
2023-08-27 15:13 ` Liliana Marie Prikler
2023-08-27 15:39 ` Hilton Chain via Guix-patches via
2023-08-27 15:49 ` Liliana Marie Prikler
2023-08-28 4:21 ` Hilton Chain via Guix-patches via [this message]
2023-08-28 18:28 ` Liliana Marie Prikler
2023-08-29 1:33 ` [bug#65478] [PATCH emacs-team v2] build: emacs-utils: Adjust `emacs-compile-directory' for Emacs 29 Hilton Chain via Guix-patches via
2023-08-30 19:40 ` Liliana Marie Prikler
2023-09-01 16:14 ` Hilton Chain via Guix-patches via
2023-09-01 16:15 ` [bug#65478] [PATCH emacs-team v3] " Hilton Chain via Guix-patches via
2023-09-01 19:37 ` Liliana Marie Prikler
2023-09-09 8:23 ` bug#65478: " Liliana Marie Prikler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y1hv6blh.wl-hako@ultrarare.space \
--to=guix-patches@gnu.org \
--cc=65478@debbugs.gnu.org \
--cc=andrew@trop.in \
--cc=hako@ultrarare.space \
--cc=liliana.prikler@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).