]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
Link correctly with libdl
authorSam James <sam@gentoo.org>
Sun, 21 Jan 2024 14:58:33 +0000 (14:58 +0000)
committerIker Pedrosa <ikerpedrosam@gmail.com>
Fri, 26 Jan 2024 09:05:40 +0000 (10:05 +0100)
This fixes build with glibc-2.33 (newer glibc merged libdl and libpthread
into libc):
```
libtool: link: x86_64-pc-linux-gnu-gcc -isystem /usr/include/bsd -DLIBBSD_OVERLAY -O2 -pipe -Wl,-O1 -o login login.o login_nopam.o  -Wl,--as-needed ../lib/.libs/libshadow.a -lcrypt -lsystemd -lpam -lpam_misc -lbsd
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: ../lib/.libs/libshadow.a(libshadow_la-nss.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /lib64/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
```

In Debian, the needed macro from libtool seems to be in libltdl-dev.

Signed-off-by: Sam James <sam@gentoo.org>
configure.ac
lib/Makefile.am
share/containers/debian.dockerfile

index b29e0411827818d1f515860e8e8399e2313df917..71263e4c0857d6ec58cf4c7af664bc4ecc9116b2 100644 (file)
@@ -32,6 +32,7 @@ AC_PROG_CC
 AC_PROG_LN_S
 AC_PROG_YACC
 LT_INIT
+LT_LIB_DLLOAD
 
 dnl Checks for libraries.
 
index b5de79c57e817001b5bf708f99a4e8917de518c1..5b1121c4c79b878330e703f9a4a228a6336ea904 100644 (file)
@@ -20,6 +20,7 @@ endif
 
 libshadow_la_CPPFLAGS += -I$(top_srcdir)
 libshadow_la_CFLAGS = $(LIBBSD_CFLAGS) $(LIBCRYPT_PAM) $(LIBSYSTEMD)
+libshadow_la_LIBADD = $(LIBADD_DLOPEN)
 
 libshadow_la_SOURCES = \
        addgrps.c \
index 5934f287aa3ab0b9f0a0a609f0aa4f20e0bcae60..09492939d05a4215abd7c3c4fedc4e1bbc1e5de1 100644 (file)
@@ -9,7 +9,7 @@ RUN export DEBIAN_PRIORITY=critical \
 RUN apt-get update -y \
     && apt-get dist-upgrade -y
 RUN apt-get build-dep shadow -y
-RUN apt-get install libbsd-dev libcmocka-dev pkgconf -y
+RUN apt-get install libltdl-dev libbsd-dev libcmocka-dev pkgconf -y
 
 COPY ./ /usr/local/src/shadow/
 WORKDIR /usr/local/src/shadow/