From: Morgan Smith <morgan.j.sm...@outlook.com> * gnu/packages/emacs.scm (emacs): Update to 27.1. [arguments]: Add --with-cairo and --with-modules to #:configure-flags. Add restore-emacs-pdump phase. [inputs]: Add cairo, libxaw, jansson, gmp, and harfbuzz. Remove imagemagick and libxft. [native-inputs]: Add texlive. (emacs-wide-int): Mark as deprecated package. (emacs-no-x): [arguments]: Add --with-jpeg=no --with-gif=no --with-tiff=no to #:configure-flags. ---
Hello! Your patch didn't build for me so I made some slight changes. I added libxaw as an input, and added some configure flags to emacs-no-x. I'm now using this patch to run Emacs 27.1 on my main machine (inadvisable I know), and my personal config is running flawlessy with the exception of emacs-clojure-mode, emacs-elisp-regs, and emacs-helpful. Hopefully this helps! Morgan gnu/packages/emacs.scm | 76 +++++++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index ad8d4b0606..48ae899dcf 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -58,9 +58,9 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages image) - #:use-module (gnu packages imagemagick) #:use-module (gnu packages linux) ; alsa-lib #:use-module (gnu packages mail) ; for mailutils + #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) #:use-module (gnu packages texinfo) @@ -75,15 +75,14 @@ (define-public emacs (package (name "emacs") - (version "26.3") + (version "27.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/emacs/emacs-" version ".tar.xz")) (sha256 - (base32 - "119ldpk7sgn9jlpyngv5y4z3i7bb8q3xp4p0qqi7i5nq39syd42d")) - (patches (search-patches "emacs-exec-path.patch" + (base32 "0h9f2wpmp6rb5rfwvqwv1ia1nw86h74p7hnz3vb3gjazj67i4k2a")) + (patches (search-patches "emacs27-exec-path.patch" "emacs-fix-scheme-indent-function.patch" "emacs-ignore-empty-xim-styles.patch" "emacs-source-date-epoch.patch")) @@ -94,16 +93,7 @@ ;; 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"))) + (find-files "." "loaddefs\\.el$"))) ;; Make sure Tramp looks for binaries in the right places on ;; remote Guix System machines, where 'getconf PATH' returns @@ -130,6 +120,9 @@ (arguments `(#:tests? #f ; no check target #:configure-flags (list "--with-modules" + ;; --with-cairo will become the default in + ;; Emacs 28 + "--with-cairo" "--disable-build-details") #:phases (modify-phases %standard-phases @@ -180,9 +173,35 @@ ;; which leads to conflicts. (delete-file (string-append lisp-dir "/subdirs.el")) ;; Byte compile the site-start files. - (emacs-byte-compile-directory lisp-dir))))))) + (emacs-byte-compile-directory lisp-dir)))) + ;; Needed when building from git + (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$"))) + (when (not (null? pdmp-real)) + (for-each (lambda (wrapper real) + (delete-file wrapper) + (rename-file real wrapper)) + pdmp pdmp-real)) + #t)))))) (inputs `(("gnutls" ,gnutls) + ("jansson" ,jansson) + ("harfbuzz" ,harfbuzz) ("ncurses" ,ncurses) ;; Avoid Emacs's limited movemail substitute that retrieves POP3 email @@ -190,13 +209,14 @@ ("mailutils" ,mailutils) ;; TODO: Add the optional dependencies. + ("cairo" ,cairo) ("libx11" ,libx11) + ("libxaw" ,libxaw) ("gtk+" ,gtk+) - ("libxft" ,libxft) ("libtiff" ,libtiff) ("giflib" ,giflib) + ("gmp" ,gmp) ("libjpeg" ,libjpeg-turbo) - ("imagemagick" ,imagemagick) ("acl" ,acl) ;; When looking for libpng `configure' links with `-lpng -lz', so we @@ -360,7 +380,8 @@ languages.") `(("guix-emacs.el" ,(search-auxiliary-file "emacs/guix-emacs.el")) ("ncurses" ,ncurses))) (native-inputs - `(("pkg-config" ,pkg-config))))) + `(("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))))) (define-public emacs-xwidgets (package @@ -384,11 +405,14 @@ editor (with xwidgets support)") (synopsis "The extensible, customizable, self-documenting text editor (console only)") (build-system gnu-build-system) + (arguments + (substitute-keyword-arguments (package-arguments emacs) + ((#:configure-flags flags ''()) + `(list "--with-jpeg=no" "--with-gif=no" "--with-tiff=no")))) (inputs (fold alist-delete (package-inputs emacs) '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg" - "imagemagick" "libpng" "librsvg" "libxpm" "libice" - "libsm" + "libpng" "librsvg" "libxpm" "libice" "libsm" ;; These depend on libx11, so remove them as well. "libotf" "m17n-lib" "dbus"))))) @@ -407,15 +431,7 @@ editor (without an X toolkit)" ) `(cons "--with-x-toolkit=no" ,cf))))))) (define-public emacs-wide-int - (package - (inherit emacs) - (name "emacs-wide-int") - (synopsis "The extensible, customizable, self-documenting text -editor (with wide ints)" ) - (arguments - (substitute-keyword-arguments (package-arguments emacs) - ((#:configure-flags flags) - `(cons "--with-wide-int" ,flags)))))) + (deprecated-package "emacs-wide-int" emacs)) (define-public guile-emacs (let ((commit "41120e0f595b16387eebfbf731fff70481de1b4b") -- 2.28.0