Compare commits

...
Sign in to create a new pull request.

66 commits

Author SHA1 Message Date
Peter Oliver
8caa8a9f69 Eliminate “File listed twice” warning. 2025-12-10 15:07:07 +00:00
Peter Oliver
91bcd98e44 Fix Tree-sitter 0.26 patch for Emacs 30. 2025-12-10 13:03:09 +00:00
Peter Oliver
3b048fcb37 Support Tree-sitter version 0.26 and later (rhbz#2420305). 2025-12-10 12:05:42 +00:00
Peter Oliver
b4c76f9a53 Move ownership of %{_libdir}/emacs to emacs-filesystem package. 2025-11-25 13:17:25 +00:00
Peter Oliver
514c0430fb New RPM macro %_emacs_archsitelispdir for Emacs dynamic modules. 2025-11-24 13:18:51 +00:00
Peter Oliver
585fcc155a Set source-directory via site-start.d dropin. 2025-11-24 13:15:12 +00:00
Peter Oliver
8baaa786df Drop alternatives for etags
Since ctags-5.9, there is no-longer any other provider in Fedora, so we can simplify.
2025-11-14 17:19:43 +00:00
Peter Oliver
038733a4d2 Own etags and man page (rhbz#2414055). 2025-11-14 17:07:45 +00:00
Peter Oliver
3b2d62a20f Enable lexical binding in site-start.el and default.el
Emacs 31 will warn when loading an Elisp file that does not specify whether to use lexical binding.  We don’t use dynamic binding in these files, so we may as well switch it on now.

While we’re here, keep `checkdoc` happy.
2025-10-14 14:12:58 +01:00
Peter Oliver
6156d97ca7 Recent vanilla ~/.emacs defaults to lexical binding. 2025-10-14 14:08:43 +01:00
Peter Oliver
2004733785 Rebuild against tree-sitter-0.25.10-1.fc44 2025-09-24 15:20:36 +01:00
Peter Oliver
75773e6606 Rebuild against tree-sitter-0.25.9-1.fc44 2025-09-09 14:39:40 +01:00
Peter Oliver
a8890f9765 Update to version 30.2, fixing rhbz#2388544 2025-08-15 11:12:37 +01:00
Fedora Release Engineering
b2f275ac7a Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-23 19:48:10 +00:00
Peter Oliver
262e998b29 Fix typo. 2025-07-22 13:05:37 +01:00
Peter Oliver
680f81bce4 Suggest emacs-nw for emacs within mock. 2025-07-21 11:38:31 +01:00
Peter Oliver
006f58a138 Dependency generator: look for absolute symlinks in $RPM_BUILD_ROOT 2025-07-19 00:13:10 +01:00
Peter Oliver
2f9fd6b99a Dependency generator: ensure error messages are sent to stderr only. 2025-07-19 00:05:58 +01:00
Peter Oliver
12317652f3 Merge branch 'pr46' into rawhide, fixing indentation. 2025-07-18 15:33:04 +01:00
Peter Lemenkov
442688e43d ignore symlinks in dependency computation
Symlinks inside the buildroot (e.g.,
/builddir/build/BUILD/.../BUILDROOT/...) may point to non-existent paths
during build, as their targets are only valid after installation (e.g.,
/usr/lib64/...). This causes dependency generators to fail when
attempting to resolve such symlinks.

Since symlinks either:

* Point outside the package (and are processed separately), or
* Point inside the package (and their targets are processed directly),

we now skip symlink resolution entirely during dependency analysis. This
avoids build-host path errors while preserving post-install correctness.

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2025-07-18 14:17:18 +02:00
Peter Oliver
3936b0f4b5 Rebuild against tree-sitter-0.25.8-1.fc43 2025-07-18 12:52:35 +01:00
Peter Oliver
59744aef62 Package emacsclient should conflict with the last F40 emacs-common. 2025-06-16 11:59:55 +01:00
Peter Oliver
735ea3cc3c Fix pretest version detection. 2025-06-16 00:41:54 +01:00
Peter Oliver
14aefc94f9 Restore compatibility with recent Tree-sitter parsers. 2025-06-16 00:40:42 +01:00
Peter Oliver
bedcb62413 Rebuild against tree-sitter-0.25.6-1.fc43 2025-06-13 15:37:42 +01:00
Peter Oliver
a8733e9b93 Rebuild against tree-sitter-0.25.5-1.fc43 2025-05-28 13:01:17 +01:00
Peter Oliver
25a203f123 Rebuild against tree-sitter-0.25.4-3.fc43 2025-05-12 14:03:34 +01:00
Peter Oliver
2a41db911d Emacs 31 compatibility for Tree-sitter Recommends generation. 2025-04-24 11:24:28 +01:00
Peter Oliver
7b67394177 Rebuild against tree-sitter-0.25.3-1.fc43 2025-04-14 12:25:22 +01:00
Peter Oliver
c65031ee31 Fix compilation errors due to insufficient compiler safety
Fixes bug #2350949 (‘package-install-from-buffer fails with "Can't read whole string"’).
2025-04-08 14:23:58 +01:00
Peter Oliver
e7d0043cec Suggest an Emacs build based on Fedora edition. 2025-03-25 16:44:55 +00:00
Peter Oliver
507e1bae41 Now there is no emacs subpackage, all emacs(bin) providers can provide it. 2025-03-25 13:09:58 +00:00
Peter Oliver
8222fbcb4d Drop emacs-terminal subpackage again
It now has unversioned requires in all stable Fedora releases, so dropping it will no-longer block upgrades from those releases.
2025-03-25 13:09:58 +00:00
Peter Oliver
c2d5a811c7 Rename emacs subpackage to emacs-pgtk
Hopefully, this causes users to be less disappointed when they discover that X11 isn’t supported with the “default” build.
2025-03-25 13:09:58 +00:00
Peter Oliver
cb65b0edeb Move emacs-desktop wrapper into emacs package
It’s only required with the `emacs-pgtk` binary.
2025-03-19 01:19:59 +00:00
Peter Oliver
1e64061e6c Ensure desktop icon is found
`WM_NAME` is set from the zeroth argument to `exec`.  Lie about this so that it matches the value expected from the `emacs.desktop` file.

This requires Bash, so use bashisms.
2025-03-18 13:22:05 +00:00
Peter Oliver
cf0b4080a8 Offer emacs-desktop as the highest priority alternative for emacs
Fixes #2326662.
2025-03-17 00:03:29 +00:00
Peter Oliver
45a313a33c Lower alternatives priority of emacs-nw
It shouldn’t have the same priority as emacs-lucid.
2025-03-16 23:48:00 +00:00
Peter Oliver
b8ab76acc8 Tidy up Recommends of emacs-common. 2025-03-13 12:50:15 +00:00
Peter Oliver
8ad003b0a8 Restore emacs-terminal subpackage
We can drop this again for Fedora 44.  See the discussion at https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/PWONA43D2WRBVDMZV6WFP3I2ML4CXQYN/ for more background.
2025-03-13 12:47:28 +00:00
Peter Oliver
340027a976 Correct provided emacs-transient version. 2025-03-13 00:49:05 +00:00
Peter Oliver
69f6ed99cc Automatically generate Recommends for Tree-sitter parsers. 2025-03-07 13:13:44 +00:00
Peter Oliver
28029c5fc3 Drop recommendation of gcc-c++ for newer Tree-sitter versions
Tree-sitter 0.24 dropped support for parsers written in C++.
2025-03-07 13:13:44 +00:00
Peter Oliver
72a21b107c Stricter matching of native-compiled lisp files. 2025-02-27 12:16:17 +00:00
Peter Oliver
3acf65e7aa Avoid duplicating native lisp across subpackages. 2025-02-27 01:27:38 +00:00
Peter Oliver
729b38fa3f Abandon checks
There are currently too many intermittent failures to make them useful.
2025-02-25 17:25:54 +00:00
Peter Oliver
49d824fe18 Rebuild against tree-sitter-0.25.2-5.fc42 2025-02-25 16:05:41 +00:00
Peter Oliver
af2a940d23 Update to version 30.1.
Fixes #2347206, CVE-2024-53920, CVE-2025-1244.
2025-02-24 20:58:14 +00:00
Peter Oliver
c3e999a02e Disable GC mark trace buffer for about 5% better GC performance. 2025-02-24 20:56:15 +00:00
Peter Oliver
98b6dedc72 Update to version 30.0.93. 2025-02-24 20:44:42 +00:00
Peter Oliver
6867865075 Update to version 30.0.92. 2025-02-24 20:44:42 +00:00
Bhavin Gandhi
da4bd493ac Elisp info has new image and a text file
Signed-off-by: Bhavin Gandhi <bhavin7392@gmail.com>
2025-02-24 20:44:42 +00:00
Bhavin Gandhi
fe4cba1366 Fix for failing uniquify-tests
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=73205

Signed-off-by: Bhavin Gandhi <bhavin7392@gmail.com>
2025-02-24 20:44:42 +00:00
Peter Oliver
bfeb333323 Update to version 30.0.91. 2025-02-24 20:44:39 +00:00
Tom spot Callaway
782c788973 rebuild for tree-sitter 2025-02-20 12:06:37 -05:00
Peter Oliver
efc6d1cc8f Rebuild against tree-sitter-0.25.2-3.fc43 2025-02-19 14:41:28 +00:00
Peter Oliver
563755ba21 Rebuild against tree-sitter-0.25.1-5.fc42 2025-02-03 12:23:18 +00:00
Peter Oliver
a64c461ff7 Rebuild against tree-sitter-0.25.1-3.fc42 2025-02-03 12:20:53 +00:00
Peter Oliver
253c482c86 Debug configure failures. 2025-01-17 12:42:03 +00:00
Fedora Release Engineering
c8f0e7e446 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-16 16:49:01 +00:00
Jens Petersen
bc8ee9cedf rebuild rawhide against tree-sitter-0.24 2025-01-15 12:05:46 +08:00
Peter Oliver
2094f8176e Require XPM pixbuf loader for GTK builds (#2335309) 2025-01-03 14:01:21 +00:00
Peter Oliver
f201351dff Fix typo in emacs-gtk+x11 Requires. 2024-10-31 14:59:17 +00:00
Peter Oliver
3ba3bada53 Drop emacs-terminal subpackage
It was supposed to be temporary, as the then-only terminal emulator that supported the Malayalam language.  These days, Konsole can be used instead (https://smc.org.in/en/articles/malayalam-linux-console/).
2024-10-31 14:43:37 +00:00
Peter Oliver
7510935270 Isolate builds from each other
Fixes dumping failures on Emacs 30.
2024-10-31 12:01:54 +00:00
Peter Oliver
12239bab40 Prefer make install to our own approximations. 2024-10-31 12:01:54 +00:00
23 changed files with 558 additions and 592 deletions

6
.gitignore vendored
View file

@ -40,5 +40,11 @@
/emacs-29.3.tar.xz.sig
/emacs-29.4.tar.xz
/emacs-29.4.tar.xz.sig
/emacs-30.0.91.tar.xz
/emacs-30.0.91.tar.xz.sig
/php-mode.el
/results_emacs/
/emacs-30.1.tar.xz
/emacs-30.1.tar.xz.sig
/emacs-30.2.tar.xz
/emacs-30.2.tar.xz.sig

View file

@ -1,50 +0,0 @@
From 2f348ffee3777a8e2b02814d8cc50d282d98d366 Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Sun, 14 Jul 2024 21:50:33 +0100
Subject: [PATCH 1/2] Apply --display kluge for PGTK too
* src/emacs.c (main): The --display option needs the same handling
with the PGTK backend as it does with the X11 backends. (Bug#72118)
---
src/emacs.c | 4 ++--
src/lisp.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/emacs.c b/src/emacs.c
index 712826d57b7..ec284b16f8d 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -181,7 +181,7 @@ #define MAIN_PROGRAM
data on the first attempt to change it inside asynchronous code. */
bool running_asynch_code;
-#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS)
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_PGTK) || defined (HAVE_NS)
/* If true, -d was specified, meaning we're using some window system. */
bool display_arg;
#endif
@@ -2014,7 +2014,7 @@ main (int argc, char **argv)
{
int count_before = skip_args;
-#ifdef HAVE_X_WINDOWS
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_PGTK)
char *displayname = 0;
/* Skip any number of -d options, but only use the last one. */
diff --git a/src/lisp.h b/src/lisp.h
index 5fa48cec2f0..05daceb5dff 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -4889,7 +4889,7 @@ fast_c_string_match_ignore_case (Lisp_Object regexp,
extern char **initial_argv;
extern int initial_argc;
extern char const *emacs_wd;
-#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS)
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_PGTK) || defined (HAVE_NS)
extern bool display_arg;
#endif
extern Lisp_Object decode_env_path (const char *, const char *, bool);
--
2.45.2

View file

@ -0,0 +1,31 @@
From 164e45695f9784469ff2f66cafcd6bc927c246be Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Tue, 18 Mar 2025 13:16:15 +0000
Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20specify=20StartupWMClass=20in?=
=?UTF-8?q?=20emacs.desktop?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
See the explanation at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49505#67. In summary, the
value we were providing doesnt work on Wayland, and the default should
be fine.
* etc/emacs.desktop: Dont specify StartupWMClass
---
etc/emacs.desktop | 1 -
1 file changed, 1 deletion(-)
diff --git a/etc/emacs.desktop b/etc/emacs.desktop
index 0d7cac14da5..16ad3c7eb48 100644
--- a/etc/emacs.desktop
+++ b/etc/emacs.desktop
@@ -9,4 +9,3 @@ Type=Application
Terminal=false
Categories=Development;TextEditor;
StartupNotify=true
-StartupWMClass=Emacs
--
2.48.1

View file

@ -1,30 +0,0 @@
From 75ca15f2a3146b17fde5e2a50ad9102c6108ba7f Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefankangas@gmail.com>
Date: Sun, 23 Jun 2024 20:54:22 +0200
Subject: [PATCH] Fix failing help-fns-test
* test/lisp/help-fns-tests.el (help-fns-test-lisp-defun):
Fix failing test.
---
test/lisp/help-fns-tests.el | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/test/lisp/help-fns-tests.el b/test/lisp/help-fns-tests.el
index c3e8ca49723..fabf1959658 100644
--- a/test/lisp/help-fns-tests.el
+++ b/test/lisp/help-fns-tests.el
@@ -63,9 +63,8 @@ help-fns-test-lisp-macro
(should (string-match regexp result))))
(ert-deftest help-fns-test-lisp-defun ()
- (let ((regexp (if (featurep 'native-compile)
- "a native-compiled Lisp function in .+subr\\.el"
- "a byte-compiled Lisp function in .+subr\\.el"))
+ (let ((regexp (rx "a " (or "byte-compiled" "native-compiled")
+ " Lisp function in " nonl "subr.el" nonl))
(result (help-fns-tests--describe-function 'last)))
(should (string-match regexp result))))
--
2.45.2

View file

@ -1,28 +0,0 @@
From a769f171e7ebb8e30f198f4328d46f47fe7958fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ulrich=20M=C3=BCller?= <ulm@gentoo.org>
Date: Mon, 24 Jun 2024 15:20:26 +0200
Subject: [PATCH] ; Fix flymake tests with GCC 14.
* test/lisp/progmodes/flymake-tests.el (included-c-header-files):
Fix test failure with GCC 14. (Bug#71749)
---
test/lisp/progmodes/flymake-tests.el | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/test/lisp/progmodes/flymake-tests.el b/test/lisp/progmodes/flymake-tests.el
index 21dbb0711d2..93bc9028031 100644
--- a/test/lisp/progmodes/flymake-tests.el
+++ b/test/lisp/progmodes/flymake-tests.el
@@ -174,7 +174,8 @@ included-c-header-files
(flymake-tests--with-flymake
("some-problems.h")
(flymake-goto-next-error)
- (should (eq 'flymake-warning (face-at-point)))
+ ;; implicit-int was promoted from warning to error in GCC 14
+ (should (memq (face-at-point) '(flymake-warning flymake-error)))
(flymake-goto-next-error)
(should (eq 'flymake-error (face-at-point)))
(should-error (flymake-goto-next-error nil nil t)))
--
2.45.2

View file

@ -1,30 +0,0 @@
From c86645dde30fbd54ae0f187e4428a09ad75e0ba8 Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Mon, 15 Jul 2024 12:03:47 +0100
Subject: [PATCH] Fix intermittent failure of dired-test-bug27243-02
* test/lisp/dired-tests.el (dired-test-bug27243-02): Exclude free disk
space from dired listing in this test, in case it changes while it's
running and confuses the result.
---
test/lisp/dired-tests.el | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/test/lisp/dired-tests.el b/test/lisp/dired-tests.el
index 2589281e5e1..ea47043dfc5 100644
--- a/test/lisp/dired-tests.el
+++ b/test/lisp/dired-tests.el
@@ -189,7 +189,9 @@ dired-test-bug27243-01
(ert-deftest dired-test-bug27243-02 ()
"Test for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27243#28 ."
(ert-with-temp-directory test-dir
- (let ((dired-auto-revert-buffer t) buffers)
+ (let ((dired-auto-revert-buffer t)
+ (dired-free-space nil)
+ buffers)
;; On MS-Windows, get rid of 8+3 short names in test-dir, if the
;; corresponding long file names exist, otherwise such names trip
;; string comparisons below.
--
2.45.2

View file

@ -1,29 +0,0 @@
From 90734f5a3ba9998886e0b03382878a2fb514d015 Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Fri, 12 Jul 2024 10:52:23 +0100
Subject: [PATCH] Fix wdired-test-unfinished-edit-01 when temp dirname contains
"foo"
* test/lisp/wdired-tests.el (wdired-test-unfinished-edit-01): Don't
modify the random directory name if, by chance, it happens to contain
the substring "foo".
---
test/lisp/wdired-tests.el | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/lisp/wdired-tests.el b/test/lisp/wdired-tests.el
index f7bff743058..f6d2194e998 100644
--- a/test/lisp/wdired-tests.el
+++ b/test/lisp/wdired-tests.el
@@ -114,7 +114,7 @@ wdired-test-unfinished-edit-01
(setq test-dir (file-truename test-dir))
(let* ((test-file (concat (file-name-as-directory test-dir) "foo.c"))
(replace "bar")
- (new-file (string-replace "foo" replace test-file)))
+ (new-file (string-replace "/foo" (concat "/" replace) test-file)))
(write-region "" nil test-file nil 'silent)
(let ((buf (find-file-noselect test-dir)))
(unwind-protect
--
2.45.2

View file

@ -0,0 +1,106 @@
From 16f0be6354ea13331859c861fa7d423a0b54bec7 Mon Sep 17 00:00:00 2001
From: Eli Zaretskii <eliz@gnu.org>
Date: Fri, 17 Oct 2025 14:15:41 +0300
Subject: [PATCH] Support Tree-sitter version 0.26 and later
* src/treesit.c (init_treesit_functions)
[TREE_SITTER_LANGUAGE_VERSION >= 15]: Define prototype for, and
load 'ts_language_abi_version' instead of the deprecated (and
removed in tree-sitter 0.26) 'ts_language_version'.
(ts_language_abi_version) [TREE_SITTER_LANGUAGE_VERSION >= 15]:
Define on WINDOWSNT, instead of 'ts_language_version'.
(treesit_language_abi_version): New compatibility function.
(treesit_load_language, Ftreesit_language_abi_version): Use
'treesit_language_abi_version' instead of 'ts_language_version'.
(Bug#79627)
---
src/treesit.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/src/treesit.c b/src/treesit.c
index e2986c186b8..4d6bf9a5dbd 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -34,7 +34,11 @@ Copyright (C) 2021-2025 Free Software Foundation, Inc.
# include "w32common.h"
/* In alphabetical order. */
+#if TREE_SITTER_LANGUAGE_VERSION >= 15
+#undef ts_language_abi_version
+#else
#undef ts_language_version
+#endif
#undef ts_node_child
#undef ts_node_child_by_field_name
#undef ts_node_child_count
@@ -89,7 +93,11 @@ Copyright (C) 2021-2025 Free Software Foundation, Inc.
#undef ts_tree_get_changed_ranges
#undef ts_tree_root_node
+#if TREE_SITTER_LANGUAGE_VERSION >= 15
+DEF_DLL_FN (uint32_t, ts_language_abi_version, (const TSLanguage *));
+#else
DEF_DLL_FN (uint32_t, ts_language_version, (const TSLanguage *));
+#endif
DEF_DLL_FN (TSNode, ts_node_child, (TSNode, uint32_t));
DEF_DLL_FN (TSNode, ts_node_child_by_field_name,
(TSNode, const char *, uint32_t));
@@ -166,7 +174,11 @@ init_treesit_functions (void)
if (!library)
return false;
+#if TREE_SITTER_LANGUAGE_VERSION >= 15
+ LOAD_DLL_FN (library, ts_language_abi_version);
+#else
LOAD_DLL_FN (library, ts_language_version);
+#endif
LOAD_DLL_FN (library, ts_node_child);
LOAD_DLL_FN (library, ts_node_child_by_field_name);
LOAD_DLL_FN (library, ts_node_child_count);
@@ -224,7 +236,11 @@ init_treesit_functions (void)
return true;
}
+#if TREE_SITTER_LANGUAGE_VERSION >= 15
+#define ts_language_abi_version fn_ts_language_abi_version
+#else
#define ts_language_version fn_ts_language_version
+#endif
#define ts_node_child fn_ts_node_child
#define ts_node_child_by_field_name fn_ts_node_child_by_field_name
#define ts_node_child_count fn_ts_node_child_count
@@ -632,6 +648,22 @@ treesit_load_language_push_for_each_suffix (Lisp_Object lib_base_name,
}
}
+/* This function is a compatibility shim. Tree-sitter 0.25 introduced
+ ts_language_abi_version as a replacement for ts_language_version, and
+ tree-sitter 0.26 removed ts_language_version. Here we use the fact
+ that 0.25 bumped TREE_SITTER_LANGUAGE_VERSION to 15, to use the new
+ function instead of the old one, when Emacs is compiled against
+ tree-sitter version 0.25 or newer. */
+static uint32_t
+treesit_language_abi_version (const TSLanguage *ts_lang)
+{
+#if TREE_SITTER_LANGUAGE_VERSION >= 15
+ return ts_language_abi_version (ts_lang);
+#else
+ return ts_language_version (ts_lang);
+#endif
+}
+
/* Load the dynamic library of LANGUAGE_SYMBOL and return the pointer
to the language definition.
@@ -817,7 +849,7 @@ DEFUN ("treesit-language-abi-version", Ftreesit_language_abi_version,
&signal_data);
if (ts_language == NULL)
return Qnil;
- uint32_t version = ts_language_version (ts_language);
+ uint32_t version = treesit_language_abi_version (ts_language);
return make_fixnum((ptrdiff_t) version);
}
}
--
2.52.0

View file

@ -1,25 +0,0 @@
From 8ae158173d1d748d55e2605c04d33a95739e055c Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Mon, 15 Jul 2024 16:17:38 +0100
Subject: [PATCH 2/3] Test eshell-test/subcommand-reset-in-pipeline is unstable
Could be related to https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65602
---
test/lisp/eshell/eshell-tests.el | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/lisp/eshell/eshell-tests.el b/test/lisp/eshell/eshell-tests.el
index 3812a4117ac..8c13d4af237 100644
--- a/test/lisp/eshell/eshell-tests.el
+++ b/test/lisp/eshell/eshell-tests.el
@@ -79,6 +79,7 @@ eshell-test/pipe-subcommand-with-pipe
(ert-deftest eshell-test/subcommand-reset-in-pipeline ()
"Check that subcommands reset `eshell-in-pipeline-p'."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (executable-find "cat"))
(dolist (template '("echo {%s} | *cat"
"echo ${%s} | *cat"
--
2.45.2

View file

@ -1,84 +0,0 @@
From bf512d1bad98bcd1dc87da93fd2e7f415be14501 Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Mon, 15 Jul 2024 16:19:10 +0100
Subject: [PATCH 3/4] Mark multiple mml-sec tests as unstable when built in an
RPM
* test/lisp/gnus/mml-sec-tests.el: Mark unstable tests which have been
seen to intermittently fail at
https://koji.fedoraproject.org/koji/packageinfo?packageID=560
---
test/lisp/gnus/mml-sec-tests.el | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/test/lisp/gnus/mml-sec-tests.el b/test/lisp/gnus/mml-sec-tests.el
index 7abd1bd65a3..2bd52bf3ee0 100644
--- a/test/lisp/gnus/mml-sec-tests.el
+++ b/test/lisp/gnus/mml-sec-tests.el
@@ -210,6 +210,7 @@ mml-secure-test-key-fixture
(ert-deftest mml-secure-key-checks ()
"Test mml-secure-check-user-id and mml-secure-check-sub-key on sample keys."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (test-conf))
(mml-secure-test-fixture
(lambda ()
@@ -278,6 +279,7 @@ mml-secure-key-checks
(ert-deftest mml-secure-find-usable-keys-1 ()
"Make sure that expired and disabled keys and revoked UIDs are not used."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (test-conf))
(mml-secure-test-fixture
(lambda ()
@@ -317,6 +319,7 @@ mml-secure-find-usable-keys-1
(ert-deftest mml-secure-find-usable-keys-2 ()
"Test different ways to search for keys."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (test-conf))
(mml-secure-test-fixture
(lambda ()
@@ -369,6 +372,7 @@ mml-secure-find-usable-keys-2
(ert-deftest mml-secure-select-preferred-keys-1 ()
"If only one key exists for an e-mail address, it is the preferred one."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (test-conf))
(mml-secure-test-fixture
(lambda ()
@@ -380,6 +384,7 @@ mml-secure-select-preferred-keys-1
(ert-deftest mml-secure-select-preferred-keys-2 ()
"If multiple keys exists for an e-mail address, customization is necessary."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (test-conf))
(mml-secure-test-fixture
(lambda ()
@@ -407,6 +412,7 @@ mml-secure-select-preferred-keys-2
(ert-deftest mml-secure-select-preferred-keys-3 ()
"Expired customized keys are removed if multiple keys are available."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (test-conf))
(mml-secure-test-fixture
(lambda ()
@@ -581,6 +587,7 @@ mml-secure-test-en-decrypt-with-passphrase
(ert-deftest mml-secure-en-decrypt-1 ()
"Encrypt message; then decrypt and test for expected result.
In this test, the single matching key is chosen automatically."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (test-conf))
(dolist (method (enc-standards) nil)
;; no-exp@example.org with single encryption key
@@ -625,6 +632,7 @@ mml-secure-en-decrypt-3
(ert-deftest mml-secure-en-decrypt-4 ()
"Encrypt message; then decrypt and test for expected result.
In this test, encrypt-to-self variables are set to lists."
+ :tags (if (getenv "RPM_BUILD_ROOT") '(:unstable))
(skip-unless (test-conf))
;; Send from sub@example.org, which has two keys; encrypt to both.
(let ((mml-secure-openpgp-encrypt-to-self
--
2.47.0

View file

@ -1,38 +0,0 @@
From e0f0549ac6766ab565dbd581098b96792a807727 Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Wed, 17 Jul 2024 00:06:02 +0100
Subject: [PATCH 4/4] Try harder to stabalise dired-test-bug27243-02
* test/lisp/dired-tests.el (dired-test-bug27243-02): Don't rely on the
expected point, since columns will move if the size of the parent directory
changes order of magnitude.
---
test/lisp/dired-tests.el | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/test/lisp/dired-tests.el b/test/lisp/dired-tests.el
index ea47043dfc5..6078e99e13c 100644
--- a/test/lisp/dired-tests.el
+++ b/test/lisp/dired-tests.el
@@ -190,7 +190,6 @@ dired-test-bug27243-02
"Test for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27243#28 ."
(ert-with-temp-directory test-dir
(let ((dired-auto-revert-buffer t)
- (dired-free-space nil)
buffers)
;; On MS-Windows, get rid of 8+3 short names in test-dir, if the
;; corresponding long file names exist, otherwise such names trip
@@ -216,7 +215,9 @@ dired-test-bug27243-02
;; Sanity check: point should now be back on the subdirectory.
(should (eq (point) pt1))
(push (dired test-dir) buffers)
- (should (eq (point) pt1)))
+ (should (equal (dired-file-name-at-point)
+ (concat (file-name-as-directory test-dir)
+ (file-name-as-directory "test-subdir")))))
(dolist (buf buffers)
(when (buffer-live-p buf) (kill-buffer buf)))))))
--
2.45.2

View file

@ -0,0 +1,31 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: 12BB 9B40 0EE3 F772 8286 4D18 272B 5C54 E015 416A
Comment: Andrea Corallo <acorallo@gnu.org>
xsFNBGa/sd8BEAC7hQAGte6YvxDaiTutpSkVrb+zJBGcEW/AroE/dduBn8mfxa/Y
i71C2GV/y03aibdaO+cXPULAkkuJVDnFk57hn3w9zo98LzqDSEgNFcAUSSSQdyj7
Wn3J26doRpFQKnv3dbx1yZRZccbLgt/AH6hzhvNjFbYZ53LYE9rKzUYLTNHDhUI4
QTda2PvgWoySXcjBKhyIgg9zZLSc2w4ZwhO9WDVai58xNsl+YyU2HqVPpJZSCX0j
liIooHOEL2D601ByrWmePRGFR0tD6V9xj5jWuusErb78r57NOPsRCRKCKcg/v/kl
fA5+byvanw27PDa8zoheXgF41uDf96keOQPBve3TE1Oy4x+G55zuP9KNQ5aSCG49
x0Cc7BET23JmiWUnz1GUbM7vka5ell+smmq+kTDtK47L+4N954a6CR0esPLJMLF6
Ub2y8SY2XPn1Bv8lsN77f0L5yyhnK72H+mf4fS/qjJlN0F+DWx49Z8it9rbG8Atc
X6Vqzv5qaDPbCpAqdqs2qrv3nAdvYOlwxmVh6Hxq1EOFT2v49dmn3viVBNnuT7yW
tyvpTDyvfLKOnfH+OLLuqPUFZnxt8mU8ieNEnvIYojSOFyddJAh2uOI3sqjLHrDg
PRAYFv9jp7K7pk+S054mdF31qD+TTxjWQtNI8Sxh/Q71Vtz7JyqYWd/JCQARAQAB
zSFBbmRyZWEgQ29yYWxsbyA8YWNvcmFsbG9AZ251Lm9yZz7CwZQEEwEKAD4WIQQS
u5tADuP3coKGTRgnK1xU4BVBagUCZr+x3wIbAwUJA8JnAAULCQgHAgYVCgkICwIE
FgIDAQIeAQIXgAAKCRAnK1xU4BVBaj/0D/4ogwPjg6Cwyi8pmRYx9gOjQNIRtjOb
2aHFYQs9luFy20Wlt/7QtelDH+NLCAb5PKvhDI3Sw+SIoheAndhbzqW7GEW5J9G7
10PPkCUCjbicJOKsUkMv03wS6IrelUYzgjbmGYRo2vYcSb+BHXQR4MuxDSL/2vPD
LHYKwij9K+FozgJVfjq5n97l/wsGsc/orRiST23ykiXyCZweulGLhXnoCghHrnB1
B+xBaCv3P1GW/BZZgXGPQ+1XMOsFlP951vfjirlHnJMvMDkMkNhT6Qh282jTokWN
TVQqKUv5tpdNkId+QmUhzC+DcfoOsegB3wWa6VQ/w1cG9mkoPUTT8Y8fo4FXnWwV
U4472JuZdQYFDAKEnTsW1TRNgBb5xLNNCUmDUVDndgn1WtZIZx18QBtJ1CHhycaN
C68McWuvvENhEM8clUXIHundgeDce4gcQC23Un7NT0PbNTwvGPfBSaoVax5ZVHuZ
Tr2pTHqAqqi4YLnrE5R06OIWQzVOVs5NZplDPZGXZOxryXa3ssLxjL2VYbo4AAUZ
h3fyVOzNHlGLT3Egj4XHDuDFcswUimD5SmrqQQwg94CgXExDisqH9Uo8L7Zxf/AG
UpIsxpDv219GOdTffbzl01W6oaP4obiTwMFUaQ7ljdCfq19KYdo576touTU+/48q
7AjjL28Eznhz0Q==
=goOm
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1,7 +1,13 @@
;;; default.el - loaded after ".emacs" on startup
;;;
;;; Setting `inhibit-default-init' non-nil in "~/.emacs"
;;; prevents loading of this file. Also the "-q" option to emacs
;;; prevents both "~/.emacs" and this file from being loaded at startup.
;;; default.el --- loaded after ".emacs" on startup -*- lexical-binding: t -*-
;;; Commentary:
;;
;; Setting `inhibit-default-init' non-nil in "~/.emacs"
;; prevents loading of this file. Also the "-q" option to "emacs"
;; prevents both "~/.emacs" and this file from being loaded at startup.
;;; Code:
(setq-default smime-CA-directory "/etc/ssl/certs")
;;; default.el ends here

View file

@ -1,4 +1,4 @@
;; .emacs
;;; -*- lexical-binding: t -*-
(custom-set-variables
;; uncomment to always end a file with a newline

View file

@ -1,26 +0,0 @@
From 90e902854c53c6ab5ef8711af27f42fbc77d9ffe Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Mon, 10 Apr 2023 20:55:54 +0100
Subject: [PATCH] Use a wrapper to avoid the pure GTK build on X11, where it is
unsupported.
---
etc/emacs.desktop | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/etc/emacs.desktop b/etc/emacs.desktop
index 0d7cac14da5..eabc78bb884 100644
--- a/etc/emacs.desktop
+++ b/etc/emacs.desktop
@@ -3,7 +3,7 @@ Name=Emacs
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
-Exec=emacs %F
+Exec=emacs-desktop %F
Icon=emacs
Type=Application
Terminal=false
--
2.39.2

View file

@ -1,16 +1,39 @@
#!/bin/sh
#!/usr/bin/bash
# The pure GTK build of emacs is not supported on X11, so try to avoid
# using if there is an alternative.
# using it there if there is another alternative.
if [ "$XDG_SESSION_TYPE" = 'x11' ]; then
case "$(readlink -f /usr/bin/emacs)" in
*/emacs-*.*-pgtk)
if type emacs-gtk+x11 >/dev/null; then
exec emacs-gtk+x11 "$@"
elif type emacs-lucid >/dev/null; then
exec emacs-lucid "$@"
fi
preferred="$(readlink -f /usr/bin/emacs)"
if [[ $XDG_SESSION_TYPE == 'x11' ]]; then
case "$preferred" in
*-pgtk)
for variant in gtk+x11 lucid; do
if type "emacs-$variant" >/dev/null; then
exec -a emacs "emacs-$variant" "$@"
fi
done
;;
*/emacs-desktop)
# If this wrapper script is itself the preferred alternative,
# select something suitable from the options available.
for variant in gtk+x11 lucid pgtk nw; do
if type "emacs-$variant" >/dev/null; then
exec -a emacs "emacs-$variant" "$@"
fi
done
exit 2
;;
esac
else
case "$preferred" in
*/emacs-desktop)
for variant in pgtk gtk+x11 lucid nw; do
if type "emacs-$variant" >/dev/null; then
exec -a emacs "emacs-$variant" "$@"
fi
done
exit 2
;;
esac
fi

View file

@ -12,12 +12,12 @@ index c00e13550bd..ce51bff5947 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -6680,7 +6680,8 @@ pgtk_display_x_warning (GdkDisplay *display)
" System. That configuration is unsupported and"
" will lead to sporadic crashes during transfer of"
" large selection data. It will also lead to"
- " various problems with keyboard input.");
+ " various problems with keyboard input."
+ "\nInstall emacs-gtk+x11 or emacs-lucid package.");
" System. That configuration is unsupported and\n"
" will lead to sporadic crashes during transfer of\n"
" large selection data. It will also lead to\n"
- " various problems with keyboard input.\n");
+ " various problems with keyboard input.\n"
+ "\nInstall emacs-gtk+x11 or emacs-lucid package.\n");
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_container_add (GTK_CONTAINER (content_area), label);
gtk_widget_show (label);

View file

@ -1,11 +1,12 @@
--- a/src/gnutls.c 2016-01-24 10:29:58.000000000 +0100
+++ b/src/gnutls.c 2016-02-02 09:32:28.477274274 +0100
@@ -1557,7 +1557,7 @@
@@ -1557,8 +1557,8 @@
gnutls_certificate_credentials_t x509_cred = NULL;
gnutls_anon_client_credentials_t anon_cred = NULL;
Lisp_Object global_init;
- char const *priority_string_ptr = "NORMAL"; /* default priority string. */
+ char const *priority_string_ptr = "@SYSTEM"; /* default priority string. */
char *c_hostname;
const char *c_pass;
/* Placeholders for the property list elements. */

View file

@ -8,22 +8,29 @@
Summary: GNU Emacs text editor
Name: emacs
Epoch: 1
Version: 29.4
Version: 30.2
Release: %autorelease
License: GPL-3.0-or-later AND CC0-1.0
URL: https://www.gnu.org/software/emacs/
%if %{lua: print(select(3, string.find(rpm.expand('%version'), '%d+%.%d+%.(%d+)')) or 0)} >= 90
Source0: https://alpha.gnu.org/gnu/emacs/pretest/emacs-%{version}.tar.xz
Source1: https://alpha.gnu.org/gnu/emacs/pretest/emacs-%{version}.tar.xz.sig
%else
Source0: https://ftp.gnu.org/gnu/emacs/emacs-%{version}.tar.xz
Source1: https://ftp.gnu.org/gnu/emacs/emacs-%{version}.tar.xz.sig
Source2: https://keys.openpgp.org/vks/v1/by-fingerprint/17E90D521672C04631B1183EE78DAE0F3115E06B
Source3: https://keys.openpgp.org/vks/v1/by-fingerprint/CEA1DE21AB108493CC9C65742E82323B8F4353EE
%endif
Source100: https://keys.openpgp.org/vks/v1/by-fingerprint/17E90D521672C04631B1183EE78DAE0F3115E06B
Source101: https://keys.openpgp.org/vks/v1/by-fingerprint/CEA1DE21AB108493CC9C65742E82323B8F4353EE
Source102: https://keys.openpgp.org/vks/v1/by-fingerprint/12BB9B400EE3F77282864D18272B5C54E015416A
Source4: dotemacs.el
Source5: site-start.el
Source6: default.el
# Emacs Terminal Mode, #551949, #617355
Source7: emacs-terminal.desktop
Source8: emacs-terminal.sh
Source9: emacs-desktop.sh
Source10: emacs_lisp.attr
Source11: emacs_lisp.rec
# Avoid trademark issues
Patch: 0001-Pong-and-Tetris-are-excluded.patch
@ -36,31 +43,25 @@ Patch: emacs-system-crypto-policies.patch
# => remove it if we stop using this patch
Patch: emacs-libdir-vs-systemd.patch
# Avoid using the pure GTK build on X11 where it is unsupported:
Patch: emacs-desktop.patch
# Hint what to do to avoid using the pure GTK build on X11, where it is
# unsupported:
Patch: emacs-pgtk-on-x-error-message.patch
# Skip failing tests (patches taken from Emacs Git)
Patch: 0001-Fix-failing-help-fns-test.patch
Patch: 0001-Fix-flymake-tests-with-GCC-14.patch
# Fix intermittently failing test (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72073)
Patch: 0001-Fix-wdired-test-unfinished-edit-01-when-temp-dirname.patch
# Fix intermittently failing test (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72120)
Patch: 0001-Fix-intermittent-failure-of-dired-test-bug27243-02.patch
Patch: 0004-Try-harder-to-stabalise-dired-test-bug27243-02.patch
# Skip intermittently failing tests
Patch: 0002-Test-eshell-test-subcommand-reset-in-pipeline-is-uns.patch
Patch: 0003-Mark-multiple-mml-sec-tests-as-unstable-when-built-i.patch
# Workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2276822
# (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63555). If GDK ever
# gets any new backends, this patch may need extending.
Patch: 0001-Apply-display-kluge-for-PGTK-too.patch
Patch: 0002-Fall-back-to-the-terminal-from-pure-GTK-when-no-disp.patch
# Don't override StartupWMClass. The overriding value doesn't work on
# Wayland, and the default should be fine.
# https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49505#67
Patch: 0001-Don-t-specify-StartupWMClass-in-emacs.desktop.patch
# Don't wait for Emacs 31 before updating to Tree-sitter 0.26.
# https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63555
# https://bugzilla.redhat.com/show_bug.cgi?id=2420305
Patch: 0001-Support-Tree-sitter-version-0.26-and-later.patch
BuildRequires: alsa-lib-devel
BuildRequires: atk-devel
BuildRequires: autoconf
@ -79,7 +80,6 @@ BuildRequires: gnutls-devel
BuildRequires: gtk3-devel
BuildRequires: gzip
BuildRequires: harfbuzz-devel
BuildRequires: jansson-devel
BuildRequires: libacl-devel
BuildRequires: libappstream-glib
BuildRequires: libgccjit-devel
@ -127,14 +127,9 @@ BuildRequires: pkgconfig(systemd)
BuildRequires: util-linux
%endif
# Emacs doesn't run without a font, rhbz#732422
Requires: google-noto-sans-mono-vf-fonts
Requires(preun): /usr/sbin/alternatives
Requires(posttrans): /usr/sbin/alternatives
Requires: emacs-common = %{epoch}:%{version}-%{release}
Provides: emacs(bin) = %{epoch}:%{version}-%{release}
Supplements: ((libwayland-server and emacs-common) unless emacs-nw)
%if "%{_lib}" == "lib64"
%global marker ()(64bit)
%endif
%define site_lisp %{_datadir}/emacs/site-lisp
%define site_start_d %{site_lisp}/site-start.d
@ -148,22 +143,75 @@ editor. It contains special code editing features, a scripting language
the editor.
}
Provides: emacs(bin) = %{epoch}:%{version}-%{release}
Requires: (emacs-pgtk = %{epoch}:%{version}-%{release} or emacs-gtk+x11 = %{epoch}:%{version}-%{release} or emacs-lucid = %{epoch}:%{version}-%{release} or emacs-nw = %{epoch}:%{version}-%{release})
Suggests: (emacs-nw if fedora-release-identity-basic)
Suggests: (emacs-nw if fedora-release-cloud)
Suggests: (emacs-nw if fedora-release-container)
Suggests: (emacs-nw if fedora-release-coreos)
Suggests: (emacs-gtk+x11 if fedora-release-i3)
Suggests: (emacs-nw if fedora-release-iot)
Suggests: (emacs-gtk+x11 if fedora-release-matecompiz)
Suggests: (emacs-pgtk if fedora-release-miraclewm)
Suggests: (emacs-pgtk if fedora-release-miraclewm-atomic)
Suggests: (emacs-pgtk if fedora-release-mobility)
Suggests: (emacs-nw if fedora-release-server)
Suggests: (emacs-pgtk if fedora-release-silverblue)
Suggests: (emacs-pgtk if fedora-release-sway)
Suggests: (emacs-pgtk if fedora-release-sway-atomic)
Suggests: (emacs-nw if fedora-release-toolbx)
Suggests: (emacs-pgtk if fedora-release-workstation)
Suggests: (emacs-gtk+x11 if fedora-release-xfce)
## If you know the best variant for these editions, please fill
## them in.
# Suggests: (emacs- if fedora-release-budgie)
# Suggests: (emacs- if fedora-release-budgie-atomic)
# Suggests: (emacs- if fedora-release-cinnamon)
# Suggests: (emacs- if fedora-release-compneuro)
# Suggests: (emacs- if fedora-release-cosmic)
# Suggests: (emacs- if fedora-release-cosmic-atomic)
# Suggests: (emacs- if fedora-release-designsuite)
# Suggests: (emacs- if fedora-release-kde)
# Suggests: (emacs- if fedora-release-kde-mobile)
# Suggests: (emacs- if fedora-release-kinoite)
# Suggests: (emacs- if fedora-release-kinoite-mobile)
# Suggests: (emacs- if fedora-release-lxqt)
# Suggests: (emacs- if fedora-release-soas)
# Suggests: (emacs- if fedora-release-wsl)
%description
%desc
This package provides an emacs binary with support for Wayland, using the
%package pgtk
Summary: GNU Emacs text editor with GTK toolkit for Wayland
# Emacs doesn't run without a font, rhbz#732422
Requires: google-noto-sans-mono-vf-fonts
Requires(preun): /usr/sbin/alternatives
Requires(posttrans): /usr/sbin/alternatives
Requires: emacs-common = %{epoch}:%{version}-%{release}
Requires: libpixbufloader-xpm.so%{?marker}
Supplements: ((libwayland-server and emacs) unless emacs-nw)
%description pgtk
%desc
This package provides an emacs-pgtk binary with support for Wayland, using the
GTK toolkit.
%if %{with gtkx11}
%package gtk+x11
Summary: GNU Emacs text editor with GTK toolkit X support
Requires: libgccjit
Summary: GNU Emacs text editor with GTK toolkit for X11
Requires: google-noto-sans-mono-vf-fonts
Requires(preun): /usr/sbin/alternatives
Requires(posttrans): /usr/sbin/alternatives
Requires: emacs-common = %{epoch}:%{version}-%{release}
Provides: emacs(bin) = %{epoch}:%{version}-%{release}
Supplements: ((xorg-x11-server-Xorg and emacs-common) unless emacs-nw)
Requires: libpixbufloader-xpm.so%{?marker}
Supplements: ((xorg-x11-server-Xorg and emacs) unless emacs-nw)
%description gtk+x11
%desc
@ -174,12 +222,11 @@ Window System, using the GTK toolkit.
%if %{with lucid}
%package lucid
Summary: GNU Emacs text editor with Lucid toolkit X support
Summary: GNU Emacs text editor with Lucid toolkit for X11
Requires: google-noto-sans-mono-vf-fonts
Requires(preun): /usr/sbin/alternatives
Requires(posttrans): /usr/sbin/alternatives
Requires: emacs-common = %{epoch}:%{version}-%{release}
Provides: emacs(bin) = %{epoch}:%{version}-%{release}
%description lucid
%desc
@ -194,7 +241,6 @@ Summary: GNU Emacs text editor with no window system support
Requires(preun): /usr/sbin/alternatives
Requires(posttrans): /usr/sbin/alternatives
Requires: emacs-common = %{epoch}:%{version}-%{release}
Provides: emacs(bin) = %{epoch}:%{version}-%{release}
Provides: emacs-nox = %{epoch}:%{version}-%{release}
Obsoletes: emacs-nox < 1:30
@ -207,9 +253,7 @@ support, for running on a terminal only.
%package -n emacsclient
Summary: Remotely control GNU Emacs
# This is a moving target whilst Fedora 40 is still receivng updates:
Conflicts: emacs-common < %{epoch}:%{version}-%{release}
Conflicts: emacs-common < 1:29.4-12
%description -n emacsclient
%desc
@ -225,31 +269,30 @@ License: GPL-3.0-or-later AND GFDL-1.3-no-invariants-or-later AND BSD-3-Cl
Requires(preun): /usr/sbin/alternatives
Requires(posttrans): /usr/sbin/alternatives
Requires: /usr/bin/readlink
Requires: %{name}-filesystem
Requires: %{name}-filesystem >= 1:30.2
Requires: emacsclient
Requires: libgccjit
Recommends: (emacs or emacs-gtk+x11 or emacs-lucid or emacs-nw)
Recommends: emacs = %{epoch}:%{version}-%{release}
Recommends: enchant2
Recommends: info
Provides: %{name}-el = %{epoch}:%{version}-%{release}
Obsoletes: emacs-el < 1:24.3-29
# transient.el is provided by emacs in lisp/transient.el
Provides: emacs-transient = 0.3.7
Provides: emacs-transient = 0.7.2.2
# the existing emacs-transient package is obsoleted by emacs 28+, last package
# version as of the release of emacs 28.1 is obsoleted
Obsoletes: emacs-transient < 0.3.0-4
# https://github.com/tree-sitter/tree-sitter/issues/3296
Requires: libtree-sitter >= 0.22.5
# Ideally, we'd package all tree-sitter parsers as RPMs, but, in the
# meantime, we need the following packages for
# treesit-install-language-grammar to be able to build the parsers for
# us at runtime:
Recommends: ((gcc and gcc-c++) or clang)
# We need the following packages for treesit-install-language-grammar to
# be able to build additional parsers for us at runtime:
Recommends: /usr/bin/git
Recommends: gcc
Recommends: (gcc-c++ if libtree-sitter < 0.24.0)
Recommends: libtree-sitter-java
%global _local_file_attrs emacs_lisp
%{load:%SOURCE10}
%global __emacs_lisp_recommends \
%{_builddir}/%{name}-%{version}/build-pgtk/src/emacs -x %SOURCE11
%description common
%desc
@ -257,20 +300,6 @@ This package contains all the common files needed by emacs, emacs-gtk+x11,
emacs-lucid, or emacs-nw.
%package terminal
Summary: A desktop menu item for GNU Emacs terminal.
Requires: emacs = %{epoch}:%{version}-%{release}
BuildArch: noarch
%description terminal
Contains a desktop menu item running GNU Emacs terminal. Install
emacs-terminal if you need a terminal with Malayalam support.
Please note that emacs-terminal is a temporary package and it will be
removed when another terminal becomes capable of handling Malayalam.
%package devel
Summary: Development header files for Emacs
@ -279,11 +308,13 @@ Development header files for Emacs.
%prep
cat '%{SOURCE2}' '%{SOURCE3}' > keyring
cat '%{SOURCE100}' '%{SOURCE101}' '%{SOURCE102}' > keyring
%{gpgverify} --keyring=keyring --signature='%{SOURCE1}' --data='%{SOURCE0}'
rm keyring
%autosetup -p1
%autosetup -N -c
cd %{name}-%{version}
%autopatch -p1
# Avoid trademark issues
rm lisp/play/pong.el lisp/play/pong.elc \
@ -302,22 +333,35 @@ ln -s ../../%{name}/%{version}/etc/COPYING doc
ln -s ../../%{name}/%{version}/etc/NEWS doc
cd ..
%if %{with lucid}
cp -a %{name}-%{version} build-lucid
%endif
%if %{with nw}
cp -a %{name}-%{version} build-nw
%endif
%if %{with gtkx11}
cp -a %{name}-%{version} build-gtk+x11
%endif
mv %{name}-%{version} build-pgtk
%build
export CFLAGS="-DMAIL_USE_LOCKF %{build_cflags}"
%set_build_flags
%if %{with lucid}
# Build Lucid binary
mkdir build-lucid && cd build-lucid
ln -s ../configure .
%configure --with-cairo \
cd build-lucid
%configure \
--disable-gc-mark-trace \
--program-suffix=-lucid \
--with-cairo \
--with-dbus \
--with-gif \
--with-gpm=no \
--with-harfbuzz \
--with-jpeg \
--with-json \
--with-modules \
--with-native-compilation=aot \
--with-png \
@ -329,18 +373,19 @@ ln -s ../configure .
--with-x-toolkit=lucid \
--with-xft \
--with-xinput2 \
--with-xpm
--with-xpm \
|| ( cat config.log && false )
%{setarch} %make_build bootstrap
%{setarch} %make_build
rm src/emacs-%{version}.*
cd ..
%endif
%if %{with nw}
# Build binary without X support
mkdir build-nw && cd build-nw
ln -s ../configure .
%configure --with-json \
cd build-nw
%configure \
--disable-gc-mark-trace \
--program-suffix=-nw \
--with-modules \
--with-native-compilation=aot \
--with-sqlite3 \
@ -348,25 +393,25 @@ ln -s ../configure .
%if %{without gpm}
--with-gpm=no \
%endif
--with-x=no
--with-x=no \
|| ( cat config.log && false )
%{setarch} %make_build bootstrap
%{setarch} %make_build
rm src/emacs-%{version}.*
cd ..
%endif
%if %{with gtkx11}
# Build GTK/X11 binary
mkdir build-gtk+x11 && cd build-gtk+x11
ln -s ../configure .
%configure --with-cairo \
cd build-gtk+x11
%configure \
--disable-gc-mark-trace \
--program-suffix=-gtk+x11 \
--with-cairo \
--with-dbus \
--with-gif \
--with-gpm=no \
--with-harfbuzz \
--with-jpeg \
--with-json \
--with-modules \
--with-native-compilation=aot \
--with-png \
@ -377,24 +422,23 @@ ln -s ../configure .
--with-webp \
--with-x-toolkit=gtk3 \
--with-xinput2 \
--with-xpm
--with-xpm \
|| ( cat config.log && false )
%{setarch} %make_build bootstrap
%{setarch} %make_build
rm src/emacs-%{version}.*
cd ..
%endif
# Build pure GTK binary
mkdir build-pgtk && cd build-pgtk
ln -s ../configure .
%configure --with-cairo \
cd build-pgtk
%configure \
--disable-gc-mark-trace \
--with-cairo \
--with-dbus \
--with-gif \
--with-gpm=no \
--with-harfbuzz \
--with-jpeg \
--with-json \
--with-modules \
--with-native-compilation=aot \
--with-pgtk \
@ -404,10 +448,10 @@ ln -s ../configure .
--with-tiff \
--with-tree-sitter \
--with-webp \
--with-xpm
--with-xpm \
|| ( cat config.log && false )
%{setarch} %make_build bootstrap
%{setarch} %make_build
rm src/emacs-%{version}.*
cd ..
# Create pkgconfig file
@ -425,70 +469,103 @@ cat > macros.emacs << EOF
%%_emacs_version %{version}
%%_emacs_ev %{?epoch:%{epoch}:}%{version}
%%_emacs_evr %{?epoch:%{epoch}:}%{version}-%{release}
%%_emacs_archsitelispdir %%{_libdir}/emacs/site-lisp
%%_emacs_sitelispdir %{site_lisp}
%%_emacs_sitestartdir %{site_start_d}
%%_emacs_bytecompile(W) /usr/bin/emacs -batch --no-init-file --no-site-file --eval '(push nil load-path)' %%{-W:--eval '(setq byte-compile-error-on-warn t)' }-f batch-byte-compile %%*
EOF
cat > 00-dynamic-module-dir.el << 'EOF'
;;; 00-dynamic-module-dir.el --- Add arch-specifc dir to load-path -*- lexical-binding: t -*-
;;; Commentary:
;;
;; This directory is for installing Emacs dynamic modules into. See
;; also RPM macro %%_emacs_archsitelispdir.
(add-to-list 'load-path "%{_libdir}/emacs/site-lisp")
;;; 00-dynamic-module-dir.el ends here
EOF
cat > 10-source-directory.el << 'EOF'
;;; 10-source-directory.el --- Set source-directory -*- lexical-binding: t -*-
;;; Commentary:
;;
;; This solves rhbz#474958; Function `update-directory-autoloads' now
;; finally works.
(setq source-directory "%{_datadir}/emacs/%{version}/")
;;; 10-source-directory.el ends here
EOF
%install
%if %{with nw}
cd build-nw
%{__make} install-arch-dep install-eln DESTDIR=%{?buildroot} INSTALL="%{__install} -p"
cd ..
%endif
%if %{with lucid}
cd build-lucid
%{__make} install-arch-dep install-eln DESTDIR=%{?buildroot} INSTALL="%{__install} -p"
cd ..
%endif
%if %{with gtkx11}
cd build-gtk+x11
%{__make} install-arch-dep install-eln DESTDIR=%{?buildroot} INSTALL="%{__install} -p"
cd ..
%endif
cd build-pgtk
%make_install
cd ..
# Let alternatives manage the symlink
rm %{buildroot}%{_bindir}/emacs
touch %{buildroot}%{_bindir}/emacs
# Do not compress the files which implement compression itself (#484830)
gunzip %{buildroot}%{_datadir}/emacs/%{version}/lisp/jka-compr.el.gz
gunzip %{buildroot}%{_datadir}/emacs/%{version}/lisp/jka-cmpr-hook.el.gz
# Install the emacs binary with pure GTK toolkit
# Remove duplicate files with suffixed names
%if %{with nw} || %{with lucid} || %{with gtkx11}
find %{buildroot} \
-type f \
! -name emacs-%{version}-gtk+x11 ! -name emacs-gtk+x11 \
! -name emacs-%{version}-lucid ! -name emacs-lucid \
! -name emacs-%{version}-nw ! -name emacs-nw \
-regextype posix-extended \
-regex '.*-(gtk\+x11|lucid|nw)((-mail)?\.[^/]+)?$' \
-print \
-delete
%endif
# Rename the emacs binary to indicate it's a "pure GTK" build
mv %{buildroot}%{_bindir}/emacs-%{version} %{buildroot}%{_bindir}/emacs-%{version}-pgtk
ln -s emacs-%{version}-pgtk %{buildroot}%{_bindir}/emacs-pgtk
%if %{with gtkx11}
# Install the emacs binary using mixed GTK and X11
install -p -m 0755 build-gtk+x11/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-gtk+x11
ln -s emacs-%{version}-gtk+x11 %{buildroot}%{_bindir}/emacs-gtk+x11
%endif
%if %{with lucid}
# Install the emacs with Lucid toolkit
install -p -m 0755 build-lucid/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-lucid
ln -s emacs-%{version}-lucid %{buildroot}%{_bindir}/emacs-lucid
%endif
# Compatibility with earlier Fedora packages
%if %{with nw}
# Install the emacs without graphical display
install -p -m 0755 build-nw/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-nw
ln -s emacs-%{version}-nw %{buildroot}%{_bindir}/emacs-%{version}-nox
ln -s emacs-%{version}-nw %{buildroot}%{_bindir}/emacs-nox
ln -s emacs-%{version}-nw %{buildroot}%{_bindir}/emacs-nw
%endif
# Make sure movemail isn't setgid
chmod 755 %{buildroot}%{emacs_libexecdir}/movemail
mkdir -p %{buildroot}%{site_lisp}
mkdir -p %{buildroot}%{site_lisp} %{buildroot}%{site_start_d}
install -p -m 0644 %SOURCE5 %{buildroot}%{site_lisp}/site-start.el
install -p -m 0644 %SOURCE6 %{buildroot}%{site_lisp}
install -p -m 0644 00-dynamic-module-dir.el %{buildroot}%{site_start_d}/
install -p -m 0644 10-source-directory.el %{buildroot}%{site_start_d}/
# This solves bz#474958, "update-directory-autoloads" now finally
# works the path is different each version, so we'll generate it here
echo "(setq source-directory \"%{_datadir}/emacs/%{version}/\")" \
>> %{buildroot}%{site_lisp}/site-start.el
mv %{buildroot}%{_bindir}/{etags,etags.emacs}
mv %{buildroot}%{_mandir}/man1/{ctags.1.gz,gctags.1.gz}
mv %{buildroot}%{_mandir}/man1/{etags.1.gz,etags.emacs.1.gz}
mv %{buildroot}%{_bindir}/{ctags,gctags}
# BZ 927996
mv %{buildroot}%{_infodir}/{info.info.gz,info.gz}
mkdir -p %{buildroot}%{site_lisp}/site-start.d
# Default initialization file
mkdir -p %{buildroot}%{_sysconfdir}/skel
install -p -m 0644 %SOURCE4 %{buildroot}%{_sysconfdir}/skel/.emacs
@ -497,20 +574,18 @@ install -p -m 0644 %SOURCE4 %{buildroot}%{_sysconfdir}/skel/.emacs
mkdir -p %{buildroot}/%{pkgconfig}
install -p -m 0644 emacs.pc %{buildroot}/%{pkgconfig}
# Install rpm macro definition file
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
install -p -m 0644 macros.emacs %{buildroot}%{_rpmconfigdir}/macros.d/
# Installing emacs-terminal binary
install -p -m 755 %SOURCE8 %{buildroot}%{_bindir}/emacs-terminal
# Install rpm macros
mkdir -p \
%{buildroot}%{_fileattrsdir} \
%{buildroot}%{_rpmconfigdir} \
%{buildroot}%{_rpmmacrodir}
install -p -m 0644 %SOURCE10 %{buildroot}%{_fileattrsdir}
install -p -m 0755 %SOURCE11 %{buildroot}%{_rpmconfigdir}
install -p -m 0644 macros.emacs %{buildroot}%{_rpmmacrodir}
# After everything is installed, remove info dir
rm -f %{buildroot}%{_infodir}/dir
# Install desktop files
desktop-file-install --dir=%{buildroot}%{_datadir}/applications \
%SOURCE7
# Install a wrapper to avoid running the Wayland-only build on X11
install -p -m 0755 %SOURCE9 %{buildroot}%{_bindir}/emacs-desktop
@ -545,6 +620,8 @@ for info_f in %info_files; do
done
# info.gz is a rename of info.info.gz and thus needs special handling
echo "%{_infodir}/info*" >> info-filelist
# elisp.info.gz has additional files
echo "%{_infodir}/elisp_type_hierarchy*" >> info-filelist
# Put the lists together after filtering ./usr to /usr
sed -i -e "s|\.%{_prefix}|%{_prefix}|" *-files
@ -553,107 +630,78 @@ grep -vhE '%{site_lisp}(|/(default\.el|site-start\.d|site-start\.el))$' {common,
# Remove old icon
rm %{buildroot}%{_datadir}/icons/hicolor/scalable/mimetypes/emacs-document23.svg
# Install the pdmp with fingerprints
pgtk_pdmp="emacs-$(./build-pgtk/src/emacs --fingerprint 2>&1 | sed 's/.* //').pdmp"
install -p -m 0644 build-pgtk/src/emacs.pdmp %{buildroot}%{emacs_libexecdir}/${pgtk_pdmp}
# Install native compiled Lisp of all builds
pgtk_comp_native_ver=$(ls -1 build-pgtk/native-lisp)
cp -ar build-pgtk/native-lisp/${pgtk_comp_native_ver} %{buildroot}%{native_lisp}
(TOPDIR=${PWD}
cd %{buildroot}
find .%{native_lisp}/${pgtk_comp_native_ver} \( -type f -name '*eln' -fprintf $TOPDIR/pgtk-eln-filelist "%%%%attr(755,-,-) %%p\n" \) -o \( -type d -fprintf $TOPDIR/pgtk-dirs "%%%%dir %%p\n" \)
find ".%{native_lisp}/$(ls $TOPDIR/build-pgtk/native-lisp)" \
\( -type f -name '*eln' -fprintf "$TOPDIR/pgtk-filelist" "%%%%attr(755,-,-) %%p\n" \) \
-o \( -type d -fprintf "$TOPDIR/pgtk-dirlist" "%%%%dir %%p\n" \)
)
echo %{emacs_libexecdir}/${pgtk_pdmp} >> pgtk-eln-filelist
echo "%{emacs_libexecdir}/emacs-$(./build-pgtk/src/emacs --fingerprint).pdmp" \
>> pgtk-filelist
%if %{with gtkx11}
gtkx11_pdmp="emacs-$(./build-gtk+x11/src/emacs --fingerprint 2>&1 | sed 's/.* //').pdmp"
install -p -m 0644 build-gtk+x11/src/emacs.pdmp %{buildroot}%{emacs_libexecdir}/${gtkx11_pdmp}
gtkx11_comp_native_ver=$(ls -1 build-gtk+x11/native-lisp)
cp -ar build-gtk+x11/native-lisp/${gtkx11_comp_native_ver} %{buildroot}%{native_lisp}
(TOPDIR=${PWD}
cd %{buildroot}
find .%{native_lisp}/${gtkx11_comp_native_ver} \( -type f -name '*eln' -fprintf $TOPDIR/gtk+x11-eln-filelist "%%%%attr(755,-,-) %%p\n" \) -o \( -type d -fprintf $TOPDIR/gtk+x11-dirs "%%%%dir %%p\n" \)
find ".%{native_lisp}/$(ls $TOPDIR/build-gtk+x11/native-lisp)" \
\( -type f -name '*eln' -fprintf "$TOPDIR/gtk+x11-filelist" "%%%%attr(755,-,-) %%p\n" \) \
-o \( -type d -fprintf "$TOPDIR/gtk+x11-dirlist" "%%%%dir %%p\n" \)
)
echo %{emacs_libexecdir}/${gtkx11_pdmp} >> gtk+x11-eln-filelist
echo "%{emacs_libexecdir}/emacs-$(./build-gtk+x11/src/emacs --fingerprint).pdmp" \
>> gtk+x11-filelist
%endif
%if %{with lucid}
lucid_pdmp="emacs-$(./build-lucid/src/emacs --fingerprint 2>&1 | sed 's/.* //').pdmp"
install -p -m 0644 build-lucid/src/emacs.pdmp %{buildroot}%{emacs_libexecdir}/${lucid_pdmp}
lucid_comp_native_ver=$(ls -1 build-lucid/native-lisp)
cp -ar build-lucid/native-lisp/${lucid_comp_native_ver} %{buildroot}%{native_lisp}
(TOPDIR=${PWD}
cd %{buildroot}
find .%{native_lisp}/${lucid_comp_native_ver} \( -type f -name '*eln' -fprintf $TOPDIR/lucid-eln-filelist "%%%%attr(755,-,-) %%p\n" \) -o \( -type d -fprintf $TOPDIR/lucid-dirs "%%%%dir %%p\n" \)
find ".%{native_lisp}/$(ls $TOPDIR/build-lucid/native-lisp)" \
\( -type f -name '*eln' -fprintf "$TOPDIR/lucid-filelist" "%%%%attr(755,-,-) %%p\n" \) \
-o \( -type d -fprintf "$TOPDIR/lucid-dirlist" "%%%%dir %%p\n" \)
)
echo %{emacs_libexecdir}/${lucid_pdmp} >> lucid-eln-filelist
echo "%{emacs_libexecdir}/emacs-$(./build-lucid/src/emacs --fingerprint).pdmp" \
>> lucid-filelist
%endif
%if %{with nw}
nw_pdmp="emacs-$(./build-nw/src/emacs --fingerprint 2>&1 | sed 's/.* //').pdmp"
install -p -m 0644 build-nw/src/emacs.pdmp %{buildroot}%{emacs_libexecdir}/${nw_pdmp}
nw_comp_native_ver=$(ls -1 build-nw/native-lisp)
cp -ar build-nw/native-lisp/${nw_comp_native_ver} %{buildroot}%{native_lisp}
(TOPDIR=${PWD}
cd %{buildroot}
find .%{native_lisp}/${nw_comp_native_ver} \( -type f -name '*eln' -fprintf $TOPDIR/nw-eln-filelist "%%%%attr(755,-,-) %%p\n" \) -o \( -type d -fprintf $TOPDIR/nw-dirs "%%%%dir %%p\n" \)
find ".%{native_lisp}/$(ls $TOPDIR/build-nw/native-lisp)" \
\( -type f -name '*eln' -fprintf "$TOPDIR/nw-filelist" "%%%%attr(755,-,-) %%p\n" \) \
-o \( -type d -fprintf "$TOPDIR/nw-dirlist" "%%%%dir %%p\n" \)
)
echo %{emacs_libexecdir}/${nw_pdmp} >> nw-eln-filelist
echo "%{emacs_libexecdir}/emacs-$(./build-nw/src/emacs --fingerprint).pdmp" \
>> nw-filelist
%endif
# remove leading . from filelists
sed -i -e "s|\.%{native_lisp}|%{native_lisp}|" *-eln-filelist *-dirs
sed -i -e "s|\.%{native_lisp}|%{native_lisp}|" *-filelist *-dirlist
# remove exec permissions from eln files to prevent the debuginfo extractor from
# trying to extract debuginfo from them
find %{buildroot}%{_libdir}/ -name '*eln' -type f | xargs chmod -x
find %{buildroot}%{native_lisp}/ -name '*.eln' -type f -print0 \
| xargs -0 chmod -x
# ensure native files are newer than byte-code files
# see: https://bugzilla.redhat.com/show_bug.cgi?id=2157979#c11
find %{buildroot}%{_libdir}/ -name '*eln' -type f | xargs touch
find %{buildroot}%{native_lisp}/ -name '*.eln' -type f -print0 \
| xargs -0 touch
export QA_SKIP_BUILD_ROOT=0
%check
# A number of tests that don't work on GNU EMBA are also unstable when
# run in Koji.
export EMACS_EMBA_CI=1
cd build-pgtk
%make_build check
cd ..
%if %{with gtkx11}
cd build-gtk+x11
%make_build check
cd ..
%endif
%if %{with lucid}
cd build-lucid
%make_build check
cd ..
%endif
%if %{with nw}
cd build-nw
%make_build check
cd ..
%endif
appstream-util validate-relax --nonet %{buildroot}/%{_metainfodir}/*.metainfo.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%preun
%preun pgtk
if [ $1 = 0 ]; then
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-desktop || :
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-pgtk || :
fi
%posttrans
%posttrans pgtk
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-desktop 85 || :
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-pgtk 80 || :
%if %{with lucid}
@ -693,7 +741,7 @@ if [ $1 = 0 ]; then
fi
%posttrans nw
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-nw 70 || :
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-nw 65 || :
# The preun scriptlet of packages before 29.4-5 will remove this symlink
# after it has been installed, so we may need to put it back:
if [ $1 = 2 -a ! -h %{_bindir}/emacs-nw ]; then
@ -702,38 +750,35 @@ fi
%endif
%preun common
if [ $1 = 0 ]; then
/usr/sbin/alternatives --remove emacs.etags %{_bindir}/etags.emacs || :
fi
%posttrans common
/usr/sbin/alternatives --install %{_bindir}/etags emacs.etags %{_bindir}/etags.emacs 80 \
--slave %{_mandir}/man1/etags.1.gz emacs.etags.man %{_mandir}/man1/etags.emacs.1.gz || :
/usr/sbin/alternatives --remove emacs.etags %{_bindir}/etags.emacs || :
%files -f pgtk-eln-filelist -f pgtk-dirs
%attr(0755,-,-) %ghost %{_bindir}/emacs
%files
%files pgtk -f pgtk-filelist -f pgtk-dirlist
%ghost %{_bindir}/emacs
%{_bindir}/emacs-desktop
%{_bindir}/emacs-%{version}-pgtk
%{_bindir}/emacs-pgtk
%{_datadir}/glib-2.0/schemas/org.gnu.emacs.defaults.gschema.xml
%if %{with gtkx11}
%files gtk+x11 -f gtk+x11-eln-filelist -f gtk+x11-dirs
%attr(0755,-,-) %ghost %{_bindir}/emacs
%files gtk+x11 -f gtk+x11-filelist -f gtk+x11-dirlist
%ghost %{_bindir}/emacs
%{_bindir}/emacs-%{version}-gtk+x11
%{_bindir}/emacs-gtk+x11
%endif
%if %{with lucid}
%files lucid -f lucid-eln-filelist -f lucid-dirs
%attr(0755,-,-) %ghost %{_bindir}/emacs
%files lucid -f lucid-filelist -f lucid-dirlist
%ghost %{_bindir}/emacs
%{_bindir}/emacs-%{version}-lucid
%{_bindir}/emacs-lucid
%endif
%if %{with nw}
%files nw -f nw-eln-filelist -f nw-dirs
%attr(0755,-,-) %ghost %{_bindir}/emacs
%files nw -f nw-filelist -f nw-dirlist
%ghost %{_bindir}/emacs
%{_bindir}/emacs-%{version}-nox
%{_bindir}/emacs-%{version}-nw
%{_bindir}/emacs-nox
@ -741,18 +786,19 @@ fi
%endif
%files -n emacsclient
%license etc/COPYING
%license build-pgtk/etc/COPYING
%{_bindir}/emacsclient
%{_mandir}/man1/emacsclient.1*
%files common -f common-filelist -f info-filelist
%config(noreplace) %{_sysconfdir}/skel/.emacs
%{_fileattrsdir}/emacs_lisp.attr
%{_rpmconfigdir}/emacs_lisp.rec
%{_rpmconfigdir}/macros.d/macros.emacs
%license etc/COPYING
%doc doc/NEWS BUGS README
%license build-pgtk/etc/COPYING
%doc build-pgtk/doc/NEWS build-pgtk/BUGS build-pgtk/README
%{_bindir}/ebrowse
%{_bindir}/emacs-desktop
%{_bindir}/etags.emacs
%{_bindir}/etags
%{_bindir}/gctags
%{_datadir}/applications/emacs.desktop
%{_datadir}/applications/emacs-mail.desktop
@ -763,12 +809,11 @@ fi
%{_datadir}/icons/hicolor/scalable/mimetypes/emacs-document.svg
%{_mandir}/man1/ebrowse.1*
%{_mandir}/man1/emacs.1*
%{_mandir}/man1/etags.emacs.1*
%{_mandir}/man1/etags.1*
%{_mandir}/man1/gctags.1*
%dir %{_datadir}/emacs/%{version}
%{_datadir}/emacs/%{version}/etc
%{_datadir}/emacs/%{version}/site-lisp
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/%{version}
%dir %{native_lisp}
%dir %{_libexecdir}/emacs
@ -782,13 +827,9 @@ fi
%attr(0644,root,root) %config %{site_lisp}/site-start.el
%{pkgconfig}/emacs.pc
%files terminal
%{_bindir}/emacs-terminal
%{_datadir}/applications/emacs-terminal.desktop
%files devel
%{_includedir}/emacs-module.h
%changelog
%autochangelog

5
emacs_lisp.attr Normal file
View file

@ -0,0 +1,5 @@
# -*- rpm-spec -*-
%__emacs_lisp_recommends %{_rpmconfigdir}/emacs_lisp.rec
%__emacs_lisp_path %{_datadir}/emacs/.+\.el(\.gz)?$
%__emacs_lisp_protocol multifile

49
emacs_lisp.rec Executable file
View file

@ -0,0 +1,49 @@
#!/usr/bin/emacs -x
;; This file is not part of GNU Emacs.
;;; Commentary:
;; Inspect Emacs Lisp files for usage of Tree-sitter parsers, and
;; generate RPM Recommends for those.
;;; Code:
(setq backtrace-on-error-noninteractive nil
jka-compr-verbose nil)
(condition-case nil
(while (setq filename (read-from-minibuffer ""))
(when (string-match-p (rx ".el" (optional ".gz") line-end)
filename)
(condition-case err
(let* ((symlink-target (file-symlink-p filename))
(source-filename
(if (and (stringp symlink-target)
(string-match-p (rx line-start "/")
symlink-target))
(file-name-concat (getenv "RPM_BUILD_ROOT")
symlink-target)
filename)))
(with-temp-buffer
(insert-file-contents source-filename)
(setq parsers ())
(while
(search-forward-regexp
(rx "(" (or "treesit-ensure-installed"
"treesit-parser-create"
"treesit-ready-p")
" '")
nil t)
(add-to-list 'parsers (thing-at-point 'symbol t)))
(when parsers
(princ (concat ";" filename "\n"))
(dolist (parser parsers)
(princ (concat "tree-sitter(" parser ")" "\n"))))))
;; Missing files are probably caused by "broken" symlinks
;; (which may actually be fulfilled by some other package).
(file-missing (message "warning: %s" (error-message-string err))))))
(end-of-file nil))
;;; emacs_lisp.rec ends here

View file

@ -1,9 +1,16 @@
;;; loaded before user's ".emacs" file and default.el
;;; site-start.el --- loaded before user's ".emacs" file and default.el -*- lexical-binding: t -*-
;;; Commentary:
;;
;; Load *.el and *.elc in /usr/share/emacs/site-lisp/site-start.d on startup
;;; Code:
;; load *.el and *.elc in /usr/share/emacs/site-lisp/site-start.d on startup
(mapc
'load
(delete-dups
(mapcar 'file-name-sans-extension
(directory-files
"/usr/share/emacs/site-lisp/site-start.d" t "\\.elc?\\'"))))
;;; site-start.el ends here

View file

@ -1,2 +1,2 @@
SHA512 (emacs-29.4.tar.xz) = 66b38081cb01d2c46ff7beefb45986cc225b4c922c30712ad0d456c6cae5507176ed99418c8f26948c5375c8afde4e4b2507d23ed997dbb5392d12150a121d80
SHA512 (emacs-29.4.tar.xz.sig) = 6c20269c260fb7f6d8b9b4582be25179a5adaaa1b9d94e68d55890f7b0b211dfd396c7005694b0154471ab3769f12e5067b8f4ec21720755d9087d89a8c722f6
SHA512 (emacs-30.2.tar.xz) = 313432d11e95c74f8cd35c5b1da442e6223f5d40f9173c55883c0339ecbfb97a0bedf79177ef8902afd3e33c078a233777bed01f5caffa1e7524f17d58bfc9a2
SHA512 (emacs-30.2.tar.xz.sig) = ab5b5d0624b37ac662cf9914e8807fc37ee273c107f1a19ca75a527b6b9a85ce35f9436d03d8a988876cce7e7bebcc6c4a1251b0ceb08785b56bf42743f246e1