[lttng-dev] [PATCH v2 lttng-tools] Fix: Do not install health tests helper libraries
Christian Babeux
christian.babeux at efficios.com
Tue Nov 6 13:32:05 EST 2012
The libraries libhealthexit and libhealthstall should not be
installed on the user system. They are only useful for the
health check tests.
Furthermore, when adding libraries to noinst_LTLIBRARIES,
libtool will only build these as static libraries (see [1] for a
workaround). This is fine for most use cases, but for the health
tests, we _must_ have shared libraries (the nature of the tests
require LD_PRELOAD), hence we force the build of a shared object.
Forcing shared object has the unfortunate side-effect of breaking
builds where configure was invoked with "--disable-shared" flag.
Instead of failing badly, detect this flag and skip the health
tests altogether.
noinst shared libs:
[1] - https://lists.gnu.org/archive/html/libtool/2008-06/msg00082.html
Signed-off-by: Christian Babeux <christian.babeux at efficios.com>
---
configure.ac | 2 ++
tests/tools/health/Makefile.am | 20 ++++++++++++--------
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/configure.ac b/configure.ac
index 72daf7e..a3120fc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -39,6 +39,8 @@ AS_IF([test "x$libtool_fixup" = "xyes"],
])
])
+AM_CONDITIONAL([NO_SHARED], [test x$enable_shared = xno])
+
AC_CHECK_HEADERS([ \
sys/types.h unistd.h fcntl.h string.h pthread.h limits.h \
signal.h stdlib.h sys/un.h sys/socket.h stdlib.h stdio.h \
diff --git a/tests/tools/health/Makefile.am b/tests/tools/health/Makefile.am
index 9fab582..f1a5d91 100644
--- a/tests/tools/health/Makefile.am
+++ b/tests/tools/health/Makefile.am
@@ -8,23 +8,27 @@ if LTTNG_TOOLS_BUILD_WITH_LIBC_DL
AM_LDFLAGS += -lc
endif
-UTILS=
-
-lib_LTLIBRARIES=libhealthexit.la libhealthstall.la
+if NO_SHARED
+# Do not build this test if shared libraries support was
+# explicitly disabled.
+else
+# In order to test the health check feature, the libhealth* libs
+# must be built as .so to be able to LD_PRELOAD them.
+FORCE_SHARED_LIB_OPTIONS = -module -shared -avoid-version \
+ -rpath $(abs_builddir)
# Health thread exit ld_preloaded test lib
libhealthexit_la_SOURCES=health_exit.c
-libhealthexit_la_LDFLAGS= -module
+libhealthexit_la_LDFLAGS= $(FORCE_SHARED_LIB_OPTIONS)
# Health thread stall ld_preloaded test lib
libhealthstall_la_SOURCES=health_stall.c
-libhealthstall_la_LDFLAGS= -module
+libhealthstall_la_LDFLAGS= $(FORCE_SHARED_LIB_OPTIONS)
noinst_PROGRAMS = health_check
+noinst_LTLIBRARIES = libhealthexit.la libhealthstall.la
health_check_SOURCES = health_check.c $(UTILS)
health_check_LDADD = $(top_builddir)/src/lib/lttng-ctl/liblttng-ctl.la \
$(top_builddir)/src/common/libcommon.la
-
-noinst_SCRIPTS =
-EXTRA_DIST =
+endif
--
1.8.0
More information about the lttng-dev
mailing list