[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
38/285: gnu: Add emacs-next.
From: |
guix-commits |
Subject: |
38/285: gnu: Add emacs-next. |
Date: |
Sun, 29 Dec 2019 20:43:56 -0500 (EST) |
kkebreau pushed a commit to branch wip-gnome3.34
in repository guix.
commit 2ecc70b78a1dd99eedb4ebfd22e511d501a044b4
Author: Amin Bandali <address@hidden>
Date: Tue Dec 17 23:49:49 2019 -0500
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.
Signed-off-by: Ludovic Courtès <address@hidden>
---
gnu/local.mk | 1 +
gnu/packages/emacs.scm | 110 ++++++++++++++++++++++++++-
gnu/packages/patches/emacs27-exec-path.patch | 18 +++++
3 files changed, 127 insertions(+), 2 deletions(-)
diff --git a/gnu/local.mk b/gnu/local.mk
index 95227fc..8b0ddbf 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -803,6 +803,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 eba7f88..ebe47d7 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -17,6 +17,9 @@
;;; Copyright © 2018 Mathieu Othacehe <address@hidden>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <address@hidden>
;;; Copyright © 2019 Jesse John Gildersleve <address@hidden>
+;;; Copyright © 2019 Valentin Ignatev <address@hidden>
+;;; Copyright © 2019 Leo Prikler <address@hidden>
+;;; Copyright © 2019 Amin Bandali <address@hidden>
;;;
;;; 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 0000000..418aa63
--- /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)
- 36/285: gnu: Add smb4k., (continued)
- 36/285: gnu: Add smb4k., guix-commits, 2019/12/29
- 43/285: gnu: nnn: Update to 2.8.1., guix-commits, 2019/12/29
- 44/285: gnu: screenfetch: Update to 3.9.1., guix-commits, 2019/12/29
- 45/285: gnu: igt-gpu-tools: Fetch from upstream git repository., guix-commits, 2019/12/29
- 54/285: gnu: Fix typo., guix-commits, 2019/12/29
- 52/285: gnu: mpd: Update to 0.21.17., guix-commits, 2019/12/29
- 29/285: gnu: Add kmag., guix-commits, 2019/12/29
- 28/285: gnu: Add kate., guix-commits, 2019/12/29
- 32/285: gnu: Add kronometer., guix-commits, 2019/12/29
- 31/285: gnu: Add kmouth., guix-commits, 2019/12/29
- 38/285: gnu: Add emacs-next.,
guix-commits <=
- 39/285: gnu: tophat: Build with GCC 5, guix-commits, 2019/12/29
- 50/285: gnu: speedtest-cli: Update to 2.1.2., guix-commits, 2019/12/29
- 47/285: gnu: clamav: Update to 0.102.1., guix-commits, 2019/12/29
- 46/285: gnu: igt-gpu-tools: Update to 1.24., guix-commits, 2019/12/29
- 49/285: gnu: batctl: Update to 2019.5., guix-commits, 2019/12/29
- 51/285: gnu: libmpdclient: Update to 2.17., guix-commits, 2019/12/29
- 60/285: gnu: xxhash: Update to 0.7.2., guix-commits, 2019/12/29
- 57/285: gnu: boinc-client: Update to 7.16.3., guix-commits, 2019/12/29
- 61/285: gnu: gnome-shell-extension-dash-to-dock: Update to 67., guix-commits, 2019/12/29
- 70/285: gnu: Remove "tags" properties for KDE utils., guix-commits, 2019/12/29