* [bug#38662] [PATCH] gnu: Add emacs-next. @ 2019-12-18 20:04 Amin Bandali 2019-12-18 20:15 ` Amin Bandali ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Amin Bandali @ 2019-12-18 20:04 UTC (permalink / raw) To: 38662; +Cc: 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 <m.othacehe@gmail.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Jesse John Gildersleve <jessejohngildersleve@zohomail.eu> +;;; Copyright © 2019 Valentin Ignatev <valentignatev@gmail.com> +;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at> +;;; Copyright © 2019 Amin Bandali <bandali@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 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [bug#38662] [PATCH] gnu: Add emacs-next. 2019-12-18 20:04 [bug#38662] [PATCH] gnu: Add emacs-next Amin Bandali @ 2019-12-18 20:15 ` Amin Bandali 2019-12-19 13:38 ` Valentin Ignatev 2019-12-19 2:28 ` Brett Gilio 2019-12-20 21:59 ` Ludovic Courtès 2 siblings, 1 reply; 8+ messages in thread From: Amin Bandali @ 2019-12-18 20:15 UTC (permalink / raw) To: 38662; +Cc: Valentin Ignatev, Leo Prikler Many thanks to Valentin and Leo both for their work and for helping me put this together. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#38662] [PATCH] gnu: Add emacs-next. 2019-12-18 20:15 ` Amin Bandali @ 2019-12-19 13:38 ` Valentin Ignatev 2019-12-19 14:08 ` Valentin Ignatev 0 siblings, 1 reply; 8+ messages in thread From: Valentin Ignatev @ 2019-12-19 13:38 UTC (permalink / raw) To: 38662 [-- Attachment #1.1: Type: text/plain, Size: 1004 bytes --] 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 [-- Attachment #1.2: Type: text/html, Size: 1263 bytes --] [-- Attachment #2: emacs-next-hardcode-version.patch --] [-- Type: text/x-patch, Size: 1128 bytes --] Hardcode version in `emacs-next', use commit in `file-name' * gnu/packages/emacs.scm (emacs-next): Hardcode version to be 27.0.50. Change file-name to use commit instead of version to avoid checkout collisions. diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 102754deed..86795ba046 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -221,7 +221,7 @@ languages.") (package (inherit emacs) (name "emacs-next") - (version (git-version "27" revision commit)) + (version "27.0.50") (source (origin (method git-fetch) @@ -229,7 +229,7 @@ languages.") (url "https://git.savannah.gnu.org/git/emacs.git") (commit commit))) (sha256 (base32 "0niamywp3cq05hqc7k693c3d12jbqbzbfgl4aza9dja0jidv4b80")) - (file-name (git-file-name name version)) + (file-name (git-file-name name commit)) (patches (search-patches "emacs27-exec-path.patch" "emacs-fix-scheme-indent-function.patch" "emacs-source-date-epoch.patch")) ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [bug#38662] [PATCH] gnu: Add emacs-next. 2019-12-19 13:38 ` Valentin Ignatev @ 2019-12-19 14:08 ` Valentin Ignatev 0 siblings, 0 replies; 8+ messages in thread From: Valentin Ignatev @ 2019-12-19 14:08 UTC (permalink / raw) To: 38662 [-- Attachment #1: Type: text/plain, Size: 168 bytes --] 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. [-- Attachment #2: Type: text/html, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#38662] [PATCH] gnu: Add emacs-next. 2019-12-18 20:04 [bug#38662] [PATCH] gnu: Add emacs-next Amin Bandali 2019-12-18 20:15 ` Amin Bandali @ 2019-12-19 2:28 ` Brett Gilio 2019-12-20 21:59 ` Ludovic Courtès 2 siblings, 0 replies; 8+ messages in thread From: Brett Gilio @ 2019-12-19 2:28 UTC (permalink / raw) To: Amin Bandali; +Cc: 38662 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 5351 bytes --] 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@gnu.org> <brettg@posteo.net> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#38662] [PATCH] gnu: Add emacs-next. 2019-12-18 20:04 [bug#38662] [PATCH] gnu: Add emacs-next Amin Bandali 2019-12-18 20:15 ` Amin Bandali 2019-12-19 2:28 ` Brett Gilio @ 2019-12-20 21:59 ` Ludovic Courtès 2019-12-22 6:15 ` Amin Bandali 2 siblings, 1 reply; 8+ messages in thread From: Ludovic Courtès @ 2019-12-20 21:59 UTC (permalink / raw) To: Amin Bandali; +Cc: 38662 Hi Amin, Amin Bandali <bandali@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’. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#38662] [PATCH] gnu: Add emacs-next. 2019-12-20 21:59 ` Ludovic Courtès @ 2019-12-22 6:15 ` Amin Bandali 2019-12-23 18:26 ` bug#38662: " Ludovic Courtès 0 siblings, 1 reply; 8+ messages in thread From: Amin Bandali @ 2019-12-22 6:15 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 38662 [-- Attachment #1: Type: text/plain, Size: 269 bytes --] 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. [-- Attachment #2: 0001-gnu-Add-emacs-next.patch --] [-- Type: text/x-diff, Size: 9825 bytes --] From 3a03851868440c6c0bda81b30693e3ead1196bd2 Mon Sep 17 00:00:00 2001 From: Amin Bandali <bandali@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@gmail.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Jesse John Gildersleve <jessejohngildersleve@zohomail.eu> +;;; Copyright © 2019 Valentin Ignatev <valentignatev@gmail.com> +;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at> +;;; Copyright © 2019 Amin Bandali <bandali@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 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* bug#38662: [PATCH] gnu: Add emacs-next. 2019-12-22 6:15 ` Amin Bandali @ 2019-12-23 18:26 ` Ludovic Courtès 0 siblings, 0 replies; 8+ messages in thread From: Ludovic Courtès @ 2019-12-23 18:26 UTC (permalink / raw) To: Amin Bandali; +Cc: 38662-done Hi Amin, Amin Bandali <bandali@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@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’. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-12-23 18:27 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-12-18 20:04 [bug#38662] [PATCH] gnu: Add emacs-next Amin Bandali 2019-12-18 20:15 ` Amin Bandali 2019-12-19 13:38 ` Valentin Ignatev 2019-12-19 14:08 ` Valentin Ignatev 2019-12-19 2:28 ` Brett Gilio 2019-12-20 21:59 ` Ludovic Courtès 2019-12-22 6:15 ` Amin Bandali 2019-12-23 18:26 ` bug#38662: " Ludovic Courtès
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).