Fix: check for dtrace and sdt.h before enabling SDT uprobe tests
authorMichael Jeanson <mjeanson@efficios.com>
Thu, 31 Oct 2019 20:12:46 +0000 (16:12 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 5 Nov 2019 03:29:26 +0000 (22:29 -0500)
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@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
configure.ac
tests/utils/testapp/Makefile.am
tests/utils/testapp/userspace-probe-sdt-binary/Makefile.am

index 357e2b88896050709b4c7ae9a0b147dcd04eac94..ea4f70a04707bdca08b4a86ea5583da7cdc4c35e 100644 (file)
@@ -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
@@ -857,6 +854,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],
@@ -1275,6 +1302,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
index e54ac890aee31ffc7a3562ee22add1adf9d27c68..742bdad9c85e5df06565e90dc9d913c92c95b510 100644 (file)
@@ -9,9 +9,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
index d79ce0ea3fbc9cfc10b66a7c7998f3de78d8ca0c..591f4aa6c1928054f088d9d7ab1c5e6805cd67dd 100644 (file)
@@ -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_@AM_V@)
+dtrace_verbose_ = $(dtrace_verbose_@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
This page took 0.030097 seconds and 4 git commands to generate.