From da2ada921cb8ac9506a751f212dd61838f42e947 Mon Sep 17 00:00:00 2001 From: James Simmons Date: Thu, 13 Jun 2019 21:52:06 -0700 Subject: [PATCH] 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. Lustre-change: https://review.whamcloud.com/33947 Lustre-commit: f9e5224fbb60bb8b44753b7be10cb06108627f89 Change-Id: I74112f7250f1c43313d868c0edc7c8815d373002 Signed-off-by: James Simmons Reviewed-by: Chris Horn Reviewed-by: Andreas Dilger Reviewed-on: https://review.whamcloud.com/34583 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Yang Sheng Reviewed-by: Oleg Drokin --- debian/control | 2 +- debian/control.main | 2 +- lustre.spec.in | 2 +- lustre/tests/Makefile.am | 1 - lustre/tests/sanity-hsm.sh | 15 +++++++-------- lustre/utils/Makefile.am | 1 - lustre/utils/gss/Makefile.am | 1 - 7 files changed, 10 insertions(+), 14 deletions(-) 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 a4d5555..6e510c0 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 5c60f70..1b36587 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 05b48ec..c11440a 100755 --- a/lustre/tests/sanity-hsm.sh +++ b/lustre/tests/sanity-hsm.sh @@ -115,7 +115,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 @@ -151,14 +150,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" } @@ -289,7 +288,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" } @@ -401,15 +400,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" } @@ -854,7 +853,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 -- 1.8.3.1