Message ID | BYAPR05MB4023DFEC30DC46812C6AE7D1C5369@BYAPR05MB4023.namprd05.prod.outlook.com |
---|---|
State | Accepted |
Headers | show |
Series | [bug#48205,v2] gnu: emacs-org: Make build reproducible | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
Hi, Morgan.J.Smith@outlook.com skribis: > From: Morgan Smith <Morgan.J.Smith@outlook.com> > > * gnu/packages/emacs-xyz.scm (emacs-org)[phases]: Remove loaddefs and use > autoloads instead. Copy autoloads into build directory. [...] > (modify-phases %standard-phases > + ;; Org ships with the file org-loaddefs.el that functions like our > + ;; autoloads. Something about the interaction between the loaddefs > + ;; and autoloads makes the build non-deterministic. We should opt for > + ;; our autoloads system over the loaddefs since the loaddefs are > + ;; autogenerated for the release tarball. org-loaddefs.el is > + ;; mentioned by name in the source files so we have to do a blanket > + ;; regex search and replace. I wonder about the interaction. Are you sure using org-autoloads.el everywhere is enough to fix the problem? With current master, I see: --8<---------------cut here---------------start------------->8--- $ guix challenge emacs-org --substitute-urls='https://ci.guix.gnu.org https://bayfront.guix.gnu.org' /gnu/store/2pny4z6mbi2aybgzzxz0yrzkds7hbpmq-emacs-org-9.4.6 contents differ: no local build for '/gnu/store/2pny4z6mbi2aybgzzxz0yrzkds7hbpmq-emacs-org-9.4.6' https://ci.guix.gnu.org/nar/lzip/2pny4z6mbi2aybgzzxz0yrzkds7hbpmq-emacs-org-9.4.6: 098vc0wpc0rp9qrmh8l75n77j0bd4xjya3q8vd317rxdsfs9dd4n https://bayfront.guix.gnu.org/nar/lzip/2pny4z6mbi2aybgzzxz0yrzkds7hbpmq-emacs-org-9.4.6: 0zfzlf28rs7rjvvlq1d3b7cngcvz5grvrkjvsc5j9vp0ikn0zg9p differing files: /share/emacs/site-lisp/org-9.4.6/org-loaddefs.el /share/emacs/site-lisp/org-9.4.6/org-autoloads.elc /share/emacs/site-lisp/org-9.4.6/org-autoloads.el --8<---------------cut here---------------end--------------->8--- And with diffoscope: --8<---------------cut here---------------start------------->8--- $ guix challenge emacs-org --substitute-urls='https://ci.guix.gnu.org https://bayfront.guix.gnu.org' --diff=diffoscope /gnu/store/2pny4z6mbi2aybgzzxz0yrzkds7hbpmq-emacs-org-9.4.6 contents differ: no local build for '/gnu/store/2pny4z6mbi2aybgzzxz0yrzkds7hbpmq-emacs-org-9.4.6' https://ci.guix.gnu.org/nar/lzip/2pny4z6mbi2aybgzzxz0yrzkds7hbpmq-emacs-org-9.4.6: 098vc0wpc0rp9qrmh8l75n77j0bd4xjya3q8vd317rxdsfs9dd4n https://bayfront.guix.gnu.org/nar/lzip/2pny4z6mbi2aybgzzxz0yrzkds7hbpmq-emacs-org-9.4.6: 0zfzlf28rs7rjvvlq1d3b7cngcvz5grvrkjvsc5j9vp0ikn0zg9p bayfront.guix.gnu.org 1.7MiB 7.9MiB/s 00:00 [##################] 100.0%--- /tmp/guix-directory.vqBGkT +++ /tmp/guix-directory.H4HEMX │ --- /tmp/guix-directory.vqBGkT/share ├── +++ /tmp/guix-directory.H4HEMX/share │ │ --- /tmp/guix-directory.vqBGkT/share/emacs │ ├── +++ /tmp/guix-directory.H4HEMX/share/emacs │ │ │ --- /tmp/guix-directory.vqBGkT/share/emacs/site-lisp │ │ ├── +++ /tmp/guix-directory.H4HEMX/share/emacs/site-lisp │ │ │ │ --- /tmp/guix-directory.vqBGkT/share/emacs/site-lisp/org-9.4.6 │ │ │ ├── +++ /tmp/guix-directory.H4HEMX/share/emacs/site-lisp/org-9.4.6 │ │ │ │ │ --- /tmp/guix-directory.vqBGkT/share/emacs/site-lisp/org-9.4.6/org-autoloads.el │ │ │ │ ├── +++ /tmp/guix-directory.H4HEMX/share/emacs/site-lisp/org-9.4.6/org-autoloads.el │ │ │ │ │ @@ -1071,28 +1071,52 @@ │ │ │ │ │ ;;;### (autoloads nil "org-mouse" "org-mouse.el" (0 1 0 0)) │ │ │ │ │ ;;; Generated autoloads from org-mouse.el │ │ │ │ │ │ │ │ │ │ (if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-mouse" '("org-mouse-"))) │ │ │ │ │ │ │ │ │ │ ;;;*** │ │ │ │ │ │ │ │ │ │ +;;;### (autoloads "actual autoloads are elsewhere" "org-num" "org-num.el" │ │ │ │ │ +;;;;;; (0 1 0 0)) │ │ │ │ │ +;;; Generated autoloads from org-num.el │ │ │ │ │ + │ │ │ │ │ +(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-num" '("org-num-"))) │ │ │ │ │ + │ │ │ │ │ +;;;*** │ │ │ │ │ + │ │ │ │ │ ;;;### (autoloads nil "org-pcomplete" "org-pcomplete.el" (0 1 0 0)) │ │ │ │ │ ;;; Generated autoloads from org-pcomplete.el │ │ │ │ │ │ │ │ │ │ (if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-pcomplete" '("org-" "pcomplete/org-mode/"))) │ │ │ │ │ │ │ │ │ │ ;;;*** │ │ │ │ │ │ │ │ │ │ +;;;### (autoloads "actual autoloads are elsewhere" "org-plot" "org-plot.el" │ │ │ │ │ +;;;;;; (0 1 0 0)) │ │ │ │ │ +;;; Generated autoloads from org-plot.el │ │ │ │ │ + │ │ │ │ │ +(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-plot" '("org-plot"))) │ │ │ │ │ + │ │ │ │ │ +;;;*** │ │ │ │ │ + │ │ │ │ │ ;;;### (autoloads nil "org-protocol" "org-protocol.el" (0 1 0 0)) │ │ │ │ │ ;;; Generated autoloads from org-protocol.el │ │ │ │ │ │ │ │ │ │ (if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-protocol" '("org-protocol-"))) │ │ │ │ │ │ │ │ │ │ ;;;*** --8<---------------cut here---------------end--------------->8--- Thanks, Ludo’.
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 1d954ec5bd..180b2709fe 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -11761,6 +11761,27 @@ (define-public emacs-org (arguments `(#:phases (modify-phases %standard-phases + ;; Org ships with the file org-loaddefs.el that functions like our + ;; autoloads. Something about the interaction between the loaddefs + ;; and autoloads makes the build non-deterministic. We should opt for + ;; our autoloads system over the loaddefs since the loaddefs are + ;; autogenerated for the release tarball. org-loaddefs.el is + ;; mentioned by name in the source files so we have to do a blanket + ;; regex search and replace. + (add-after 'unpack 'use-autoloads + (lambda _ + (delete-file "org-loaddefs.el") + (substitute* (find-files "." "\\.el$") + (("org-loaddefs.el") "org-autoloads.el")))) + ;; We create the autoloads directly in the install folder. During + ;; compilation org checks for the autoloads file so we need to copy + ;; it to the build directory. + (add-after 'make-autoloads 'copy-autoload-to-build-dir + (lambda* (#:key outputs #:allow-other-keys) + (copy-file (string-append + (elpa-directory (assoc-ref outputs "out")) + "/org-autoloads.el") + "org-autoloads.el"))) (add-after 'install 'install-documentation (lambda* (#:key outputs #:allow-other-keys) (let* ((share (string-append (assoc-ref outputs "out") "/share"))
From: Morgan Smith <Morgan.J.Smith@outlook.com> * gnu/packages/emacs-xyz.scm (emacs-org)[phases]: Remove loaddefs and use autoloads instead. Copy autoloads into build directory. --- Thanks for the suggestions! Sorry about the delay. Also sorry about the comment. It's probably a little too long :/. I need to work on my english and my ability to be concise. gnu/packages/emacs-xyz.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)