unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
@ 2017-11-06 22:22 Jan Nieuwenhuizen
  2017-11-07  5:53 ` Mark H Weaver
  0 siblings, 1 reply; 13+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-06 22:22 UTC (permalink / raw)
  To: 29186


guix build guile-emacs fails with

checking jerror.h usability... yes
checking jerror.h presence... yes
checking for jerror.h... yes
checking for jpeg_destroy_compress in -ljpeg... yes
configure: WARNING: libjpeg found, but not version 6b or later
checking for library containing inflateEnd... -lz
checking for png... yes
checking whether png_longjmp is declared... yes
checking tiffio.h usability... yes
checking tiffio.h presence... yes
checking for tiffio.h... yes
checking for TIFFGetVersion in -ltiff... yes
checking gif_lib.h usability... yes
checking gif_lib.h presence... yes
checking for gif_lib.h... yes
checking for GifMakeMapObject in -lgif... yes
configure: error: The following required libraries were not found:
     libjpeg
Maybe some development libraries/packages are missing?
If you don't want to link with them give
     --with-jpeg=no
as options to configure
phase `configure' failed after 10.5 seconds

Obviously that's fu, because libjpeg-8 is available.  I tried several
things, previous versions of libjpeg; not sure what's going on here.

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-06 22:22 bug#29186: building guile-emacs fails: required libaries not found: libjpeg Jan Nieuwenhuizen
@ 2017-11-07  5:53 ` Mark H Weaver
  2017-11-07 17:06   ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 13+ messages in thread
From: Mark H Weaver @ 2017-11-07  5:53 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: 29186

Jan Nieuwenhuizen <janneke@gnu.org> writes:

> guix build guile-emacs fails with
>
> checking jerror.h usability... yes
> checking jerror.h presence... yes
> checking for jerror.h... yes
> checking for jpeg_destroy_compress in -ljpeg... yes
> configure: WARNING: libjpeg found, but not version 6b or later
> checking for library containing inflateEnd... -lz
> checking for png... yes
> checking whether png_longjmp is declared... yes
> checking tiffio.h usability... yes
> checking tiffio.h presence... yes
> checking for tiffio.h... yes
> checking for TIFFGetVersion in -ltiff... yes
> checking gif_lib.h usability... yes
> checking gif_lib.h presence... yes
> checking for gif_lib.h... yes
> checking for GifMakeMapObject in -lgif... yes
> configure: error: The following required libraries were not found:
>      libjpeg
> Maybe some development libraries/packages are missing?
> If you don't want to link with them give
>      --with-jpeg=no
> as options to configure
> phase `configure' failed after 10.5 seconds
>
> Obviously that's fu, because libjpeg-8 is available.  I tried several
> things, previous versions of libjpeg; not sure what's going on here.

Can you try building it with --keep-failed, and then look at the
config.log file in the failed build directory?  It should show details
of what went wrong.  Typically these tests try compiling small test
programs, and likely there was some other error that lead it to the
erroneous conclusion.  config.log will contain the test program and
error messages.

       Mark

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-07  5:53 ` Mark H Weaver
@ 2017-11-07 17:06   ` Jan Nieuwenhuizen
  2017-11-07 19:06     ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 13+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-07 17:06 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: 29186

[-- Attachment #1: Type: text/plain, Size: 999 bytes --]

Mark H Weaver writes:

> Can you try building it with --keep-failed, and then look at the
> config.log file in the failed build directory?  It should show details
> of what went wrong.  Typically these tests try compiling small test
> programs, and likely there was some other error that lead it to the
> erroneous conclusion.  config.log will contain the test program and
> error messages.

Thanks for the heads up!

Attached is a patch that fixes this configure problem.  However, now the
build fails with a segfault:

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


Greetings,
janneke


[-- Attachment #2: 0001-gnu-guile-emacs-Resurrect-fixes-29186.patch --]
[-- Type: text/x-patch, Size: 6453 bytes --]

From c0cecb3e3f39de01c674dadf8949186e94d5fb9b Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Tue, 7 Nov 2017 08:08:21 +0100
Subject: [PATCH] gnu: guile-emacs: Resurrect, fixes #29186.

* gnu/packages/patches/emacs-fix-configure-jpeg.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/emacs.scm (guile-emacs): Use it.  Fixes #29186.
---
 gnu/local.mk                                       |  2 +
 gnu/packages/emacs.scm                             |  1 +
 .../patches/emacs-fix-configure-jpeg.patch         | 99 ++++++++++++++++++++++
 3 files changed, 102 insertions(+)
 create mode 100644 gnu/packages/patches/emacs-fix-configure-jpeg.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 90dc7aec1..25082b9ad 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -11,6 +11,7 @@
 # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 # Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
 # Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+# Copyright © 2016, 2017 Jan Nieuwenhuizen <janneke@gnu.org>
 # Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 # Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 # Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -598,6 +599,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/elixir-disable-failing-tests.patch	\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/emacs-exec-path.patch			\
+  %D%/packages/patches/emacs-fix-configure-jpeg.patch		\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 026b27bf8..e5329b4c5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -276,6 +276,7 @@ editor (without an X toolkit)" )
               (uri (git-reference
                     (url "git://git.hcoop.net/git/bpt/emacs.git")
                     (commit "41120e0f595b16387eebfbf731fff70481de1b4b")))
+              (patches (search-patches "emacs-fix-configure-jpeg.patch"))
               (sha256
                (base32
                 "0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
diff --git a/gnu/packages/patches/emacs-fix-configure-jpeg.patch b/gnu/packages/patches/emacs-fix-configure-jpeg.patch
new file mode 100644
index 000000000..5205877af
--- /dev/null
+++ b/gnu/packages/patches/emacs-fix-configure-jpeg.patch
@@ -0,0 +1,99 @@
+Backported from
+
+    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
+
+Fixes: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=29186
+
+Upstream status: not yet presented upstream.
+
+--- a/configure.ac	2017-11-07 07:49:49.359550593 +0100
++++ b/configure.ac	2017-11-07 07:50:50.864551155 +0100
+@@ -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


[-- Attachment #3: Type: text/plain, Size: 152 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-07 17:06   ` Jan Nieuwenhuizen
@ 2017-11-07 19:06     ` Jan Nieuwenhuizen
  2017-11-08 10:11       ` Efraim Flashner
  2017-11-08 10:12       ` Efraim Flashner
  0 siblings, 2 replies; 13+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-07 19:06 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: 29186

[-- Attachment #1: Type: text/plain, Size: 726 bytes --]

Jan Nieuwenhuizen writes:

> However, now the build fails with a segfault:
>
> 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

Attempting to debug this segfault, I configured using

    CFLAGS=-g ./configure

however, now the segfault is gone.

Additional patch attached.  WDY(all)T?

Greetings,
janneke


[-- Attachment #2: 0001-gnu-guile-emacs-compile-with-g-rather-than-O2.patch --]
[-- Type: text/x-patch, Size: 1049 bytes --]

From 2a369f5151e0c7565fc271fb52def543b447477d Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Tue, 7 Nov 2017 20:02:35 +0100
Subject: [PATCH] gnu: guile-emacs: compile with -g (rather than -O2?)

---
 gnu/packages/emacs.scm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index c133c745c..5c33d0874 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -293,6 +293,9 @@ editor (without an X toolkit)" )
                                      ,@(package-arguments emacs))
        ((#:phases phases)
         `(modify-phases ,phases
+           (add-before 'configure 'setenv
+             (lambda _
+               (setenv "CFLAGS" "-g")))
            (add-after 'unpack 'autogen
                       (lambda _
                         (zero? (system* "sh" "autogen.sh"))))))))))
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com


[-- Attachment #3: Type: text/plain, Size: 152 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-07 19:06     ` Jan Nieuwenhuizen
@ 2017-11-08 10:11       ` Efraim Flashner
  2017-11-08 14:44         ` Jan Nieuwenhuizen
  2017-11-08 10:12       ` Efraim Flashner
  1 sibling, 1 reply; 13+ messages in thread
From: Efraim Flashner @ 2017-11-08 10:11 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: 29186

[-- Attachment #1: Type: text/plain, Size: 1242 bytes --]

On Tue, Nov 07, 2017 at 08:06:05PM +0100, Jan Nieuwenhuizen wrote:
> Jan Nieuwenhuizen writes:
> 
> > However, now the build fails with a segfault:
> >
> > 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
> 
> Attempting to debug this segfault, I configured using
> 
>     CFLAGS=-g ./configure
> 
> however, now the segfault is gone.
> 
> Additional patch attached.  WDY(all)T?
> 
> Greetings,
> janneke
> 

Will it build with libjpeg-turbo or libjpeg-9? I'm not sure how feasable
it is, but I'd like to remove libjpeg-8 (and some other old libraries)
if its possible.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-07 19:06     ` Jan Nieuwenhuizen
  2017-11-08 10:11       ` Efraim Flashner
@ 2017-11-08 10:12       ` Efraim Flashner
  2017-11-08 14:46         ` Jan Nieuwenhuizen
  1 sibling, 1 reply; 13+ messages in thread
From: Efraim Flashner @ 2017-11-08 10:12 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: 29186

[-- Attachment #1: Type: text/plain, Size: 1310 bytes --]

On Tue, Nov 07, 2017 at 08:06:05PM +0100, Jan Nieuwenhuizen wrote:
> Jan Nieuwenhuizen writes:
> 
> From 2a369f5151e0c7565fc271fb52def543b447477d Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Tue, 7 Nov 2017 20:02:35 +0100
> Subject: [PATCH] gnu: guile-emacs: compile with -g (rather than -O2?)
> 
> ---
>  gnu/packages/emacs.scm | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
> index c133c745c..5c33d0874 100644
> --- a/gnu/packages/emacs.scm
> +++ b/gnu/packages/emacs.scm
> @@ -293,6 +293,9 @@ editor (without an X toolkit)" )
>                                       ,@(package-arguments emacs))
>         ((#:phases phases)
>          `(modify-phases ,phases
> +           (add-before 'configure 'setenv
> +             (lambda _
> +               (setenv "CFLAGS" "-g")))
>             (add-after 'unpack 'autogen
>                        (lambda _
>                          (zero? (system* "sh" "autogen.sh"))))))))))

Couldn't this be a make-flag or a configure-flag?

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-08 10:11       ` Efraim Flashner
@ 2017-11-08 14:44         ` Jan Nieuwenhuizen
  0 siblings, 0 replies; 13+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-08 14:44 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 29186

Efraim Flashner writes:

> Will it build with libjpeg-turbo or libjpeg-9? I'm not sure how feasable
> it is, but I'd like to remove libjpeg-8 (and some other old libraries)
> if its possible.

As communicated over irc; yes, it build with libjpeg-9.
janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-08 10:12       ` Efraim Flashner
@ 2017-11-08 14:46         ` Jan Nieuwenhuizen
  2017-11-14 22:09           ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-08 14:46 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 29186

[-- Attachment #1: Type: text/plain, Size: 498 bytes --]

Efraim Flashner writes:

>> +           (add-before 'configure 'setenv
>> +             (lambda _
>> +               (setenv "CFLAGS" "-g")))
>>             (add-after 'unpack 'autogen
>>                        (lambda _
>>                          (zero? (system* "sh" "autogen.sh"))))))))))
>
> Couldn't this be a make-flag or a configure-flag?

Yes, as a configure flags also works.  However, I tracked down the
segfault, backported a patch and and now it builds with -O2.

New patch attached.


[-- Attachment #2: 0001-gnu-guile-emacs-Resurrect-fixes-29186.patch --]
[-- Type: text/x-patch, Size: 10792 bytes --]

From f6633adf4c5ceee3a63da9a3909a94c22f55b68a Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Tue, 7 Nov 2017 08:08:21 +0100
Subject: [PATCH] gnu: guile-emacs: Resurrect, fixes #29186.

* gnu/packages/patches/guile-emacs-fix-configure.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/emacs.scm (guile-emacs): Use it.  Add workaround for src/deps
dir creation.  Fixes #29186.
---
 gnu/local.mk                                       |   1 +
 gnu/packages/emacs.scm                             |   7 +-
 .../patches/guile-emacs-fix-configure.patch        | 208 +++++++++++++++++++++
 3 files changed, 215 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/guile-emacs-fix-configure.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index ecee15b1d..71392d86c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -712,6 +712,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 45e0635de..502d83b5f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -276,6 +276,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"))))
@@ -294,7 +295,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"))))))))))
 
 \f
 ;;;
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 000000000..374972359
--- /dev/null
+++ b/gnu/packages/patches/guile-emacs-fix-configure.patch
@@ -0,0 +1,208 @@
+Two patches here backporting fixes from emacs master.
+
+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
+
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com


[-- Attachment #3: Type: text/plain, Size: 154 bytes --]



-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-08 14:46         ` Jan Nieuwenhuizen
@ 2017-11-14 22:09           ` Ludovic Courtès
  2017-11-14 22:25             ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2017-11-14 22:09 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: 29186

Hello,

Jan Nieuwenhuizen <janneke@gnu.org> skribis:

> Efraim Flashner writes:
>
>>> +           (add-before 'configure 'setenv
>>> +             (lambda _
>>> +               (setenv "CFLAGS" "-g")))
>>>             (add-after 'unpack 'autogen
>>>                        (lambda _
>>>                          (zero? (system* "sh" "autogen.sh"))))))))))
>>
>> Couldn't this be a make-flag or a configure-flag?
>
> Yes, as a configure flags also works.  However, I tracked down the
> segfault, backported a patch and and now it builds with -O2.
>
> New patch attached.

Great that you found out!

>From f6633adf4c5ceee3a63da9a3909a94c22f55b68a Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Tue, 7 Nov 2017 08:08:21 +0100
> Subject: [PATCH] gnu: guile-emacs: Resurrect, fixes #29186.
>
> * gnu/packages/patches/guile-emacs-fix-configure.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/emacs.scm (guile-emacs): Use it.  Add workaround for src/deps
> dir creation.  Fixes #29186.

I’m fine with this patch.  I’m a bit concerned about the risk of
accumulating patches that should really be in guile-emacs proper,
though.  IMO it would be better if this patch were pushed to
guile-emacs, or if an alternate guile-emacs repo were set up if the
current one is inactive.  If that’s too cumbersome though, feel free to
push this patch!

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-14 22:09           ` Ludovic Courtès
@ 2017-11-14 22:25             ` Jan Nieuwenhuizen
  2017-11-16  8:37               ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-14 22:25 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 29186

Ludovic Courtès writes:

>> Subject: [PATCH] gnu: guile-emacs: Resurrect, fixes #29186.
>>
>> * gnu/packages/patches/guile-emacs-fix-configure.patch: New file.

> I’m fine with this patch.  I’m a bit concerned about the risk of
> accumulating patches that should really be in guile-emacs proper,
> though.  IMO it would be better if this patch were pushed to
> guile-emacs, or if an alternate guile-emacs repo were set up if the
> current one is inactive.  If that’s too cumbersome though, feel free to
> push this patch!

Meanwhile, I sent this patch 6 days ago to Robin Templeton <robin@igalia.com>.
They were the most recent committer from where we're pulling.  They haven't
responded yet.  Let me know if you know a better address/can we do better?

I can wait a bit more and push if I don't hear anything the coming week.
janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-14 22:25             ` Jan Nieuwenhuizen
@ 2017-11-16  8:37               ` Ludovic Courtès
  2017-11-24 17:25                 ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2017-11-16  8:37 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: 29186

Jan Nieuwenhuizen <janneke@gnu.org> skribis:

> Ludovic Courtès writes:
>
>>> Subject: [PATCH] gnu: guile-emacs: Resurrect, fixes #29186.
>>>
>>> * gnu/packages/patches/guile-emacs-fix-configure.patch: New file.
>
>> I’m fine with this patch.  I’m a bit concerned about the risk of
>> accumulating patches that should really be in guile-emacs proper,
>> though.  IMO it would be better if this patch were pushed to
>> guile-emacs, or if an alternate guile-emacs repo were set up if the
>> current one is inactive.  If that’s too cumbersome though, feel free to
>> push this patch!
>
> Meanwhile, I sent this patch 6 days ago to Robin Templeton <robin@igalia.com>.
> They were the most recent committer from where we're pulling.  They haven't
> responded yet.  Let me know if you know a better address/can we do better?
>
> I can wait a bit more and push if I don't hear anything the coming week.

Yes, that sounds like the best approach.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-16  8:37               ` Ludovic Courtès
@ 2017-11-24 17:25                 ` Ludovic Courtès
  2017-11-25 19:51                   ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2017-11-24 17:25 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: 29186

ludo@gnu.org (Ludovic Courtès) skribis:

> Jan Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> Ludovic Courtès writes:
>>
>>>> Subject: [PATCH] gnu: guile-emacs: Resurrect, fixes #29186.
>>>>
>>>> * gnu/packages/patches/guile-emacs-fix-configure.patch: New file.
>>
>>> I’m fine with this patch.  I’m a bit concerned about the risk of
>>> accumulating patches that should really be in guile-emacs proper,
>>> though.  IMO it would be better if this patch were pushed to
>>> guile-emacs, or if an alternate guile-emacs repo were set up if the
>>> current one is inactive.  If that’s too cumbersome though, feel free to
>>> push this patch!
>>
>> Meanwhile, I sent this patch 6 days ago to Robin Templeton <robin@igalia.com>.
>> They were the most recent committer from where we're pulling.  They haven't
>> responded yet.  Let me know if you know a better address/can we do better?
>>
>> I can wait a bit more and push if I don't hear anything the coming week.
>
> Yes, that sounds like the best approach.

I think you can now push the patch in Guix.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#29186: building guile-emacs fails: required libaries not found: libjpeg
  2017-11-24 17:25                 ` Ludovic Courtès
@ 2017-11-25 19:51                   ` Jan Nieuwenhuizen
  0 siblings, 0 replies; 13+ messages in thread
From: Jan Nieuwenhuizen @ 2017-11-25 19:51 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 29186-done

Ludovic Courtès writes:

> I think you can now push the patch in Guix.

Thanks, push to master as 68cb962a8d6d384a02e3e8eac23af2582d73c6e7

janneke
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2017-11-25 19:53 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-06 22:22 bug#29186: building guile-emacs fails: required libaries not found: libjpeg Jan Nieuwenhuizen
2017-11-07  5:53 ` Mark H Weaver
2017-11-07 17:06   ` Jan Nieuwenhuizen
2017-11-07 19:06     ` Jan Nieuwenhuizen
2017-11-08 10:11       ` Efraim Flashner
2017-11-08 14:44         ` Jan Nieuwenhuizen
2017-11-08 10:12       ` Efraim Flashner
2017-11-08 14:46         ` Jan Nieuwenhuizen
2017-11-14 22:09           ` Ludovic Courtès
2017-11-14 22:25             ` Jan Nieuwenhuizen
2017-11-16  8:37               ` Ludovic Courtès
2017-11-24 17:25                 ` Ludovic Courtès
2017-11-25 19:51                   ` Jan Nieuwenhuizen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).