From ab1df50e73ff838053fff62302c3b884e4e19552 Mon Sep 17 00:00:00 2001 From: frank zago Date: Sun, 13 Aug 2017 14:11:26 -0400 Subject: [PATCH] LU-5541 build: build static and dynamic liblustreapi libtool knows how to build both, so no need to hack the Makefile. As two added benefits, the utilities will now use the dynamic version, thus reducing their footprint, and calling make twice in a row won't rebuild objects already built. Test-Parameters: trivial Change-Id: If4191e1ff1564793c476ffe03f5d4b6ad5295421 Signed-off-by: frank zago Reviewed-on: https://review.whamcloud.com/11625 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Henri Doreau Reviewed-by: Oleg Drokin --- lustre.spec.in | 7 +++++ lustre/tests/Makefile.am | 36 ++++++++++++---------- lustre/tests/mpi/Makefile.am | 22 ++++++++----- lustre/utils/Makefile.am | 73 +++++++++++++++++++------------------------- 4 files changed, 73 insertions(+), 65 deletions(-) diff --git a/lustre.spec.in b/lustre.spec.in index fc1a301..8e44505 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -413,6 +413,8 @@ find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@ -name \*.la -type f -exec rm -f {} \; find $RPM_BUILD_ROOT/lib/modules -name \*.ko -type f -exec chmod u+x {} \; %endif +rm -f $RPM_BUILD_ROOT%{_libdir}/liblustreapi.la + %if %{with lustre_tests} :> lustre-tests.files echo '%{_libdir}/lustre/tests/*' >>lustre-tests.files @@ -448,8 +450,13 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files /sbin/mount.lustre %{_libdir}/libptlctl.a %{_libdir}/libcfsutil.a +%if %{with static} %{_libdir}/liblustreapi.a +%endif +%if %{with shared} %{_libdir}/liblustreapi.so +%{_libdir}/liblustreapi.so.* +%endif %if %{with manpages} %{_mandir}/man?/* %endif diff --git a/lustre/tests/Makefile.am b/lustre/tests/Makefile.am index 33bb37a..f4ddc1d 100644 --- a/lustre/tests/Makefile.am +++ b/lustre/tests/Makefile.am @@ -1,5 +1,5 @@ LIBCFS = $(top_builddir)/libcfs/libcfs/libcfs.a -LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.a +LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.la # Lustre test Makefile AM_CFLAGS := -fPIC -D_GNU_SOURCE \ @@ -60,31 +60,35 @@ nobase_noinst_DATA += clientapi/simple_test.c EXTRA_DIST = $(noinst_SCRIPTS) $(noinst_DATA) \ $(nobase_noinst_SCRIPTS) $(nobase_noinst_DATA) +THETESTS = openunlink truncate directio writeme mlink utime +THETESTS += tchmod fsx test_brw sendfile +THETESTS += createmany chownmany statmany multifstat createtest +THETESTS += opendirunlink opendevunlink unlinkmany checkstat +THETESTS += statone runas openfile rmdirmany +THETESTS += small_write multiop ll_sparseness_verify +THETESTS += ll_sparseness_write mrename ll_dirstripe_verify mkdirmany +THETESTS += openfilleddirunlink rename_many memhog +THETESTS += mmap_sanity writemany reads flocks_test flock_deadlock +THETESTS += write_time_limit rwv lgetxattr_size_check checkfiemap +THETESTS += listxattr_size_check check_fhandle_syscalls badarea_io +THETESTS += llapi_layout_test orphan_linkea_check llapi_hsm_test +THETESTS += group_lock_test llapi_fid_test sendfile_grouplock mmap_cat +THETESTS += swap_lock_test + if TESTS if MPITESTS SUBDIRS = mpi endif -noinst_PROGRAMS = openunlink truncate directio writeme mlink utime -noinst_PROGRAMS += tchmod fsx test_brw sendfile -noinst_PROGRAMS += createmany chownmany statmany multifstat createtest -noinst_PROGRAMS += opendirunlink opendevunlink unlinkmany checkstat -noinst_PROGRAMS += statone runas openfile rmdirmany -noinst_PROGRAMS += small_write multiop ll_sparseness_verify -noinst_PROGRAMS += ll_sparseness_write mrename ll_dirstripe_verify mkdirmany -noinst_PROGRAMS += openfilleddirunlink rename_many memhog -noinst_PROGRAMS += mmap_sanity writemany reads flocks_test flock_deadlock -noinst_PROGRAMS += write_time_limit rwv lgetxattr_size_check checkfiemap -noinst_PROGRAMS += listxattr_size_check check_fhandle_syscalls badarea_io -noinst_PROGRAMS += llapi_layout_test orphan_linkea_check llapi_hsm_test -noinst_PROGRAMS += group_lock_test llapi_fid_test sendfile_grouplock mmap_cat -noinst_PROGRAMS += swap_lock_test bin_PROGRAMS = mcreate munlink testdir = $(libdir)/lustre/tests -test_SCRIPTS = $(noinst_SCRIPTS) $(noinst_PROGRAMS) +test_SCRIPTS = $(noinst_SCRIPTS) +test_PROGRAMS = $(THETESTS) nobase_test_SCRIPTS = $(nobase_noinst_SCRIPTS) test_DATA = $(noinst_DATA) nobase_test_DATA = $(nobase_noinst_DATA) +else # !TESTS +noinst_PROGRAMS = $(THETESTS) endif # TESTS mmap_sanity_SOURCES= mmap_sanity.c diff --git a/lustre/tests/mpi/Makefile.am b/lustre/tests/mpi/Makefile.am index ac7acb1..a1a4246 100644 --- a/lustre/tests/mpi/Makefile.am +++ b/lustre/tests/mpi/Makefile.am @@ -3,21 +3,29 @@ AM_CFLAGS := -fPIC \ -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLUSTRE_UTILS=1 LIBCFS := $(top_builddir)/libcfs/libcfs/libcfs.a +LIBLUSTREAPI = $(top_builddir)/lustre/utils/liblustreapi.la CC = @MPICC_WRAPPER@ -noinst_PROGRAMS = parallel_grouplock write_append_truncate createmany_mpi -noinst_PROGRAMS += mdsrate write_disjoint cascading_rw +THETESTS = parallel_grouplock write_append_truncate createmany_mpi \ + mdsrate write_disjoint cascading_rw + +if TESTS +if MPITESTS testdir = $(libdir)/lustre/tests -test_SCRIPTS = $(noinst_PROGRAMS) +test_PROGRAMS = $(THETESTS) +else +noinst_PROGRAMS = $(THETESTS) +endif +else +noinst_PROGRAMS = $(THETESTS) +endif -write_append_truncate_SOURCES=write_append_truncate.c -write_disjoint_SOURCES=write_disjoint.c createmany_mpi_SOURCES=createmany-mpi.c parallel_grouplock_SOURCES=parallel_grouplock.c lp_utils.c lp_utils.h cascading_rw_SOURCES=cascading_rw.c lp_utils.c lp_utils.h -cascading_rw_LDADD=-L$(top_builddir)/lustre/utils -llustreapi $(LIBCFS) +cascading_rw_LDADD=$(LIBLUSTREAPI) $(LIBCFS) mdsrate_SOURCES=mdsrate.c -mdsrate_LDADD=-L$(top_builddir)/lustre/utils -llustreapi $(LIBCFS) +mdsrate_LDADD=$(LIBLUSTREAPI) $(LIBCFS) diff --git a/lustre/utils/Makefile.am b/lustre/utils/Makefile.am index 82e7381..a0031d2 100644 --- a/lustre/utils/Makefile.am +++ b/lustre/utils/Makefile.am @@ -45,28 +45,32 @@ if LIBPTHREAD sbin_PROGRAMS += lhsmtool_posix endif -pkglib_LTLIBRARIES = -lib_LIBRARIES = liblustreapi.a +lib_LIBRARIES = +noinst_LIBRARIES = + if LDISKFS_ENABLED +libiam_a_SOURCES = libiam.c lib_LIBRARIES += libiam.a endif -noinst_LIBRARIES = liblustreapitmp.a + +pkglib_LTLIBRARIES = +lib_LTLIBRARIES = liblustreapi.la endif # UTILS lctl_SOURCES = lustre_lfsck.c obd.c lustre_cfg.c lctl.c obdctl.h lsnapshot.c -lctl_LDADD := liblustreapi.a $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS) -lctl_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a +lctl_LDADD := liblustreapi.la $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS) +lctl_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.la lfs_SOURCES = lfs.c -lfs_LDADD := liblustreapi.a $(LIBPTLCTL) $(LIBREADLINE) -lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a +lfs_LDADD := liblustreapi.la $(LIBPTLCTL) $(LIBREADLINE) +lfs_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.la lustre_rsync_SOURCES = lustre_rsync.c obd.c lustre_cfg.c lustre_rsync.h -lustre_rsync_LDADD := liblustreapi.a $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS) -lustre_rsync_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a +lustre_rsync_LDADD := liblustreapi.la $(LIBPTLCTL) $(LIBREADLINE) $(PTHREAD_LIBS) +lustre_rsync_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.la lshowmount_SOURCES = lshowmount.c nidlist.c nidlist.h -lshowmount_LDADD := liblustreapi.a +lshowmount_LDADD := liblustreapi.la if EXT2FS_DEVEL EXT2FSLIB = -lext2fs @@ -86,16 +90,18 @@ llverfs_LDADD := $(EXT2FSLIB) $(E2PLIB) llverdev_LDADD := $(EXT2FSLIB) $(BLKIDLIB) -liblustreapitmp_a_SOURCES = liblustreapi.c liblustreapi_hsm.c \ - liblustreapi_nodemap.c lustreapi_internal.h \ - liblustreapi_json.c liblustreapi_layout.c \ - liblustreapi_lease.c liblustreapi_util.c \ - liblustreapi_kernelconn.c liblustreapi_param.c \ - $(top_builddir)/libcfs/libcfs/util/string.c \ - $(top_builddir)/libcfs/libcfs/util/param.c \ - liblustreapi_ladvise.c liblustreapi_chlg.c +liblustreapi_la_SOURCES = liblustreapi.c liblustreapi_hsm.c \ + liblustreapi_nodemap.c lustreapi_internal.h \ + liblustreapi_json.c liblustreapi_layout.c \ + liblustreapi_lease.c liblustreapi_util.c \ + liblustreapi_kernelconn.c liblustreapi_param.c \ + $(top_builddir)/libcfs/libcfs/util/string.c \ + $(top_builddir)/libcfs/libcfs/util/param.c \ + liblustreapi_ladvise.c liblustreapi_chlg.c +liblustreapi_la_LDFLAGS = -version-info 1:0:0 + if UTILS -LIB_TARGETS = liblustreapi.so +LIB_TARGETS = if PLUGINS if LDISKFS_ENABLED LIB_TARGETS += mount_osd_ldiskfs.so @@ -105,12 +111,6 @@ LIB_TARGETS += mount_osd_zfs.so endif endif -# build static and shared lib lustreapi -liblustreapi.a : liblustreapitmp.a - rm -f liblustreapi.a liblustreapi.so - $(CC) $(LDFLAGS) -shared -o liblustreapi.so `$(AR) -t liblustreapitmp.a` - mv liblustreapitmp.a liblustreapi.a - install-exec-hook: @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libdir) @@ -118,29 +118,18 @@ install-exec-hook: for p in $(LIB_TARGETS); do \ if test -f $$p; then \ f="`echo $$p | sed -e 's|^.*/||'`"; \ - if `echo -n $$p | grep -q mount`; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/lustre/$$f"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/lustre/$$f; \ - else \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/$$f"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/$$f; \ - fi; \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/lustre/$$f"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/lustre/$$f; \ else :; fi; \ done endif # UTILS -if LDISKFS_ENABLED -libiam_a_SOURCES = libiam.c -endif - llog_reader_SOURCES = llog_reader.c -llog_reader_LDADD := $(LIBPTLCTL) liblustreapi.a -llog_reader_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.a +llog_reader_LDADD := $(LIBPTLCTL) liblustreapi.la +llog_reader_DEPENDENCIES := $(LIBPTLCTL) liblustreapi.la lr_reader_SOURCES = lr_reader.c -lib_LTLIBRARIES = - if UTILS PLUGIN_LIB = @@ -204,8 +193,8 @@ l_getidentity_LDADD := $(LIBPTLCTL) l_getidentity_DEPENDENCIES := $(LIBPTLCTL) lhsmtool_posix_SOURCES = lhsmtool_posix.c -lhsmtool_posix_LDADD := liblustreapi.a $(LIBPTLCTL) $(PTHREAD_LIBS) -lhsmtool_posix_DEPENDENCIES := liblustreapi.a $(LIBPTLCTL) +lhsmtool_posix_LDADD := liblustreapi.la $(LIBPTLCTL) $(PTHREAD_LIBS) +lhsmtool_posix_DEPENDENCIES := liblustreapi.la $(LIBPTLCTL) wirecheck_SOURCES = wirecheck.c wirecheck_CPPFLAGS := -DCC="\"$(CC)\"" -- 1.8.3.1