1SECTION = "devel" 2SUMMARY = "Linux Trace Toolkit Control" 3DESCRIPTION = "The Linux trace toolkit is a suite of tools designed \ 4to extract program execution details from the Linux operating system \ 5and interpret them." 6HOMEPAGE = "https://github.com/lttng/lttng-tools" 7 8LICENSE = "GPL-2.0-only & LGPL-2.1-only" 9LIC_FILES_CHKSUM = "file://LICENSE;md5=40ef17463fbd6f377db3c47b1cbaded8 \ 10 file://LICENSES/GPL-2.0;md5=e68f69a54b44ba526ad7cb963e18fbce \ 11 file://LICENSES/LGPL-2.1;md5=9920968d0f2ff585ce61fae30344dd95" 12 13include lttng-platforms.inc 14 15DEPENDS = "liburcu popt libxml2 util-linux bison-native" 16RDEPENDS:${PN} = "libgcc" 17RRECOMMENDS:${PN} += "${LTTNGMODULES}" 18RDEPENDS:${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core grep" 19RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils" 20RDEPENDS:${PN}-ptest:append:libc-musl = " musl-utils" 21# babelstats.pl wants getopt-long 22RDEPENDS:${PN}-ptest += "perl-module-getopt-long" 23 24PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \ 25 am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \ 26 PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \ 27" 28PACKAGECONFIG ??= "${LTTNGUST} kmod" 29PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native" 30PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust" 31PACKAGECONFIG[kmod] = "--with-kmod, --without-kmod, kmod" 32PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native" 33 34SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \ 35 file://0001-tests-do-not-strip-a-helper-library.patch \ 36 file://run-ptest \ 37 file://lttng-sessiond.service \ 38 file://disable-tests.patch \ 39 " 40 41SRC_URI[sha256sum] = "8d94dc95b608cf70216b01203a3f8242b97a232db2e23421a2f43708da08f337" 42 43inherit autotools ptest pkgconfig useradd python3-dir manpages systemd 44 45CACHED_CONFIGUREVARS = "PGREP=/usr/bin/pgrep" 46 47SYSTEMD_SERVICE:${PN} = "lttng-sessiond.service" 48SYSTEMD_AUTO_ENABLE = "disable" 49 50USERADD_PACKAGES = "${PN}" 51GROUPADD_PARAM:${PN} = "tracing" 52 53FILES:${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \ 54 ${PYTHON_SITEPACKAGES_DIR}/*" 55FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a" 56FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la" 57 58# Since files are installed into ${libdir}/lttng/libexec we match 59# the libexec insane test so skip it. 60# Python module needs to keep _lttng.so 61INSANE_SKIP:${PN} = "libexec dev-so" 62INSANE_SKIP:${PN}-dbg = "libexec" 63 64PRIVATE_LIBS:${PN}-ptest = "libfoo.so" 65 66do_install:append () { 67 # install systemd unit file 68 install -d ${D}${systemd_system_unitdir} 69 install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_system_unitdir} 70} 71 72do_install_ptest () { 73 for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/*.lttng \ 74 tests/regression/tools/save-load/configuration/load-42*.lttng tests/regression/tools/health/test_health.sh \ 75 tests/regression/tools/metadata/utils.sh tests/regression/tools/rotation/rotate_utils.sh \ 76 tests/regression/tools/notification/util_event_generator.sh \ 77 tests/regression/tools/base-path/*.lttng; do 78 install -D "${B}/$f" "${D}${PTEST_PATH}/$f" 79 done 80 81 for f in tests/utils/tap-driver.sh config/test-driver src/common/config/session.xsd src/common/mi-lttng-4.1.xsd; do 82 install -D "${S}/$f" "${D}${PTEST_PATH}/$f" 83 done 84 85 # Patch in the correct path for the custom libraries a helper executable needs 86 sed -i -e 's!FIXMEPTESTPATH!${PTEST_PATH}!' "${D}${PTEST_PATH}/run-ptest" 87 88 # Prevent 'make check' from recursing into non-test subdirectories. 89 sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile" 90 91 # We don't need these 92 sed -i -e '/dist_noinst_SCRIPTS = /,/^$/d' "${D}${PTEST_PATH}/tests/Makefile" 93 94 # We shouldn't need to build anything in tests/utils 95 sed -i -e 's!am__append_1 = . utils!am__append_1 = . !' \ 96 "${D}${PTEST_PATH}/tests/Makefile" 97 98 # Copy the tests directory tree and the executables and 99 # Makefiles found within. 100 for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do 101 install -d "${D}${PTEST_PATH}/tests/$d" 102 find "${B}/tests/$d" -maxdepth 1 -executable -type f \ 103 -exec install -t "${D}${PTEST_PATH}/tests/$d" {} + 104 # Take all .py scripts for tests using the python bindings. 105 find "${B}/tests/$d" -maxdepth 1 -type f -name "*.py" \ 106 -exec install -t "${D}${PTEST_PATH}/tests/$d" {} + 107 test -r "${B}/tests/$d/Makefile" && \ 108 install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile" 109 done 110 111 for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do 112 for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do 113 cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f 114 case $f in 115 *.so|userspace-probe-elf-*) 116 install -d ${D}${PTEST_PATH}/tests/$d/ 117 ln -s ../$f ${D}${PTEST_PATH}/tests/$d/$f 118 # Remove any rpath/runpath to pass QA check. 119 chrpath --delete ${D}${PTEST_PATH}/tests/$d/$f 120 ;; 121 esac 122 done 123 done 124 125 chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary 126 chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/userspace-probe-elf-cxx-binary 127 chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libbar.so 128 chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libfoo.so 129 130 # 131 # Use the versioned libs of liblttng-ust-dl. 132 # 133 ustdl="${D}${PTEST_PATH}/tests/regression/ust/ust-dl/test_ust-dl.py" 134 if [ -e $ustdl ]; then 135 sed -i -e 's!:liblttng-ust-dl.so!:liblttng-ust-dl.so.0!' $ustdl 136 fi 137 138 install ${B}/tests/unit/ini_config/sample.ini ${D}${PTEST_PATH}/tests/unit/ini_config/ 139 140 # We shouldn't need to build anything in tests/regression/tools 141 sed -i -e 's!^SUBDIRS = tools !SUBDIRS = !' \ 142 "${D}${PTEST_PATH}/tests/regression/Makefile" 143 144 # Prevent attempts to update Makefiles during test runs, and 145 # silence "Making check in $SUBDIR" messages. 146 find "${D}${PTEST_PATH}" -name Makefile -type f -exec \ 147 sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \ 148 -e '/echo "Making $$target in $$subdir"; \\/d' \ 149 -e 's/^srcdir = \(.*\)/srcdir = ./' \ 150 -e 's/^builddir = \(.*\)/builddir = ./' \ 151 -e 's/^all-am:.*/all-am:/' \ 152 {} + 153 154 find "${D}${PTEST_PATH}" -name Makefile -type f -exec \ 155 touch -r "${B}/Makefile" {} + 156 157 # 158 # Need to stop generated binaries from rebuilding by removing their source dependencies 159 # 160 sed -e 's#\(^test.*OBJECTS.=\)#disable\1#g' \ 161 -e 's#\(^test.*DEPENDENCIES.=\)#disable\1#g' \ 162 -e 's#\(^test.*SOURCES.=\)#disable\1#g' \ 163 -e 's#\(^test.*LDADD.=\)#disable\1#g' \ 164 -i ${D}${PTEST_PATH}/tests/unit/Makefile 165 166 # Fix hardcoded build path 167 sed -e 's#TESTAPP_PATH=.*/tests/regression/#TESTAPP_PATH="${PTEST_PATH}/tests/regression/#' \ 168 -i ${D}${PTEST_PATH}/tests/regression/ust/python-logging/test_python_logging 169 170 # Substitute links to installed binaries. 171 for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd lttng-crash; do 172 exedir="${D}${PTEST_PATH}/src/bin/${prog}" 173 install -d "$exedir" 174 case "$prog" in 175 lttng-consumerd) 176 ln -s "${libdir}/lttng/libexec/$prog" "$exedir" 177 ;; 178 *) 179 ln -s "${bindir}/$prog" "$exedir" 180 ;; 181 esac 182 done 183} 184 185INHIBIT_PACKAGE_STRIP_FILES = "\ 186 ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary \ 187 ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary \ 188 ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/userspace-probe-elf-cxx-binary \ 189 ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/.libs/userspace-probe-elf-cxx-binary \ 190 ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events/gen-syscall-events \ 191 ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events/.libs/gen-syscall-events \ 192 ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events-callstack/gen-syscall-events-callstack \ 193 ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events-callstack/.libs/gen-syscall-events-callstack \ 194 " 195