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

Reply via email to