[lttng-dev] [PATCH lttng-tools] fix: check for dtrace and sdt.h before enabling SDT uprobe tests

Jérémie Galarneau jeremie.galarneau at efficios.com
Mon Nov 4 22:30:21 EST 2019


Merged in master and stable-2.11.

Thanks!
Jérémie

On Thu, Oct 31, 2019 at 04:12:46PM -0400, Michael Jeanson wrote:
> Add a configure switch '--enable-sdt-uprobe / --disable-sdt-uprobe', the
> default behavior of enabling the test if the requirements are found is
> kept but it's now possible to explicitly disable it.
> 
> Also add the detection of the dtrace binary and its override trough the
> DTRACE environment variable.
> 
> Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
> ---
>  configure.ac                                  | 37 +++++++++++++++++--
>  tests/utils/testapp/Makefile.am               |  4 +-
>  .../userspace-probe-sdt-binary/Makefile.am    |  8 +++-
>  3 files changed, 42 insertions(+), 7 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 8c0683fe2..ab0a15b2d 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -25,9 +25,6 @@ AC_PROG_CXX
>  RW_PROG_CXX_WORKS
>  AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])
>  
> -LTTNG_CHECK_SDT_WORKS
> -AM_CONDITIONAL([SDT_WORKS], [test "x$lttng_cv_sdt_works" = "xyes"])
> -
>  # Checks for programs.
>  AC_PROG_GREP
>  AC_PROG_MAKE_SET
> @@ -815,6 +812,36 @@ AC_SUBST([RUN_PYTHON_AGENT_TEST])
>  AC_SUBST([PYTHON2_AGENT])
>  AC_SUBST([PYTHON3_AGENT])
>  
> +AC_ARG_ENABLE([test-sdt-uprobe],
> +  [AS_HELP_STRING([--enable-test-sdt-uprobe], [enable the LTTng UST SDT uprobe tests [default=autodetect]])],
> +  [test_sdt_uprobe="$enableval"],
> +  [test_sdt_uprobe=autodetect]
> +)
> +
> +AS_IF([test "$test_sdt_uprobe" != "no"], [
> +  LTTNG_CHECK_SDT_WORKS
> +  AC_PATH_PROG([DTRACE], [dtrace])
> +])
> +
> +AS_IF([test "$test_sdt_uprobe" = "yes"], [
> +  AS_IF([test "$lttng_cv_sdt_works" = "no"], [
> +    AC_MSG_ERROR([Cannot find 'sys/sdt.h'.])
> +  ])
> +  AS_IF([test "x$DTRACE" = "x"], [
> +    AC_MSG_ERROR([Cannot find SystemTap dtrace. You can set the DTRACE variable to override automatic detection.])
> +  ])
> +])
> +
> +AS_IF([test "$test_sdt_uprobe" = "autodetect"], [
> +  AS_IF([test "$lttng_cv_sdt_works" = "yes"], [
> +    AS_IF([test "x$DTRACE" != "x"], [
> +      test_sdt_uprobe=yes
> +    ])
> +  ])
> +])
> +
> +AM_CONDITIONAL([TEST_SDT_UPROBE], [test "$test_sdt_uprobe" = "yes"])
> +
>  # Arguments for binaries build exclusion
>  AC_ARG_ENABLE([bin-lttng], AS_HELP_STRING([--disable-bin-lttng],[Disable the build of lttng binaries]))
>  AC_ARG_ENABLE([bin-lttng-consumerd], AS_HELP_STRING([--disable-bin-lttng-consumerd],
> @@ -1243,6 +1270,10 @@ PPRINT_PROP_BOOL([LTTng-UST Python2 agent tests], $value)
>  test ! -z "$PYTHON3_AGENT" && value=1 || value=0
>  PPRINT_PROP_BOOL([LTTng-UST Python3 agent tests], $value)
>  
> +# LTTng UST Java agent Log4j tests enabled/disabled
> +test "x$test_sdt_uprobe" = "xyes" && value=1 || value=0
> +PPRINT_PROP_BOOL([LTTng-UST SDT uprobe tests], $value)
> +
>  #Python binding enabled/disabled
>  test "x$enable_python_binding" = xyes && value=1 || value=0
>  AS_ECHO
> diff --git a/tests/utils/testapp/Makefile.am b/tests/utils/testapp/Makefile.am
> index 2a4cf5c7b..e2ad1f235 100644
> --- a/tests/utils/testapp/Makefile.am
> +++ b/tests/utils/testapp/Makefile.am
> @@ -12,9 +12,9 @@ if CXX_WORKS
>  SUBDIRS += userspace-probe-elf-cxx-binary
>  endif # CXX_WORKS
>  
> -if SDT_WORKS
> +if TEST_SDT_UPROBE
>  SUBDIRS += userspace-probe-sdt-binary
> -endif # SDT_WORKS
> +endif # TEST_SDT_UPROBE
>  
>  if HAVE_MODULES_USERSPACE_CALLSTACK_CONTEXT
>  SUBDIRS += gen-syscall-events-callstack
> diff --git a/tests/utils/testapp/userspace-probe-sdt-binary/Makefile.am b/tests/utils/testapp/userspace-probe-sdt-binary/Makefile.am
> index d79ce0ea3..591f4aa6c 100644
> --- a/tests/utils/testapp/userspace-probe-sdt-binary/Makefile.am
> +++ b/tests/utils/testapp/userspace-probe-sdt-binary/Makefile.am
> @@ -26,10 +26,14 @@ libzzz_la_CFLAGS = -I$(abs_builddir)
>  libzzz_la_LDFLAGS = -module -shared -avoid-version -rpath $(abs_builddir)/.libs/
>  nodist_libzzz_la_SOURCES = $(abs_builddir)/foobar_provider.h
>  
> +dtrace_verbose = $(dtrace_verbose_ at AM_V@)
> +dtrace_verbose_ = $(dtrace_verbose_ at AM_DEFAULT_V@)
> +dtrace_verbose_0 = @echo "  DTRACE  " $@;
> +
>  foobar_provider.h: foobar_provider.d
> -	dtrace -s $< -o $@ -h
> +	$(dtrace_verbose)$(DTRACE) -s $< -o $@ -h
>  
>  foobar_provider.o: foobar_provider.d
> -	dtrace -s $< -o $@ -G
> +	$(dtrace_verbose)$(DTRACE) -s $< -o $@ -G
>  
>  CLEANFILES = foobar_provider.h
> -- 
> 2.17.1
> 


More information about the lttng-dev mailing list