]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
Fix build with libeconf
authorStanislav Brabec <sbrabec@suse.com>
Thu, 30 Apr 2026 03:24:41 +0000 (05:24 +0200)
committerStanislav Brabec <sbrabec@suse.com>
Mon, 4 May 2026 01:06:25 +0000 (03:06 +0200)
Building with libeconf fails. Fix the build:
- Add missing includes.
- Make open_etc_shells() public, as required by login.c.
- shells.c requires linking against libeconf. To prevent linking of all
  binaries with libeconf, split shells.c out of libcommon to libcommon_shells and
  use it only if it is really needed.

Signed-off-by: Stanislav Brabec <sbrabec@suse.cz>
include/shells.h
lib/Makemodule.am
lib/shells.c
login-utils/Makemodule.am
login-utils/login.c
sys-utils/Makemodule.am
term-utils/Makemodule.am
text-utils/Makemodule.am

index 7f2d2469c2783d22630d8727fb9b857ee4c692ac..9e9114f652844f8a636da115816e88585eeb7fe8 100644 (file)
@@ -6,9 +6,17 @@
 
 #include <pwd.h>
 
+#if defined (HAVE_LIBECONF) && defined (USE_VENDORDIR)
+# include <libeconf.h>
+#endif
+
 #define UL_SHELL_NOENV  (1 << 0)
 #define UL_SHELL_NOPWD  (1 << 1)
 
+#if defined (HAVE_LIBECONF) && defined (USE_VENDORDIR)
+econf_file *open_etc_shells(void);
+#endif
+
 extern void print_shells(FILE *out, const char *format);
 extern int is_known_shell(const char *shell_name);
 
index 9e9f204634b28c6d8262c60bbabbf977d812d07d..29bb49025018e62b9278a4ea3b6f471ad090c887 100644 (file)
@@ -37,7 +37,6 @@ libcommon_la_SOURCES = \
        lib/randutils.c \
        lib/sha1.c \
        lib/sha256.c \
-       lib/shells.c \
        lib/signames.c \
        lib/strutils.c \
        lib/strv.c \
@@ -69,6 +68,16 @@ libcommon_la_SOURCES += lib/procfs.c
 endif
 endif
 
+EXTRA_LTLIBRARIES += libcommon_shells.la
+libcommon_shells_la_CFLAGS = $(AM_CFLAGS)
+libcommon_shells_la_SOURCES = \
+       lib/shells.c
+if HAVE_ECONF
+if USE_VENDORDIR
+libcommon_shells_la_LIBADD = $(ECONF_LIBS)
+endif
+endif
+
 EXTRA_LTLIBRARIES += libtcolors.la
 libtcolors_la_CFLAGS = $(AM_CFLAGS)
 libtcolors_la_SOURCES = lib/colors.c lib/color-names.c include/colors.h include/color-names.h
index f773f0df86ac49d3203f1de1b450e6f28e5a22a2..ca7a8461d057f635e255c42e43cb8b56a52947c6 100644 (file)
@@ -15,7 +15,7 @@
 #include "shells.h"
 
 #if defined (HAVE_LIBECONF) && defined (USE_VENDORDIR)
-static econf_file *open_etc_shells(void)
+econf_file *open_etc_shells(void)
 {
        econf_err error;
        econf_file *key_file = NULL;
index a0d9bf829ef19a1e84953395714aaeb3d247a260..bc37fc61714d7c083e9a988a706cf1b552fb8b53 100644 (file)
@@ -60,7 +60,7 @@ dist_noinst_DATA += login-utils/login.1.adoc
 login_SOURCES = \
        login-utils/login.c \
        lib/logindefs.c
-login_LDADD = $(LDADD) libcommon.la -lpam
+login_LDADD = $(LDADD) libcommon.la libcommon_shells.la -lpam
 if HAVE_LINUXPAM
 login_LDADD += -lpam_misc
 endif
@@ -70,9 +70,6 @@ endif
 if HAVE_SELINUX
 login_LDADD += $(SELINUX_LIBS)
 endif
-if HAVE_ECONF
-login_LDADD += $(ECONF_LIBS)
-endif
 endif # BUILD_LOGIN
 
 
index d9e93d0dd178e0cfe0c83280d7bce35915d3301d..da119ee98e997e84f881c9dba7c0a63d560cdc6b 100644 (file)
 
 #include "logindefs.h"
 
+#if defined (HAVE_LIBECONF) && defined (USE_VENDORDIR)
+# include "shells.h"
+#endif
+
 #define LOGIN_MAX_TRIES        3
 #define LOGIN_EXIT_TIMEOUT     5
 #define LOGIN_TIMEOUT          60
index d18b64ed7836ad596b8d0f4279c9b9a2b3b9ba8a..6966f30e038c797fb7fe2e6c81a4e4b92a99dac3 100644 (file)
@@ -20,7 +20,7 @@ usrbin_exec_PROGRAMS += flock
 MANPAGES += sys-utils/flock.1
 dist_noinst_DATA += sys-utils/flock.1.adoc
 flock_SOURCES = sys-utils/flock.c lib/monotonic.c lib/timer.c
-flock_LDADD = $(LDADD) libcommon.la $(REALTIME_LIBS)
+flock_LDADD = $(LDADD) libcommon.la libcommon_shells.la $(REALTIME_LIBS)
 endif
 
 if BUILD_CHOOM
@@ -523,7 +523,7 @@ dist_noinst_DATA += sys-utils/unshare.1.adoc
 unshare_SOURCES = sys-utils/unshare.c \
                  lib/caputils.c \
                  lib/exec_shell.c
-unshare_LDADD = $(LDADD) libcommon.la
+unshare_LDADD = $(LDADD) libcommon.la libcommon_shells.la
 unshare_CFLAGS = $(AM_CFLAGS) -I$(ul_libmount_incdir)
 
 if HAVE_STATIC_UNSHARE
@@ -541,7 +541,7 @@ MANPAGES += sys-utils/nsenter.1
 dist_noinst_DATA += sys-utils/nsenter.1.adoc
 nsenter_SOURCES = sys-utils/nsenter.c lib/exec_shell.c \
                  lib/caputils.c
-nsenter_LDADD = $(LDADD) libcommon.la $(SELINUX_LIBS)
+nsenter_LDADD = $(LDADD) libcommon.la libcommon_shells.la $(SELINUX_LIBS)
 
 if HAVE_STATIC_NSENTER
 usrbin_exec_PROGRAMS += nsenter.static
index 7ce3d8b92ce77b570759753f8e9394c9ba11deda..0e77f0ec7a81178e22f3ead9c4a2c702174d1870 100644 (file)
@@ -7,7 +7,7 @@ script_SOURCES = term-utils/script.c \
                 include/pty-session.h \
                 lib/monotonic.c
 script_CFLAGS = $(AM_CFLAGS) -Wno-format-y2k
-script_LDADD = $(LDADD) libcommon.la $(ISNAN_LIBS) $(REALTIME_LIBS) -lutil
+script_LDADD = $(LDADD) libcommon.la libcommon_shells.la $(ISNAN_LIBS) $(REALTIME_LIBS) -lutil
 if HAVE_UTEMPTER
 script_LDADD += -lutempter
 endif
@@ -38,7 +38,7 @@ scriptlive_SOURCES = term-utils/scriptlive.c \
                       lib/pty-session.c \
                       include/pty-session.h \
                       lib/monotonic.c
-scriptlive_LDADD = $(LDADD) libcommon.la $(ISNAN_LIBS) $(REALTIME_LIBS) -lutil
+scriptlive_LDADD = $(LDADD) libcommon.la libcommon_shells.la $(ISNAN_LIBS) $(REALTIME_LIBS) -lutil
 endif # BUILD_SCRIPTLIVE
 
 
index c4c3e5e230a36f2b3db61ac0af4ab90a4b1b8f5b..ddae7b1e1a71b0813909d1d58bd1dae04aea1fb8 100644 (file)
@@ -98,7 +98,7 @@ MANPAGES += text-utils/more.1
 dist_noinst_DATA += text-utils/more.1.adoc
 more_SOURCES = text-utils/more.c
 more_CFLAGS = $(AM_CFLAGS) $(BSD_WARN_CFLAGS)
-more_LDADD = $(LDADD) $(MAGIC_LIBS) libcommon.la
+more_LDADD = $(LDADD) $(MAGIC_LIBS) libcommon.la libcommon_shells.la
 if HAVE_TINFO
 more_LDADD += $(TINFO_LIBS)
 more_LDADD += $(TINFO_CFLAGS)