From: James Simmons Date: Fri, 15 Mar 2019 00:38:31 +0000 (-0400) Subject: LU-11742 test: have libtool execute the test binaries X-Git-Tag: 2.12.53~89 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=f9e5224fbb60bb8b44753b7be10cb06108627f89 LU-11742 test: have libtool execute the test binaries With the move to libtools the ability to run all the lustre utilities form the source tree was lost. To work around this the libtool -no-install flag was used to prevent the creation of the libtool wrappers. While this worked to restore the source tree sand box development new package breakage is showing. This is due to the rpath being hard coded into the utilies when -no-install is used and some platforms disable fixed rpaths. A very similar problem exist for people who want to use gdb to debug their projects application. gdb does not work on libtool wrappers as well so the recommended approach to this type of problem is to use the libtool execute command. This command allows the execution of an external non project binary, like gdb, with the projects real binary application. Apply this approach to the lustre test suite so commands like kill can be used to shutdown lustre utilies that are not installed into the testing environment. Change-Id: I74112f7250f1c43313d868c0edc7c8815d373002 Signed-off-by: James Simmons Reviewed-on: https://review.whamcloud.com/33947 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Chris Horn Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- diff --git a/debian/control b/debian/control index 177eebe..e4d7a85 100644 --- a/debian/control +++ b/debian/control @@ -84,7 +84,7 @@ Package: lustre-tests Section: utils Architecture: i386 armhf powerpc ppc64el amd64 ia64 arm64 Priority: optional -Depends: lustre-iokit (= ${binary:Version}), attr, rsync, perl, lsof, mpi-default-bin +Depends: lustre-iokit (= ${binary:Version}), attr, rsync, perl, lsof, libtool, mpi-default-bin Description: Test suite for the Lustre filesystem Lustre is a scalable, secure, robust, highly-available cluster file system. This release is maintained by Whamcloud and available from diff --git a/debian/control.main b/debian/control.main index 177eebe..e4d7a85 100644 --- a/debian/control.main +++ b/debian/control.main @@ -84,7 +84,7 @@ Package: lustre-tests Section: utils Architecture: i386 armhf powerpc ppc64el amd64 ia64 arm64 Priority: optional -Depends: lustre-iokit (= ${binary:Version}), attr, rsync, perl, lsof, mpi-default-bin +Depends: lustre-iokit (= ${binary:Version}), attr, rsync, perl, lsof, libtool, mpi-default-bin Description: Test suite for the Lustre filesystem Lustre is a scalable, secure, robust, highly-available cluster file system. This release is maintained by Whamcloud and available from diff --git a/lustre.spec.in b/lustre.spec.in index 75a705c..ee49531 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -252,7 +252,7 @@ Requires: %{name} = %{version} %endif Requires: %{requires_kmod_name} = %{requires_kmod_version} Requires: %{requires_kmod_tests_name} = %{requires_kmod_version} -Requires: attr, rsync, perl, lsof, /usr/bin/getconf +Requires: attr, rsync, perl, lsof, libtool, /usr/bin/getconf %description tests This package contains a set of test binaries and scripts that are intended diff --git a/lustre/tests/Makefile.am b/lustre/tests/Makefile.am index 1e9f6ec..c77958c 100644 --- a/lustre/tests/Makefile.am +++ b/lustre/tests/Makefile.am @@ -1,7 +1,6 @@ # Lustre test Makefile AM_CFLAGS := -fPIC -D_GNU_SOURCE \ -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -AM_LDFLAGS := -no-install DIST_SUBDIRS = mpi diff --git a/lustre/tests/sanity-hsm.sh b/lustre/tests/sanity-hsm.sh index 60c19f1..69e3ac3 100755 --- a/lustre/tests/sanity-hsm.sh +++ b/lustre/tests/sanity-hsm.sh @@ -116,7 +116,6 @@ init_agt_vars() { export HSMTOOL_UPDATE_INTERVAL=${HSMTOOL_UPDATE_INTERVAL:=""} export HSMTOOL_EVENT_FIFO=${HSMTOOL_EVENT_FIFO:=""} export HSMTOOL_TESTDIR - export HSMTOOL_BASE=$(basename "$HSMTOOL" | cut -f1 -d" ") HSM_ARCHIVE_NUMBER=2 @@ -152,14 +151,14 @@ get_mdt_devices() { search_copytools() { local hosts=${1:-$(facet_active_host $SINGLEAGT)} - do_nodesv $hosts "pgrep -x $HSMTOOL_BASE" + do_nodesv $hosts "libtool execute pgrep -x $HSMTOOL" } kill_copytools() { local hosts=${1:-$(facet_active_host $SINGLEAGT)} echo "Killing existing copytools on $hosts" - do_nodesv $hosts "killall -q $HSMTOOL_BASE" || true + do_nodesv $hosts "libtool execute killall -q $HSMTOOL" || true copytool_continue "$hosts" } @@ -290,7 +289,7 @@ __lhsmtool_setup() cmd+=" \"$mountpoint\"" echo "Starting copytool $facet on $(facet_host $facet)" - stack_trap "do_facet $facet pkill -x '$HSMTOOL_BASE' || true" EXIT + stack_trap "do_facet $facet libtool execute pkill -x '$HSMTOOL' || true" EXIT do_facet $facet "$cmd < /dev/null > \"$(copytool_logfile $facet)\" 2>&1" } @@ -402,15 +401,15 @@ copytool_suspend() { local agents=${1:-$(facet_active_host $SINGLEAGT)} stack_trap \ - "do_nodesv $agents pkill -CONT -x '$HSMTOOL_BASE' || true" EXIT - do_nodesv $agents "pkill -STOP -x $HSMTOOL_BASE" || return 0 + "do_nodesv $agents libtool execute pkill -CONT -x '$HSMTOOL' || true" EXIT + do_nodesv $agents "libtool execute pkill -STOP -x $HSMTOOL" || return 0 echo "Copytool is suspended on $agents" } copytool_continue() { local agents=${1:-$(facet_active_host $SINGLEAGT)} - do_nodesv $agents "pkill -CONT -x $HSMTOOL_BASE" || return 0 + do_nodesv $agents "libtool execute pkill -CONT -x $HSMTOOL" || return 0 echo "Copytool is continued on $agents" } @@ -855,7 +854,7 @@ get_agent_uuid() { # Lustre mount-point is mandatory and last parameter on # copytool cmd-line. - local mntpnt=$(do_rpc_nodes $agent ps -C $HSMTOOL_BASE -o args= | + local mntpnt=$(do_rpc_nodes $agent libtool execute ps -C $HSMTOOL -o args= | awk '{print $NF}') [ -n "$mntpnt" ] || error "Found no Agent or with no mount-point "\ "parameter" diff --git a/lustre/utils/Makefile.am b/lustre/utils/Makefile.am index f7655b9..4d7b56b 100644 --- a/lustre/utils/Makefile.am +++ b/lustre/utils/Makefile.am @@ -2,7 +2,6 @@ AM_CFLAGS := -fPIC -D_GNU_SOURCE \ -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLUSTRE_UTILS=1 -AM_LDFLAGS := -no-install if TESTS EXTRA_PROGRAMS = wirecheck diff --git a/lustre/utils/gss/Makefile.am b/lustre/utils/gss/Makefile.am index 437a2e5..dff542d 100644 --- a/lustre/utils/gss/Makefile.am +++ b/lustre/utils/gss/Makefile.am @@ -3,7 +3,6 @@ AM_CFLAGS := -fPIC \ -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLUSTRE_UTILS=1 \ -D_GNU_SOURCE -AM_LDFLAGS := -no-install sbin_PROGRAMS = lsvcgssd l_idmap