From patchwork Mon Feb 3 15:22:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeffrey Walton X-Patchwork-Id: 11362991 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6C5941395 for ; Mon, 3 Feb 2020 15:23:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3D41D217BA for ; Mon, 3 Feb 2020 15:23:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aRylg68j" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727542AbgBCPW7 (ORCPT ); Mon, 3 Feb 2020 10:22:59 -0500 Received: from mail-io1-f42.google.com ([209.85.166.42]:44601 "EHLO mail-io1-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726930AbgBCPW7 (ORCPT ); Mon, 3 Feb 2020 10:22:59 -0500 Received: by mail-io1-f42.google.com with SMTP id z16so12396337iod.11 for ; Mon, 03 Feb 2020 07:22:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:reply-to:from:date:message-id:subject:to; bh=OBhBo2pZU6gSL7kGNrOAVijDpwxxYUCMWqqzfc2pip4=; b=aRylg68jLm8wwgwfS9A2wSNzLw2jUSak8qlxfD6XoM8yntvQzogYMsaNjg9ypLef3P eqj1UkLItuD5S6EIHcTJfPaaHkcKMAG02QNOfvHLZeY7wCJToMAFAbHd/Aw0p04/3cNC 4V89QswJkCeKjbQ8Rr30dTo591ynETQpjwNapI5v8b75TvNYaB+KrzmmhZ2NZL6yMnO2 CJ9en2Y1w3l+rTAsBjySoXvo5gJbFJkyoCUVkGosxyzS8Sc1+yD+GRonN001BLxpPRl4 PfAkw8E4xl/8Giz08DrfbkVS7M2+RBGf7kVg0a5O722NcXz3VBbYbpDlHmsnyOKP5uwr xRow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:from:date:message-id :subject:to; bh=OBhBo2pZU6gSL7kGNrOAVijDpwxxYUCMWqqzfc2pip4=; b=c5HvUQ2DGuhvLtEtE4UUKBF39b9kQSG8u1sLWsBC/QHgvgEDSJ+hYhLd2+vdE0NS1q dLqbJFNmn/GS1btT/+Ka5q03HJU/za2g2YTJvr0KGgVkQwRdINjRrJUMnCnff+dIw6gC bQBV7DALLF2aaD+UYusn3C8arEtrE3vhQFuNGqXx8BdrJK66EfBp3EEwRuj1YH1/6J0p GuSKBhNXg8iGaUytPU+q1FhWF+Fdu2Hs+p9l8rszz5u35Tx1sneWBE0OcxUEmH0LiCe0 MibMf+cG5Joo7KT7tWCivqYvD7ibRUnivFvKaPnu+pFjXUGDBrktwxsSVVkOi19L4emM CKgg== X-Gm-Message-State: APjAAAU9Wr3OCEzsRGQLOkAszcJ609B0MMo/ZZM6gqDONKwq3xOenw7p IyvCUXxs+1e+FTQrDdFOBs8VBhLukLQj/mGQ7F10T8Cp X-Google-Smtp-Source: APXvYqzm0SSiezgsiL6vsYrkjCRC6Jxyp2JriIBWccs5UUXssreIqODhOqISeA180MREmw0wtRA2d/jAk3LSh/oi7X8= X-Received: by 2002:a02:c951:: with SMTP id u17mr20422242jao.27.1580743377793; Mon, 03 Feb 2020 07:22:57 -0800 (PST) MIME-Version: 1.0 Reply-To: noloader@gmail.com From: Jeffrey Walton Date: Mon, 3 Feb 2020 10:22:46 -0500 Message-ID: Subject: Fix inet_ntop and inet_pton on Solaris To: Git List Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Hi Everyone, inet_ntop and inet_pton were not being detected properly on modern on Solaris. This patch revisits the the socket gear configuration on SunOS and brings it up to date for Solaris 11. According to configure.ac, the three or four functions of interest include hstrerror, inet_ntop and inet_pton. The libraries of interest are -lresolv -lsocket -lnsl. The configure tests now look for inet_ntop and inet_pton in -lsocket -lnsl per the man page. If not found, the configure tests fall back to existing behavior by searching in -lresolv. And if not found in -lresolv, then NO_INET_NTOP and NO_INET_PTON are set. Here's the configure fly-by: checking for socket... no checking for library containing socket... no checking for inet_ntop... no checking for library containing inet_ntop... -lnsl checking for inet_pton... yes checking for hstrerror... no checking for library containing hstrerror... -lresolv And config.status: $ /usr/gnu/bin/grep -E 'RESOLV|SOCKET|NSL' config.status NEEDS_RESOLV=YesPlease NEEDS_SOCKET=YesPlease NEEDS_NSL=YesPlease Jeff diff --git a/Makefile b/Makefile index 09f98b777c..7166b19ab4 100644 --- a/Makefile +++ b/Makefile @@ -1461,15 +1461,15 @@ ifndef LIBC_CONTAINS_LIBINTL EXTLIBS += -lintl endif endif +ifdef NEEDS_RESOLV + EXTLIBS += -lresolv +endif ifdef NEEDS_SOCKET EXTLIBS += -lsocket endif ifdef NEEDS_NSL EXTLIBS += -lnsl endif -ifdef NEEDS_RESOLV - EXTLIBS += -lresolv -endif ifdef NO_D_TYPE_IN_DIRENT BASIC_CFLAGS += -DNO_D_TYPE_IN_DIRENT endif diff --git a/configure.ac b/configure.ac index 66aedb9288..b83a0e970d 100644 --- a/configure.ac +++ b/configure.ac @@ -711,40 +711,58 @@ GIT_UNSTASH_FLAGS($ZLIB_PATH) GIT_CONF_SUBST([NO_DEFLATE_BOUND]) +# +# The next few tests will define NEEDS_RESOLV, NEEDS_SOCKET or +# NEEDS_NSL if linking with libresolv, libsocket and libnsl +# provides some of the functions we would normally get from libc. +NEEDS_RESOLV= +NEEDS_SOCKET= +NEEDS_NSL= + # # Define NEEDS_SOCKET if linking with libc is not enough (SunOS, # Patrick Mauritz). -AC_CHECK_LIB([c], [socket], -[NEEDS_SOCKET=], -[NEEDS_SOCKET=YesPlease]) -GIT_CONF_SUBST([NEEDS_SOCKET]) -test -n "$NEEDS_SOCKET" && LIBS="$LIBS -lsocket" +AC_CHECK_FUNC([socket], + [], + [AC_SEARCH_LIBS([socket], [c], + [NEEDS_SOCKET=], + [NEEDS_SOCKET=YesPlease]) +]) # -# The next few tests will define NEEDS_RESOLV if linking with -# libresolv provides some of the functions we would normally get -# from libc. -NEEDS_RESOLV= -# -# Define NO_INET_NTOP if linking with -lresolv is not enough. -# Solaris 2.7 in particular hos inet_ntop in -lresolv. +# Define NO_INET_NTOP if linking with -lresolv, -lsocket and -lnsl +# is not enough. Solaris 11 provides inet_ntop in -lsocket -lnsl. +# Solaris 2.7 provides inet_ntop in -lresolv. NO_INET_NTOP= AC_CHECK_FUNC([inet_ntop], [], - [AC_CHECK_LIB([resolv], [inet_ntop], - [NEEDS_RESOLV=YesPlease], - [NO_INET_NTOP=YesPlease]) + [AC_SEARCH_LIBS([inet_ntop], [socket nsl], + [NEEDS_SOCKET=YesPlease; NEEDS_NSL=YesPlease], + [AC_CHECK_FUNC([inet_ntop], + [], + [AC_SEARCH_LIBS([inet_ntop], [resolv], + [NEEDS_RESOLV=YesPlease], + [NO_INET_PTON=YesPlease]) + ]) + ]) ]) GIT_CONF_SUBST([NO_INET_NTOP]) # -# Define NO_INET_PTON if linking with -lresolv is not enough. -# Solaris 2.7 in particular hos inet_pton in -lresolv. +# Define NO_INET_PTON if linking with -lresolv, -lsocket and -lnsl +# is not enough. Solaris 11 provides inet_pton in -lsocket -lnsl. +# Solaris 2.7 provides inet_pton in -lresolv. NO_INET_PTON= AC_CHECK_FUNC([inet_pton], [], - [AC_CHECK_LIB([resolv], [inet_pton], - [NEEDS_RESOLV=YesPlease], - [NO_INET_PTON=YesPlease]) + [AC_SEARCH_LIBS([inet_pton], [socket nsl], + [NEEDS_SOCKET=YesPlease; NEEDS_NSL=YesPlease], + [AC_CHECK_FUNC([inet_pton], + [], + [AC_SEARCH_LIBS([inet_pton], [resolv], + [NEEDS_RESOLV=YesPlease], + [NO_INET_PTON=YesPlease]) + ]) + ]) ]) GIT_CONF_SUBST([NO_INET_PTON]) # @@ -753,19 +771,26 @@ GIT_CONF_SUBST([NO_INET_PTON]) NO_HSTRERROR= AC_CHECK_FUNC([hstrerror], [], - [AC_CHECK_LIB([resolv], [hstrerror], - [NEEDS_RESOLV=YesPlease], - [NO_HSTRERROR=YesPlease]) + [AC_SEARCH_LIBS([hstrerror], [resolv], + [NEEDS_RESOLV=YesPlease], + [NO_HSTRERROR=YesPlease]) ]) GIT_CONF_SUBST([NO_HSTRERROR]) dnl This must go after all the possible places for its initialization, dnl in the AC_CHECK_FUNC invocations above. GIT_CONF_SUBST([NEEDS_RESOLV]) +GIT_CONF_SUBST([NEEDS_SOCKET]) +GIT_CONF_SUBST([NEEDS_NSL]) + # -# If any of the above tests determined that -lresolv is needed at -# build-time, also set it here for remaining configure-time checks. +# If any of the above tests determined that -lresolv, -lsocket or -lnsl +# are needed at build-time, also set it here for remaining configure-time +# checks. The Sun man pages list library order as -lresolv -lsocket -lnsl. test -n "$NEEDS_RESOLV" && LIBS="$LIBS -lresolv" +test -n "$NEEDS_SOCKET" && LIBS="$LIBS -lsocket" +test -n "$NEEDS_NSL" && LIBS="$LIBS -lnsl" + AC_CHECK_LIB([c], [basename], [NEEDS_LIBGEN=],