[lttng-dev] [PATCH v2 lttng-tools] Fix: Do not install health tests helper libraries

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Tue Nov 6 13:43:22 EST 2012


* Christian Babeux (christian.babeux at efficios.com) wrote:
> 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>

Acked-by: Mathieu Desnoyers <mathieu.desnoyers 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
> 
> 
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list