Package: guix-patches;
Reported by: Amin Bandali <bandali <at> gnu.org>
Date: Wed, 18 Dec 2019 20:06:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 38662 in the body.
You can then email your comments to 38662 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
guix-patches <at> gnu.org
:bug#38662
; Package guix-patches
.
(Wed, 18 Dec 2019 20:06:01 GMT) Full text and rfc822 format available.Amin Bandali <bandali <at> gnu.org>
:guix-patches <at> gnu.org
.
(Wed, 18 Dec 2019 20:06:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Amin Bandali <bandali <at> gnu.org> To: guix-patches <at> gnu.org Cc: Amin Bandali <bandali <at> gnu.org> Subject: [PATCH] gnu: Add emacs-next. Date: Wed, 18 Dec 2019 15:04:19 -0500
Add `emacs-next' for building latest Emacs from git. * gnu/packages/emacs.scm (emacs-next): New variable. (emacs): make the autoload deletion snippet not fail when eshell/esh-groups.el does not exist. This enables reuse of the entire snippet field of `emacs' for `emacs-next'. --- gnu/packages/emacs.scm | 64 +++++++++++++++++++- gnu/packages/patches/emacs27-exec-path.patch | 12 ++++ 2 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/emacs27-exec-path.patch diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index eba7f88551..102754deed 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -17,6 +17,9 @@ ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe <at> gmail.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me <at> tobias.gr> ;;; Copyright © 2019 Jesse John Gildersleve <jessejohngildersleve <at> zohomail.eu> +;;; Copyright © 2019 Valentin Ignatev <valentignatev <at> gmail.com> +;;; Copyright © 2019 Leo Prikler <leo.prikler <at> student.tugraz.at> +;;; Copyright © 2019 Amin Bandali <bandali <at> gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -61,6 +64,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) + #:use-module (gnu packages web) ; for jansson #:use-module (gnu packages webkit) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -83,15 +87,15 @@ "emacs-source-date-epoch.patch")) (modules '((guix build utils))) (snippet - ;; Delete the bundled byte-compiled elisp files and - ;; generated autoloads. '(with-directory-excursion "lisp" + ;; Delete the bundled byte-compiled elisp files and generated + ;; autoloads. (for-each delete-file (append (find-files "." "\\.elc$") (find-files "." "loaddefs\\.el$") ;; This is the only "autoloads" file that ;; does not have "*loaddefs.el" name. - '("eshell/esh-groups.el"))) + (find-files "." "eshell/esh-groups\\.el$"))) ;; Make sure Tramp looks for binaries in the right places on ;; remote Guix System machines, where 'getconf PATH' returns @@ -211,6 +215,60 @@ large Lisp programs. It has full Unicode support for nearly all human languages.") (license license:gpl3+))) +(define-public emacs-next + (let ((commit "6008b679f65f8377a1a1b4601024ac83df013caf") + (revision "0")) + (package + (inherit emacs) + (name "emacs-next") + (version (git-version "27" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/emacs.git") + (commit commit))) + (sha256 (base32 "0niamywp3cq05hqc7k693c3d12jbqbzbfgl4aza9dja0jidv4b80")) + (file-name (git-file-name name version)) + (patches (search-patches "emacs27-exec-path.patch" + "emacs-fix-scheme-indent-function.patch" + "emacs-source-date-epoch.patch")) + (modules (origin-modules (package-source emacs))) + (snippet (origin-snippet (package-source emacs))))) + (arguments + (substitute-keyword-arguments (package-arguments emacs) + ((#:phases phases) + `(modify-phases ,phases + ;; The 'reset-gzip-timestamps phase will throw a + ;; permission error if gzip files aren't writable then + (add-before + 'reset-gzip-timestamps + 'make-compressed-files-writable + (lambda _ + (for-each make-file-writable + (find-files %output ".*\\.t?gz$")) + #t)) + ;; restore the dump file that Emacs installs somewhere in + ;; libexec/ to its original state + (add-after 'glib-or-gtk-wrap 'restore-emacs-pdmp + (lambda* (#:key outputs target #:allow-other-keys) + (let* ((libexec (string-append (assoc-ref outputs "out") + "/libexec")) + ;; each of these find-files should return one file + (pdmp (find-files libexec "^emacs\\.pdmp$")) + (pdmp-real (find-files libexec "^\\.emacs\\.pdmp-real$"))) + (for-each (lambda (wrapper real) + (delete-file wrapper) + (rename-file real wrapper)) + pdmp pdmp-real) + #t))))))) + (inputs + `(("jansson" ,jansson) + ,@(package-inputs emacs))) + (native-inputs + `(("autoconf" ,autoconf) ; needed when building from trunk + ,@(package-native-inputs emacs)))))) + (define-public emacs-minimal ;; This is the version that you should use as an input to packages that just ;; need to byte-compile .el files. diff --git a/gnu/packages/patches/emacs27-exec-path.patch b/gnu/packages/patches/emacs27-exec-path.patch new file mode 100644 index 0000000000..368fa6e33a --- /dev/null +++ b/gnu/packages/patches/emacs27-exec-path.patch @@ -0,0 +1,12 @@ +--- a/lisp/loadup.el ++++ b/lisp/loadup.el +@@ -479,7 +479,8 @@ lost after dumping"))) + ((equal dump-mode "dump") "emacs") + ((equal dump-mode "bootstrap") "emacs") + ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp") +- (t (error "unrecognized dump mode %s" dump-mode))))) ++ (t (error "unrecognized dump mode %s" dump-mode)))) ++ (exec-path nil)) + (message "Dumping under the name %s" output) + (condition-case () + (delete-file output) -- 2.23.0
guix-patches <at> gnu.org
:bug#38662
; Package guix-patches
.
(Wed, 18 Dec 2019 20:16:02 GMT) Full text and rfc822 format available.Message #8 received at 38662 <at> debbugs.gnu.org (full text, mbox):
From: Amin Bandali <bandali <at> gnu.org> To: 38662 <at> debbugs.gnu.org Cc: Valentin Ignatev <valentignatev <at> gmail.com>, Leo Prikler <leo.prikler <at> student.tugraz.at> Subject: Re: [bug#38662] [PATCH] gnu: Add emacs-next. Date: Wed, 18 Dec 2019 15:15:10 -0500
Many thanks to Valentin and Leo both for their work and for helping me put this together.
guix-patches <at> gnu.org
:bug#38662
; Package guix-patches
.
(Thu, 19 Dec 2019 02:29:01 GMT) Full text and rfc822 format available.Message #11 received at 38662 <at> debbugs.gnu.org (full text, mbox):
From: Brett Gilio <brettg <at> posteo.net> To: Amin Bandali <bandali <at> gnu.org> Cc: Amin Bandali <bandali <at> gnu.org>, 38662 <at> debbugs.gnu.org Subject: Re: [bug#38662] [PATCH] gnu: Add emacs-next. Date: Thu, 19 Dec 2019 02:28:08 +0000 (UTC)
Dec 18, 2019 2:06:12 PM Amin Bandali : > Add `emacs-next' for building latest Emacs from git. > > * gnu/packages/emacs.scm (emacs-next): New variable. > (emacs): make the autoload deletion snippet not fail when eshell/esh-groups.el > does not exist. This enables reuse of the entire snippet field of `emacs' for > `emacs-next'. > --- > gnu/packages/emacs.scm | 64 +++++++++++++++++++- > gnu/packages/patches/emacs27-exec-path.patch | 12 ++++ > 2 files changed, 73 insertions(+), 3 deletions(-) > create mode 100644 gnu/packages/patches/emacs27-exec-path.patch > > diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm > index eba7f88551..102754deed 100644 > --- a/gnu/packages/emacs.scm > +++ b/gnu/packages/emacs.scm > @@ -17,6 +17,9 @@ > ;;; Copyright � 2018 Mathieu Othacehe > ;;; Copyright � 2018, 2019 Tobias Geerinckx-Rice > ;;; Copyright � 2019 Jesse John Gildersleve > +;;; Copyright � 2019 Valentin Ignatev > +;;; Copyright � 2019 Leo Prikler > +;;; Copyright � 2019 Amin Bandali > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -61,6 +64,7 @@ > #:use-module (gnu packages pkg-config) > #:use-module (gnu packages texinfo) > #:use-module (gnu packages tls) > + #:use-module (gnu packages web) ; for jansson > #:use-module (gnu packages webkit) > #:use-module (gnu packages xml) > #:use-module (gnu packages xorg) > @@ -83,15 +87,15 @@ > "emacs-source-date-epoch.patch")) > (modules '((guix build utils))) > (snippet > - ;; Delete the bundled byte-compiled elisp files and > - ;; generated autoloads. > '(with-directory-excursion "lisp" > + ;; Delete the bundled byte-compiled elisp files and generated > + ;; autoloads. > (for-each delete-file > (append (find-files "." "\\.elc$") > (find-files "." "loaddefs\\.el$") > ;; This is the only "autoloads" file that > ;; does not have "*loaddefs.el" name. > - '("eshell/esh-groups.el"))) > + (find-files "." "eshell/esh-groups\\.el$"))) > > ;; Make sure Tramp looks for binaries in the right places on > ;; remote Guix System machines, where 'getconf PATH' returns > @@ -211,6 +215,60 @@ large Lisp programs. It has full Unicode support for nearly all human > languages.") > (license license:gpl3+))) > > +(define-public emacs-next > + (let ((commit "6008b679f65f8377a1a1b4601024ac83df013caf") > + (revision "0")) > + (package > + (inherit emacs) > + (name "emacs-next") > + (version (git-version "27" revision commit)) > + (source > + (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://git.savannah.gnu.org/git/emacs.git") > + (commit commit))) > + (sha256 (base32 "0niamywp3cq05hqc7k693c3d12jbqbzbfgl4aza9dja0jidv4b80")) > + (file-name (git-file-name name version)) > + (patches (search-patches "emacs27-exec-path.patch" > + "emacs-fix-scheme-indent-function.patch" > + "emacs-source-date-epoch.patch")) > + (modules (origin-modules (package-source emacs))) > + (snippet (origin-snippet (package-source emacs))))) > + (arguments > + (substitute-keyword-arguments (package-arguments emacs) > + ((#:phases phases) > + `(modify-phases ,phases > + ;; The 'reset-gzip-timestamps phase will throw a > + ;; permission error if gzip files aren't writable then > + (add-before > + 'reset-gzip-timestamps > + 'make-compressed-files-writable > + (lambda _ > + (for-each make-file-writable > + (find-files %output ".*\\.t?gz$")) > + #t)) > + ;; restore the dump file that Emacs installs somewhere in > + ;; libexec/ to its original state > + (add-after 'glib-or-gtk-wrap 'restore-emacs-pdmp > + (lambda* (#:key outputs target #:allow-other-keys) > + (let* ((libexec (string-append (assoc-ref outputs "out") > + "/libexec")) > + ;; each of these find-files should return one file > + (pdmp (find-files libexec "^emacs\\.pdmp$")) > + (pdmp-real (find-files libexec "^\\.emacs\\.pdmp-real$"))) > + (for-each (lambda (wrapper real) > + (delete-file wrapper) > + (rename-file real wrapper)) > + pdmp pdmp-real) > + #t))))))) > + (inputs > + `(("jansson" ,jansson) > + ,@(package-inputs emacs))) > + (native-inputs > + `(("autoconf" ,autoconf) ; needed when building from trunk > + ,@(package-native-inputs emacs)))))) > + > (define-public emacs-minimal > ;; This is the version that you should use as an input to packages that just > ;; need to byte-compile .el files. > diff --git a/gnu/packages/patches/emacs27-exec-path.patch b/gnu/packages/patches/emacs27-exec-path.patch > new file mode 100644 > index 0000000000..368fa6e33a > --- /dev/null > +++ b/gnu/packages/patches/emacs27-exec-path.patch > @@ -0,0 +1,12 @@ > +--- a/lisp/loadup.el > ++++ b/lisp/loadup.el > +@@ -479,7 +479,8 @@ lost after dumping"))) > + ((equal dump-mode "dump") "emacs") > + ((equal dump-mode "bootstrap") "emacs") > + ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp") > +- (t (error "unrecognized dump mode %s" dump-mode))))) > ++ (t (error "unrecognized dump mode %s" dump-mode)))) > ++ (exec-path nil)) > + (message "Dumping under the name %s" output) > + (condition-case () > + (delete-file output) > -- > 2.23.0 > This looks good to me! Thank you for your hard work Amin, et al. -- Brett M. Gilio GNU Guix, Contributor | GNU Project, Webmaster [DFC0 C7F7 9EE6 0CA7 AE55 5E19 6722 43C4 A03F 0EEE] <brettg <at> gnu.org> <brettg <at> posteo.net>
guix-patches <at> gnu.org
:bug#38662
; Package guix-patches
.
(Thu, 19 Dec 2019 13:37:02 GMT) Full text and rfc822 format available.Message #14 received at 38662 <at> debbugs.gnu.org (full text, mbox):
From: Valentin Ignatev <valentignatev <at> gmail.com> To: 38662 <at> debbugs.gnu.org Subject: Re: [bug#38662] [PATCH] gnu: Add emacs-next. Date: Thu, 19 Dec 2019 16:38:58 +0300
[Message part 1 (text/plain, inline)]
Thanks a lot for submitting the patch, I'm eager to see emacs-next in upstream! However, there is a potential issue with it. Original emacs package that we inherit here sets EMACSLOADPATH with two values, one of which is some directory path combined with the version: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/emacs.scm?h=master#n196 Every Emacs version creates a dir along the lines of .gix-profile/share/emacs/version/lisp. Current emacs from master hardcodes this version to 27.0.50, so this path becomes .gix-profile/share/emacs/27.0.50/lisp. But since we set version based on commit in this submitted patch, EMACSLOADPATH becomes invalid and this specific directory doesn't end up in the guix-profile/etc/profile script, so when you run emacs, you get multiple errors because Emacs can't load builtin packages. I think that hardcoding a version of emacs-next to "27.0.50" should work well. I'm attaching a patch that can be applied to Amin's emacs-next patch. Regards, Valentin
[Message part 2 (text/html, inline)]
[emacs-next-hardcode-version.patch (text/x-patch, attachment)]
guix-patches <at> gnu.org
:bug#38662
; Package guix-patches
.
(Thu, 19 Dec 2019 14:07:02 GMT) Full text and rfc822 format available.Message #17 received at 38662 <at> debbugs.gnu.org (full text, mbox):
From: Valentin Ignatev <valentignatev <at> gmail.com> To: 38662 <at> debbugs.gnu.org Subject: Re: [bug#38662] [PATCH] gnu: Add emacs-next. Date: Thu, 19 Dec 2019 17:08:19 +0300
[Message part 1 (text/plain, inline)]
As Leo pointed out on IRC, my patch would break guix package -u emacs-next because of hardcoded version. So it's better to fix the search patch instead of applying it.
[Message part 2 (text/html, inline)]
guix-patches <at> gnu.org
:bug#38662
; Package guix-patches
.
(Fri, 20 Dec 2019 22:01:02 GMT) Full text and rfc822 format available.Message #20 received at 38662 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: Amin Bandali <bandali <at> gnu.org> Cc: 38662 <at> debbugs.gnu.org Subject: Re: [bug#38662] [PATCH] gnu: Add emacs-next. Date: Fri, 20 Dec 2019 22:59:56 +0100
Hi Amin, Amin Bandali <bandali <at> gnu.org> skribis: > Add `emacs-next' for building latest Emacs from git. > > * gnu/packages/emacs.scm (emacs-next): New variable. > (emacs): make the autoload deletion snippet not fail when eshell/esh-groups.el > does not exist. This enables reuse of the entire snippet field of `emacs' for > `emacs-next'. Nice! Please also mention the new patch file and add it to gnu/local.mk. It LGTM, but… > (snippet > - ;; Delete the bundled byte-compiled elisp files and > - ;; generated autoloads. > '(with-directory-excursion "lisp" > + ;; Delete the bundled byte-compiled elisp files and generated > + ;; autoloads. > (for-each delete-file > (append (find-files "." "\\.elc$") > (find-files "." "loaddefs\\.el$") > ;; This is the only "autoloads" file that > ;; does not have "*loaddefs.el" name. > - '("eshell/esh-groups.el"))) > + (find-files "." "eshell/esh-groups\\.el$"))) This change causes a rebuild of ‘emacs’, ‘emacs-minimal’, and everything that depends on them (1K+ packages.) Can it be avoided somehow? One solution would be to duplicate the snippet for now in ‘emacs-next’. > --- /dev/null > +++ b/gnu/packages/patches/emacs27-exec-path.patch Please add a line or two at the top explaining what this patch does. Could you send an updated patch? Thanks! Ludo’.
guix-patches <at> gnu.org
:bug#38662
; Package guix-patches
.
(Sun, 22 Dec 2019 06:16:02 GMT) Full text and rfc822 format available.Message #23 received at 38662 <at> debbugs.gnu.org (full text, mbox):
From: Amin Bandali <bandali <at> gnu.org> To: Ludovic Courtès <ludo <at> gnu.org> Cc: 38662 <at> debbugs.gnu.org Subject: Re: [bug#38662] [PATCH] gnu: Add emacs-next. Date: Sun, 22 Dec 2019 01:15:02 -0500
[Message part 1 (text/plain, inline)]
Hi Ludo’, all, Thanks for the all feedback. Below you will find v2 with the requested changes, as well as a workaround for "EMACSLOADPATH" to use the correct version name, currently 27.0.50, for `emacs-next', which I forgot to include in my previous patch.
[0001-gnu-Add-emacs-next.patch (text/x-diff, inline)]
From 3a03851868440c6c0bda81b30693e3ead1196bd2 Mon Sep 17 00:00:00 2001 From: Amin Bandali <bandali <at> gnu.org> Date: Tue, 17 Dec 2019 23:49:49 -0500 Subject: [PATCH v2] gnu: Add emacs-next. Add `emacs-next' for building latest Emacs from git. * gnu/packages/emacs.scm (emacs-next): New variable. (emacs): make the autoload deletion snippet not fail when eshell/esh-groups.el does not exist. This enables reuse of the entire snippet field of `emacs' for `emacs-next'. * gnu/packages/patches/emacs27-exec-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Add the above patch file to it. --- gnu/local.mk | 1 + gnu/packages/emacs.scm | 110 ++++++++++++++++++- gnu/packages/patches/emacs27-exec-path.patch | 18 +++ 3 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/emacs27-exec-path.patch diff --git a/gnu/local.mk b/gnu/local.mk index b9d97ace27..a48e71089d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -802,6 +802,7 @@ dist_patch_DATA = \ %D%/packages/patches/elixir-path-length.patch \ %D%/packages/patches/elm-compiler-disable-reactor.patch \ %D%/packages/patches/elm-compiler-fix-map-key.patch \ + %D%/packages/patches/emacs27-exec-path.patch \ %D%/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch \ %D%/packages/patches/emacs-exec-path.patch \ %D%/packages/patches/emacs-fix-scheme-indent-function.patch \ diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index eba7f88551..ebe47d7186 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -17,6 +17,9 @@ ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe <at> gmail.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me <at> tobias.gr> ;;; Copyright © 2019 Jesse John Gildersleve <jessejohngildersleve <at> zohomail.eu> +;;; Copyright © 2019 Valentin Ignatev <valentignatev <at> gmail.com> +;;; Copyright © 2019 Leo Prikler <leo.prikler <at> student.tugraz.at> +;;; Copyright © 2019 Amin Bandali <bandali <at> gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -61,6 +64,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) + #:use-module (gnu packages web) ; for jansson #:use-module (gnu packages webkit) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -83,14 +87,20 @@ "emacs-source-date-epoch.patch")) (modules '((guix build utils))) (snippet - ;; Delete the bundled byte-compiled elisp files and - ;; generated autoloads. '(with-directory-excursion "lisp" + ;; Delete the bundled byte-compiled elisp files and generated + ;; autoloads. (for-each delete-file (append (find-files "." "\\.elc$") (find-files "." "loaddefs\\.el$") ;; This is the only "autoloads" file that ;; does not have "*loaddefs.el" name. + ;; TODO: Next time changing this package, + ;; replace the following with a call to + ;; `find-files', so that `delete-file' + ;; wouldn't error out when the file is + ;; missing, making the entire snippet field + ;; reusable as-is for `emacs-next' below. '("eshell/esh-groups.el"))) ;; Make sure Tramp looks for binaries in the right places on @@ -211,6 +221,102 @@ large Lisp programs. It has full Unicode support for nearly all human languages.") (license license:gpl3+))) +(define-public emacs-next + (let ((commit "36abf6864604b3061c2e070f8997491fa2bce44c") + (revision "0") + (emacs-version "27.0.50")) + (package + (inherit emacs) + (name "emacs-next") + (version (git-version emacs-version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/emacs.git") + (commit commit))) + (sha256 + (base32 "1ckn607p0clz0dhhlizvv7l03p4nminy48h53xrpz55w4rcrcm2l")) + (file-name (git-file-name name version)) + (patches (search-patches "emacs27-exec-path.patch" + "emacs-fix-scheme-indent-function.patch" + "emacs-source-date-epoch.patch")) + (modules (origin-modules (package-source emacs))) + ;; TODO: once the snippet for `emacs' is changed to not fail when + ;; eshell/esh-groups.el does not exist, replace this snippet with + ;; (snippet (origin-snippet (package-source emacs))))). + (snippet + '(with-directory-excursion "lisp" + ;; Make sure Tramp looks for binaries in the right places on + ;; remote Guix System machines, where 'getconf PATH' returns + ;; something bogus. + (substitute* "net/tramp-sh.el" + ;; Patch the line after "(defcustom tramp-remote-path". + (("\\(tramp-default-remote-path") + (format #f "(tramp-default-remote-path ~s ~s ~s ~s " + "~/.guix-profile/bin" "~/.guix-profile/sbin" + "/run/current-system/profile/bin" + "/run/current-system/profile/sbin"))) + + ;; Make sure Man looks for C header files in the right + ;; places. + (substitute* "man.el" + (("\"/usr/local/include\"" line) + (string-join + (list line + "\"~/.guix-profile/include\"" + "\"/var/guix/profiles/system/profile/include\"") + " "))) + #t)))) + (arguments + (substitute-keyword-arguments (package-arguments emacs) + ((#:phases phases) + `(modify-phases ,phases + ;; The 'reset-gzip-timestamps phase will throw a + ;; permission error if gzip files aren't writable then + (add-before + 'reset-gzip-timestamps + 'make-compressed-files-writable + (lambda _ + (for-each make-file-writable + (find-files %output ".*\\.t?gz$")) + #t)) + ;; restore the dump file that Emacs installs somewhere in + ;; libexec/ to its original state + (add-after 'glib-or-gtk-wrap 'restore-emacs-pdmp + (lambda* (#:key outputs target #:allow-other-keys) + (let* ((libexec (string-append (assoc-ref outputs "out") + "/libexec")) + ;; each of these find-files should return one file + (pdmp (find-files libexec "^emacs\\.pdmp$")) + (pdmp-real (find-files libexec + "^\\.emacs\\.pdmp-real$"))) + (for-each (lambda (wrapper real) + (delete-file wrapper) + (rename-file real wrapper)) + pdmp pdmp-real) + #t))))))) + (inputs + `(("jansson" ,jansson) + ,@(package-inputs emacs))) + (native-inputs + `(("autoconf" ,autoconf) ; needed when building from trunk + ,@(package-native-inputs emacs))) + + ;; TODO: consider changing `emacs' to use a more robust way of + ;; specifying version for "EMACSLOADPATH", so as to avoid having to + ;; duplicate native-search-paths here. + (native-search-paths + (list (search-path-specification + (variable "EMACSLOADPATH") + ;; The versioned entry is for the Emacs' builtin libraries. + (files + (list "share/emacs/site-lisp" + (string-append "share/emacs/" emacs-version "/lisp")))) + (search-path-specification + (variable "INFOPATH") + (files '("share/info")))))))) + (define-public emacs-minimal ;; This is the version that you should use as an input to packages that just ;; need to byte-compile .el files. diff --git a/gnu/packages/patches/emacs27-exec-path.patch b/gnu/packages/patches/emacs27-exec-path.patch new file mode 100644 index 0000000000..418aa633a1 --- /dev/null +++ b/gnu/packages/patches/emacs27-exec-path.patch @@ -0,0 +1,18 @@ +Do not capture the build-time value of $PATH in the 'emacs' executable +since this can noticeably increase the size of the closure of Emacs +with things like GCC being referenced. + +(like emacs-exec-path.patch, but for Emacs 27) + +--- a/lisp/loadup.el ++++ b/lisp/loadup.el +@@ -479,7 +479,8 @@ lost after dumping"))) + ((equal dump-mode "dump") "emacs") + ((equal dump-mode "bootstrap") "emacs") + ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp") +- (t (error "unrecognized dump mode %s" dump-mode))))) ++ (t (error "unrecognized dump mode %s" dump-mode)))) ++ (exec-path nil)) + (message "Dumping under the name %s" output) + (condition-case () + (delete-file output) -- 2.23.0
Ludovic Courtès <ludo <at> gnu.org>
:Amin Bandali <bandali <at> gnu.org>
:Message #28 received at 38662-done <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: Amin Bandali <bandali <at> gnu.org> Cc: 38662-done <at> debbugs.gnu.org Subject: Re: [bug#38662] [PATCH] gnu: Add emacs-next. Date: Mon, 23 Dec 2019 19:26:30 +0100
Hi Amin, Amin Bandali <bandali <at> gnu.org> skribis: > Thanks for the all feedback. Below you will find v2 with the requested > changes, as well as a workaround for "EMACSLOADPATH" to use the correct > version name, currently 27.0.50, for `emacs-next', which I forgot to > include in my previous patch. > > From 3a03851868440c6c0bda81b30693e3ead1196bd2 Mon Sep 17 00:00:00 2001 > From: Amin Bandali <bandali <at> gnu.org> > Date: Tue, 17 Dec 2019 23:49:49 -0500 > Subject: [PATCH v2] gnu: Add emacs-next. > > Add `emacs-next' for building latest Emacs from git. > > * gnu/packages/emacs.scm (emacs-next): New variable. > (emacs): make the autoload deletion snippet not fail when eshell/esh-groups.el > does not exist. This enables reuse of the entire snippet field of `emacs' for > `emacs-next'. > * gnu/packages/patches/emacs27-exec-path.patch: New file. > * gnu/local.mk (dist_patch_DATA): Add the above patch file to it. Applied, thanks! Ludo’.
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Tue, 21 Jan 2020 12:24:04 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.