diff options
author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2018-09-11 14:17:02 -0400 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2018-09-12 14:38:13 +0000 |
commit | f15e948da3881b61a8b546af7c64340db87d3cf7 (patch) | |
tree | 1d62049561f23371c00ddfa0069cba8e5da8d89a | |
parent | d9475b8d06ca184b5305575e5f04490604f8ca2c (diff) |
build: cleanup xlator link, --no-undefined, libuuidv6dev
While attempting to build a (pre-)5.0 of glusterfs on Ubuntu
bionic and cosmic, it became apparent that there are some gremlins
hiding in the combination of the xlator export-symbols, the newish
addition of -Wl,--no-undefined, and the new switch to libuuid from
the old contrib/uuid.
Note: even though Fedora 28 (and later) and Ubuntu bionic (and
later) have the same nominal version of libtool, the Fedora version
appears to do a better job of recursing through dependencies to
determine the libraries to link with.
Examination of the build logs showed that despite appearing to work
on Fedora, not all xlators and shared libs were linked with -Wl,
--no-undefined, and -luuid. And in the case of the gnfs xlator, it
was not only not linked with -Wl,--no-undefined but alsos not linked
with -lgfxdr and -lgfrpc.
Added GF_XLATOR_LDFLAGS, similar to GF_XLATOR_DEFAULT_LDFLAGS.
GF_XLATOR_DEFAULT_LDFLAGS is for xlators that export/expose the
default or common set of symbols. GF_XLATOR_LDFLAGS is for those
remaining xlators that export/expose non-default symbols, e.g. dht
and glupy. This removes the need in the future to add things like
$(UUID_LIBS) to every xlator's Makefile.am. Just add it to
GF_XLATOR_LDFLAGS and GF_XLATOR_DEFAULT_LDFLAGS in configure.ac
and you're done.
This patch was tested on Fedora 28 (build, rpmbuild), Fedora
Rawhide/30 (rpmbuild), RHEL8 (rpmbuild), CentOS7 (rpmbuild), Fedora
koji --scratch build for f30/rawhide, and a Launchpad build for
Ubuntu cosmic/18.10.
Change-Id: Ieca104fa5c5d3c094e701c8ca4a73754dd0292b0
updates: bz#1193929
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | xlators/cluster/dht/src/Makefile.am | 16 | ||||
-rw-r--r-- | xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am | 2 | ||||
-rw-r--r-- | xlators/features/glupy/src/Makefile.am | 4 | ||||
-rw-r--r-- | xlators/features/quota/src/Makefile.am | 2 | ||||
-rw-r--r-- | xlators/nfs/server/src/Makefile.am | 8 | ||||
-rw-r--r-- | xlators/protocol/auth/addr/src/Makefile.am | 2 | ||||
-rw-r--r-- | xlators/protocol/auth/login/src/Makefile.am | 2 |
8 files changed, 24 insertions, 18 deletions
diff --git a/configure.ac b/configure.ac index ec4095df7b9..9358f849069 100644 --- a/configure.ac +++ b/configure.ac @@ -1644,7 +1644,10 @@ case $host_os in GF_NO_UNDEFINED='' ;; esac -GF_XLATOR_DEFAULT_LDFLAGS='-avoid-version -export-symbols $(top_srcdir)/xlators/xlator.sym '${GF_NO_UNDEFINED} +dnl GF_XLATOR_DEFAULT_LDFLAGS is for most xlators that expose a common set of symbols +GF_XLATOR_DEFAULT_LDFLAGS='-avoid-version -export-symbols $(top_srcdir)/xlators/xlator.sym $(UUID_LIBS) $(GF_NO_UNDEFINED)' +dnl GF_XLATOR_LDFLAGS is for xlators that expose extra symbols, e.g. dht and glupy +GF_XLATOR_LDFLAGS='-avoid-version $(UUID_LIBS) $(GF_NO_UNDEFINED)' AC_SUBST(GF_HOST_OS) AC_SUBST(GF_CFLAGS) @@ -1658,6 +1661,7 @@ AC_SUBST(AM_MAKEFLAGS) AC_SUBST(AM_LIBTOOLFLAGS) AC_SUBST(GF_NO_UNDEFINED) AC_SUBST(GF_XLATOR_DEFAULT_LDFLAGS) +AC_SUBST(GF_XLATOR_LDFLAGS) CONTRIBDIR='$(top_srcdir)/contrib' AC_SUBST(CONTRIBDIR) diff --git a/xlators/cluster/dht/src/Makefile.am b/xlators/cluster/dht/src/Makefile.am index c8a343e0469..7cb2961f30a 100644 --- a/xlators/cluster/dht/src/Makefile.am +++ b/xlators/cluster/dht/src/Makefile.am @@ -18,24 +18,24 @@ nufa_la_SOURCES = $(dht_common_source) nufa.c switch_la_SOURCES = $(dht_common_source) switch.c tier_la_SOURCES = $(dht_common_source) tier.c tier-common.c -dht_la_LDFLAGS = -module -avoid-version \ +dht_la_LDFLAGS = -module \ -export-symbols $(top_srcdir)/xlators/cluster/dht/src/dht.sym \ - $(GF_NO_UNDEFINED) + $(GF_XLATOR_LDFLAGS) dht_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -nufa_la_LDFLAGS = -module -avoid-version \ +nufa_la_LDFLAGS = -module \ -export-symbols $(top_srcdir)/xlators/cluster/dht/src/nufa.sym \ - $(GF_NO_UNDEFINED) + $(GF_XLATOR_LDFLAGS) nufa_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -switch_la_LDFLAGS = -module -avoid-version +switch_la_LDFLAGS = -module \ -export-symbols $(top_srcdir)/xlators/cluster/dht/src/switch.sym \ - $(GF_NO_UNDEFINED) + $(GF_XLATOR_LDFLAGS) switch_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -tier_la_LDFLAGS = -module -avoid-version \ +tier_la_LDFLAGS = -module \ -export-symbols $(top_srcdir)/xlators/cluster/dht/src/tier.sym \ - $(LIB_DL) $(GF_NO_UNDEFINED) + $(LIB_DL) $(GF_XLATOR_LDFLAGS) tier_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la noinst_HEADERS = dht-common.h dht-mem-types.h dht-messages.h \ diff --git a/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am b/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am index 93fb2eecbf5..6509426ef87 100644 --- a/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am +++ b/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/Makefile.am @@ -3,7 +3,7 @@ cspdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/cloudsync-plugins cloudsyncs3_la_SOURCES = libcloudsyncs3.c $(top_srcdir)/xlators/features/cloudsync/src/cloudsync-common.c cloudsyncs3_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -cloudsyncs3_la_LDFLAGS = -module -avoid-version -export-symbols $(top_srcdir)/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/libcloudsyncs3.sym +cloudsyncs3_la_LDFLAGS = -module -export-symbols $(top_srcdir)/xlators/features/cloudsync/src/cloudsync-plugins/src/cloudsyncs3/src/libcloudsyncs3.sym $(GF_XLATOR_LDFLAGS) AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src -I$(top_srcdir)/rpc/xdr/src -I$(top_builddir)/rpc/xdr/src -lcurlpp -lcryptopp noinst_HEADERS = libcloudsyncs3.h libcloudsyncs3-mem-types.h AM_CFLAGS = -Wall -fno-strict-aliasing $(GF_CFLAGS) -lcurl -lcrypto -I$(top_srcdir)/xlators/features/cloudsync/src diff --git a/xlators/features/glupy/src/Makefile.am b/xlators/features/glupy/src/Makefile.am index 25fd48ba176..817b0d00f61 100644 --- a/xlators/features/glupy/src/Makefile.am +++ b/xlators/features/glupy/src/Makefile.am @@ -14,9 +14,9 @@ AM_CFLAGS = -Wall -fno-strict-aliasing \ $(GF_CFLAGS) $(PYTHON_CFLAGS) # Flags to build glupy.so with -glupy_la_LDFLAGS = -module -avoid-version -nostartfiles \ +glupy_la_LDFLAGS = -module -nostartfiles \ -export-symbols $(top_srcdir)/xlators/features/glupy/src/glupy.sym \ - $(GF_NO_UNDEFINED) $(PYTHON_LIBS) + $(GF_XLATOR_LDFLAGS) $(PYTHON_LIBS) glupy_la_SOURCES = glupy.c glupy_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \ diff --git a/xlators/features/quota/src/Makefile.am b/xlators/features/quota/src/Makefile.am index ec20e3ea49d..0ae47fc189f 100644 --- a/xlators/features/quota/src/Makefile.am +++ b/xlators/features/quota/src/Makefile.am @@ -4,7 +4,7 @@ endif xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features quota_la_LDFLAGS = -module $(GF_XLATOR_DEFAULT_LDFLAGS) -quotad_la_LDFLAGS = -module -avoid-version -export-symbols $(top_srcdir)/xlators/features/quota/src/quotad.sym +quotad_la_LDFLAGS = -module -export-symbols $(top_srcdir)/xlators/features/quota/src/quotad.sym $(GF_XLATOR_LDFLAGS) quota_la_SOURCES = quota.c quota-enforcer-client.c quota_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \ diff --git a/xlators/nfs/server/src/Makefile.am b/xlators/nfs/server/src/Makefile.am index dfdcdee8a17..01071a79a21 100644 --- a/xlators/nfs/server/src/Makefile.am +++ b/xlators/nfs/server/src/Makefile.am @@ -4,9 +4,9 @@ endif xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/nfs nfsrpclibdir = $(top_srcdir)/rpc/rpc-lib/src -server_la_LDFLAGS = -module -avoid-version \ +server_la_LDFLAGS = -module \ -export-symbols $(top_srcdir)/xlators/nfs/server/src/nfsserver.sym \ - $(GF_NO_UNDEFINED) + $(GF_XLATOR_LDFLAGS) server_la_SOURCES = nfs.c nfs-common.c nfs-fops.c nfs-inodes.c \ nfs-generics.c mount3.c nfs3-fh.c nfs3.c nfs3-helpers.c nlm4.c \ @@ -14,7 +14,9 @@ server_la_SOURCES = nfs.c nfs-common.c nfs-fops.c nfs-inodes.c \ mount3-auth.c auth-cache.c server_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \ - $(top_builddir)/api/src/libgfapi.la + $(top_builddir)/api/src/libgfapi.la \ + $(top_builddir)/rpc/rpc-lib/src/libgfrpc.la \ + $(top_builddir)/rpc/xdr/src/libgfxdr.la noinst_HEADERS = nfs.h nfs-common.h nfs-fops.h nfs-inodes.h nfs-generics.h \ mount3.h nfs3-fh.h nfs3.h nfs3-helpers.h nfs-mem-types.h nlm4.h \ diff --git a/xlators/protocol/auth/addr/src/Makefile.am b/xlators/protocol/auth/addr/src/Makefile.am index 6c8834d3e3e..4694d254f12 100644 --- a/xlators/protocol/auth/addr/src/Makefile.am +++ b/xlators/protocol/auth/addr/src/Makefile.am @@ -1,7 +1,7 @@ auth_LTLIBRARIES = addr.la authdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/auth -addr_la_LDFLAGS = -module -avoid-version +addr_la_LDFLAGS = -module $(GF_XLATOR_LDFLAGS) addr_la_SOURCES = addr.c addr_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la diff --git a/xlators/protocol/auth/login/src/Makefile.am b/xlators/protocol/auth/login/src/Makefile.am index fd4b2d731b2..9837437b11e 100644 --- a/xlators/protocol/auth/login/src/Makefile.am +++ b/xlators/protocol/auth/login/src/Makefile.am @@ -1,7 +1,7 @@ auth_LTLIBRARIES = login.la authdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/auth -login_la_LDFLAGS = -module -avoid-version +login_la_LDFLAGS = -module $(GF_XLATOR_LDFLAGS) login_la_SOURCES = login.c login_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la |