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 <[email protected]>
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