* bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure
@ 2018-02-12 6:18 Robert Cochran
2018-02-12 15:39 ` Michael Heerdegen
2018-02-12 19:13 ` Glenn Morris
0 siblings, 2 replies; 7+ messages in thread
From: Robert Cochran @ 2018-02-12 6:18 UTC (permalink / raw)
To: 30431
Build fails with an undefined symbol reference:
CCLD temacs
/usr/bin/ld: image.o: undefined reference to symbol 'png_set_sig_bytes@@PNG16_0'
//usr/lib64/libpng16.so.16: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:606: temacs] Error 1
make[1]: Leaving directory '/home/Sora/Programming/emacs/src'
make: *** [Makefile:418: src] Error 2
OS is Fedora 27 amd64, libpng is libpng.1.6.31-1.fc27.x86_64
Please let me know if more details are required.
Thanks!
In GNU Emacs 27.0.50 (build 1, x86_64-redhat-linux-gnu, X toolkit, Xaw3d scroll bars)
of 2018-02-08 built on SoraLaptop
Repository revision: a710f8aa61ca73054109dc4f926d1ac6aabdd849
Windowing system distributor 'Fedora Project', version 11.0.11906000
System Description: Fedora 27 (Workstation Edition)
Recent messages:
Loading battery...done
Loading time...done
Loading gnus...done
Loading paren...done
Loading /home/Sora/.emacs.d/customize.el (source)...done
(New file)
Loading /home/Sora/quicklisp/slime-helper.el (source)...done
Starting Emacs daemon.
Restarting server
When done with this frame, type C-x 5 0
Configured using:
'configure --prefix=/home/Sora/local --with-dbus --with-gif --with-jpeg
--with-png --with-tiff --with-xft --with-xpm --with-x-toolkit=athena
--with-gpm=no --with-modules --with-gnutls --with-gconf
--with-imagemagick --with-rsvg --with-libotf --with-m17n_flt
build_alias=x86_64-redhat-linux-gnu host_alias=x86_64-redhat-linux-gnu
'CFLAGS=-DMAIL_USE_LOCKF -O2 -g -pipe -Wall -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong
--param=ssp-buffer-size=4 -grecord-gcc-switches
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic'
LDFLAGS=-Wl,-z,relro
PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'
Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GCONF GSETTINGS
NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS LUCID X11 MODULES THREADS LIBSYSTEMD LCMS2
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
global-auto-complete-mode: t
auto-complete-mode: t
paredit-mode: t
whitespace-mode: t
show-paren-mode: t
display-time-mode: t
display-battery-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
size-indication-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Load-path shadows:
None found.
Features:
(shadow sort mail-extr gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime
smime dig mailcap emacsbug sendmail slime-fancy slime-trace-dialog
slime-fontifying-fu slime-package-fu slime-references
slime-compiler-notes-tree slime-scratch slime-presentations bridge
slime-macrostep macrostep slime-mdot-fu slime-enclosing-context
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-repl elp slime-parse slime
cl-extra flymake-proc flymake warnings elec-pair lisp-mnt gud apropos
compile etags xref project arc-mode archive-mode hyperspec thingatpt
browse-url cl slime-autoloads org-rmail org-mhe org-irc org-info
org-gnus nnir gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap
nnmail mail-source utf7 netrc nnoo parse-time gnus-spec gnus-int
gnus-range message rmc puny rfc822 mml mml-sec epa derived epg mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
gnus-win org-docview doc-view jka-compr image-mode dired dired-loaddefs
org-bibtex bibtex org-bbdb org-w3m org-element avl-tree generator org
org-macro org-footnote org-pcomplete pcomplete org-list org-faces
org-entities noutline outline easy-mmode org-version ob-emacs-lisp ob
ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint
ob-core ob-eval org-compat org-macs org-loaddefs format-spec cal-menu
calendar cal-loaddefs firestorm-notes ace-window avy
auto-complete-config auto-complete popup paredit-menu paredit
interactify-count-lines lisp-family maybe-bussard-lua lua-mode advice
edmacro kmacro rx comint ansi-color ring maybe-gnu-c cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
ispell-email ispell rotate-split neato-graph-bar ert help-mode pp
find-func ewoc debug tls gnutls whitespace finder-inf tex-site info
package easymenu epg-config url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars
deeper-blue-theme paren gnus seq byte-opt gv bytecomp byte-compile cconv
nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
time-date mail-utils mm-util mail-prsvr wid-edit cl-loaddefs cl-lib time
battery cus-start cus-load server mule-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting x-toolkit x multi-tty make-network-process emacs)
Memory information:
((conses 16 440328 43165)
(symbols 48 48296 4)
(miscs 40 132 141)
(strings 32 128361 4226)
(string-bytes 1 3894108)
(vectors 16 46648)
(vector-slots 8 898336 24044)
(floats 8 317 228)
(intervals 56 403 0)
(buffers 992 14))
--
~Robert Cochran
GPG Fingerprint - BD0C 5F8B 381C 64F0 F3CE E7B9 EC9A 872C 41B2 77C2
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure
2018-02-12 6:18 bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure Robert Cochran
@ 2018-02-12 15:39 ` Michael Heerdegen
2018-02-12 16:07 ` Michael Heerdegen
2018-02-12 19:13 ` Glenn Morris
1 sibling, 1 reply; 7+ messages in thread
From: Michael Heerdegen @ 2018-02-12 15:39 UTC (permalink / raw)
To: 30431
Robert Cochran <robert+Emacs@cochranmail.com> writes:
> Build fails with an undefined symbol reference:
>
> CCLD temacs
> /usr/bin/ld: image.o: undefined reference to symbol 'png_set_sig_bytes@@PNG16_0'
> //usr/lib64/libpng16.so.16: error adding symbols: DSO missing from command line
> collect2: error: ld returned 1 exit status
> make[1]: *** [Makefile:606: temacs] Error 1
> make[1]: Leaving directory '/home/Sora/Programming/emacs/src'
> make: *** [Makefile:418: src] Error 2
>
> OS is Fedora 27 amd64, libpng is libpng.1.6.31-1.fc27.x86_64
Same build error here on Debian testing. Dropping the cited commit
doesn't seem to help, though.
Michael.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure
2018-02-12 15:39 ` Michael Heerdegen
@ 2018-02-12 16:07 ` Michael Heerdegen
0 siblings, 0 replies; 7+ messages in thread
From: Michael Heerdegen @ 2018-02-12 16:07 UTC (permalink / raw)
To: 30431
Michael Heerdegen <michael_heerdegen@web.de> writes:
> Same build error here on Debian testing. Dropping the cited commit
> doesn't seem to help, though.
This commit has been reverted now. After cleaning up the working tree,
the problem is gone for me.
I guess we can close this report?
Thanks,
Michael.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure
2018-02-12 6:18 bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure Robert Cochran
2018-02-12 15:39 ` Michael Heerdegen
@ 2018-02-12 19:13 ` Glenn Morris
2018-02-12 19:42 ` Paul Eggert
1 sibling, 1 reply; 7+ messages in thread
From: Glenn Morris @ 2018-02-12 19:13 UTC (permalink / raw)
To: Robert Cochran; +Cc: Paul Eggert, 30431
AFAICS, the issue is that the CHECK_MODULES method sets PNG_LIBS (and
PNG_CFLAGS), whereas the old method sets LIBPNG (and PNG_CFLAGS).
So revert the reversion, and then apply eg:
--- a/configure.ac
+++ b/configure.ac
@@ -3613,7 +3613,9 @@ elif test "${with_png}" != no; then
AC_CHECK_HEADER([png.h], [HAVE_PNG=yes])
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
EMACS_CHECK_MODULES([PNG], [libpng >= 1.0.0])
- if test $HAVE_PNG = no; then
+ if test $HAVE_PNG = yes; then
+ LIBPNG="$PNG_LIBS"
+ else
# Test old way in case pkg-config doesn't have it (older machines).
AC_MSG_CHECKING([for libpng not configured by pkg-config])
(Might want to move the "append -lz to LIBPNG" to outside the conditional too.)
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure
2018-02-12 19:13 ` Glenn Morris
@ 2018-02-12 19:42 ` Paul Eggert
2018-02-12 21:31 ` Werner LEMBERG
0 siblings, 1 reply; 7+ messages in thread
From: Paul Eggert @ 2018-02-12 19:42 UTC (permalink / raw)
To: Glenn Morris, Robert Cochran; +Cc: 30431
On 02/12/2018 11:13 AM, Glenn Morris wrote:
> AFAICS, the issue is that the CHECK_MODULES method sets PNG_LIBS (and
> PNG_CFLAGS), whereas the old method sets LIBPNG (and PNG_CFLAGS).
>
> So revert the reversion, and then apply eg:
>
> --- a/configure.ac
> +++ b/configure.ac
> @@ -3613,7 +3613,9 @@ elif test "${with_png}" != no; then
> AC_CHECK_HEADER([png.h], [HAVE_PNG=yes])
> elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
> EMACS_CHECK_MODULES([PNG], [libpng >= 1.0.0])
> - if test $HAVE_PNG = no; then
> + if test $HAVE_PNG = yes; then
> + LIBPNG="$PNG_LIBS"
> + else
> # Test old way in case pkg-config doesn't have it (older machines).
> AC_MSG_CHECKING([for libpng not configured by pkg-config])
Thanks, Glenn. Werner, does that work for you?
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure
2018-02-12 19:42 ` Paul Eggert
@ 2018-02-12 21:31 ` Werner LEMBERG
2018-02-13 0:42 ` Paul Eggert
0 siblings, 1 reply; 7+ messages in thread
From: Werner LEMBERG @ 2018-02-12 21:31 UTC (permalink / raw)
To: eggert; +Cc: 30431
>> - if test $HAVE_PNG = no; then
>> + if test $HAVE_PNG = yes; then
>> + LIBPNG="$PNG_LIBS"
>> + else
>
> Thanks, Glenn. Werner, does that work for you?
It works just fine, thanks!
Werner
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure
2018-02-12 21:31 ` Werner LEMBERG
@ 2018-02-13 0:42 ` Paul Eggert
0 siblings, 0 replies; 7+ messages in thread
From: Paul Eggert @ 2018-02-13 0:42 UTC (permalink / raw)
To: Werner LEMBERG; +Cc: 30431
[-- Attachment #1: Type: text/plain, Size: 364 bytes --]
On 02/12/2018 01:31 PM, Werner LEMBERG wrote:
>>> - if test $HAVE_PNG = no; then
>>> + if test $HAVE_PNG = yes; then
>>> + LIBPNG="$PNG_LIBS"
>>> + else
>> Thanks, Glenn. Werner, does that work for you?
> It works just fine, thanks!
>
>
> Werner
Thanks for checking. I installed the attached patch, which attempts to
implement Glenn's suggestion.
[-- Attachment #2: 0001-Work-if-libpng-is-in-usr-local-2nd-try.patch --]
[-- Type: text/x-patch, Size: 3726 bytes --]
From 52d34fbc84c1d87a41c435a0db9494d768ebc667 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Mon, 12 Feb 2018 16:39:56 -0800
Subject: [PATCH] Work if libpng is in /usr/local (2nd try)
Problem reported by Werner Lemberg in:
https://lists.gnu.org/r/emacs-devel/2018-02/msg00304.html
with a further fix suggested by Glenn Morris in Bug#30431#14.
* configure.ac: Try pkg-config before libpng-config.
Adjust LIBPNG accordingly, and append -lz regardless of
whether it was pkg-config.
---
configure.ac | 75 ++++++++++++++++++++++++++++++++++--------------------------
1 file changed, 42 insertions(+), 33 deletions(-)
diff --git a/configure.ac b/configure.ac
index f2a8332d71..cb452e053b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3612,39 +3612,48 @@ AC_DEFUN
if test "$opsys" = mingw32; then
AC_CHECK_HEADER([png.h], [HAVE_PNG=yes])
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
- AC_MSG_CHECKING([for png])
- png_cflags=`(libpng-config --cflags) 2>&AS_MESSAGE_LOG_FD` &&
- png_ldflags=`(libpng-config --ldflags) 2>&AS_MESSAGE_LOG_FD` || {
- # libpng-config does not work; configure by hand.
- # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
- # in /usr/include/libpng.
- if test -r /usr/include/libpng/png.h &&
- test ! -r /usr/include/png.h; then
- png_cflags=-I/usr/include/libpng
- else
- png_cflags=
- fi
- png_ldflags='-lpng'
- }
- SAVE_CFLAGS=$CFLAGS
- SAVE_LIBS=$LIBS
- CFLAGS="$CFLAGS $png_cflags"
- LIBS="$png_ldflags -lz -lm $LIBS"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[#include <png.h>]],
- [[return !png_get_channels (0, 0);]])],
- [HAVE_PNG=yes
- PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"`
- LIBPNG=$png_ldflags
- # $LIBPNG requires explicit -lz in some cases.
- # We don't know what those cases are, exactly, so play it safe and
- # append -lz to any nonempty $LIBPNG, unless we're already using LIBZ.
- if test -n "$LIBPNG" && test -z "$LIBZ"; then
- LIBPNG="$LIBPNG -lz"
- fi])
- CFLAGS=$SAVE_CFLAGS
- LIBS=$SAVE_LIBS
- AC_MSG_RESULT([$HAVE_PNG])
+ EMACS_CHECK_MODULES([PNG], [libpng >= 1.0.0])
+ if test $HAVE_PNG = yes; then
+ LIBPNG=$PNG_LIBS
+ else
+ # Test old way in case pkg-config doesn't have it (older machines).
+ AC_MSG_CHECKING([for libpng not configured by pkg-config])
+
+ png_cflags=`(libpng-config --cflags) 2>&AS_MESSAGE_LOG_FD` &&
+ png_ldflags=`(libpng-config --ldflags) 2>&AS_MESSAGE_LOG_FD` || {
+ # libpng-config does not work; configure by hand.
+ # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
+ # in /usr/include/libpng.
+ if test -r /usr/include/libpng/png.h &&
+ test ! -r /usr/include/png.h; then
+ png_cflags=-I/usr/include/libpng
+ else
+ png_cflags=
+ fi
+ png_ldflags='-lpng'
+ }
+ SAVE_CFLAGS=$CFLAGS
+ SAVE_LIBS=$LIBS
+ CFLAGS="$CFLAGS $png_cflags"
+ LIBS="$png_ldflags -lz -lm $LIBS"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[#include <png.h>]],
+ [[return !png_get_channels (0, 0);]])],
+ [HAVE_PNG=yes
+ PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"`
+ LIBPNG=$png_ldflags])
+ CFLAGS=$SAVE_CFLAGS
+ LIBS=$SAVE_LIBS
+ AC_MSG_RESULT([$HAVE_PNG])
+ fi
+
+ # $LIBPNG requires explicit -lz in some cases.
+ # We don't know what those cases are, exactly, so play it safe and
+ # append -lz to any nonempty $LIBPNG, unless we're already using LIBZ.
+ case " $LIBPNG ",$LIBZ in
+ *' -lz '*, | *' ',?*) ;;
+ *) LIBPNG="$LIBPNG -lz" ;;
+ esac
fi
fi
if test $HAVE_PNG = yes; then
--
2.14.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-02-13 0:42 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-12 6:18 bug#30431: 27.0.50; "Work even if libpng is install in /usr/local" causes build failure Robert Cochran
2018-02-12 15:39 ` Michael Heerdegen
2018-02-12 16:07 ` Michael Heerdegen
2018-02-12 19:13 ` Glenn Morris
2018-02-12 19:42 ` Paul Eggert
2018-02-12 21:31 ` Werner LEMBERG
2018-02-13 0:42 ` Paul Eggert
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.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).