1
Fork 0
mirror of https://https.git.savannah.gnu.org/git/guix.git/ synced 2025-07-13 02:20:53 +02:00

gnu: emacs: Update to 30.1.

* gnu/packages/emacs.scm (emacs-minimal): Update to 30.1.
(guile-emacs): Remove now unneeded phase.
* gnu/packages/aux-files/emacs/comp-integrity.el: Replace with…
* gnu/packages/aux-files/emacs/comp-integrity-next.el: … this.
Delete file.
* Makefile.am: Unregister it.
* gnu/packages/patches/emacs-exec-path.patch: Replace with…
* gnu/packages/patches/emacs-next-exec-path.patch: … this.
* gnu/packages/patches/emacs-native-comp-driver-options.patch: Replace with…
* gnu/packages/patches/emacs-next-native-comp-driver-options.patch: … this.
* gnu/packages/patches/emacs-native-comp-fix-filenames.patch: Replace with…
* gnu/packages/patches/emacs-next-native-comp-fix-filenames.patch: … this.

Change-Id: Ic144329bfe5a126a5d7e86dd0fdb726cf92de175
This commit is contained in:
Morgan Smith 2025-02-26 12:39:43 -05:00 committed by Liliana Marie Prikler
parent b2bc6ab38c
commit 4aff08d29d
No known key found for this signature in database
GPG key ID: 442A84B8C70E2F87
7 changed files with 84 additions and 212 deletions

View file

@ -438,7 +438,6 @@ dist_noinst_DATA = \
AUX_FILES = \
gnu/packages/aux-files/chromium/master-preferences.json \
gnu/packages/aux-files/emacs/comp-integrity.el \
gnu/packages/aux-files/emacs/comp-integrity-next.el \
gnu/packages/aux-files/emacs/guix-emacs.el \
gnu/packages/aux-files/findclass.php \
gnu/packages/aux-files/guix.vim \

View file

@ -1,121 +0,0 @@
(require 'ert)
(eval-when-compile
(defmacro expect-feature (&optional feature)
`(progn
(eval-when-compile
(or (not ',feature)
(require ',feature)))))
(defmacro expect-native (fun &optional feature)
`(progn
(expect-feature ,feature)
(should (native-comp-function-p (symbol-function ',fun)))))
(defmacro expect-native-if-bound (fun &optional feature)
`(and (expect-feature ,feature)
(boundp ',fun)
(should (native-comp-function-p (symbol-function ',fun)))))
(defmacro expect-builtin (fun &optional feature)
`(should (primitive-function-p (symbol-function ',fun)))))
(expect-native abbrev-mode)
(expect-native backquote-process)
(expect-native mode-line-widen)
(expect-native buffer-menu)
(expect-native button-mode)
(expect-native byte-run-strip-symbol-positions)
(expect-native case-table-get-table)
(expect-native cconv-convert)
(expect-native use-default-char-width-table)
(expect-native cl-generic-p)
(expect-native cl-struct-define)
(expect-native-if-bound x-setup-function-keys)
(expect-native encode-composition-rule)
(expect-native custom-declare-face)
(expect-native minibuffer-prompt-properties--setter)
(expect-native custom-add-choice)
(expect-native debug-early)
(expect-native display-table-slot disp-table)
(expect-native dnd-open-file)
(expect-native dos-mode25 dos-fns)
(expect-native find-file-text dos-w32)
(expect-native-if-bound dynamic-setting-handle-config-changed-event)
(expect-native easy-menu-item-present-p)
(expect-native eldoc-mode)
(expect-native electric-indent-mode)
(expect-native elisp-mode-syntax-propertize)
(expect-native getenv)
(expect-native epa-file-find-file-hook)
(expect-native face-list)
(expect-native find-file-noselect)
(expect-native fill-region)
(expect-native font-lock-change-mode)
(expect-native font-lock-add-keywords)
(expect-native-if-bound fontset-plain-name)
(expect-native format-read)
(expect-native frame-edges)
(expect-native-if-bound fringe-mode)
(expect-native help-quick)
(expect-native-if-bound image-type)
(expect-native indent-region)
(expect-native indian-compose-regexp)
(expect-native msdos-setup-keyboard term/internal)
(expect-native isearch-abort)
(expect-native iso-transl-set-language)
(expect-native jit-lock-mode)
(expect-native jka-compr-build-file-regexp)
(expect-native keymap-global-set)
(expect-native forward-sexp)
(expect-native lisp-string-in-doc-position-p)
(expect-native ls-lisp-set-options ls-lisp)
(expect-native macroexp-compiling-p)
(expect-native map-y-or-n-p)
(expect-native menu-find-file-existing)
(expect-native completion-boundaries)
(expect-native egyptian-shape-grouping)
(expect-native mouse-double-click-time)
(expect-native convert-define-charset-argument)
(expect-native coding-system-change-eol-conversion)
(expect-native store-substring mule-util)
(expect-native-if-bound mouse-wheel-change-button)
(expect-native advice-function-mapc)
(expect-native comment-string-strip)
(expect-builtin obarray-make)
(expect-native obarray-map)
(expect-native oclosure-type)
(expect-native forward-page)
(expect-native sentence-end)
(expect-native show-paren-function)
(expect-native pgtk-dnd-init-frame pgtk-dnd)
(expect-native prog-context-menu)
(expect-native-if-bound regexp-opt)
(expect-native get-register)
(expect-native query-replace-descr)
(expect-native rfn-eshadow-setup-minibuffer)
(expect-native read-multiple-choice)
(expect-native-if-bound scroll-bar-scale)
(expect-native gui-select-text)
(expect-native seq-first)
(expect-native hack-read-symbol-shorthands)
(expect-native next-error-find-buffer)
(expect-native exit-splash-screen)
(expect-native buffer-local-boundp)
(expect-native syntax-propertize-multiline)
(expect-native tab-bar-mode)
(expect-native tabulated-list-put-tag)
(expect-native text-mode)
(expect-native timer-activate)
(expect-native tool-bar-mode)
(expect-native tooltip-mode)
(expect-native tty-color-desc)
(expect-native ucs-normalize-hfs-nfd-comp-p ucs-normalize)
(expect-native uniquify-item-p)
(expect-native vc-mode)
(expect-native emacs-version)
(expect-native define-widget)
(expect-native window-right)
(expect-native x-dnd-init-frame x-dnd)
(expect-native-if-bound x-handle-no-bitmap-icon)

View file

@ -1,34 +1,25 @@
(require 'ert)
(eval-when-compile
(require 'help-fns)
(defmacro expect-help (fun result &optional feature)
(defmacro expect-feature (&optional feature)
`(progn
(eval-when-compile (when ',feature
(require ',feature)))
(ert-deftest ,(intern (concat "expect-" (symbol-name fun)
"-" (symbol-name result)))
()
(should
(eq ',result
(let ((desc (substring-no-properties
(with-output-to-string
(help-fns-function-description-header ',fun)))))
(cond ((string-search "native-compiled" desc) 'native)
((string-search "byte-compiled" desc) 'byte)
((string-search "built-in" desc) 'built-in)
(t nil))))))))
(eval-when-compile
(or (not ',feature)
(require ',feature)))))
(defmacro expect-native (fun &optional feature)
`(progn (expect-help ,fun native ,feature)))
`(progn
(expect-feature ,feature)
(should (native-comp-function-p (symbol-function ',fun)))))
(defmacro expect-native-if-bound (fun)
`(and (boundp ',fun) (expect-help ,fun native)))
(defmacro expect-native-if-bound (fun &optional feature)
`(and (expect-feature ,feature)
(boundp ',fun)
(should (native-comp-function-p (symbol-function ',fun)))))
(defmacro expect-builtin (fun &optional feature)
`(progn (expect-help ,fun built-in ,feature))))
`(should (primitive-function-p (symbol-function ',fun)))))
(expect-native abbrev-mode)
(expect-native backquote-process)
@ -92,9 +83,7 @@
(expect-native-if-bound mouse-wheel-change-button)
(expect-native advice-function-mapc)
(expect-native comment-string-strip)
(if (>= emacs-major-version 30)
(expect-builtin obarray-make)
(expect-native obarray-make))
(expect-native obarray-map)
(expect-native oclosure-type)
(expect-native forward-page)

View file

@ -101,7 +101,7 @@
(define-public emacs-minimal
(package
(name "emacs-minimal")
(version "29.4")
(version "30.1")
;; Note: When using (replacement …), ensure that comp-native-version-dir
;; stays the same across grafts.
;; Run `make check-system TESTS=emacs-native-comp' to ensure that grafts
@ -112,7 +112,7 @@
version ".tar.xz"))
(sha256
(base32
"0dd2mh6maa7dc5f49qdzj7bi4hda4wfm1cvvgq560djcz537k2ds"))
"13qkdx515qv7m8b2mpd37p16frs0xgl7bw8xvv397bz6fspc3jkc"))
(patches (search-patches "emacs-disable-jit-compilation.patch"
"emacs-exec-path.patch"
"emacs-fix-scheme-indent-function.patch"
@ -173,7 +173,6 @@
"lisp/mail/feedmail.el"
"lisp/obsolete/pgg-pgp.el"
"lisp/obsolete/pgg-pgp5.el"
"lisp/obsolete/terminal.el"
"lisp/org/ob-eval.el"
"lisp/textmodes/artist.el"
"lisp/progmodes/sh-script.el"
@ -730,10 +729,6 @@ Started in 2014 as a GSOC project, Guile-Emacs was resurrected in 2024.")
;; Likewise, we don't need to patch helper binaries
;; like etags, ctags or ebrowse.
"^emacs(-[0-9]+(\\.[0-9]+)*)?$")))))
(add-after 'unpack 'help-patch-progam-file-names
(lambda _
(call-with-output-file "lisp/obsolete/terminal.el"
(lambda (port) (display port)))))
(add-after 'configure 'touch-lisp/finder-inf.el
(lambda _
(call-with-output-file "lisp/finder-inf.el"

View file

@ -2,9 +2,11 @@ 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.
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -530,7 +530,8 @@ lost after dumping")))
Index: emacs-next/lisp/loadup.el
===================================================================
--- emacs-next.orig/lisp/loadup.el
+++ emacs-next/lisp/loadup.el
@@ -599,7 +599,8 @@ lost after dumping")))
((equal dump-mode "dump") "emacs")
((equal dump-mode "bootstrap") "emacs")
((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp")

View file

@ -2,12 +2,13 @@ We substitute this anyway, so let's make it easier to substitute.
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -178,8 +178,7 @@ and above."
@@ -203,9 +203,7 @@ and above."
:type '(repeat string)
:version "28.1")
-(defcustom native-comp-driver-options (when (eq system-type 'darwin)
- '("-Wl,-w"))
-(defcustom native-comp-driver-options
- (cond ((eq system-type 'darwin) '("-Wl,-w"))
- ((eq system-type 'cygwin) '("-Wl,-dynamicbase")))
+(defcustom native-comp-driver-options nil
"Options passed verbatim to the native compiler's back-end driver.
Note that not all options are meaningful; typically only the options

View file

@ -12,11 +12,11 @@ way into the actual variable despite attempts to remove it by calling
The user-visible procedure startup-redirect-eln-cache is kept, as
packages may require it, but only pushes the new value now.
Index: emacs-29.2/src/comp.c
Index: emacs-next/src/comp.c
===================================================================
--- emacs-29.2.orig/src/comp.c
+++ emacs-29.2/src/comp.c
@@ -4396,26 +4396,17 @@ DEFUN ("comp-el-to-eln-rel-filename", Fc
--- emacs-next.orig/src/comp.c
+++ emacs-next/src/comp.c
@@ -4403,26 +4403,17 @@ DEFUN ("comp-el-to-eln-rel-filename", Fc
Scomp_el_to_eln_rel_filename, 1, 1, 0,
doc: /* Return the relative name of the .eln file for FILENAME.
FILENAME must exist, and if it's a symlink, the target must exist.
@ -49,7 +49,7 @@ Index: emacs-29.2/src/comp.c
if (NILP (Ffile_exists_p (filename)))
xsignal1 (Qfile_missing, filename);
@@ -4423,64 +4414,55 @@ one for the file name and another for it
@@ -4430,64 +4421,55 @@ one for the file name and another for it
filename = Fw32_long_file_name (filename);
#endif
@ -157,7 +157,7 @@ Index: emacs-29.2/src/comp.c
}
DEFUN ("comp-el-to-eln-filename", Fcomp_el_to_eln_filename,
@@ -4494,13 +4476,7 @@ If BASE-DIR is non-nil, use it as the di
@@ -4501,13 +4483,7 @@ If BASE-DIR is non-nil, use it as the di
non-absolute BASE-DIR is interpreted as relative to `invocation-directory'.
If BASE-DIR is omitted or nil, look for the first writable directory
in `native-comp-eln-load-path', and use as BASE-DIR its subdirectory
@ -172,7 +172,7 @@ Index: emacs-29.2/src/comp.c
(Lisp_Object filename, Lisp_Object base_dir)
{
Lisp_Object source_filename = filename;
@@ -4548,10 +4524,11 @@ the latter is supposed to be used by the
@@ -4555,10 +4531,11 @@ the latter is supposed to be used by the
Lisp_Object lisp_preloaded =
Fgetenv_internal (build_string ("LISP_PRELOADED"), Qnil);
base_dir = Fexpand_file_name (Vcomp_native_version_dir, base_dir);
@ -186,7 +186,7 @@ Index: emacs-29.2/src/comp.c
CALL1I (split-string, lisp_preloaded))))))
base_dir = Fexpand_file_name (build_string ("preloaded"), base_dir);
@@ -5863,10 +5840,7 @@ The last directory of this list is assum
@@ -5875,10 +5852,7 @@ The last directory of this list is assum
the system *.eln files, which are the files produced when building
Emacs. */);
@ -198,11 +198,11 @@ Index: emacs-29.2/src/comp.c
DEFVAR_LISP ("native-comp-enable-subr-trampolines",
Vnative_comp_enable_subr_trampolines,
Index: emacs-29.2/lisp/startup.el
Index: emacs-next/lisp/startup.el
===================================================================
--- emacs-29.2.orig/lisp/startup.el
+++ emacs-29.2/lisp/startup.el
@@ -545,9 +545,6 @@ DIRS are relative."
--- emacs-next.orig/lisp/startup.el
+++ emacs-next/lisp/startup.el
@@ -527,9 +527,6 @@ DIRS are relative."
(defvar native-comp-jit-compilation)
(defvar native-comp-enable-subr-trampolines)
@ -212,7 +212,7 @@ Index: emacs-29.2/lisp/startup.el
(defun startup-redirect-eln-cache (cache-directory)
"Redirect the user's eln-cache directory to CACHE-DIRECTORY.
CACHE-DIRECTORY must be a single directory, a string.
@@ -558,22 +555,10 @@ to `user-emacs-directory'.
@@ -540,22 +537,10 @@ to `user-emacs-directory'.
For best results, call this function in your early-init file,
so that the rest of initialization and package loading uses
the updated value."
@ -232,10 +232,10 @@ Index: emacs-29.2/lisp/startup.el
- (setq startup--original-eln-load-path
- (copy-sequence native-comp-eln-load-path))))
-
(defun normal-top-level ()
"Emacs calls this function when it first starts up.
It sets `command-line-processed', processes the command-line,
@@ -1362,12 +1347,6 @@ please check its value")
(defun startup--rescale-elt-match-p (font-pattern font-object)
"Test whether FONT-OBJECT matches an element of `face-font-rescale-alist'.
FONT-OBJECT is a font-object that specifies a font to test.
@@ -1383,12 +1368,6 @@ please check its value")
startup-init-directory)))
(setq early-init-file user-init-file)
@ -248,7 +248,7 @@ Index: emacs-29.2/lisp/startup.el
;; If any package directory exists, initialize the package system.
(and user-init-file
package-enable-at-startup
@@ -1502,12 +1481,6 @@ please check its value")
@@ -1523,12 +1502,6 @@ please check its value")
startup-init-directory))
t)
@ -261,10 +261,10 @@ Index: emacs-29.2/lisp/startup.el
(when (and deactivate-mark transient-mark-mode)
(with-current-buffer (window-buffer)
(deactivate-mark)))
Index: emacs-29.2/lisp/loadup.el
Index: emacs-next/lisp/loadup.el
===================================================================
--- emacs-29.2.orig/lisp/loadup.el
+++ emacs-29.2/lisp/loadup.el
--- emacs-next.orig/lisp/loadup.el
+++ emacs-next/lisp/loadup.el
@@ -53,6 +53,14 @@
(setq redisplay--inhibit-bidi t)
@ -280,9 +280,16 @@ Index: emacs-29.2/lisp/loadup.el
;; Add subdirectories to the load-path for files that might get
;; autoloaded when bootstrapping or running Emacs normally.
@@ -494,22 +502,20 @@ lost after dumping")))
(concat eln-dest-dir "native-lisp/" comp-native-version-dir "/"))
@@ -538,27 +546,25 @@ This to have it working when installed o
directory got moved. This is set to be a pair in the form of:
\(rel-filename-from-install-bin . rel-filename-from-local-bin)."
(when (and load--bin-dest-dir load--eln-dest-dir)
- (setq eln-dest-dir
- (concat load--eln-dest-dir "native-lisp/" comp-native-version-dir "/"))
+ (setq load--eln-versioned-dest-dir
+ (concat load--eln-dest-dir "native-lisp/" comp-native-version-dir "/"))
(maphash (lambda (_ cu)
(when (stringp (native-comp-unit-file cu))
(let* ((file (native-comp-unit-file cu))
- (preloaded (equal (substring (file-name-directory file)
- -10 -1)
@ -302,18 +309,18 @@ Index: emacs-29.2/lisp/loadup.el
- (file-name-nondirectory
- file)
- eln-dest-dir-eff)
- bin-dest-dir)
- load--bin-dest-dir)
+ (file-relative-name
+ (expand-file-name
+ (save-match-data
+ (string-match native-lisp-needle file)
+ (substring file (match-end 0)))
+ eln-dest-dir)
+ bin-dest-dir)
+ load--eln-versioned-dest-dir)
+ load--bin-dest-dir)
;; Relative filename from the built uninstalled binary.
(file-relative-name file invocation-directory)))))
(file-relative-name file invocation-directory))))))
comp-loaded-comp-units-h)))
@@ -557,7 +563,9 @@ lost after dumping")))
@@ -644,7 +650,9 @@ directory got moved. This is set to be
(equal dump-mode "pdump"))
;; Don't enable this before bootstrap is completed, as the
;; compiler infrastructure may not be usable yet.
@ -324,11 +331,11 @@ Index: emacs-29.2/lisp/loadup.el
(message "Dumping under the name %s" output)
(condition-case ()
(delete-file output)
Index: emacs-29.2/src/Makefile.in
Index: emacs-next/src/Makefile.in
===================================================================
--- emacs-29.2.orig/src/Makefile.in
+++ emacs-29.2/src/Makefile.in
@@ -553,6 +553,7 @@ shortlisp := $(filter-out ${shortlisp_fi
--- emacs-next.orig/src/Makefile.in
+++ emacs-next/src/Makefile.in
@@ -591,6 +591,7 @@ shortlisp := $(filter-out ${shortlisp_fi
## We don't really need to sort, but may as well use it to remove duplicates.
shortlisp := loaddefs.el loadup.el $(sort ${shortlisp})
export LISP_PRELOADED = ${shortlisp}