Hi, I pushed the attached patch which fixes the Inetutils build on Solaris 11 OmniOS. On that platform you would see errors like:
gmake[2]: Entering directory '/home/collin/inetutils-2.6.1-0a86/src' CCLD hostname Undefined first referenced symbol in file gethostbyname hostname.o (symbol belongs to implicit dependency /lib/amd64/libnsl.so.1) ld: fatal: symbol referencing errors. No output written to hostname ld: fatal: symbol referencing errors. No output written to dnsdomainname collect2: error: ld returned 1 exit status gmake[2]: *** [Makefile:2349: dnsdomainname] Error 1 gmake[2]: *** Waiting for unfinished jobs.... Undefined first referenced symbol in file bind logger.o send logger.o socket logger.o connect logger.o getaddrinfo logger.o freeaddrinfo logger.o gai_strerror logger.o ld: fatal: symbol referencing errors. No output written to logger collect2: error: ld returned 1 exit status That is because on that platform the following functions require link flags: * socket: -lsocket * gethostbyname, gethostent, etc.: -lnsl * getaddrinfo, getnameinfo, etc.: -lsocket -lnsl * hstrerror: -lresolv -lsocket -lnsl This is also the case on older versions of Oracle Solaris where Inetutils failed to build. Gnulib has all of the checks for these. Mostly just have to add the variables it sets to the <program>_LDADD variables in our Makefiles. Collin
>From 8e88c32cfebffaef103d4fedf10358cde4ffb9fb Mon Sep 17 00:00:00 2001 From: Collin Funk <collin.fu...@gmail.com> Date: Tue, 25 Feb 2025 22:14:00 -0800 Subject: [PATCH] maint: Fix link errors on Solaris 11 OmniOS. * bootstrap.conf (gnulib_modules): Add hostent and socket. * ftp/Makefile.am (ftp_LDADD): New variable. * ftpd/Makefile.am (ftpd_LDADD): New variable. * ifconfig/Makefile.am (ifconfig_LDADD): New variable. * ping/Makefile.am (ping_LDADD): Add $(LIBSOCKET), $(HOSTENT_LIB), $(LIBINTL), and $(GETADDRINFO_LIB). (ping6_LDADD): New variable. * src/Makefile.am (hostname_LDADD, rlogin_LDADD, rsh_LDADD): Add $(HOSTENT_LIB). (tftp_LDADD, rexecd_LDADD): Add $(LIBSOCKET). (rexec_LDADD, dnsdomainname_LDADD, logger_LDADD, inetd_LDADD) (tftpd_LDADD): New variables. (rlogind_LDADD): Add $(LIBSOCKET), $(LIBINTL), and $(GETADDRINFO_LIB). (rshd_LDADD): Add $(HOSTENT_LIB), $(LIBINTL), and $(GETADDRINFO_LIB). (syslogd_LDADD): Add $(LIBSOCKET), $(HOSTENT_LIB), $(LIBINTL), and $(GETADDRINFO_LIB). (uucpd_LDADD): Add $(LIBSOCKET) and $(HOSTENT_LIB). * talk/Makefile.am (talk_LDADD): New variable. * talkd/Makefile.am (talkd_LDADD): New variable. * telnet/Makefile.am (telnet_LDADD): New variable. * telnetd/Makefile.am (telnetd_LDADD): New variable. * tests/Makefile.am (localhost_LDADD, runtime_ipv6_LDADD) (addrpeek_LDADD, tcpget_LDADD): New variables. * whois/Makefile.am (whois_LDADD): New variable. --- bootstrap.conf | 2 ++ ftp/Makefile.am | 1 + ftpd/Makefile.am | 1 + ifconfig/Makefile.am | 2 ++ ping/Makefile.am | 7 +++++-- src/Makefile.am | 29 +++++++++++++++++++---------- talk/Makefile.am | 1 + talkd/Makefile.am | 2 ++ telnet/Makefile.am | 2 ++ telnetd/Makefile.am | 2 ++ tests/Makefile.am | 4 ++++ whois/Makefile.am | 2 ++ 12 files changed, 43 insertions(+), 12 deletions(-) diff --git a/bootstrap.conf b/bootstrap.conf index 297964e1..b5d1f831 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -66,6 +66,7 @@ getusershell git-version-gen gitlog-to-changelog glob +hostent intprops inttostr inttypes @@ -91,6 +92,7 @@ signal size_max snprintf socklen +socket stat-time stdarg stdbool diff --git a/ftp/Makefile.am b/ftp/Makefile.am index d5be67c2..66bc9f92 100644 --- a/ftp/Makefile.am +++ b/ftp/Makefile.am @@ -34,5 +34,6 @@ bin_PROGRAMS = $(ftp_BUILD) EXTRA_PROGRAMS = ftp ftp_SOURCES = cmds.c cmdtab.c domacro.c ftp.c main.c ruserpass.c +ftp_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) noinst_HEADERS = extern.h ftp_var.h diff --git a/ftpd/Makefile.am b/ftpd/Makefile.am index c5093eaa..d3d5b7f2 100644 --- a/ftpd/Makefile.am +++ b/ftpd/Makefile.am @@ -37,6 +37,7 @@ EXTRA_PROGRAMS = ftpd ftpd_SOURCES = ftpcmd.y ftpd.c popen.c pam.c auth.c \ conf.c server_mode.c +ftpd_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) noinst_HEADERS = extern.h diff --git a/ifconfig/Makefile.am b/ifconfig/Makefile.am index a2033d9e..1637f610 100644 --- a/ifconfig/Makefile.am +++ b/ifconfig/Makefile.am @@ -32,5 +32,7 @@ bin_PROGRAMS = $(ifconfig_BUILD) EXTRA_PROGRAMS = ifconfig ifconfig_SOURCES = ifconfig.c flags.c changeif.c options.c printif.c system.c +ifconfig_LDADD = $(LDADD) $(LIBSOCKET) $(HOSTENT_LIB) $(LIBINTL) \ + $(GETADDRINFO_LIB) $(LIBRESOLV) noinst_HEADERS = ifconfig.h flags.h options.h printif.h system.h diff --git a/ping/Makefile.am b/ping/Makefile.am index a0907823..edf83fc3 100644 --- a/ping/Makefile.am +++ b/ping/Makefile.am @@ -32,11 +32,14 @@ bin_PROGRAMS = $(ping_BUILD) $(ping6_BUILD) EXTRA_PROGRAMS = ping ping6 -ping_LDADD = $(top_builddir)/libicmp/libicmp.a $(LDADD) - ping_SOURCES = ping.c ping_common.c ping_echo.c ping_address.c \ ping_router.c ping_timestamp.c ping_common.h ping_impl.h ping.h libping.c +ping_LDADD = $(top_builddir)/libicmp/libicmp.a $(LDADD) $(LIBSOCKET) \ + $(HOSTENT_LIB) $(LIBINTL) $(GETADDRINFO_LIB) + ping6_SOURCES = ping6.c ping_common.c ping_common.h ping6.h +ping6_LDADD = $(top_builddir)/libicmp/libicmp.a $(LDADD) $(LIBSOCKET) \ + $(HOSTENT_LIB) $(LIBINTL) $(GETADDRINFO_LIB) SUIDMODE = -o root -m 4755 diff --git a/src/Makefile.am b/src/Makefile.am index 8ce0bf3b..8f799da9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -43,15 +43,17 @@ EXTRA_PROGRAMS = bin_PROGRAMS += $(hostname_BUILD) hostname_SOURCES = hostname.c -hostname_LDADD = $(LDADD) $(LIBRESOLV) +hostname_LDADD = $(LDADD) $(LIBRESOLV) $(HOSTENT_LIB) EXTRA_PROGRAMS += hostname bin_PROGRAMS += $(dnsdomainname_BUILD) dnsdomainname_SOURCES = dnsdomainname.c +dnsdomainname_LDADD = $(LDADD) $(LIBINTL) $(GETADDRINFO_LIB) EXTRA_PROGRAMS += dnsdomainname bin_PROGRAMS += $(logger_BUILD) logger_SOURCES = logger.c logprio.h +logger_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) EXTRA_PROGRAMS += logger bin_PROGRAMS += $(rcp_BUILD) @@ -61,60 +63,67 @@ EXTRA_PROGRAMS += rcp bin_PROGRAMS += $(rexec_BUILD) rexec_SOURCES = rexec.c +rexec_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) EXTRA_PROGRAMS += rexec bin_PROGRAMS += $(rlogin_BUILD) rlogin_SOURCES = rlogin.c -rlogin_LDADD = $(LDADD) $(LIBAUTH) +rlogin_LDADD = $(LDADD) $(LIBAUTH) $(HOSTENT_LIB) EXTRA_PROGRAMS += rlogin bin_PROGRAMS += $(rsh_BUILD) rsh_SOURCES = rsh.c -rsh_LDADD = $(LDADD) $(LIBAUTH) +rsh_LDADD = $(LDADD) $(LIBAUTH) $(HOSTENT_LIB) EXTRA_PROGRAMS += rsh bin_PROGRAMS += $(tftp_BUILD) tftp_SOURCES = tftp.c -tftp_LDADD = $(LDADD) $(LIBIDN) +tftp_LDADD = $(LDADD) $(LIBIDN) $(LIBSOCKET) EXTRA_PROGRAMS += tftp bin_PROGRAMS += $(traceroute_BUILD) traceroute_SOURCES = traceroute.c traceroute_LDADD = $(top_builddir)/libicmp/libicmp.a $(LDADD) $(LIBIDN) \ - $(CLOCK_TIME_LIB) $(PTHREAD_SIGMASK_LIB) $(SELECT_LIB) + $(CLOCK_TIME_LIB) $(PTHREAD_SIGMASK_LIB) $(SELECT_LIB) $(LIBSOCKET) \ + $(HOSTENT_LIB) $(LIBINTL) $(GETADDRINFO_LIB) EXTRA_PROGRAMS += traceroute inetdaemon_PROGRAMS += $(inetd_BUILD) inetd_SOURCES = inetd.c +inetd_LDADD = $(LDADD) $(LIBSOCKET) EXTRA_PROGRAMS += inetd inetdaemon_PROGRAMS += $(rexecd_BUILD) rexecd_SOURCES = rexecd.c -rexecd_LDADD = $(LDADD) $(LIBCRYPT) $(LIBPAM) $(LIBDL) +rexecd_LDADD = $(LDADD) $(LIBCRYPT) $(LIBPAM) $(LIBDL) $(LIBSOCKET) EXTRA_PROGRAMS += rexecd inetdaemon_PROGRAMS += $(rlogind_BUILD) rlogind_SOURCES = rlogind.c -rlogind_LDADD = $(LDADD) $(LIBAUTH) $(LIBPAM) $(LIBDL) $(LIBWRAP) +rlogind_LDADD = $(LDADD) $(LIBAUTH) $(LIBPAM) $(LIBDL) $(LIBWRAP) \ + $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) EXTRA_PROGRAMS += rlogind inetdaemon_PROGRAMS += $(rshd_BUILD) rshd_SOURCES = rshd.c -rshd_LDADD = $(LDADD) $(LIBAUTH) $(LIBPAM) $(LIBDL) +rshd_LDADD = $(LDADD) $(LIBAUTH) $(LIBPAM) $(LIBDL) $(HOSTENT_LIB) \ + $(LIBINTL) $(GETADDRINFO_LIB) EXTRA_PROGRAMS += rshd inetdaemon_PROGRAMS += $(syslogd_BUILD) syslogd_SOURCES = syslogd.c -syslogd_LDADD = $(LDADD) $(READUTMP_LIB) +syslogd_LDADD = $(LDADD) $(READUTMP_LIB) $(LIBSOCKET) $(HOSTENT_LIB) \ + $(LIBINTL) $(GETADDRINFO_LIB) EXTRA_PROGRAMS += syslogd inetdaemon_PROGRAMS += $(tftpd_BUILD) tftpd_SOURCES = tftpd.c +tftpd_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) EXTRA_PROGRAMS += tftpd inetdaemon_PROGRAMS += $(uucpd_BUILD) uucpd_SOURCES = uucpd.c -uucpd_LDADD = $(LDADD) $(LIBCRYPT) +uucpd_LDADD = $(LDADD) $(LIBCRYPT) $(LIBSOCKET) $(HOSTENT_LIB) EXTRA_PROGRAMS += uucpd SUIDMODE = -o root -m 4755 diff --git a/talk/Makefile.am b/talk/Makefile.am index 196957ae..2c3a6c2f 100644 --- a/talk/Makefile.am +++ b/talk/Makefile.am @@ -29,5 +29,6 @@ bin_PROGRAMS = $(talk_BUILD) EXTRA_PROGRAMS = talk talk_SOURCES = ctl.c ctl_transact.c display.c get_addrs.c get_names.c init_disp.c invite.c io.c look_up.c msgs.c talk.c +talk_LDADD = $(LDADD) $(LIBSOCKET) $(HOSTENT_LIB) $(LIBINTL) $(GETADDRINFO_LIB) noinst_HEADERS = talk.h talk_ctl.h diff --git a/talkd/Makefile.am b/talkd/Makefile.am index ab06ff62..e8a789b6 100644 --- a/talkd/Makefile.am +++ b/talkd/Makefile.am @@ -39,3 +39,5 @@ talkd_SOURCES = \ table.c\ talkd.c\ intalkd.h + +talkd_LDADD = $(LDADD) $(HOSTENT_LIB) diff --git a/telnet/Makefile.am b/telnet/Makefile.am index dba690d4..51cd22ef 100644 --- a/telnet/Makefile.am +++ b/telnet/Makefile.am @@ -36,5 +36,7 @@ EXTRA_PROGRAMS = telnet telnet_SOURCES = authenc.c commands.c main.c network.c ring.c sys_bsd.c \ telnet.c terminal.c tn3270.c utilities.c +telnet_LDADD = $(LDADD) $(LIBSOCKET) $(HOSTENT_LIB) $(LIBINTL) \ + $(GETADDRINFO_LIB) noinst_HEADERS = defines.h externs.h general.h ring.h types.h diff --git a/telnetd/Makefile.am b/telnetd/Makefile.am index dec5672a..7e9916be 100644 --- a/telnetd/Makefile.am +++ b/telnetd/Makefile.am @@ -40,5 +40,7 @@ inetdaemon_PROGRAMS = $(telnetd_BUILD) EXTRA_PROGRAMS = telnetd telnetd_SOURCES = telnetd.c pty.c term.c utility.c state.c termstat.c slc.c +telnetd_LDADD = $(LDADD) $(HOSTENT_LIB) $(LIBINTL) $(GETADDRINFO_LIB) \ + $(LIBRESOLV) noinst_HEADERS = telnetd.h diff --git a/tests/Makefile.am b/tests/Makefile.am index 4c4dd8bf..c4bb4209 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -29,12 +29,16 @@ identify_LDADD = $(top_builddir)/lib/libgnu.a $(LIBUTIL) $(PTY_LIB) check_PROGRAMS = localhost readutmp runtime-ipv6 test-snprintf waitdaemon +localhost_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) readutmp_LDADD = $(iu_LIBRARIES) $(READUTMP_LIB) +runtime_ipv6_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) dist_check_SCRIPTS = utmp.sh if ENABLE_inetd check_PROGRAMS += addrpeek tcpget +addrpeek_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) +tcpget_LDADD = $(LDADD) $(LIBSOCKET) $(LIBINTL) $(GETADDRINFO_LIB) endif if ENABLE_libls diff --git a/whois/Makefile.am b/whois/Makefile.am index 55c6b680..5de689ed 100644 --- a/whois/Makefile.am +++ b/whois/Makefile.am @@ -25,6 +25,8 @@ bin_PROGRAMS = $(whois_BUILD) EXTRA_PROGRAMS = whois whois_SOURCES = whois.c +whois_LDADD = $(LDADD) $(LIBSOCKET) $(HOSTENT_LIB) $(LIBINTL) \ + $(GETADDRINFO_LIB) EXTRA_DIST = as_del_list ip_del_list ip6_del_list tld_serv_list \ make_as_del.pl make_ip_del.pl make_ip6_del.pl make_tld_serv.pl \ -- 2.48.1