diff --git a/.gitignore b/.gitignore index a3e101d..36cb986 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,21 @@ +*~ /systemtap-3.1.tar.gz /systemtap-3.2-0.20170321git272146660f54.tar.gz /systemtap-3.2-0.20170406git83d186dc7f5c.tar.gz /systemtap-3.2-0.20170410gitcbf2583808d6.tar.gz /systemtap-3.2-0.20170512gitc67d8f274b21.tar.gz /systemtap-3.2.tar.gz +/systemtap-3.3-0.20180222git5ef0c24456e3.tar.gz +/systemtap-3.3-0.20180315gitc2585f2b58cd.tar.gz +/systemtap-3.3-0.20180420gitd4a446c.tar.gz +/systemtap-3.3-0.20180508git9c6ac6cda49e.tar.gz +/systemtap-3.3.tar.gz +/systemtap-4.0-0.20180810git.tar.gz +/systemtap-4.0-0.20180906git37598c4fee7c.tar.gz +/systemtap-4.0-0.20180914gitc51d4e55d285.tar.gz +/systemtap-4.0-0.20180914gitc1befcceae01.tar.gz +/systemtap-4.0-0.20180914git11a0a7aea387.tar.gz +/systemtap-4.0-0.20180914gitfe4e14f4af16.tar.gz +/systemtap-4.0-0.20180914gitfe4e14f4af16.1.tar.gz +/systemtap-4.0-0.20181003git4ad1e11de831.tar.gz +/systemtap-4.0.tar.gz diff --git a/sources b/sources index 80e8943..b11ecf4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (systemtap-3.3.tar.gz) = b75a4591bdc021645c15cb8f2b8991f46fdffb29b1d132745bafe4291aee5e1892ea9a63c8e98f011a4fee68decd99aa4401dc2f70e163e801cd140ad4cd6b6e +SHA512 (systemtap-4.0.tar.gz) = 66b5ba1902ed974101429dce9fee849273d3dc64e862c057177d158c5f284cc93299819ee8ee49d4bd3b7ff47a3512b1c68b74cad374147ce67fa406c7518c79 diff --git a/systemtap.spec b/systemtap.spec index 94d8769..afd579f 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -80,11 +80,11 @@ %endif # To avoid testsuite/*/*.stp has shebang which doesn't start with '/' -%undefine __brp_mangle_shebangs +%define __brp_mangle_shebangs_exclude_from .stp$ Name: systemtap -Version: 3.3 -Release: 1%{?dist} +Version: 4.0 +Release: 1%{?release_override}%{?dist} # for version, see also configure.ac @@ -123,6 +123,7 @@ Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz # Build* BuildRequires: gcc-c++ +BuildRequires: cpio BuildRequires: gettext-devel BuildRequires: pkgconfig(nss) BuildRequires: pkgconfig(avahi-client) @@ -224,19 +225,23 @@ Group: Development/System License: GPLv2+ URL: http://sourceware.org/systemtap/ Requires: systemtap-devel = %{version}-%{release} +Conflicts: systemtap-devel < %{version}-%{release} +Conflicts: systemtap-runtime < %{version}-%{release} +Conflicts: systemtap-client < %{version}-%{release} Requires: nss coreutils Requires: zip unzip Requires(pre): shadow-utils Requires(post): chkconfig Requires(preun): chkconfig -Requires(preun): initscripts -Requires(postun): initscripts BuildRequires: nss-devel avahi-devel %if %{with_openssl} Requires: openssl %endif %if %{with_systemd} Requires: systemd +%else +Requires(preun): initscripts +Requires(postun): initscripts %endif %description server @@ -256,6 +261,9 @@ URL: http://sourceware.org/systemtap/ Requires: kernel-devel-uname-r %{?fedora:Suggests: kernel-devel} Requires: gcc make +Conflicts: systemtap-client < %{version}-%{release} +Conflicts: systemtap-server < %{version}-%{release} +Conflicts: systemtap-runtime < %{version}-%{release} # Suggest: kernel-debuginfo %description devel @@ -273,6 +281,9 @@ Group: Development/System License: GPLv2+ URL: http://sourceware.org/systemtap/ Requires(pre): shadow-utils +Conflicts: systemtap-devel < %{version}-%{release} +Conflicts: systemtap-server < %{version}-%{release} +Conflicts: systemtap-client < %{version}-%{release} %description runtime SystemTap runtime contains the components needed to execute @@ -289,6 +300,9 @@ Requires: zip unzip Requires: systemtap-runtime = %{version}-%{release} Requires: coreutils grep sed unzip zip Requires: openssh-clients +Conflicts: systemtap-devel < %{version}-%{release} +Conflicts: systemtap-server < %{version}-%{release} +Conflicts: systemtap-runtime < %{version}-%{release} %if %{with_mokutil} Requires: mokutil %endif @@ -309,8 +323,12 @@ URL: http://sourceware.org/systemtap/ Requires: systemtap = %{version}-%{release} Requires(post): chkconfig Requires(preun): chkconfig +%if %{with_systemd} +Requires: systemd +%else Requires(preun): initscripts Requires(postun): initscripts +%endif %description initscript This package includes a SysVinit script to launch selected systemtap @@ -411,8 +429,7 @@ Requires: iproute %description runtime-java This package includes support files needed to run systemtap scripts -that probe Java processes running on the OpenJDK 1.6 and OpenJDK 1.7 -runtimes using Byteman. +that probe Java processes running on the OpenJDK runtimes using Byteman. %endif %if %{with_python2_probes} @@ -446,6 +463,20 @@ This package includes support files needed to run systemtap scripts that probe python 3 processes. %endif +%if %{with_python3} +%package exporter +Summary: Systemtap-prometheus interoperation mechanism +Group: Development/System +License: GPLv2+ +URL: http://sourceware.org/systemtap/ +Requires: systemtap-runtime = %{version}-%{release} + +%description exporter +This package includes files for a systemd service that manages +systemtap sessions and relays prometheus metrics from the sessions +to remote requesters on demand. +%endif + %if %{with_virthost} %package runtime-virthost Summary: Systemtap Cross-VM Instrumentation - host @@ -601,10 +632,16 @@ cd .. %global httpd_config --disable-httpd %endif +%if %{with_bpf} +%global bpf_config --with-bpf +%else +%global bpf_config --without-bpf +%endif + # We don't ship compileworthy python code, just oddball samples %global py_auto_byte_compile 0 -%configure %{?elfutils_config} %{dyninst_config} %{sqlite_config} %{crash_config} %{docs_config} %{pie_config} %{rpm_config} %{java_config} %{virt_config} %{dracut_config} %{python3_config} %{python2_probes_config} %{python3_probes_config} %{httpd_config} --disable-silent-rules --with-extra-version="rpm %{version}-%{release}" +%configure %{?elfutils_config} %{dyninst_config} %{sqlite_config} %{crash_config} %{docs_config} %{pie_config} %{rpm_config} %{java_config} %{virt_config} %{dracut_config} %{python3_config} %{python2_probes_config} %{python3_probes_config} %{httpd_config} %{bpf_config} --disable-silent-rules --with-extra-version="rpm %{version}-%{release}" make %{?_smp_mflags} %if %{with_emacsvim} @@ -665,12 +702,27 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/systemtap mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/systemtap mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d install -m 644 initscript/logrotate.stap-server $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/stap-server + +# If using systemd systemtap.service file, retain the old init script in %{_libexecdir} as a helper. +%if %{with_systemd} +mkdir -p $RPM_BUILD_ROOT%{_unitdir} +touch $RPM_BUILD_ROOT%{_unitdir}/systemtap.service +install -m 644 initscript/systemtap.service $RPM_BUILD_ROOT%{_unitdir}/systemtap.service +mkdir -p $RPM_BUILD_ROOT%{_sbindir} +install -m 755 initscript/systemtap $RPM_BUILD_ROOT%{_sbindir}/systemtap-service +%else mkdir -p $RPM_BUILD_ROOT%{initdir} install -m 755 initscript/systemtap $RPM_BUILD_ROOT%{initdir} +mkdir -p $RPM_BUILD_ROOT%{_sbindir} +ln -sf %{initdir}/systemtap $RPM_BUILD_ROOT%{_sbindir}/systemtap-service +# TODO CHECK CORRECTNESS: symlink %{_sbindir}/systemtap-service to %{initdir}/systemtap +%endif + mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/conf.d mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/script.d install -m 644 initscript/config.systemtap $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/config + %if %{with_systemd} mkdir -p $RPM_BUILD_ROOT%{_unitdir} touch $RPM_BUILD_ROOT%{_unitdir}/stap-server.service @@ -898,6 +950,24 @@ if [ "$1" -ge "1" ]; then fi exit 0 +%if %{with_python3} +%if %{with_systemd} +%preun exporter +if [ $1 = 0 ] ; then + /bin/systemctl stop stap-exporter.service >/dev/null 2>&1 || : + /bin/systemctl disable stap-exporter.service >/dev/null 2>&1 || : +fi +exit 0 + +%postun exporter +# Restart service if this is an upgrade rather than an uninstall +if [ "$1" -ge "1" ]; then + /bin/systemctl condrestart stap-exporter >/dev/null 2>&1 || : +fi +exit 0 +%endif +%endif + %post # Remove any previously-built uprobes.ko materials (make -C %{_datadir}/systemtap/runtime/uprobes clean) >/dev/null 2>&1 || true @@ -962,7 +1032,7 @@ done # ------------------------------------------------------------------------ -%files -f systemtap.lang +%files # The master "systemtap" rpm doesn't include any files. %files server -f systemtap.lang @@ -1106,14 +1176,20 @@ done %files initscript %defattr(-,root,root) +%if %{with_systemd} +%{_unitdir}/systemtap.service +%{_sbindir}/systemtap-service +%else %{initdir}/systemtap +%{_sbindir}/systemtap-service +%endif %dir %{_sysconfdir}/systemtap %dir %{_sysconfdir}/systemtap/conf.d %dir %{_sysconfdir}/systemtap/script.d %config(noreplace) %{_sysconfdir}/systemtap/config %dir %{_localstatedir}/cache/systemtap %ghost %{_localstatedir}/run/systemtap -%{_mandir}/man8/systemtap.8* +%{_mandir}/man8/systemtap-service.8* %if %{with_dracut} %dir %{dracutstap} %{dracutstap}/* @@ -1177,6 +1253,15 @@ done %endif %endif +%if %{with_python3} +%files exporter +%{_sysconfdir}/stap-exporter +%{_sysconfdir}/sysconfig/stap-exporter +%{_unitdir}/stap-exporter.service +%{_mandir}/man8/stap-exporter.8* +%{_sbindir}/stap-exporter +%endif + # ------------------------------------------------------------------------ # Future new-release entries should be of the form @@ -1186,6 +1271,9 @@ done # PRERELEASE %changelog +* Sat Oct 13 2018 Frank Ch. Eigler - 4.0-1 +- Upstream release. + * Thu Jun 07 2018 Frank Ch. Eigler - 3.3-1 - Upstream release. diff --git a/tests/dejagnu-smoketest/Makefile b/tests/dejagnu-smoketest/Makefile new file mode 100644 index 0000000..e212345 --- /dev/null +++ b/tests/dejagnu-smoketest/Makefile @@ -0,0 +1,38 @@ +TOPLEVEL_NAMESPACE=fedora +PACKAGE_NAME=systemtap +RELATIVE_PATH=Sanity/dejagnu-smoketest +export TESTVERSION=1.0 +export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH) + +.PHONY: all install download clean +BUILT_FILES= +FILES=$(METADATA) runtest.sh Makefile PURPOSE + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + chmod a+x ./runtest.sh + +clean: + rm -f *~ *.rpm $(BUILT_FILES) + +include /usr/share/rhts/lib/rhts-make.include + +# Generate the testinfo.desc here: +$(METADATA): Makefile + @touch $(METADATA) +# Change to the test owner's name + @echo "Owner: Frank Ch. Eigler " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "Description: smoke test" >> $(METADATA) + @echo "TestTime: 10m" >> $(METADATA) + @echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA) + @echo "Requires: $(PACKAGE_NAME)" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + +# You may need other fields here; see the documentation + rhts-lint $(METADATA) diff --git a/tests/dejagnu-smoketest/PURPOSE b/tests/dejagnu-smoketest/PURPOSE new file mode 100644 index 0000000..5a6a058 --- /dev/null +++ b/tests/dejagnu-smoketest/PURPOSE @@ -0,0 +1,3 @@ +Test Name: dejagnu-smoketest +Author: +Short Description: Run a minimal systemtap testsuite diff --git a/tests/dejagnu-smoketest/runtest.sh b/tests/dejagnu-smoketest/runtest.sh new file mode 100755 index 0000000..d988142 --- /dev/null +++ b/tests/dejagnu-smoketest/runtest.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e +set -x + +dnf debuginfo-install -y kernel + +# on Fedora CI, can only assume about 1GB RAM to run these tests + +stap -L 'process("stap").mark("*")' | grep pass +# stap -L 'kernel.trace("sys_enter")' +stap -v --example helloworld.stp +stap -v -T 10 -p4 -e 'probe kernel.function("do_exit") {println($$vars)}' +# stap -v -T 10 -e 'probe syscall.* ? {println(argstr)}' + +echo +echo RESULT: PASS diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..5d88e66 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,11 @@ +--- +- hosts: localhost + roles: + - role: standard-test-beakerlib + tags: + - classic + tests: + - dejagnu-smoketest + required_packages: + - systemtap-testsuite + - kernel-devel