linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] autoconf: clean up linking in nfs-utils
@ 2011-12-23 19:47 Jeff Layton
  2011-12-23 19:47 ` [PATCH 1/3] autoconf: fix up libevent autoconf test Jeff Layton
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Jeff Layton @ 2011-12-23 19:47 UTC (permalink / raw)
  To: steved; +Cc: linux-nfs

This patchset is a cleanup of the linking in nfs-utils. This should
reduce the number of unnecessary libraries that each of the binaries are
linked against.

I've tested this on relatively recent machines with --enable-tirpc and
--disable-tirpc and it seems to do the right thing. But, as there are a
lot of possible combinations, it's difficult to know if this will break
more obscure setups. For that reason, this should probably go in fairly
soon to ensure that it gets plenty of testing.

Jeff Layton (3):
  autoconf: fix up libevent autoconf test
  autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBS
  autoconf: only link binaries that need it to libtirpc

 aclocal/libevent.m4         |    3 ++-
 aclocal/libnfsidmap.m4      |    9 ++++++---
 aclocal/libtirpc.m4         |   15 +++++++++++++--
 tools/rpcgen/Makefile.am    |    1 +
 utils/gssd/Makefile.am      |    6 +++---
 utils/idmapd/Makefile.am    |    2 +-
 utils/mount/Makefile.am     |    3 ++-
 utils/mountd/Makefile.am    |    2 +-
 utils/nfsd/Makefile.am      |    2 +-
 utils/nfsidmap/Makefile.am  |    2 +-
 utils/showmount/Makefile.am |    3 ++-
 utils/statd/Makefile.am     |    4 ++--
 12 files changed, 35 insertions(+), 17 deletions(-)

-- 
1.7.7.4


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/3] autoconf: fix up libevent autoconf test
  2011-12-23 19:47 [PATCH 0/3] autoconf: clean up linking in nfs-utils Jeff Layton
@ 2011-12-23 19:47 ` Jeff Layton
  2012-01-05 21:43   ` Steve Dickson
  2011-12-23 19:47 ` [PATCH 2/3] autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBS Jeff Layton
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 12+ messages in thread
From: Jeff Layton @ 2011-12-23 19:47 UTC (permalink / raw)
  To: steved; +Cc: linux-nfs

Have it set LIBEVENT to -levent and use that in the Makefiles instead
of hardcoding it.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 aclocal/libevent.m4      |    3 ++-
 utils/idmapd/Makefile.am |    2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/aclocal/libevent.m4 b/aclocal/libevent.m4
index 3c962b3..b5ac00f 100644
--- a/aclocal/libevent.m4
+++ b/aclocal/libevent.m4
@@ -2,8 +2,9 @@ dnl Checks for libevent
 AC_DEFUN([AC_LIBEVENT], [
 
   dnl Check for libevent, but do not add -levent to LIBS
-  AC_CHECK_LIB([event], [event_dispatch], [libevent=1],
+  AC_CHECK_LIB([event], [event_dispatch], [LIBEVENT=-levent],
                [AC_MSG_ERROR([libevent not found.])])
+  AC_SUBST(LIBEVENT)
 
   AC_CHECK_HEADERS([event.h], ,
                    [AC_MSG_ERROR([libevent headers not found.])])
diff --git a/utils/idmapd/Makefile.am b/utils/idmapd/Makefile.am
index 4328e41..f8578b0 100644
--- a/utils/idmapd/Makefile.am
+++ b/utils/idmapd/Makefile.am
@@ -16,7 +16,7 @@ idmapd_SOURCES = \
 	nfs_idmap.h \
 	queue.h
 
-idmapd_LDADD = -levent -lnfsidmap ../../support/nfs/libnfs.a
+idmapd_LDADD = $(LIBEVENT) -lnfsidmap ../../support/nfs/libnfs.a
 
 MAINTAINERCLEANFILES = Makefile.in
 
-- 
1.7.7.4


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/3] autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBS
  2011-12-23 19:47 [PATCH 0/3] autoconf: clean up linking in nfs-utils Jeff Layton
  2011-12-23 19:47 ` [PATCH 1/3] autoconf: fix up libevent autoconf test Jeff Layton
@ 2011-12-23 19:47 ` Jeff Layton
  2012-01-05 21:44   ` Steve Dickson
  2011-12-23 19:47 ` [PATCH 3/3] autoconf: only link binaries that need it to libtirpc Jeff Layton
  2011-12-24 14:54 ` [PATCH 0/3] autoconf: clean up linking in nfs-utils Jim Rees
  3 siblings, 1 reply; 12+ messages in thread
From: Jeff Layton @ 2011-12-23 19:47 UTC (permalink / raw)
  To: steved; +Cc: linux-nfs

...as that makes that library get linked into every binary. Also,
replace "hardcoded" -lnfsidmap linker flag in Makefiles with
a AC_SUBST variable.

This fixes a regression introduced in commit d7c64dd.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 aclocal/libnfsidmap.m4     |    9 ++++++---
 utils/gssd/Makefile.am     |    2 +-
 utils/idmapd/Makefile.am   |    2 +-
 utils/nfsidmap/Makefile.am |    2 +-
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/aclocal/libnfsidmap.m4 b/aclocal/libnfsidmap.m4
index 484b1ec..ae697e8 100644
--- a/aclocal/libnfsidmap.m4
+++ b/aclocal/libnfsidmap.m4
@@ -3,7 +3,7 @@ dnl
 AC_DEFUN([AC_LIBNFSIDMAP], [
 
   dnl Check for libnfsidmap, but do not add -lnfsidmap to LIBS
-  AC_CHECK_LIB([nfsidmap], [nfs4_init_name_mapping], [libnfsidmap=1],
+  AC_CHECK_LIB([nfsidmap], [nfs4_init_name_mapping], [LIBNFSIDMAP=-lnfsidmap],
                [AC_MSG_ERROR([libnfsidmap not found.])])
 
   AC_CHECK_HEADERS([nfsidmap.h], ,
@@ -14,7 +14,10 @@ AC_DEFUN([AC_LIBNFSIDMAP], [
                [AC_DEFINE([HAVE_NFS4_SET_DEBUG], 1,
                           [Define to 1 if you have the `nfs4_set_debug' function.])])
 
-  dnl only enable nfsidmap when libnfsidmap supports it
-  AC_CHECK_LIB([nfsidmap], [nfs4_owner_to_uid])
+  dnl nfs4_owner_to_uid() doesn't appear in all versions of libnfsidmap
+  dnl We just need this test to set $ac_cv_lib_nfsidmap_nfs4_owner_to_uid
+  AC_CHECK_LIB([nfsidmap], [nfs4_owner_to_uid], [:])
+
+  AC_SUBST(LIBNFSIDMAP)
 
 ])dnl
diff --git a/utils/gssd/Makefile.am b/utils/gssd/Makefile.am
index d7888ad..9136189 100644
--- a/utils/gssd/Makefile.am
+++ b/utils/gssd/Makefile.am
@@ -58,7 +58,7 @@ svcgssd_SOURCES = \
 
 svcgssd_LDADD = \
 	../../support/nfs/libnfs.a \
-	$(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) -lnfsidmap \
+	$(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) $(LIBNFSIDMAP) \
 	$(KRBLIBS)
 
 svcgssd_LDFLAGS = $(KRBLDFLAGS)
diff --git a/utils/idmapd/Makefile.am b/utils/idmapd/Makefile.am
index f8578b0..58b33ec 100644
--- a/utils/idmapd/Makefile.am
+++ b/utils/idmapd/Makefile.am
@@ -16,7 +16,7 @@ idmapd_SOURCES = \
 	nfs_idmap.h \
 	queue.h
 
-idmapd_LDADD = $(LIBEVENT) -lnfsidmap ../../support/nfs/libnfs.a
+idmapd_LDADD = $(LIBEVENT) $(LIBNFSIDMAP) ../../support/nfs/libnfs.a
 
 MAINTAINERCLEANFILES = Makefile.in
 
diff --git a/utils/nfsidmap/Makefile.am b/utils/nfsidmap/Makefile.am
index 037aa79..c0675c4 100644
--- a/utils/nfsidmap/Makefile.am
+++ b/utils/nfsidmap/Makefile.am
@@ -4,6 +4,6 @@ man8_MANS = nfsidmap.man
 
 sbin_PROGRAMS	= nfsidmap
 nfsidmap_SOURCES = nfsidmap.c
-nfsidmap_LDADD = -lnfsidmap -lkeyutils ../../support/nfs/libnfs.a
+nfsidmap_LDADD = $(LIBNFSIDMAP) -lkeyutils ../../support/nfs/libnfs.a
 
 MAINTAINERCLEANFILES = Makefile.in
-- 
1.7.7.4


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/3] autoconf: only link binaries that need it to libtirpc
  2011-12-23 19:47 [PATCH 0/3] autoconf: clean up linking in nfs-utils Jeff Layton
  2011-12-23 19:47 ` [PATCH 1/3] autoconf: fix up libevent autoconf test Jeff Layton
  2011-12-23 19:47 ` [PATCH 2/3] autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBS Jeff Layton
@ 2011-12-23 19:47 ` Jeff Layton
  2011-12-24 14:54 ` [PATCH 0/3] autoconf: clean up linking in nfs-utils Jim Rees
  3 siblings, 0 replies; 12+ messages in thread
From: Jeff Layton @ 2011-12-23 19:47 UTC (permalink / raw)
  To: steved; +Cc: linux-nfs

When we first added tirpc support, we took a "big hammer" approach, and
had it add libtirpc to $LIBS. That had the effect of making it so that
that library was linked into every binary. That's unnecessary, and
wasteful with memory.

Don't let AC_CHECK_LIB add -ltirpc to $LIBS. Instead, have the autoconf
tests set $(LIBTIRPC) in the makefiles, and have the programs that
need it explicitly include that library. In the event that we're not
using libtirpc, then set $LIBTIRPC to a blank string.

This patch also fixes a subtle bug. If the library was usable, but the
includes were not, the test would set $enable_tirpc to "no", but
HAVE_LIBTIRPC would still be true. That configuration would likely
fail to build.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 aclocal/libtirpc.m4         |   15 +++++++++++++--
 tools/rpcgen/Makefile.am    |    1 +
 utils/gssd/Makefile.am      |    4 ++--
 utils/mount/Makefile.am     |    3 ++-
 utils/mountd/Makefile.am    |    2 +-
 utils/nfsd/Makefile.am      |    2 +-
 utils/showmount/Makefile.am |    3 ++-
 utils/statd/Makefile.am     |    4 ++--
 8 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/aclocal/libtirpc.m4 b/aclocal/libtirpc.m4
index 9f0fde0..19b8361 100644
--- a/aclocal/libtirpc.m4
+++ b/aclocal/libtirpc.m4
@@ -13,8 +13,8 @@ AC_DEFUN([AC_LIBTIRPC], [
 
   if test "$enable_tirpc" != "no"; then
 
-    dnl look for the library; add to LIBS if found
-    AC_CHECK_LIB([tirpc], [clnt_tli_create], ,
+    dnl look for the library
+    AC_CHECK_LIB([tirpc], [clnt_tli_create], [:],
                  [if test "$enable_tirpc" = "yes"; then
 			AC_MSG_ERROR([libtirpc not found.])
 		  else
@@ -37,4 +37,15 @@ AC_DEFUN([AC_LIBTIRPC], [
 
   fi
 
+  dnl now set $LIBTIRPC accordingly
+  if test "$enable_tirpc" != "no"; then
+    AC_DEFINE([HAVE_LIBTIRPC], 1,
+              [Define to 1 if you have and wish to use libtirpc.])
+    LIBTIRPC="-ltirpc"
+  else
+    LIBTIRPC=""
+  fi
+
+  AC_SUBST(LIBTIRPC)
+
 ])dnl
diff --git a/tools/rpcgen/Makefile.am b/tools/rpcgen/Makefile.am
index 51a2bfa..8a9ec89 100644
--- a/tools/rpcgen/Makefile.am
+++ b/tools/rpcgen/Makefile.am
@@ -12,6 +12,7 @@ rpcgen_SOURCES = rpc_clntout.c rpc_cout.c rpc_hout.c rpc_main.c \
 rpcgen_CFLAGS=$(CFLAGS_FOR_BUILD)
 rpcgen_CPPLAGS=$(CPPFLAGS_FOR_BUILD)
 rpcgen_LDFLAGS=$(LDFLAGS_FOR_BUILD)
+rpcgen_LDADD=$(LIBTIRPC)
 
 MAINTAINERCLEANFILES = Makefile.in
 
diff --git a/utils/gssd/Makefile.am b/utils/gssd/Makefile.am
index 9136189..d29e132 100644
--- a/utils/gssd/Makefile.am
+++ b/utils/gssd/Makefile.am
@@ -40,7 +40,7 @@ gssd_SOURCES = \
 
 gssd_LDADD =	../../support/nfs/libnfs.a \
 		$(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) $(KRBLIBS)
-gssd_LDFLAGS = $(KRBLDFLAGS)
+gssd_LDFLAGS = $(KRBLDFLAGS) $(LIBTIRPC)
 
 gssd_CFLAGS = $(AM_CFLAGS) $(CFLAGS) \
 	      $(RPCSECGSS_CFLAGS) $(GSSGLUE_CFLAGS) $(KRBCFLAGS)
@@ -59,7 +59,7 @@ svcgssd_SOURCES = \
 svcgssd_LDADD = \
 	../../support/nfs/libnfs.a \
 	$(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) $(LIBNFSIDMAP) \
-	$(KRBLIBS)
+	$(KRBLIBS) $(LIBTIRPC)
 
 svcgssd_LDFLAGS = $(KRBLDFLAGS)
 
diff --git a/utils/mount/Makefile.am b/utils/mount/Makefile.am
index 7bc3e2b..7627854 100644
--- a/utils/mount/Makefile.am
+++ b/utils/mount/Makefile.am
@@ -24,7 +24,8 @@ EXTRA_DIST += nfsmount.conf
 endif
 
 mount_nfs_LDADD = ../../support/nfs/libnfs.a \
-		  ../../support/export/libexport.a
+		  ../../support/export/libexport.a \
+		  $(LIBTIRPC)
 
 mount_nfs_SOURCES = $(mount_common)
 
diff --git a/utils/mountd/Makefile.am b/utils/mountd/Makefile.am
index eba81fc..375908e 100644
--- a/utils/mountd/Makefile.am
+++ b/utils/mountd/Makefile.am
@@ -12,7 +12,7 @@ mountd_SOURCES = mountd.c mount_dispatch.c auth.c rmtab.c cache.c \
 mountd_LDADD = ../../support/export/libexport.a \
 	       ../../support/nfs/libnfs.a \
 	       ../../support/misc/libmisc.a \
-	       $(LIBBSD) $(LIBWRAP) $(LIBNSL) $(LIBBLKID)
+	       $(LIBBSD) $(LIBWRAP) $(LIBNSL) $(LIBBLKID) $(LIBTIRPC)
 mountd_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) \
 		  -I$(top_builddir)/support/include \
 		  -I$(top_srcdir)/support/export
diff --git a/utils/nfsd/Makefile.am b/utils/nfsd/Makefile.am
index c4c6fb0..1536065 100644
--- a/utils/nfsd/Makefile.am
+++ b/utils/nfsd/Makefile.am
@@ -8,7 +8,7 @@ KPREFIX		= @kprefix@
 sbin_PROGRAMS	= nfsd
 
 nfsd_SOURCES = nfsd.c nfssvc.c
-nfsd_LDADD = ../../support/nfs/libnfs.a
+nfsd_LDADD = ../../support/nfs/libnfs.a $(LIBTIRPC)
 
 MAINTAINERCLEANFILES = Makefile.in
 
diff --git a/utils/showmount/Makefile.am b/utils/showmount/Makefile.am
index 077b2c7..4ba5ead 100644
--- a/utils/showmount/Makefile.am
+++ b/utils/showmount/Makefile.am
@@ -7,7 +7,8 @@ sbin_PROGRAMS	= showmount
 showmount_SOURCES = showmount.c
 showmount_LDADD = ../../support/export/libexport.a \
 		  ../../support/nfs/libnfs.a \
-	  	  ../../support/misc/libmisc.a
+		  ../../support/misc/libmisc.a \
+		  $(LIBTIRPC)
 showmount_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) \
 		   -I$(top_builddir)/support/export
 
diff --git a/utils/statd/Makefile.am b/utils/statd/Makefile.am
index 1744791..dc2bfc4 100644
--- a/utils/statd/Makefile.am
+++ b/utils/statd/Makefile.am
@@ -15,10 +15,10 @@ BUILT_SOURCES = $(GENFILES)
 statd_LDADD = ../../support/nsm/libnsm.a \
 	      ../../support/nfs/libnfs.a \
 	      ../../support/misc/libmisc.a \
-	      $(LIBWRAP) $(LIBNSL) $(LIBCAP)
+	      $(LIBWRAP) $(LIBNSL) $(LIBCAP) $(LIBTIRPC)
 sm_notify_LDADD = ../../support/nsm/libnsm.a \
 		  ../../support/nfs/libnfs.a \
-		  $(LIBNSL) $(LIBCAP)
+		  $(LIBNSL) $(LIBCAP) $(LIBTIRPC)
 
 EXTRA_DIST = sim_sm_inter.x $(man8_MANS) COPYRIGHT simulate.c
 
-- 
1.7.7.4


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] autoconf: clean up linking in nfs-utils
  2011-12-23 19:47 [PATCH 0/3] autoconf: clean up linking in nfs-utils Jeff Layton
                   ` (2 preceding siblings ...)
  2011-12-23 19:47 ` [PATCH 3/3] autoconf: only link binaries that need it to libtirpc Jeff Layton
@ 2011-12-24 14:54 ` Jim Rees
  2011-12-24 16:53   ` Jim Rees
  3 siblings, 1 reply; 12+ messages in thread
From: Jim Rees @ 2011-12-24 14:54 UTC (permalink / raw)
  To: Jeff Layton; +Cc: steved, linux-nfs

Jeff Layton wrote:

  This patchset is a cleanup of the linking in nfs-utils. This should
  reduce the number of unnecessary libraries that each of the binaries are
  linked against.

This is probably unrelated to your patches, but here's what I get:

...
/bin/bash ../../libtool --tag=CC   --mode=link gcc -Wall -Wextra -Wstrict-prototypes  -pipe -g -O2   -o nfsidmap nfsidmap.o -lnfsidmap -lkeyutils -lnfsidmap -ltirpc 
libtool: link: gcc -Wall -Wextra -Wstrict-prototypes -pipe -g -O2 -o nfsidmap nfsidmap.o  -lkeyutils -lnfsidmap -ltirpc
nfsidmap.o: In function `key_revoke':
/home/rees/p/nfs-utils/utils/nfsidmap/nfsidmap.c:153: undefined reference to `xlog_syslog'
...

configure --prefix=/usr --sysconfdir=/etc --enable-nfsv41 --enable-ipv6 \
  --disable-gss --disable-uuid --enable-tirpc --without-tcp-wrappers \
  --disable-libmount-mount

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] autoconf: clean up linking in nfs-utils
  2011-12-24 14:54 ` [PATCH 0/3] autoconf: clean up linking in nfs-utils Jim Rees
@ 2011-12-24 16:53   ` Jim Rees
  2012-01-05 18:37     ` Jeff Layton
  0 siblings, 1 reply; 12+ messages in thread
From: Jim Rees @ 2011-12-24 16:53 UTC (permalink / raw)
  To: Jeff Layton; +Cc: steved, linux-nfs

Jim Rees wrote:

  Jeff Layton wrote:
  
    This patchset is a cleanup of the linking in nfs-utils. This should
    reduce the number of unnecessary libraries that each of the binaries are
    linked against.
  
  This is probably unrelated to your patches, but here's what I get:
  
  ...
  /bin/bash ../../libtool --tag=CC   --mode=link gcc -Wall -Wextra -Wstrict-prototypes  -pipe -g -O2   -o nfsidmap nfsidmap.o -lnfsidmap -lkeyutils -lnfsidmap -ltirpc 
  libtool: link: gcc -Wall -Wextra -Wstrict-prototypes -pipe -g -O2 -o nfsidmap nfsidmap.o  -lkeyutils -lnfsidmap -ltirpc
  nfsidmap.o: In function `key_revoke':
  /home/rees/p/nfs-utils/utils/nfsidmap/nfsidmap.c:153: undefined reference to `xlog_syslog'
  ...

Never mind, cockpit error.  I ran autogen in the wrong directory.  Now I'm
getting this:

% configure --prefix=/usr --sysconfdir=/etc --enable-nfsv41 --enable-ipv6 \
?   --disable-gss --disable-uuid --enable-tirpc --without-tcp-wrappers \
?   --disable-libmount-mount
...
checking for bindresvport_sa... no
configure: error: Missing library functions needed for IPv6.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] autoconf: clean up linking in nfs-utils
  2011-12-24 16:53   ` Jim Rees
@ 2012-01-05 18:37     ` Jeff Layton
  2012-01-05 18:57       ` Jim Rees
  0 siblings, 1 reply; 12+ messages in thread
From: Jeff Layton @ 2012-01-05 18:37 UTC (permalink / raw)
  To: Jim Rees; +Cc: steved, linux-nfs

On Sat, 24 Dec 2011 11:53:01 -0500
Jim Rees <rees@umich.edu> wrote:

> Jim Rees wrote:
> 
>   Jeff Layton wrote:
>   
>     This patchset is a cleanup of the linking in nfs-utils. This should
>     reduce the number of unnecessary libraries that each of the binaries are
>     linked against.
>   
>   This is probably unrelated to your patches, but here's what I get:
>   
>   ...
>   /bin/bash ../../libtool --tag=CC   --mode=link gcc -Wall -Wextra -Wstrict-prototypes  -pipe -g -O2   -o nfsidmap nfsidmap.o -lnfsidmap -lkeyutils -lnfsidmap -ltirpc 
>   libtool: link: gcc -Wall -Wextra -Wstrict-prototypes -pipe -g -O2 -o nfsidmap nfsidmap.o  -lkeyutils -lnfsidmap -ltirpc
>   nfsidmap.o: In function `key_revoke':
>   /home/rees/p/nfs-utils/utils/nfsidmap/nfsidmap.c:153: undefined reference to `xlog_syslog'
>   ...
> 
> Never mind, cockpit error.  I ran autogen in the wrong directory.  Now I'm
> getting this:
> 
> % configure --prefix=/usr --sysconfdir=/etc --enable-nfsv41 --enable-ipv6 \
> ?   --disable-gss --disable-uuid --enable-tirpc --without-tcp-wrappers \
> ?   --disable-libmount-mount
> ...
> checking for bindresvport_sa... no
> configure: error: Missing library functions needed for IPv6.

Sorry I didn't respond to this sooner...

Did you ever figure out what's going on here? Is this a regression
caused by this patchset?

-- 
Jeff Layton <jlayton@redhat.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] autoconf: clean up linking in nfs-utils
  2012-01-05 18:37     ` Jeff Layton
@ 2012-01-05 18:57       ` Jim Rees
  2012-01-05 19:12         ` Jeff Layton
  2012-01-05 20:42         ` Jeff Layton
  0 siblings, 2 replies; 12+ messages in thread
From: Jim Rees @ 2012-01-05 18:57 UTC (permalink / raw)
  To: Jeff Layton; +Cc: steved, linux-nfs

Jeff Layton wrote:

  On Sat, 24 Dec 2011 11:53:01 -0500
  Jim Rees <rees@umich.edu> wrote:
  
  > Jim Rees wrote:
  > 
  >   Jeff Layton wrote:
  >   
  >     This patchset is a cleanup of the linking in nfs-utils. This should
  >     reduce the number of unnecessary libraries that each of the binaries are
  >     linked against.
  >   
  >   This is probably unrelated to your patches, but here's what I get:
  >   
  >   ...
  >   /bin/bash ../../libtool --tag=CC   --mode=link gcc -Wall -Wextra -Wstrict-prototypes  -pipe -g -O2   -o nfsidmap nfsidmap.o -lnfsidmap -lkeyutils -lnfsidmap -ltirpc 
  >   libtool: link: gcc -Wall -Wextra -Wstrict-prototypes -pipe -g -O2 -o nfsidmap nfsidmap.o  -lkeyutils -lnfsidmap -ltirpc
  >   nfsidmap.o: In function `key_revoke':
  >   /home/rees/p/nfs-utils/utils/nfsidmap/nfsidmap.c:153: undefined reference to `xlog_syslog'
  >   ...
  > 
  > Never mind, cockpit error.  I ran autogen in the wrong directory.  Now I'm
  > getting this:
  > 
  > % configure --prefix=/usr --sysconfdir=/etc --enable-nfsv41 --enable-ipv6 \
  > ?   --disable-gss --disable-uuid --enable-tirpc --without-tcp-wrappers \
  > ?   --disable-libmount-mount
  > ...
  > checking for bindresvport_sa... no
  > configure: error: Missing library functions needed for IPv6.
  
  Sorry I didn't respond to this sooner...
  
  Did you ever figure out what's going on here? Is this a regression
  caused by this patchset?

No, I didn't.  I can try reverting your patch to see what happens if you
want.  Do you know where bindresvport_sa is supposed to come from?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] autoconf: clean up linking in nfs-utils
  2012-01-05 18:57       ` Jim Rees
@ 2012-01-05 19:12         ` Jeff Layton
  2012-01-05 20:42         ` Jeff Layton
  1 sibling, 0 replies; 12+ messages in thread
From: Jeff Layton @ 2012-01-05 19:12 UTC (permalink / raw)
  To: Jim Rees; +Cc: steved, linux-nfs

On Thu, 5 Jan 2012 13:57:07 -0500
Jim Rees <rees@umich.edu> wrote:

> Jeff Layton wrote:
> 
>   On Sat, 24 Dec 2011 11:53:01 -0500
>   Jim Rees <rees@umich.edu> wrote:
>   
>   > Jim Rees wrote:
>   > 
>   >   Jeff Layton wrote:
>   >   
>   >     This patchset is a cleanup of the linking in nfs-utils. This should
>   >     reduce the number of unnecessary libraries that each of the binaries are
>   >     linked against.
>   >   
>   >   This is probably unrelated to your patches, but here's what I get:
>   >   
>   >   ...
>   >   /bin/bash ../../libtool --tag=CC   --mode=link gcc -Wall -Wextra -Wstrict-prototypes  -pipe -g -O2   -o nfsidmap nfsidmap.o -lnfsidmap -lkeyutils -lnfsidmap -ltirpc 
>   >   libtool: link: gcc -Wall -Wextra -Wstrict-prototypes -pipe -g -O2 -o nfsidmap nfsidmap.o  -lkeyutils -lnfsidmap -ltirpc
>   >   nfsidmap.o: In function `key_revoke':
>   >   /home/rees/p/nfs-utils/utils/nfsidmap/nfsidmap.c:153: undefined reference to `xlog_syslog'
>   >   ...
>   > 
>   > Never mind, cockpit error.  I ran autogen in the wrong directory.  Now I'm
>   > getting this:
>   > 
>   > % configure --prefix=/usr --sysconfdir=/etc --enable-nfsv41 --enable-ipv6 \
>   > ?   --disable-gss --disable-uuid --enable-tirpc --without-tcp-wrappers \
>   > ?   --disable-libmount-mount
>   > ...
>   > checking for bindresvport_sa... no
>   > configure: error: Missing library functions needed for IPv6.
>   
>   Sorry I didn't respond to this sooner...
>   
>   Did you ever figure out what's going on here? Is this a regression
>   caused by this patchset?
> 
> No, I didn't.  I can try reverting your patch to see what happens if you
> want.  Do you know where bindresvport_sa is supposed to come from?

I think libtirpc is supposed to supply that. It's declared in this file
on my machine:

    /usr/include/tirpc/rpc/rpc.h

...and libtirpc seems to be exporting it:

$ objdump -T /lib64/libtirpc.so | grep bindresvport
0000000000009220 g    DF .text	0000000000000228  Base        bindresvport_sa
0000000000009450 g    DF .text	0000000000000005  Base        bindresvport

-- 
Jeff Layton <jlayton@redhat.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] autoconf: clean up linking in nfs-utils
  2012-01-05 18:57       ` Jim Rees
  2012-01-05 19:12         ` Jeff Layton
@ 2012-01-05 20:42         ` Jeff Layton
  1 sibling, 0 replies; 12+ messages in thread
From: Jeff Layton @ 2012-01-05 20:42 UTC (permalink / raw)
  To: Jim Rees; +Cc: steved, linux-nfs

On Thu, 5 Jan 2012 13:57:07 -0500
Jim Rees <rees@umich.edu> wrote:

> Jeff Layton wrote:
> 
>   On Sat, 24 Dec 2011 11:53:01 -0500
>   Jim Rees <rees@umich.edu> wrote:
>   
>   > Jim Rees wrote:
>   > 
>   >   Jeff Layton wrote:
>   >   
>   >     This patchset is a cleanup of the linking in nfs-utils. This should
>   >     reduce the number of unnecessary libraries that each of the binaries are
>   >     linked against.
>   >   
>   >   This is probably unrelated to your patches, but here's what I get:
>   >   
>   >   ...
>   >   /bin/bash ../../libtool --tag=CC   --mode=link gcc -Wall -Wextra -Wstrict-prototypes  -pipe -g -O2   -o nfsidmap nfsidmap.o -lnfsidmap -lkeyutils -lnfsidmap -ltirpc 
>   >   libtool: link: gcc -Wall -Wextra -Wstrict-prototypes -pipe -g -O2 -o nfsidmap nfsidmap.o  -lkeyutils -lnfsidmap -ltirpc
>   >   nfsidmap.o: In function `key_revoke':
>   >   /home/rees/p/nfs-utils/utils/nfsidmap/nfsidmap.c:153: undefined reference to `xlog_syslog'
>   >   ...
>   > 
>   > Never mind, cockpit error.  I ran autogen in the wrong directory.  Now I'm
>   > getting this:
>   > 
>   > % configure --prefix=/usr --sysconfdir=/etc --enable-nfsv41 --enable-ipv6 \
>   > ?   --disable-gss --disable-uuid --enable-tirpc --without-tcp-wrappers \
>   > ?   --disable-libmount-mount
>   > ...
>   > checking for bindresvport_sa... no
>   > configure: error: Missing library functions needed for IPv6.
>   
>   Sorry I didn't respond to this sooner...
>   
>   Did you ever figure out what's going on here? Is this a regression
>   caused by this patchset?
> 
> No, I didn't.  I can try reverting your patch to see what happens if you
> want.  Do you know where bindresvport_sa is supposed to come from?

Nevermind...the last patch in this series broke that test. I'll fix and
respin -- sorry for the noise!

-- 
Jeff Layton <jlayton@redhat.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] autoconf: fix up libevent autoconf test
  2011-12-23 19:47 ` [PATCH 1/3] autoconf: fix up libevent autoconf test Jeff Layton
@ 2012-01-05 21:43   ` Steve Dickson
  0 siblings, 0 replies; 12+ messages in thread
From: Steve Dickson @ 2012-01-05 21:43 UTC (permalink / raw)
  To: Jeff Layton; +Cc: linux-nfs



On 12/23/2011 02:47 PM, Jeff Layton wrote:
> Have it set LIBEVENT to -levent and use that in the Makefiles instead
> of hardcoding it.
> 
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
Committed...

steved.
> ---
>  aclocal/libevent.m4      |    3 ++-
>  utils/idmapd/Makefile.am |    2 +-
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/aclocal/libevent.m4 b/aclocal/libevent.m4
> index 3c962b3..b5ac00f 100644
> --- a/aclocal/libevent.m4
> +++ b/aclocal/libevent.m4
> @@ -2,8 +2,9 @@ dnl Checks for libevent
>  AC_DEFUN([AC_LIBEVENT], [
>  
>    dnl Check for libevent, but do not add -levent to LIBS
> -  AC_CHECK_LIB([event], [event_dispatch], [libevent=1],
> +  AC_CHECK_LIB([event], [event_dispatch], [LIBEVENT=-levent],
>                 [AC_MSG_ERROR([libevent not found.])])
> +  AC_SUBST(LIBEVENT)
>  
>    AC_CHECK_HEADERS([event.h], ,
>                     [AC_MSG_ERROR([libevent headers not found.])])
> diff --git a/utils/idmapd/Makefile.am b/utils/idmapd/Makefile.am
> index 4328e41..f8578b0 100644
> --- a/utils/idmapd/Makefile.am
> +++ b/utils/idmapd/Makefile.am
> @@ -16,7 +16,7 @@ idmapd_SOURCES = \
>  	nfs_idmap.h \
>  	queue.h
>  
> -idmapd_LDADD = -levent -lnfsidmap ../../support/nfs/libnfs.a
> +idmapd_LDADD = $(LIBEVENT) -lnfsidmap ../../support/nfs/libnfs.a
>  
>  MAINTAINERCLEANFILES = Makefile.in
>  

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBS
  2011-12-23 19:47 ` [PATCH 2/3] autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBS Jeff Layton
@ 2012-01-05 21:44   ` Steve Dickson
  0 siblings, 0 replies; 12+ messages in thread
From: Steve Dickson @ 2012-01-05 21:44 UTC (permalink / raw)
  To: Jeff Layton, Linux NFS Mailing list



On 12/23/2011 02:47 PM, Jeff Layton wrote:
> ...as that makes that library get linked into every binary. Also,
> replace "hardcoded" -lnfsidmap linker flag in Makefiles with
> a AC_SUBST variable.
> 
> This fixes a regression introduced in commit d7c64dd.
> 
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
Committed...

steved.

> ---
>  aclocal/libnfsidmap.m4     |    9 ++++++---
>  utils/gssd/Makefile.am     |    2 +-
>  utils/idmapd/Makefile.am   |    2 +-
>  utils/nfsidmap/Makefile.am |    2 +-
>  4 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/aclocal/libnfsidmap.m4 b/aclocal/libnfsidmap.m4
> index 484b1ec..ae697e8 100644
> --- a/aclocal/libnfsidmap.m4
> +++ b/aclocal/libnfsidmap.m4
> @@ -3,7 +3,7 @@ dnl
>  AC_DEFUN([AC_LIBNFSIDMAP], [
>  
>    dnl Check for libnfsidmap, but do not add -lnfsidmap to LIBS
> -  AC_CHECK_LIB([nfsidmap], [nfs4_init_name_mapping], [libnfsidmap=1],
> +  AC_CHECK_LIB([nfsidmap], [nfs4_init_name_mapping], [LIBNFSIDMAP=-lnfsidmap],
>                 [AC_MSG_ERROR([libnfsidmap not found.])])
>  
>    AC_CHECK_HEADERS([nfsidmap.h], ,
> @@ -14,7 +14,10 @@ AC_DEFUN([AC_LIBNFSIDMAP], [
>                 [AC_DEFINE([HAVE_NFS4_SET_DEBUG], 1,
>                            [Define to 1 if you have the `nfs4_set_debug' function.])])
>  
> -  dnl only enable nfsidmap when libnfsidmap supports it
> -  AC_CHECK_LIB([nfsidmap], [nfs4_owner_to_uid])
> +  dnl nfs4_owner_to_uid() doesn't appear in all versions of libnfsidmap
> +  dnl We just need this test to set $ac_cv_lib_nfsidmap_nfs4_owner_to_uid
> +  AC_CHECK_LIB([nfsidmap], [nfs4_owner_to_uid], [:])
> +
> +  AC_SUBST(LIBNFSIDMAP)
>  
>  ])dnl
> diff --git a/utils/gssd/Makefile.am b/utils/gssd/Makefile.am
> index d7888ad..9136189 100644
> --- a/utils/gssd/Makefile.am
> +++ b/utils/gssd/Makefile.am
> @@ -58,7 +58,7 @@ svcgssd_SOURCES = \
>  
>  svcgssd_LDADD = \
>  	../../support/nfs/libnfs.a \
> -	$(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) -lnfsidmap \
> +	$(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) $(LIBNFSIDMAP) \
>  	$(KRBLIBS)
>  
>  svcgssd_LDFLAGS = $(KRBLDFLAGS)
> diff --git a/utils/idmapd/Makefile.am b/utils/idmapd/Makefile.am
> index f8578b0..58b33ec 100644
> --- a/utils/idmapd/Makefile.am
> +++ b/utils/idmapd/Makefile.am
> @@ -16,7 +16,7 @@ idmapd_SOURCES = \
>  	nfs_idmap.h \
>  	queue.h
>  
> -idmapd_LDADD = $(LIBEVENT) -lnfsidmap ../../support/nfs/libnfs.a
> +idmapd_LDADD = $(LIBEVENT) $(LIBNFSIDMAP) ../../support/nfs/libnfs.a
>  
>  MAINTAINERCLEANFILES = Makefile.in
>  
> diff --git a/utils/nfsidmap/Makefile.am b/utils/nfsidmap/Makefile.am
> index 037aa79..c0675c4 100644
> --- a/utils/nfsidmap/Makefile.am
> +++ b/utils/nfsidmap/Makefile.am
> @@ -4,6 +4,6 @@ man8_MANS = nfsidmap.man
>  
>  sbin_PROGRAMS	= nfsidmap
>  nfsidmap_SOURCES = nfsidmap.c
> -nfsidmap_LDADD = -lnfsidmap -lkeyutils ../../support/nfs/libnfs.a
> +nfsidmap_LDADD = $(LIBNFSIDMAP) -lkeyutils ../../support/nfs/libnfs.a
>  
>  MAINTAINERCLEANFILES = Makefile.in

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2012-01-05 21:44 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-23 19:47 [PATCH 0/3] autoconf: clean up linking in nfs-utils Jeff Layton
2011-12-23 19:47 ` [PATCH 1/3] autoconf: fix up libevent autoconf test Jeff Layton
2012-01-05 21:43   ` Steve Dickson
2011-12-23 19:47 ` [PATCH 2/3] autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBS Jeff Layton
2012-01-05 21:44   ` Steve Dickson
2011-12-23 19:47 ` [PATCH 3/3] autoconf: only link binaries that need it to libtirpc Jeff Layton
2011-12-24 14:54 ` [PATCH 0/3] autoconf: clean up linking in nfs-utils Jim Rees
2011-12-24 16:53   ` Jim Rees
2012-01-05 18:37     ` Jeff Layton
2012-01-05 18:57       ` Jim Rees
2012-01-05 19:12         ` Jeff Layton
2012-01-05 20:42         ` Jeff Layton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).