bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Jeffrey Walton-3
Hi Everyone,

I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
dependency on GnuPG warez:

emacs-27.1$ ldd src/emacs
    linux-vdso.so.1 (0x00007fffc4aec000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb044395000)
    ...
    libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20
(0x00007fb04216a000)
    libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0
(0x00007fb041f55000)

Now, the rub here is, I built updated GnuPG libraries for Emacs:

   emacs-27.1$ ls ~/tmp/ok2delete/lib/*error*
   /home/jwalton/tmp/ok2delete/lib/libgpg-error.la
   /home/jwalton/tmp/ok2delete/lib/libgpg-error.so
   /home/jwalton/tmp/ok2delete/lib/libgpg-error.so.0
   /home/jwalton/tmp/ok2delete/lib/libgpg-error.so.0.29.0
   emacs-27.1$ ls ~/tmp/ok2delete/lib/*gcrypt*
   /home/jwalton/tmp/ok2delete/lib/libgcrypt.la
   /home/jwalton/tmp/ok2delete/lib/libgcrypt.so
   /home/jwalton/tmp/ok2delete/lib/libgcrypt.so.20
   /home/jwalton/tmp/ok2delete/lib/libgcrypt.so.20.2.6

The worry is, those stupid path problems that have plagued Linux for
the last 25 years or so. Programs still can't load the correct damn
library at runtime.

   $ readelf -d src/emacs | grep -E 'RPATH|RUNPATH'
    0x000000000000001d (RUNPATH)            Library runpath:
[$ORIGIN/../lib:/home/jwalton/tmp/ok2delete/lib]

PKG_CONFIG_PATH is set properly.

There does not appear to be a configure setting for GnuPG.

==========

$ ./configure --help
...

X features:
  --x-includes=DIR    X include files are in DIR
  --x-libraries=DIR   X library files are in DIR

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --disable-ns-self-contained
                          disable self contained build under NeXTstep
  --enable-locallisppath=PATH
                          directories Emacs should search for lisp files
                          specific to this site
  --enable-checking[=LIST]
                          enable expensive checks. With LIST, enable only
                          specific categories of checks. Categories are:
                          all,yes,no. Flags are: stringbytes, stringoverrun,
                          stringfreelist, structs, glyphs
  --enable-profiling      build emacs with low-level, gprof profiling support.
                          Mainly useful for debugging Emacs itself. May not
                          work on all platforms. Stops profiler.el working.
  --enable-autodepend     automatically generate dependencies to .h-files.
                          Requires gcc, enabled if found.
  --enable-gtk-deprecation-warnings
                          Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0
  --disable-build-details Make the build more deterministic by omitting host
                          names, time stamps, etc. from the output.
  --disable-largefile     omit support for large files
  --enable-gcc-warnings[=TYPE]
                          control generation of GCC warnings. The TYPE 'yes'
                          means to fail if any warnings are issued;
                          'warn-only' means issue warnings without failing
                          (default for developer builds); 'no' means disable
                          warnings (default for non-developer builds).
  --enable-check-lisp-object-type
                          Enable compile time checks for the Lisp_Object data
                          type, which can catch some bugs during development.
  --enable-link-time-optimization
                          build with link-time optimization (experimental; see
                          INSTALL)
  --disable-silent-rules  verbose build output (undo: "make V=0")
  --enable-cross-guesses={conservative|risky}
                          specify policy for cross-compilation guesses
  --disable-acl           do not support ACLs

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --without-all           omit almost all features and build small executable
                          with minimal dependencies
  --with-mailutils        rely on GNU Mailutils, so that the --without-pop
                          through --with-mailhost options are irrelevant; this
                          is the default if GNU Mailutils is installed
  --with-pop              Support POP mail retrieval if Emacs movemail is used
                          (not recommended, as Emacs movemail POP is
                          insecure). This is the default only on native
                          MS-Windows.
  --with-kerberos         support Kerberos-authenticated POP
  --with-kerberos5        support Kerberos version 5 authenticated POP
  --with-hesiod           support Hesiod to get the POP server host
  --with-mail-unlink      unlink, rather than empty, mail spool after reading
  --with-mailhost=HOSTNAME
                          string giving default POP mail host
  --with-sound=VALUE      compile with sound support (VALUE one of: yes, alsa,
                          oss, bsd-ossaudio, no; default yes). Only for
                          GNU/Linux, FreeBSD, NetBSD, MinGW, Cygwin.
  --with-pdumper=VALUE    enable pdumper support unconditionally ('yes', 'no',
                          or 'auto': default 'auto')
  --with-unexec=VALUE     enable unexec support unconditionally ('yes', 'no',
                          or 'auto': default 'auto')
  --with-dumping=VALUE    kind of dumping to use for initial Emacs build
                          (VALUE one of: pdumper, unexec, none; default
                          pdumper)
  --with-x-toolkit=KIT    use an X toolkit (KIT one of: yes or gtk, gtk2,
                          gtk3, lucid or athena, motif, no)
  --with-wide-int         prefer wide Emacs integers (typically 62-bit);
                          allows buffer and string size up to 2GB on 32-bit
                          hosts, at the cost of 10% to 30% slowdown of Lisp
                          interpreter and larger memory footprint
  --without-xpm           don't compile with XPM image support
  --without-jpeg          don't compile with JPEG image support
  --without-tiff          don't compile with TIFF image support
  --without-gif           don't compile with GIF image support
  --without-png           don't compile with PNG image support
  --without-rsvg          don't compile with SVG image support
  --without-lcms2         don't compile with Little CMS support
  --without-libsystemd    don't compile with libsystemd support
  --with-cairo            compile with Cairo drawing
  --without-xml2          don't compile with XML parsing support
  --with-imagemagick      compile with ImageMagick image support
  --without-json          don't compile with native JSON support
  --without-xft           don't use XFT for anti aliased fonts
  --without-harfbuzz      don't use HarfBuzz for text shaping
  --without-libotf        don't use libotf for OpenType font support
  --without-m17n-flt      don't use m17n-flt for text shaping
  --without-toolkit-scroll-bars
                          don't use Motif/Xaw3d/GTK toolkit scroll bars
  --without-xaw3d         don't use Xaw3d
  --without-xim           at runtime, default X11 XIM to off
  --with-ns               use Nextstep (macOS Cocoa or GNUstep) windowing
                          system. On by default on macOS.
  --with-w32              use native MS Windows GUI in a Cygwin build
  --without-gpm           don't use -lgpm for mouse support on a GNU/Linux
                          console
  --without-dbus          don't compile with D-Bus support
  --with-gconf            compile with Gconf support (Gsettings replaces this)
  --without-gsettings     don't compile with GSettings support
  --without-selinux       don't compile with SELinux support
  --without-gnutls        don't use -lgnutls for SSL/TLS support
  --without-zlib          don't compile with zlib decompression support
  --without-modules       don't compile with dynamic modules support
  --without-threads       don't compile with elisp threading support
  --with-file-notification=LIB
                          use a file notification library (LIB one of: yes,
                          inotify, kqueue, gfile, w32, no)
  --with-xwidgets         enable use of some gtk widgets in Emacs buffers
                          (requires gtk3)
  --without-makeinfo      don't require makeinfo for building manuals
  --without-compress-install
                          don't compress some files (.el, .info, etc.) when
                          installing. Equivalent to: make GZIP_PROG= install
  --with-gameuser=USER_OR_GROUP
                          user for shared game score files. An argument
                          prefixed by ':' specifies a group instead.
  --with-gnustep-conf=FILENAME
                          name of GNUstep configuration file to use on systems
                          where the command 'gnustep-config' does not work;
                          default $GNUSTEP_CONFIG_FILE, or
                          /etc/GNUstep/GNUstep.conf
  --with-x                use the X Window System
  --without-libgmp        don't use the GNU Multiple Precision (GMP) library;
                          this is the default on systems lacking libgmp.
  --without-included-regex
                          don't compile regex; this is the default on systems
                          with recent-enough versions of the GNU C Library
                          (use with caution on other systems).

config.log.zip (13K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Eli Zaretskii
> From: Jeffrey Walton <[hidden email]>
> Date: Sat, 1 Aug 2020 10:51:54 -0400
>
> I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
> dependency on GnuPG warez:

Why is that a problem?

> There does not appear to be a configure setting for GnuPG.

AFAIK, libgpg-error is a dependency of libgcrypt, so it is linked in
because libgcrypt is.



Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Jeffrey Walton-3
On Sat, Aug 1, 2020 at 11:04 AM Eli Zaretskii <[hidden email]> wrote:
>
> > From: Jeffrey Walton <[hidden email]>
> > Date: Sat, 1 Aug 2020 10:51:54 -0400
> >
> > I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
> > dependency on GnuPG warez:
>
> Why is that a problem?

The wrong library.

> > There does not appear to be a configure setting for GnuPG.
>
> AFAIK, libgpg-error is a dependency of libgcrypt, so it is linked in
> because libgcrypt is.

Again, the wrong library.

Jeff



Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Eli Zaretskii
> From: Jeffrey Walton <[hidden email]>
> Date: Sat, 1 Aug 2020 11:05:00 -0400
> Cc: [hidden email]
>
> On Sat, Aug 1, 2020 at 11:04 AM Eli Zaretskii <[hidden email]> wrote:
> >
> > > From: Jeffrey Walton <[hidden email]>
> > > Date: Sat, 1 Aug 2020 10:51:54 -0400
> > >
> > > I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
> > > dependency on GnuPG warez:
> >
> > Why is that a problem?
>
> The wrong library.

Which one?



Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Jeffrey Walton-3
On Sat, Aug 1, 2020 at 11:11 AM Eli Zaretskii <[hidden email]> wrote:

>
> > From: Jeffrey Walton <[hidden email]>
> > Date: Sat, 1 Aug 2020 11:05:00 -0400
> > Cc: [hidden email]
> >
> > On Sat, Aug 1, 2020 at 11:04 AM Eli Zaretskii <[hidden email]> wrote:
> > >
> > > > From: Jeffrey Walton <[hidden email]>
> > > > Date: Sat, 1 Aug 2020 10:51:54 -0400
> > > >
> > > > I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
> > > > dependency on GnuPG warez:
> > >
> > > Why is that a problem?
> >
> > The wrong library.
>
> Which one?

Both libgcrypt.so and libgpg-error.so.

Jeff



Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Jeffrey Walton-3
On Sat, Aug 1, 2020 at 11:14 AM Jeffrey Walton <[hidden email]> wrote:

>
> On Sat, Aug 1, 2020 at 11:11 AM Eli Zaretskii <[hidden email]> wrote:
> >
> > > From: Jeffrey Walton <[hidden email]>
> > > Date: Sat, 1 Aug 2020 11:05:00 -0400
> > > Cc: [hidden email]
> > >
> > > On Sat, Aug 1, 2020 at 11:04 AM Eli Zaretskii <[hidden email]> wrote:
> > > >
> > > > > From: Jeffrey Walton <[hidden email]>
> > > > > Date: Sat, 1 Aug 2020 10:51:54 -0400
> > > > >
> > > > > I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
> > > > > dependency on GnuPG warez:
> > > >
> > > > Why is that a problem?
> > >
> > > The wrong library.
> >
> > Which one?
>
> Both libgcrypt.so and libgpg-error.so.

This may help:

$ ldd emacs-27.1/src/emacs
    linux-vdso.so.1 (0x00007fff009cd000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc75f0fc000)
    libxml2.so.2 => /home/jwalton/tmp/ok2delete/lib/libxml2.so.2
(0x00007fc75eda0000)
    libtinfo.so.6 => /home/jwalton/tmp/ok2delete/lib/libtinfo.so.6
(0x00007fc75eb68000)
    libanl.so.1 => /lib/x86_64-linux-gnu/libanl.so.1 (0x00007fc75e964000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc75e5c6000)
    libz.so.1 => /home/jwalton/tmp/ok2delete/lib/libz.so.1 (0x00007fc75e3af000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc75e1ab000)
    libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0
(0x00007fc75df27000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007fc75dd08000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc75d917000)
    libiconv.so.2 =>
/home/jwalton/tmp/ok2delete/lib/../lib/libiconv.so.2
(0x00007fc75d62f000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc75fab1000)
    liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fc75d409000)
    liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fc75d1ed000)
    libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20
(0x00007fc75ced1000)
    libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0
(0x00007fc75ccbc000)



Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Eli Zaretskii
In reply to this post by Jeffrey Walton-3
> From: Jeffrey Walton <[hidden email]>
> Date: Sat, 1 Aug 2020 11:14:25 -0400
> Cc: [hidden email]
>
> On Sat, Aug 1, 2020 at 11:11 AM Eli Zaretskii <[hidden email]> wrote:
> >
> > > From: Jeffrey Walton <[hidden email]>
> > > Date: Sat, 1 Aug 2020 11:05:00 -0400
> > > Cc: [hidden email]
> > >
> > > On Sat, Aug 1, 2020 at 11:04 AM Eli Zaretskii <[hidden email]> wrote:
> > > >
> > > > > From: Jeffrey Walton <[hidden email]>
> > > > > Date: Sat, 1 Aug 2020 10:51:54 -0400
> > > > >
> > > > > I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
> > > > > dependency on GnuPG warez:
> > > >
> > > > Why is that a problem?
> > >
> > > The wrong library.
> >
> > Which one?
>
> Both libgcrypt.so and libgpg-error.so.

So you would like your own libraries linked into Emacs, is that the
issue here?  If so, I think you need to set up your build to look
there, by setting LDFLAGS at configure time.  Would that solve the
problem?



Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Jeffrey Walton-3
On Sat, Aug 1, 2020 at 11:17 AM Eli Zaretskii <[hidden email]> wrote:

>
> > From: Jeffrey Walton <[hidden email]>
> > Date: Sat, 1 Aug 2020 11:14:25 -0400
> > Cc: [hidden email]
> >
> > On Sat, Aug 1, 2020 at 11:11 AM Eli Zaretskii <[hidden email]> wrote:
> > >
> > > > From: Jeffrey Walton <[hidden email]>
> > > > Date: Sat, 1 Aug 2020 11:05:00 -0400
> > > > Cc: [hidden email]
> > > >
> > > > On Sat, Aug 1, 2020 at 11:04 AM Eli Zaretskii <[hidden email]> wrote:
> > > > >
> > > > > > From: Jeffrey Walton <[hidden email]>
> > > > > > Date: Sat, 1 Aug 2020 10:51:54 -0400
> > > > > >
> > > > > > I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
> > > > > > dependency on GnuPG warez:
> > > > >
> > > > > Why is that a problem?
> > > >
> > > > The wrong library.
> > >
> > > Which one?
> >
> > Both libgcrypt.so and libgpg-error.so.
>
> So you would like your own libraries linked into Emacs, is that the
> issue here?  If so, I think you need to set up your build to look
> there, by setting LDFLAGS at configure time.  Would that solve the
> problem?

LDFLAGS is set. Here are the flags I use for every package I build on Linux.

 AUTOCONF_BUILD: x86_64-pc-linux-gnu
PKG_CONFIG_PATH: /usr/local/lib/pkgconfig
       CPPFLAGS: -I/usr/local/include -DNDEBUG
        ASFLAGS: -Wa,--noexecstack
         CFLAGS: -g2 -O2 -march=native -fPIC -pthread
       CXXFLAGS: -g2 -O2 -march=native -fPIC -pthread
        LDFLAGS: -L/usr/local/lib -Wl,-R,'$ORIGIN/../lib'
-Wl,-R,/usr/local/lib -Wl,--enable-new-dtags -Wl,-z,relro -Wl,-z,now
-Wl,-z,noexecstack -Wl,-z,origin
         LDLIBS: -ldl -lpthread



Reply | Threaded
Open this post in threaded view
|

bug#42651: emacs-27.1-rc1 and wrong GnuPG libraries

Jeffrey Walton-3
On Sat, Aug 1, 2020 at 11:21 AM Jeffrey Walton <[hidden email]> wrote:

>
> On Sat, Aug 1, 2020 at 11:17 AM Eli Zaretskii <[hidden email]> wrote:
> >
> > > From: Jeffrey Walton <[hidden email]>
> > > Date: Sat, 1 Aug 2020 11:14:25 -0400
> > > Cc: [hidden email]
> > >
> > > On Sat, Aug 1, 2020 at 11:11 AM Eli Zaretskii <[hidden email]> wrote:
> > > >
> > > > > From: Jeffrey Walton <[hidden email]>
> > > > > Date: Sat, 1 Aug 2020 11:05:00 -0400
> > > > > Cc: [hidden email]
> > > > >
> > > > > On Sat, Aug 1, 2020 at 11:04 AM Eli Zaretskii <[hidden email]> wrote:
> > > > > >
> > > > > > > From: Jeffrey Walton <[hidden email]>
> > > > > > > Date: Sat, 1 Aug 2020 10:51:54 -0400
> > > > > > >
> > > > > > > I was looking at the ldd dependencies of emacs-27.1-rc1. It shows a
> > > > > > > dependency on GnuPG warez:
> > > > > >
> > > > > > Why is that a problem?
> > > > >
> > > > > The wrong library.
> > > >
> > > > Which one?
> > >
> > > Both libgcrypt.so and libgpg-error.so.
> >
> > So you would like your own libraries linked into Emacs, is that the
> > issue here?  If so, I think you need to set up your build to look
> > there, by setting LDFLAGS at configure time.  Would that solve the
> > problem?
>
> LDFLAGS is set. Here are the flags I use for every package I build on Linux.
>
>  AUTOCONF_BUILD: x86_64-pc-linux-gnu
> PKG_CONFIG_PATH: /usr/local/lib/pkgconfig
>        CPPFLAGS: -I/usr/local/include -DNDEBUG
>         ASFLAGS: -Wa,--noexecstack
>          CFLAGS: -g2 -O2 -march=native -fPIC -pthread
>        CXXFLAGS: -g2 -O2 -march=native -fPIC -pthread
>         LDFLAGS: -L/usr/local/lib -Wl,-R,'$ORIGIN/../lib'
> -Wl,-R,/usr/local/lib -Wl,--enable-new-dtags -Wl,-z,relro -Wl,-z,now
> -Wl,-z,noexecstack -Wl,-z,origin
>          LDLIBS: -ldl -lpthread

My bad... Here are the flags for this particular configuration
(prefix=$HOME/tmp/ok2delete):

 AUTOCONF_BUILD: x86_64-pc-linux-gnu
PKG_CONFIG_PATH: /home/jwalton/tmp/ok2delete/lib/pkgconfig
       CPPFLAGS: -I/home/jwalton/tmp/ok2delete/include -DNDEBUG
        ASFLAGS: -Wa,--noexecstack
         CFLAGS: -g2 -O2 -march=native -fPIC -pthread
       CXXFLAGS: -g2 -O2 -march=native -fPIC -pthread
        LDFLAGS: -L/home/jwalton/tmp/ok2delete/lib
-Wl,-R,'$ORIGIN/../lib' -Wl,-R,/home/jwalton/tmp/ok2delete/lib
-Wl,--enable-new-dtags -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
-Wl,-z,origin
         LDLIBS: -ldl -lpthread