gnu: guile-emacs: Update to 8f87cbc1dae6a9e77368afc5736df8c342e9153d.

* gnu/packages/patches/guile-emacs-build-fixes.patch: New file.
* gnu/packages/patches/guile-emacs-fix-configure.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Update accordingly.
* gnu/packages/emacs.scm (guile-emacs): Update to
8f87cbc1dae6a9e77368afc5736df8c342e9153d and use new patch.
[arguments]: Allow parallel-build.  Do not strip-binaries.
Use recommended #:configure-flags and #:make-flags.
Add stages "help-patch-progam-file-names" and "touch-lisp/finder-inf.el".
No longer delete non-existent stage "strip-double-wrap".  Delete stages
"patch-compilation-driver", "set-libgccjit-path", "validate-comp-integrity",
"restore-emacs-pdmp", "build-trampolines", and "install-site-start".
[native-search-paths]: New field.

Change-Id: I8153a55ef0061720ffd3c4833eff3ae6df3eccfc
This commit is contained in:
Janneke Nieuwenhuizen 2024-12-07 20:41:23 +01:00
parent e613e45274
commit c09cd73f5c
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273
4 changed files with 140 additions and 226 deletions

View file

@ -1524,7 +1524,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.patch \
%D%/packages/patches/guile-ssh-rename-bool.patch \
%D%/packages/patches/guile-emacs-fix-configure.patch \
%D%/packages/patches/guile-emacs-build-fixes.patch \
%D%/packages/patches/gtk2-fix-builder-test.patch \
%D%/packages/patches/gtk2-harden-list-store.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \

View file

@ -12,7 +12,7 @@
;;; Copyright © 2017, 2019, 2020, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2017, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
@ -629,7 +629,7 @@ (define-public emacs-next-tree-sitter
(deprecated-package "emacs-next-tree-sitter" emacs-next))
(define-public guile-emacs
(let ((commit "41120e0f595b16387eebfbf731fff70481de1b4b")
(let ((commit "8f87cbc1dae6a9e77368afc5736df8c342e9153d")
(revision "0"))
(package
(inherit emacs)
@ -638,35 +638,60 @@ (define-public guile-emacs
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://git.hcoop.net/git/bpt/emacs.git")
(url "https://codeberg.org/lyrra/guilemacs")
(commit commit)))
(file-name (git-file-name name version))
(patches (search-patches "guile-emacs-fix-configure.patch"))
(patches (search-patches "guile-emacs-build-fixes.patch"))
(sha256
(base32
"0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
"1yhxy6d5i673y35i66d2x975zih3cw6p59ylsb8xk68wds6s7xrl"))))
(native-inputs
(modify-inputs (package-native-inputs emacs)
(prepend autoconf automake guile-for-guile-emacs)))
(arguments
(substitute-keyword-arguments `(;; Build fails if we allow parallel build.
#:parallel-build? #f
;; Tests aren't passing for now.
(substitute-keyword-arguments `(;; Tests aren't passing for now.
#:tests? #f
#:strip-binaries? #f
,@(package-arguments emacs))
((#:configure-flags flags ''())
#~(delete "--with-cairo" #$flags))
#~`("CFLAGS=-Og -ggdb3"
"--with-native-compilation=no"
"--without-modules"
"--without-threads"
"--with-jpeg=no"
"--without-cairo"
"--without-tree-sitter"
,@(fold delete #$flags '("--with-cairo"
"--with-modules"
"--with-native-compilation=aot"))))
((#:make-flags flags #~'())
#~(list "V=1"))
((#:phases phases)
#~(modify-phases #$phases
(add-after 'unpack 'autogen
(lambda _
(invoke "sh" "autogen.sh")))
;; Build sometimes fails: deps/dispnew.d: No such file or directory
(add-before 'build 'make-deps-dir
(lambda _
(invoke "mkdir" "-p" "src/deps")))
(delete 'patch-compilation-driver)
(delete 'set-libgccjit-path)
(delete 'validate-comp-integrity)
(delete 'restore-emacs-pdmp)
(delete 'strip-double-wrap))))))))
(delete 'build-trampolines)
(delete 'install-site-start)
(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"
(lambda (port) (display port)))))))))
(native-search-paths
(list (search-path-specification
(variable "EMACSLOADPATH")
(files '("share/emacs/31.0.50/lisp")))
(search-path-specification
(variable "INFOPATH")
(files '("share/info"))))))))
(define-public m17n-db
(package

View file

@ -0,0 +1,100 @@
From 49e8725b66cb721931a9a5f0f35405e19ccee956 Mon Sep 17 00:00:00 2001
From: Janneke Nieuwenhuizen <janneke@gnu.org>
Date: Sat, 7 Dec 2024 20:52:04 +0100
Subject: [PATCH 1/3] robin's patch.
---
src/gtkutil.c | 4 ++--
src/print.c | 5 ++---
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/gtkutil.c b/src/gtkutil.c
index b1471d56eb9..be72b50c9ef 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -241,13 +241,13 @@ xg_display_open (char *display_name, GdkDisplay **dpy)
{
GdkDisplay *gdpy;
- unrequest_sigio (); /* See comment in x_display_ok, xterm.c. */
+ // unrequest_sigio (); /* See comment in x_display_ok, xterm.c. */
#ifndef HAVE_PGTK
gdpy = gdk_display_open (display_name);
#else
gdpy = gdk_display_open (strlen (display_name) == 0 ? NULL : display_name);
#endif
- request_sigio ();
+ // request_sigio ();
if (!gdpy_def && gdpy)
{
gdpy_def = gdpy;
diff --git a/src/print.c b/src/print.c
index 002274bd7da..e2c2251bf5c 100644
--- a/src/print.c
+++ b/src/print.c
@@ -2532,9 +2532,8 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
else
scm_write (obj, port);
scm_display (SCM_MAKE_CHAR ('>'), port);
- //guilemacs: this looks wrong (size_byte = -1)
- //strout (scm_to_locale_string (scm_get_output_string (port)),
- // -1, -1, printcharfun);
+ char* str = scm_to_locale_string (scm_get_output_string (port));
+ strout (str, strlen(str), strlen(str), printcharfun);
scm_close_port (port);
}
break;
--
2.46.0
From 325fc39906198c33d78e33895e385916099a283f Mon Sep 17 00:00:00 2001
From: Janneke Nieuwenhuizen <janneke@gnu.org>
Date: Sat, 7 Dec 2024 19:00:45 +0100
Subject: [PATCH 2/3] src/xfns.c: Link fix.
---
src/xfns.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/xfns.c b/src/xfns.c
index 858402613b4..94fde4b9e84 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -8921,7 +8921,8 @@ x_hide_tip (bool delete)
else
tip_frame = Qnil;
- return unbind_to (count, was_open);
+ dynwind_end ();
+ return was_open;
}
#else /* not USE_GTK */
if (NILP (tip_frame)
--
2.46.0
From 7754d875df5c9cb8fefa44604061479108429bce Mon Sep 17 00:00:00 2001
From: Janneke Nieuwenhuizen <janneke@gnu.org>
Date: Sat, 7 Dec 2024 20:14:17 +0100
Subject: [PATCH 3/3] dump fix: comment use of cl-function-documentation.
---
lisp/simple.el | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lisp/simple.el b/lisp/simple.el
index 15c790226b5..d1ceded84ae 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2800,7 +2800,7 @@ command-completion--command-for-this-buffer-function
'(cl-defmethod function-documentation ((function accessor))
(oclosure--accessor-docstring function)) ;; FIXME: η-reduce!
-(cl-defmethod function-documentation ((f cconv--interactive-helper))
+'(cl-defmethod function-documentation ((f cconv--interactive-helper))
(function-documentation (cconv--interactive-helper--fun f)))
;; This should be in `oclosure.el' but that file is loaded before `cl-generic'.
--
2.46.0

View file

@ -1,211 +0,0 @@
Two patches here backporting fixes from Emacs master.
Upstream status: emailed first patch to latest committer, Robin Templeton
<robin@igalia.com>, no response.
From dfcb3b6ff318e47b84a28cfc43f50bec42fa3570 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Tue, 7 Nov 2017 18:48:03 +0100
Subject: [PATCH 1/2] backport: Port jpeg configuration to Solaris 10 with Sun
C.
* configure.ac: Check for jpeglib 6b by trying to link it, instead
of relying on cpp magic that has problems in practice. Check for
both jpeglib.h and jerror.h features. Remove special case for
mingw32, which should no longer be needed (and if it were needed,
should now be addressable by hotwiring emacs_cv_jpeglib).
Fixes: bug#20332
From fdf532b9c915ad9ba72155646d29d0f530fd72ec Mon Sep 17 00:00:00 2001
From: Paul Eggert <address@hidden>
Date: Wed, 15 Apr 2015 18:30:01 -0700
Subject: [PATCH] Port jpeg configuration to Solaris 10 with Sun C.
* configure.ac: Check for jpeglib 6b by trying to link it, instead
of relying on cpp magic that has problems in practice. Check for
both jpeglib.h and jerror.h features. Remove special case for
mingw32, which should no longer be needed (and if it were needed,
should now be addressable by hotwiring emacs_cv_jpeglib).
Fixes: bug#20332
---
configure.ac | 72 ++++++++++++++++++++++++++++--------------------------------
1 file changed, 34 insertions(+), 38 deletions(-)
diff --git a/configure.ac b/configure.ac
index 2445db4886..36fa8eb390 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3014,44 +3014,40 @@ AC_SUBST(LIBXPM)
### mingw32 doesn't use -ljpeg, since it loads the library dynamically.
HAVE_JPEG=no
LIBJPEG=
-if test "${opsys}" = "mingw32"; then
- if test "${with_jpeg}" != "no"; then
- dnl Checking for jpeglib.h can lose because of a redefinition of
- dnl HAVE_STDLIB_H.
- AC_CHECK_HEADER(jerror.h, HAVE_JPEG=yes, HAVE_JPEG=no)
- fi
- AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
- if test "${HAVE_JPEG}" = "yes"; then
- AC_DEFINE(HAVE_JPEG)
- AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
- [#include <jpeglib.h>
- version=JPEG_LIB_VERSION
-],
- [AC_DEFINE(HAVE_JPEG)],
- [AC_MSG_WARN([libjpeg found, but not version 6b or later])
- HAVE_JPEG=no])
- fi
-elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
- if test "${with_jpeg}" != "no"; then
- dnl Checking for jpeglib.h can lose because of a redefinition of
- dnl HAVE_STDLIB_H.
- AC_CHECK_HEADER(jerror.h,
- [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
- fi
-
- AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
- if test "${HAVE_JPEG}" = "yes"; then
- AC_DEFINE(HAVE_JPEG)
- AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
- [#include <jpeglib.h>
- version=JPEG_LIB_VERSION
-],
- [AC_DEFINE(HAVE_JPEG)],
- [AC_MSG_WARN([libjpeg found, but not version 6b or later])
- HAVE_JPEG=no])
- fi
- if test "${HAVE_JPEG}" = "yes"; then
- LIBJPEG=-ljpeg
+if test "${with_jpeg}" != "no"; then
+ AC_CACHE_CHECK([for jpeglib 6b or later],
+ [emacs_cv_jpeglib],
+ [OLD_LIBS=$LIBS
+ for emacs_cv_jpeglib in yes -ljpeg no; do
+ case $emacs_cv_jpeglib in
+ yes) ;;
+ no) break;;
+ *) LIBS="$LIBS $emacs_cv_jpeglib";;
+ esac
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#undef HAVE_STDLIB_H /* Avoid config.h/jpeglib.h collision. */
+ #include <stdio.h> /* jpeglib.h needs FILE and size_t. */
+ #include <jpeglib.h>
+ #include <jerror.h>
+ char verify[JPEG_LIB_VERSION < 62 ? -1 : 1];
+ struct jpeg_decompress_struct cinfo;
+ ]],
+ [[
+ jpeg_create_decompress (&cinfo);
+ WARNMS (&cinfo, JWRN_JPEG_EOF);
+ jpeg_destroy_decompress (&cinfo);
+ ]])],
+ [emacs_link_ok=yes],
+ [emacs_link_ok=no])
+ LIBS=$OLD_LIBS
+ test $emacs_link_ok = yes && break
+ done])
+ if test "$emacs_cv_jpeglib" != no; then
+ HAVE_JPEG=yes
+ AC_DEFINE([HAVE_JPEG], 1,
+ [Define to 1 if you have the jpeg library (typically -ljpeg).])
+ test "$emacs_cv_jpeglib" != yes && LIBJPEG=$emacs_cv_jpeglib
fi
fi
AC_SUBST(LIBJPEG)
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
From f761b92d520b72954be28ad66eb82d1a96c785fb Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Wed, 8 Nov 2017 14:05:43 +0100
Subject: [PATCH 2/2] backport fix for #24065: calloc loop when compiling with
-O2.
This patch fixes
EMACSLOADPATH= '../src/bootstrap-emacs' -batch --no-site-file --no-site-lisp -l autoload \
--eval "(setq generate-autoload-cookie \";;;###cal-autoload\")" \
--eval "(setq generated-autoload-file (expand-file-name
(unmsys--file-name
\"../../git-checkout/lisp/calendar/cal-loaddefs.el\")))" \
-f batch-update-autoloads ../../git-checkout/lisp/calendar
make[2]: *** [Makefile:466: ../../git-checkout/lisp/calendar/cal-loaddefs.el] Segmentation fault
in gdb seen as
in calloc (nmemb=<error reading variable: DWARF-2 expression error:Loop detected (257).>, size=size@entry=1) at gmalloc.c:1510
I did not find malloc-fixing commits from emacs master to cleanly
cherry-pick, so this patch replaces the relevant part in configure
(emacs 53da55b8cc45e76b836ebaadd23f46e92d25abce).
* configure.ac: backport system_malloc/hybrid_malloc detection.
---
configure.ac | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 36fa8eb390..3cc1794f37 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1966,7 +1966,25 @@ case "$opsys" in
darwin|mingw32|sol2-10) system_malloc=yes ;;
esac
+hybrid_malloc=
+system_malloc=yes
+
+test "$CANNOT_DUMP" = yes ||
+case "$opsys" in
+ ## darwin ld insists on the use of malloc routines in the System framework.
+ darwin | mingw32 | nacl | sol2-10) ;;
+ cygwin) hybrid_malloc=yes
+ system_malloc= ;;
+ *) test "$ac_cv_func_sbrk" = yes && system_malloc=$emacs_cv_sanitize_address;;
+esac
+
+if test "${system_malloc}" != yes && test "${doug_lea_malloc}" != yes \
+ && test "${UNEXEC_OBJ}" = unexelf.o; then
+ hybrid_malloc=yes
+fi
+
GMALLOC_OBJ=
+HYBRID_MALLOC=
if test "${system_malloc}" = "yes"; then
AC_DEFINE([SYSTEM_MALLOC], 1,
[Define to 1 to use the system memory allocator, even if it is not
@@ -1975,6 +1993,14 @@ if test "${system_malloc}" = "yes"; then
GNU_MALLOC_reason="
(The GNU allocators don't work with this system configuration.)"
VMLIMIT_OBJ=
+elif test "$hybrid_malloc" = yes; then
+ AC_DEFINE(HYBRID_MALLOC, 1,
+ [Define to use gmalloc before dumping and the system malloc after.])
+ HYBRID_MALLOC=1
+ GNU_MALLOC=no
+ GNU_MALLOC_reason=" (only before dumping)"
+ GMALLOC_OBJ=gmalloc.o
+ VMLIMIT_OBJ=
else
test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
VMLIMIT_OBJ=vm-limit.o
@@ -1993,10 +2019,11 @@ else
of the main data segment.])
fi
fi
+AC_SUBST([HYBRID_MALLOC])
AC_SUBST(GMALLOC_OBJ)
AC_SUBST(VMLIMIT_OBJ)
-if test "$doug_lea_malloc" = "yes" ; then
+if test "$doug_lea_malloc" = "yes" && test "$hybrid_malloc" != yes; then
if test "$GNU_MALLOC" = yes ; then
GNU_MALLOC_reason="
(Using Doug Lea's new malloc from the GNU C Library.)"
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com