aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/emacs.scm7
-rw-r--r--gnu/packages/patches/guile-emacs-fix-configure.patch211
3 files changed, 218 insertions, 1 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 41e22f183c..4a07da453b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -722,6 +722,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-relocatable.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.patch \
+ %D%/packages/patches/guile-emacs-fix-configure.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \
%D%/packages/patches/gtk2-theme-paths.patch \
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index f7a3ce5e6a..acd6ec30ad 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -277,6 +277,7 @@ editor (without an X toolkit)" )
(uri (git-reference
(url "git://git.hcoop.net/git/bpt/emacs.git")
(commit "41120e0f595b16387eebfbf731fff70481de1b4b")))
+ (patches (search-patches "guile-emacs-fix-configure.patch"))
(sha256
(base32
"0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
@@ -295,7 +296,11 @@ editor (without an X toolkit)" )
`(modify-phases ,phases
(add-after 'unpack 'autogen
(lambda _
- (zero? (system* "sh" "autogen.sh"))))))))))
+ (zero? (system* "sh" "autogen.sh"))))
+ ;; Build sometimes fails: deps/dispnew.d: No such file or directory
+ (add-before 'build 'make-deps-dir
+ (lambda _
+ (zero? (system* "mkdir" "-p" "src/deps"))))))))))
;;;
diff --git a/gnu/packages/patches/guile-emacs-fix-configure.patch b/gnu/packages/patches/guile-emacs-fix-configure.patch
new file mode 100644
index 0000000000..b1f7146d21
--- /dev/null
+++ b/gnu/packages/patches/guile-emacs-fix-configure.patch
@@ -0,0 +1,211 @@
+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
+