unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
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---




  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).