diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index a3e101d..702599e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,112 @@ /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 +/systemtap-4.1-0.20181126gitf082df49dd91.tar.gz +/systemtap-4.1-0.20181126git47ce37a149b6.tar.gz +/systemtap-4.1-0.20181203gitec3b46eb9b19.tar.gz +/systemtap-4.1-0.20181204git891810c246d6.tar.gz +/systemtap-4.1-0.20190123gitc8084763b75f.tar.gz +/systemtap-4.1-0.20190125git905865da1024.tar.gz +/systemtap-4.1-0.20190207git4e76869512d2.tar.gz +/systemtap-4.1-0.20190307gitf7fb9c9182dc.tar.gz +/systemtap-4.1-0.20190308gitb3627d9aa037.tar.gz +/systemtap-4.1-0.20190327git2ede4cecb20c.tar.gz +/systemtap-4.1-0.20190502git446e7c358247.tar.gz +/systemtap-4.1.tar.gz +/systemtap-4.2-0.20190513git8b868f3dd030.tar.gz +/systemtap-4.2-0.20190613git2d77f531a5d1.tar.gz +/systemtap-4.2-0.20190618git47c3f6c60174.tar.gz +/systemtap-4.2-0.20190807gitebfc300ec2ad.tar.gz +/systemtap-4.2-0.20190827git8ffab23ff.tar.gz +/systemtap-4.2.tar.gz +/systemtap-4.3-0.20200112gitb1e6a6645bba.tar.gz +/systemtap-4.3-0.20200203git6c0b74f5910a.tar.gz +/systemtap-4.3-0.20200211git91ffb97ad335.tar.gz +/systemtap-4.3-0.20200529git6d50a5cadb64.tar.gz +/systemtap-4.3.tar.gz +/systemtap-4.4-0.20200714git8212024da2ae.tar.gz +/systemtap-4.4-0.20200714gite5a63d9c000a.tar.gz +/systemtap-4.4-0.20200715gitce0fa621eb35.tar.gz +/systemtap-4.4-0.20200731git87344e948606.tar.gz +/systemtap-4.4-0.20200805git82b8e1a07.tar.gz +/systemtap-4.4-0.20200922git05179173e71c.tar.gz +/systemtap-4.4.tar.gz +/systemtap-4.4-0.20201203gitf02f08bc6eff.tar.gz +/systemtap-4.5-0.20201203git963c215e781e.tar.gz +/systemtap-4.5-0.20201204git0d80048e02ec.tar.gz +/systemtap-4.5-0.20201210gitd86b64029598.tar.gz +/systemtap-4.5-0.20210105git6cb54128e005.tar.gz +/systemtap-4.5-0.20210107gita4d01e48d435.tar.gz +/systemtap-4.5-0.20210128gita790dc64a9d8.tar.gz +/systemtap-4.5-0.20210129gitea81249b90b9.tar.gz +/systemtap-4.5-0.202101291559git9e1a0f5703ad.tar.gz +/systemtap-4.5-0.202102101544git8d5e0abc542c.tar.gz +/systemtap-4.5-0.202102191905git0f623095ee3e.tar.gz +/systemtap-4.5-0.202102231232git663a93e8b82b.tar.gz +/systemtap-4.5-0.202104140931gitad00fb87e.tar.gz +/systemtap-4.5-0.202104140933gitad00fb87e.tar.gz +/systemtap-4.5-0.202105041345git02b6be05fb76.tar.gz +/systemtap-4.5.tar.gz +/systemtap-4.6-16261989g7c2751e3.tar.gz +/systemtap-4.6~pre16262008gbff2b2ff.tar.gz +/systemtap-4.6~pre16262012gc7f1c12e.tar.gz +/systemtap-4.6~pre16262021g84ef6bd9.tar.gz +/systemtap-4.6~pre16291338gf2c14776.tar.gz +/systemtap-4.6.tar.gz +/systemtap-4.7~pre16378386g61a4c8f8.tar.gz +/systemtap-4.7~pre16383943gecab2afe.tar.gz +/systemtap-4.7~pre16388948g209b5a19.tar.gz +/systemtap-4.7~pre16395042gefae8a3d.tar.gz +/systemtap-4.7~pre16432070g1d2cb8b3.tar.gz +/systemtap-4.7~pre16433134g7d871ab5.tar.gz +/systemtap-4.7~pre16468670g9f253544.tar.gz +/systemtap-4.7.tar.gz +/systemtap-4.8~pre16557277g2882dcc9.tar.gz +/systemtap-4.8~pre16578235g069e109c.tar.gz +/systemtap-4.8~pre16594727g09f1b7bb.tar.gz +/systemtap-4.8~pre16594741g5bdc37b9.tar.gz +/systemtap-4.8~pre16650659g6a096a7d.tar.gz +/systemtap-4.8.tar.gz +/systemtap-4.9.tar.gz +/systemtap-5.0~pre16885197g6b17715f.tar.gz +/systemtap-5.0~pre16885234gd98d6c2d.tar.gz +/systemtap-5.0~pre16890184ge891a37e.tar.gz +/systemtap-5.0~pre16891249ge891a37e.tar.gz +/systemtap-5.0~pre16958465gca71442b.tar.gz +/systemtap-5.0.tar.gz +/systemtap-5.1~pre17056120g2ccc0c4c.tar.gz +/systemtap-5.1~pre17056139g6c0b92b3.tar.gz +/systemtap-5.1~pre17059382g67086c54.tar.gz +/systemtap-5.1~pre17060399gb6abf4bd.tar.gz +/systemtap-5.1~pre17062114g2604d135.tar.gz +/systemtap-5.1~pre17062192g5fd8daba.tar.gz +/systemtap-5.1.tar.gz +/systemtap-5.1~pre17206206ge48abca5.tar.gz +/systemtap-5.2~pre17206355g1a07290a.tar.gz +/systemtap-5.2~pre17224323g98d1ea34.tar.gz +/systemtap-5.2~pre17250223gd07e4284.tar.gz +/systemtap-5.2~pre17277956g0b7f6722.tar.gz +/systemtap-5.2~pre17283218gc5774e18.tar.gz +/systemtap-5.2.tar.gz +/systemtap-5.2~pre17373420g1e894ff0.tar.gz +/systemtap-5.3~pre17373422g9a48fbea.tar.gz +/systemtap-5.3~pre17373794g3efe129d.tar.gz +/systemtap-5.3~pre17373816g7a71d34b.tar.gz +/systemtap-5.3.tar.gz +/systemtap-5.4~pre17585473g1fe4178d.tar.gz +/systemtap-5.4~pre17585496g86ab88eb.tar.gz +/systemtap-5.4.tar.gz diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..a2c8282 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,30 @@ +--- !Policy +product_versions: + - fedora-* +decision_contexts: [bodhi_update_push_testing] +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: baseos-qe.koji-build.scratch-build.validation} +--- !Policy +product_versions: + - fedora-* +decision_contexts: [bodhi_update_push_stable] +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: baseos-qe.koji-build.scratch-build.validation} +--- !Policy +product_versions: + - rhel-8 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} + - !PassingTestCaseRule {test_case_name: osci.brew-build.rebuild.validation} +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} + - !PassingTestCaseRule {test_case_name: osci.brew-build.rebuild.validation} diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..7009e4e --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,12 @@ +summary: CI Gating Plan +discover: + how: fmf + url: https://src.fedoraproject.org/tests/systemtap-gating.git + ref: main + directory: tests +prepare: + - name: prepare + how: shell + script: ./plans/prepare.sh +execute: + how: tmt diff --git a/plans/prepare.sh b/plans/prepare.sh new file mode 100755 index 0000000..dfce543 --- /dev/null +++ b/plans/prepare.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# On Rawhide, the running kernel packages won't probably be avail in +# configured repos. Debuginfo isn't a problem, we access that using +# the debuginfod. +__fedora_install_deps () +{ + TMPD=$(mktemp -d) + pushd $TMPD + koji download-build --rpm kernel-`uname -r` --arch `uname -i` + koji download-build --rpm kernel-devel-`uname -r` --arch `uname -i` + koji download-build --rpm kernel-modules-`uname -r` --arch `uname -i` + dnf -y install kernel{,-devel,-modules}-`uname -r`.rpm + popd + rm -rf $TMPD +} + +set -xe + +source /etc/os-release + +# Install needed packages +if [ "$ID" == "fedora" ]; then + stap-prep || __fedora_install_deps +fi +stap-prep + +# Report installed packages +stap-report + +# Set up SELinux so that it allows for userspace probing +setsebool allow_execmod on +setsebool allow_execstack on +setsebool deny_ptrace off + +set +xe diff --git a/rhbz1504009.patch b/rhbz1504009.patch deleted file mode 100644 index 7643891..0000000 --- a/rhbz1504009.patch +++ /dev/null @@ -1,49 +0,0 @@ -commit 9f81f10b0caf6dfc49c4b7ceb7902f45d37b532a (HEAD -> master, origin/master, origin/HEAD) -Author: Frank Ch. Eigler -Date: Fri Oct 20 10:01:58 2017 -0400 - - rhbz1504009: let dtrace -G -o /dev/null run, as in autoconf - - commit c245153ca193c471a8c broke the ability of dtrace to be tested in - autoconf "-G -o /dev/null" usage, because its output file name was too - simple a function of the input name, and normal users can't write to - /dev/null.dtrace-temp.c . Now we back down to mkstemp, like before, - upon a failure of the simple concatenated name. - -diff --git a/dtrace.in b/dtrace.in -index 2e2e002a5c56..25efc253b708 100644 ---- a/dtrace.in -+++ b/dtrace.in -@@ -410,8 +410,12 @@ from tempfile import mkstemp - else: - print("header: " + fname) - -- fname = filename + ".dtrace-temp.c" -- fdesc = open(fname, mode='w') -+ try: # for reproducible-builds purposes, prefer a fixed path name pattern -+ fname = filename + ".dtrace-temp.c" -+ fdesc = open(fname, mode='w') -+ except: # but that doesn't work for -o /dev/null - see rhbz1504009 -+ (ignore,fname) = mkstemp(suffix=".c") -+ fdesc = open(fname, mode='w') - providers.semaphore_write(fdesc) - fdesc.close() - cc1 = os.environ.get("CC", "gcc") -diff --git a/testsuite/systemtap.base/dtrace.exp b/testsuite/systemtap.base/dtrace.exp -index fa6b3ec3f6d3..7c60f09d70b8 100644 ---- a/testsuite/systemtap.base/dtrace.exp -+++ b/testsuite/systemtap.base/dtrace.exp -@@ -83,6 +83,13 @@ if {[file exists /tmp/XXX.o]} then { - } - exec rm -f /tmp/XXX.o - -+verbose -log "$dtrace -G -s $dpath -o /dev/null" -+if [as_non_root "$python $dtrace -G -s $dpath -o /dev/null"] { -+ fail "$test -G -o /dev/null" -+} else { -+ pass "$test -G -o /dev/null" -+} -+ - verbose -log "$dtrace -G -s $dpath -o /tmp/XXX" - catch {exec $python $dtrace -G -s $dpath -o /tmp/XXX} res - if {[file exists /tmp/XXX]} then { diff --git a/rhbz1546563.patch b/rhbz1546563.patch deleted file mode 100644 index 4e4030b..0000000 --- a/rhbz1546563.patch +++ /dev/null @@ -1,273 +0,0 @@ -From fbb26e17a4c026f05a497fc5d584516bad3b6950 Mon Sep 17 00:00:00 2001 -From: David Smith -Date: Wed, 6 Dec 2017 14:37:42 -0600 -Subject: [PATCH] Fix PR22551 by updating the use of timers for the 4.15 - kernel. - -* runtime/linux/timer_compatibility.h: New file. -* runtime/time.c: Update timer callback function parameter type. Update - timer initialization. -* runtime/transport/relay_v2.c: Ditto. -* runtime/transport/transport.c: Ditto. -* tapset-timers.cxx (timer_derived_probe_group::emit_module_decls): - Ditto. Handle old and new timer callback interface. -* runtime/linux/runtime.h: Include timer_compatibility.h instead of timer.h. -* tapset/linux/scsi.stp: Ditto. ---- - runtime/linux/runtime.h | 2 +- - runtime/linux/timer_compatibility.h | 76 +++++++++++++++++++++++++++++++++++++ - runtime/time.c | 7 ++-- - runtime/transport/relay_v2.c | 8 ++-- - runtime/transport/transport.c | 13 +++---- - tapset-timers.cxx | 14 +++++-- - tapset/linux/scsi.stp | 2 +- - 7 files changed, 100 insertions(+), 22 deletions(-) - create mode 100644 runtime/linux/timer_compatibility.h - -diff --git a/runtime/linux/runtime.h b/runtime/linux/runtime.h -index 9c585a2..df9b74c 100644 ---- a/runtime/linux/runtime.h -+++ b/runtime/linux/runtime.h -@@ -34,7 +34,7 @@ - #include - #include - #include --#include -+#include "timer_compatibility.h" - #include - #include - #include -diff --git a/runtime/linux/timer_compatibility.h b/runtime/linux/timer_compatibility.h -new file mode 100644 -index 0000000..ac03de9 ---- /dev/null -+++ b/runtime/linux/timer_compatibility.h -@@ -0,0 +1,76 @@ -+/* -+ * linux/timer.h compatibility defines and inlines -+ * Copyright (C) 2017 Red Hat Inc. -+ * -+ * This file is part of systemtap, and is free software. You can -+ * redistribute it and/or modify it under the terms of the GNU General -+ * Public License (GPL); either version 2, or (at your option) any -+ * later version. -+ */ -+ -+#ifndef _TIMER_COMPATIBILITY_H_ -+#define _TIMER_COMPATIBILITY_H_ -+ -+#include -+ -+/* -+ * Starting with the 4.15 kernel, the timer interface -+ * changed. Originally, you'd do something like: -+ * -+ * static void timer_func(unsigned long val); -+ * -+ * init_timer(&timer); -+ * timer.expires = jiffies + STP_RELAY_TIMER_INTERVAL; -+ * timer.function = timer_func; -+ * timer.data = 0; -+ * add_timer(&timer); -+ * -+ * The 'data' parameter would get passed to the callback -+ * function. Starting with 4.15, you'd do something like this: -+ * -+ * static void timer_func(struct timer_list *val); -+ * -+ * timer_setup(&timer, timer_func, 0); -+ * timer.expires = jiffies + STP_RELAY_TIMER_INTERVAL; -+ * add_timer(&timer); -+ * -+ * With the new code, the timer that caused the callback gets passed -+ * to the timer callback function. The 'data' field has been removed. -+ * -+ * So, we're going to use the new interface. To hide the differences -+ * between the callback function parameter type, we'll define a new -+ * type, 'stp_timer_callback_parameter_t'. -+ * -+ * If code needs to figure out the difference between the old and new -+ * interface, it should test the TIMER_TRACE_FLAGMASK define (which -+ * only exists in the new interface). -+ */ -+ -+#if defined(TIMER_TRACE_FLAGMASK) -+/* This is the >= 4.15 kernel interface. */ -+ -+typedef struct timer_list * stp_timer_callback_parameter_t; -+ -+#else -+/* This is the < 4.15 kernel interface. */ -+ -+typedef unsigned long stp_timer_callback_parameter_t; -+ -+/** -+ * timer_setup - prepare a timer for first use -+ * @timer: the timer in question -+ * @callback: the function to call when timer expires -+ * @flags: any TIMER_* flags (note that anything other than 0 is an -+ * error, since this compatibility function can't support any -+ * of the TIMER_* flags) -+ */ -+#define timer_setup(timer, callback, flags) \ -+ { \ -+ init_timer((timer)); \ -+ (timer)->function = callback; \ -+ (timer)->data = 0; \ -+ BUILD_BUG_ON_ZERO((flags) != 0); \ -+ } -+#endif -+ -+#endif /* _TIMER_COMPATIBILITY_H_ */ -diff --git a/runtime/time.c b/runtime/time.c -index 2e666d5..91ceafa 100644 ---- a/runtime/time.c -+++ b/runtime/time.c -@@ -168,10 +168,10 @@ __stp_time_smp_callback(void *val) - - /* The timer callback is in a softIRQ -- interrupts enabled. */ - static void --__stp_time_timer_callback(unsigned long val) -+__stp_time_timer_callback(stp_timer_callback_parameter_t unused) - { - stp_time_t *time =__stp_time_local_update(); -- (void) val; -+ (void) unused; - - /* PR6481: make sure IRQs are enabled before resetting the timer - (IRQs are disabled and then reenabled in -@@ -200,9 +200,8 @@ __stp_init_time(void *info) - time->freq = __stp_get_freq(); - __stp_time_local_update(); - -- init_timer(&time->timer); -+ timer_setup(&time->timer, __stp_time_timer_callback, 0); - time->timer.expires = jiffies + STP_TIME_SYNC_INTERVAL; -- time->timer.function = __stp_time_timer_callback; - - #ifndef STAPCONF_ADD_TIMER_ON - add_timer(&time->timer); -diff --git a/runtime/transport/relay_v2.c b/runtime/transport/relay_v2.c -index f81d75d..135951a 100644 ---- a/runtime/transport/relay_v2.c -+++ b/runtime/transport/relay_v2.c -@@ -30,7 +30,7 @@ - #include - #include - #include --#include -+#include "../linux/timer_compatibility.h" - #include "../uidgid_compatibility.h" - #include "relay_compat.h" - -@@ -120,7 +120,7 @@ static void __stp_relay_wakeup_readers(struct rchan_buf *buf) - wake_up_interruptible(&buf->read_wait); - } - --static void __stp_relay_wakeup_timer(unsigned long val) -+static void __stp_relay_wakeup_timer(stp_timer_callback_parameter_t unused) - { - #ifdef STP_BULKMODE - int i; -@@ -151,10 +151,8 @@ static void __stp_relay_wakeup_timer(unsigned long val) - static void __stp_relay_timer_init(void) - { - atomic_set(&_stp_relay_data.wakeup, 0); -- init_timer(&_stp_relay_data.timer); -+ timer_setup(&_stp_relay_data.timer, __stp_relay_wakeup_timer, 0); - _stp_relay_data.timer.expires = jiffies + STP_RELAY_TIMER_INTERVAL; -- _stp_relay_data.timer.function = __stp_relay_wakeup_timer; -- _stp_relay_data.timer.data = 0; - add_timer(&_stp_relay_data.timer); - smp_mb(); - } -diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c -index 3400f22..320fd18 100644 ---- a/runtime/transport/transport.c -+++ b/runtime/transport/transport.c -@@ -311,7 +311,7 @@ static void _stp_detach(void) - } - - --static void _stp_ctl_work_callback(unsigned long val); -+static void _stp_ctl_work_callback(stp_timer_callback_parameter_t unused); - - /* - * Called when stapio opens the control channel. -@@ -320,13 +320,12 @@ static void _stp_attach(void) - { - dbug_trans(1, "attach\n"); - _stp_pid = current->pid; -- if (_stp_namespaces_pid < 1) -- _stp_namespaces_pid = _stp_pid; -+ if (_stp_namespaces_pid < 1) -+ _stp_namespaces_pid = _stp_pid; - _stp_transport_data_fs_overwrite(0); -- init_timer(&_stp_ctl_work_timer); -+ -+ timer_setup(&_stp_ctl_work_timer, _stp_ctl_work_callback, 0); - _stp_ctl_work_timer.expires = jiffies + STP_CTL_TIMER_INTERVAL; -- _stp_ctl_work_timer.function = _stp_ctl_work_callback; -- _stp_ctl_work_timer.data= 0; - add_timer(&_stp_ctl_work_timer); - } - -@@ -341,7 +340,7 @@ static void _stp_attach(void) - * notified. Reschedules itself if someone is still attached - * to the cmd channel. - */ --static void _stp_ctl_work_callback(unsigned long val) -+static void _stp_ctl_work_callback(stp_timer_callback_parameter_t unused) - { - int do_io = 0; - unsigned long flags; -diff --git a/tapset-timers.cxx b/tapset-timers.cxx -index 1a40bcd..0ab4d69 100644 ---- a/tapset-timers.cxx -+++ b/tapset-timers.cxx -@@ -122,9 +122,13 @@ timer_derived_probe_group::emit_module_decls (systemtap_session& s) - s.op->newline(-1) << "};"; - s.op->newline(); - -- s.op->newline() << "static void enter_timer_probe (unsigned long val) {"; -+ s.op->newline() << "static void enter_timer_probe (stp_timer_callback_parameter_t val) {"; -+ s.op->newline() << "#if defined(TIMER_TRACE_FLAGMASK)"; -+ s.op->newline(1) << "struct stap_timer_probe* stp = container_of(val, struct stap_timer_probe, timer_list);"; -+ s.op->newline(-1) << "#else"; - s.op->newline(1) << "struct stap_timer_probe* stp = & stap_timer_probes [val];"; -- s.op->newline() << "if ((atomic_read (session_state()) == STAP_SESSION_STARTING) ||"; -+ s.op->newline(-1) << "#endif"; -+ s.op->newline(1) << "if ((atomic_read (session_state()) == STAP_SESSION_STARTING) ||"; - s.op->newline() << " (atomic_read (session_state()) == STAP_SESSION_RUNNING))"; - s.op->newline(1) << "mod_timer (& stp->timer_list, jiffies + "; - emit_interval (s.op); -@@ -148,9 +152,11 @@ timer_derived_probe_group::emit_module_init (systemtap_session& s) - s.op->newline() << "for (i=0; i<" << probes.size() << "; i++) {"; - s.op->newline(1) << "struct stap_timer_probe* stp = & stap_timer_probes [i];"; - s.op->newline() << "probe_point = stp->probe->pp;"; -- s.op->newline() << "init_timer (& stp->timer_list);"; -- s.op->newline() << "stp->timer_list.function = & enter_timer_probe;"; -+ -+ s.op->newline() << "timer_setup (& stp->timer_list, enter_timer_probe, 0);"; -+ s.op->newline() << "#if !defined(TIMER_TRACE_FLAGMASK)"; - s.op->newline() << "stp->timer_list.data = i;"; // NB: important! -+ s.op->newline() << "#endif"; - // copy timer renew calculations from above :-( - s.op->newline() << "stp->timer_list.expires = jiffies + "; - emit_interval (s.op); -diff --git a/tapset/linux/scsi.stp b/tapset/linux/scsi.stp -index 44f686c..3577942 100644 ---- a/tapset/linux/scsi.stp -+++ b/tapset/linux/scsi.stp -@@ -14,7 +14,7 @@ - #include - #include - #include --#include -+#include "linux/timer_compatibility.h" - #include - %} - --- -2.9.3 - diff --git a/rpminspect.yaml b/rpminspect.yaml new file mode 100644 index 0000000..9ecef15 --- /dev/null +++ b/rpminspect.yaml @@ -0,0 +1,26 @@ + + +# exclude ownership tests; we need setuid/gids as is +ownership: + ignore: + - /usr/bin/staprun + +# this SO is for JNI only, so annobin/etc. don't know what to do with it +annocheck: + ignore: + - /usr/libexec/systemtap/libHelperSDT.so + +# bytecode version 43 vs 55 complaint is a misconfiguration according to msrb +javabytecode: + ignore: + - /usr/libexec/systemtap/HelperSDT.jar + +# setuid binary +permissions: + ignore: + - /usr/bin/staprun + +# some stap scripts are wrapped within /bin/sh that confuses rpminspect +shellsyntax: + ignore: + - *.stp diff --git a/sources b/sources index eabc5df..a210820 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (systemtap-3.2.tar.gz) = 6036ed1b5189fd3fcfdeeaa526a3539ac632d0b687a063b5e3424e8f613bfc2c8d079742b0262b547128e97e30e4beb61898b23761657aee519e61346ac92e94 +SHA512 (systemtap-5.4.tar.gz) = 5869fe3735e44be65ba7895a46b4ea66fcdcc21ed2ab0673c62d822730553837f816d82fd78eeca4bfe6f17fdeaa12eb2f94c0b0b7ebb8c495c961f0b6935785 diff --git a/systemtap-gcc16.patch b/systemtap-gcc16.patch new file mode 100644 index 0000000..c336ce6 --- /dev/null +++ b/systemtap-gcc16.patch @@ -0,0 +1,13 @@ +--- systemtap-5.4/configure~ 2025-10-30 14:47:35.000000000 +0000 ++++ systemtap-5.4/configure 2026-01-13 18:53:20.466037572 +0000 +@@ -3121,8 +3121,8 @@ + } + { + // Unicode literals +- char const *utf8 = u8"UTF-8 string \u2500"; +- char16_t const *utf16 = u"UTF-8 string \u2500"; ++ auto const *utf8 = u8"UTF-8 string \u2500"; ++ char16_t const *utf16 = u"UTF-16 string \u2500"; + char32_t const *utf32 = U"UTF-32 string \u2500"; + } + ' diff --git a/systemtap.spec b/systemtap.spec index 73ec13c..577dc67 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -1,19 +1,20 @@ +# work around flakey gcc warnings +%{!?with_Werror: %global with_Werror 0} %{!?with_sqlite: %global with_sqlite 0%{?fedora} >= 17 || 0%{?rhel} >= 7} -%{!?with_docs: %global with_docs 1} +# prefer prebuilt docs +%{!?with_docs: %global with_docs 0} %{!?with_htmldocs: %global with_htmldocs 0} %{!?with_monitor: %global with_monitor 1} # crash is not available -%ifarch ppc ppc64 %{sparc} aarch64 ppc64le %{mips} +%ifarch ppc ppc64 %{sparc} %{mips} %{riscv} %{!?with_crash: %global with_crash 0} %else %{!?with_crash: %global with_crash 1} %endif %{!?with_rpm: %global with_rpm 1} -%{!?with_bundled_elfutils: %global with_bundled_elfutils 0} -%{!?elfutils_version: %global elfutils_version 0.142} -%{!?pie_supported: %global pie_supported 1} -%{!?with_boost: %global with_boost 0} -%ifarch %{ix86} x86_64 ppc ppc64 +%{!?elfutils_version: %global elfutils_version 0.179} +%{!?with_boost: %global with_boost 1} +%ifarch x86_64 ppc ppc64 ppc64le aarch64 %{!?with_dyninst: %global with_dyninst 0%{?fedora} >= 18 || 0%{?rhel} >= 7} %else %{!?with_dyninst: %global with_dyninst 0} @@ -21,7 +22,12 @@ %{!?with_bpf: %global with_bpf 0%{?fedora} >= 22 || 0%{?rhel} >= 8} %{!?with_systemd: %global with_systemd 0%{?fedora} >= 19 || 0%{?rhel} >= 7} %{!?with_emacsvim: %global with_emacsvim 0%{?fedora} >= 19 || 0%{?rhel} >= 7} +%ifarch %{ix86} +%{!?with_java: %global with_java 0} +%else %{!?with_java: %global with_java 0%{?fedora} >= 19 || 0%{?rhel} >= 7} +%endif +%{!?with_debuginfod: %global with_debuginfod 0%{?fedora} >= 25 || 0%{?rhel} >= 7} %{!?with_virthost: %global with_virthost 0%{?fedora} >= 19 || 0%{?rhel} >= 7} %{!?with_virtguest: %global with_virtguest 1} %{!?with_dracut: %global with_dracut 0%{?fedora} >= 19 || 0%{?rhel} >= 6} @@ -33,18 +39,28 @@ %{!?with_openssl: %global with_openssl 0} %endif %{!?with_pyparsing: %global with_pyparsing 0%{?fedora} >= 18 || 0%{?rhel} >= 7} -%{!?with_python3: %global with_python3 0%{?fedora} >= 23} -%{!?with_python2_probes: %global with_python2_probes 1} -%{!?with_python3_probes: %global with_python3_probes 0%{?fedora} >= 23} +%{!?with_python3: %global with_python3 0%{?fedora} >= 23 || 0%{?rhel} > 7} +%{!?with_python2_probes: %global with_python2_probes (0%{?fedora} <= 28 && 0%{?rhel} <= 7)} +%{!?with_python3_probes: %global with_python3_probes (0%{?fedora} >= 23 || 0%{?rhel} > 7)} %{!?with_httpd: %global with_httpd 0} +%{!?with_specific_python: %global with_specific_python 0%{?fedora} >= 31} +%{!?with_sysusers: %global with_sysusers 0%{?fedora} >= 32 || 0%{?rhel} >= 9} +# NB: can't turn this on by default on any distro version whose builder system +# may run kernels different than the distro version itself. +%{!?with_check: %global with_check 0} + +# Virt is supported on these arches, even on el7, but it's not in core EL7 +%if 0%{?rhel} && 0%{?rhel} <= 7 %ifarch ppc64le aarch64 %global with_virthost 0 %endif +%endif %if 0%{?fedora} >= 18 || 0%{?rhel} >= 6 %define initdir %{_initddir} -%else # RHEL5 doesn't know _initddir +%else + # RHEL5 doesn't know _initddir %define initdir %{_initrddir} %endif @@ -54,8 +70,6 @@ %else %if 0%{?rhel} >= 6 %define udevrulesdir /lib/udev/rules.d - %else # RHEL5 - %define udevrulesdir /etc/udev/rules.d %endif %endif %endif @@ -66,22 +80,60 @@ %define dracutstap %{_prefix}/share/dracut/modules.d/99stap %endif -%if 0%{?rhel} >= 6 +%if 0%{?rhel} == 6 || 0%{?rhel} == 7 %define dracutbindir /sbin %else %define dracutbindir %{_bindir} %endif +%{!?_rpmmacrodir: %define _rpmmacrodir %{_rpmconfigdir}/macros.d} + +# To avoid testsuite/*/*.stp has shebang which doesn't start with '/' +%define __brp_mangle_shebangs_exclude_from .stp$ + +%define _systemtap_runtime_preinstall \ +# See systemd-sysusers(8) sysusers.d(5)\ +\ +g stapusr 156\ +g stapsys 157\ +g stapdev 158\ +g stapunpriv 159\ +u stapunpriv 159 "systemtap unprivileged user" /var/lib/stapunpriv /sbin/nologin\ +m stapunpriv stapunpriv + +%define _systemtap_server_preinstall \ +# See systemd-sysusers(8) sysusers.d(5)\ +\ +g stap-server -\ +u stap-server - "systemtap compiler server" /var/lib/stap-server /sbin/nologin\ +m stap-server stap-server + + +%define _systemtap_testsuite_preinstall \ +# See systemd-sysusers(8) sysusers.d(5)\ +\ +u stapusr - "systemtap testsuite user" / /sbin/nologin\ +u stapsys - "systemtap testsuite user" / /sbin/nologin\ +u stapdev - "systemtap testsuite user" / /sbin/nologin\ +m stapusr stapusr\ +m stapsys stapusr\ +m stapsys stapsys\ +m stapdev stapusr\ +m stapdev stapdev + +%define _systemtap_server_preinstall_tmpfiles \ +# See systemd-tmpfiles(8) tmpfiles.d(5)\ +d /var/lib/stap-server 0750 stap-server stap-server -\ +d /var/lib/stap-server/.systemtap 0700 stap-server stap-server -\ +d /var/log/stap-server 0755 stap-server stap-server -\ +f /var/log/stap-server/log 0644 stap-server stap-server - + Name: systemtap -Version: 3.2 -Release: 3%{?dist} +# PRERELEASE +Version: 5.4 +Release: 2%{?release_override}%{?dist} # for version, see also configure.ac -Patch10: rhbz1504009.patch - -# redhat: https://bugzilla.redhat.com/show_bug.cgi?id=1546563 -# upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=22551 -Patch11: rhbz1546563.patch # Packaging abstract: # @@ -91,13 +143,15 @@ Patch11: rhbz1546563.patch # systemtap-runtime /usr/bin/staprun, /usr/bin/stapsh, /usr/bin/stapdyn # systemtap-client /usr/bin/stap, samples, docs, tapset(bonus), req:-runtime # systemtap-initscript /etc/init.d/systemtap, dracut module, req:systemtap -# systemtap-sdt-devel /usr/include/sys/sdt.h /usr/bin/dtrace +# systemtap-sdt-devel /usr/include/sys/sdt.h +# systemtap-sdt-dtrace /usr/bin/dtrace # systemtap-testsuite /usr/share/systemtap/testsuite*, req:systemtap, req:sdt-devel # systemtap-runtime-java libHelperSDT.so, HelperSDT.jar, stapbm, req:-runtime # systemtap-runtime-virthost /usr/bin/stapvirt, req:libvirt req:libxml2 # systemtap-runtime-virtguest udev rules, init scripts/systemd service, req:-runtime # systemtap-runtime-python2 HelperSDT python2 module, req:-runtime # systemtap-runtime-python3 HelperSDT python3 module, req:-runtime +# systemtap-jupyter /usr/bin/stap-jupyter-* interactive-notebook req:systemtap # # Typical scenarios: # @@ -111,19 +165,24 @@ Patch11: rhbz1546563.patch # intermediary stap-server for --use-server: systemtap-server (-devel unused) Summary: Programmable system-wide instrumentation system -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz +Patch0: systemtap-gcc16.patch # Build* -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: make BuildRequires: gcc-c++ +BuildRequires: cpio BuildRequires: gettext-devel BuildRequires: pkgconfig(nss) BuildRequires: pkgconfig(avahi-client) +%if %{with_debuginfod} +BuildRequires: pkgconfig(libdebuginfod) +BuildRequires: pkgconfig(json-c) +%endif %if %{with_dyninst} -BuildRequires: dyninst-devel >= 8.0 +BuildRequires: dyninst-devel >= 10.0 BuildRequires: pkgconfig(libselinux) %endif %if %{with_sqlite} @@ -137,31 +196,19 @@ BuildRequires: pkgconfig(ncurses) BuildRequires: systemd %endif # Needed for libstd++ < 4.0, without -%if %{with_boost} BuildRequires: boost-devel -%endif %if %{with_crash} BuildRequires: crash-devel zlib-devel %endif %if %{with_rpm} BuildRequires: rpm-devel %endif -%if %{with_bundled_elfutils} -Source1: elfutils-%{elfutils_version}.tar.gz -Patch1: elfutils-portability.patch -BuildRequires: m4 -%global setup_elfutils -a1 -%else BuildRequires: elfutils-devel >= %{elfutils_version} -%endif %if %{with_docs} BuildRequires: /usr/bin/latex /usr/bin/dvips /usr/bin/ps2pdf %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 BuildRequires: tex(fullpage.sty) tex(fancybox.sty) tex(bchr7t.tfm) tex(graphicx.sty) %endif -# For the html.sty mentioned in the .tex files, even though latex2html is -# not run during the build, only during manual scripts/update-docs runs: -BuildRequires: latex2html %if %{with_htmldocs} # On F10, xmlto's pdf support was broken off into a sub-package, # called 'xmlto-tex'. To avoid a specific F10 BuildReq, we'll do a @@ -170,10 +217,11 @@ BuildRequires: xmlto /usr/share/xmlto/format/fo/pdf %endif %endif %if %{with_emacsvim} -BuildRequires: emacs +# for _emacs_sitelispdir macros etc. +BuildRequires: emacs-common %endif %if %{with_java} -BuildRequires: jpackage-utils java-devel +BuildRequires: java-devel %endif %if %{with_virthost} # BuildRequires: libvirt-devel >= 1.0.2 @@ -181,13 +229,17 @@ BuildRequires: pkgconfig(libvirt) BuildRequires: pkgconfig(libxml-2.0) %endif BuildRequires: readline-devel -%if 0%{?rhel} <= 5 -BuildRequires: pkgconfig(ncurses) -%endif %if %{with_python2_probes} -BuildRequires: python-devel +BuildRequires: python2-devel +%if 0%{?fedora} >= 1 +BuildRequires: python2-setuptools +%else BuildRequires: python-setuptools %endif +%endif +%if %{with_python3} +BuildRequires: python3 +%endif %if %{with_python3_probes} BuildRequires: python3-devel BuildRequires: python3-setuptools @@ -197,6 +249,16 @@ BuildRequires: python3-setuptools BuildRequires: libmicrohttpd-devel BuildRequires: libuuid-devel %endif +%if %{with_sysusers} +BuildRequires: systemd-rpm-macros +%endif +%if %{with_check} +BuildRequires: kernel-devel +# and some of the same Requires: as below +BuildRequires: dejagnu gcc make +%endif + + # Install requirements Requires: systemtap-client = %{version}-%{release} @@ -212,26 +274,26 @@ the components needed to locally develop and execute systemtap scripts. %package server Summary: Instrumentation System Server -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ Requires: systemtap-devel = %{version}-%{release} -# On RHEL[45], /bin/mktemp comes from the 'mktemp' package. On newer -# distributions, /bin/mktemp comes from the 'coreutils' package. To -# avoid a specific RHEL[45] Requires, we'll do a file-based require. -Requires: nss /bin/mktemp +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(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +Requires(postun): initscripts %endif %description server @@ -242,15 +304,23 @@ compiles systemtap scripts to kernel objects on their demand. %package devel Summary: Programmable system-wide instrumentation system - development headers, tools -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ -# The virtual provide 'kernel-devel-uname-r' tries to get the right -# kernel variant (kernel-PAE, kernel-debug, etc.) devel package -# installed. +License: GPL-2.0-or-later AND GPL-2.0-only AND BSD-3-Clause AND LGPL-2.1-only AND BSD-2-Clause +URL: https://sourceware.org/systemtap/ + +%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20 +Recommends: (kernel-debug-devel if kernel-debug) +Recommends: (kernel-devel if kernel) +%else Requires: kernel-devel-uname-r -%{?fedora:Suggests: kernel-devel} +%endif + Requires: gcc make +# for compiling --runtime=dyninst sripts, need elfutils headers, bz1930973 +Requires: elfutils-devel >= %{elfutils_version} + +Conflicts: systemtap-client < %{version}-%{release} +Conflicts: systemtap-server < %{version}-%{release} +Conflicts: systemtap-runtime < %{version}-%{release} # Suggest: kernel-debuginfo %description devel @@ -264,10 +334,12 @@ a copy of the standard tapset library and the runtime library C files. %package runtime Summary: Programmable system-wide instrumentation system - runtime -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later +URL: https://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 @@ -277,35 +349,42 @@ using a local or remote systemtap-devel installation. %package client Summary: Programmable system-wide instrumentation system - client -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later AND GPL-2.0-only AND BSD-3-Clause AND LGPL-2.1-only AND GFDL-1.2-or-later AND BSD-2-Clause +URL: https://sourceware.org/systemtap/ 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 %description client -This package contains/requires the components needed to develop -systemtap scripts, and compile them using a local systemtap-devel -or a remote systemtap-server installation, then run them using a -local or remote systemtap-runtime. It includes script samples and +This package contains/requires only the components needed to +use systemtap scripts by compiling them using a local or a remote +systemtap-server service, then run them using a local or +remote systemtap-runtime. It includes script samples and documentation, and a copy of the tapset library for reference. - +It does NOT include all the components for running a systemtap +script in a self-contained fashion; for that, use the -devel +subpackage instead. %package initscript Summary: Systemtap Initscripts -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ Requires: systemtap = %{version}-%{release} +%if %{with_systemd} +Requires: systemd +%else Requires(post): chkconfig Requires(preun): chkconfig Requires(preun): initscripts Requires(postun): initscripts +%endif %description initscript This package includes a SysVinit script to launch selected systemtap @@ -314,34 +393,59 @@ boot-time probing if supported. %package sdt-devel -Summary: Static probe support tools -Group: Development/System -License: GPLv2+ and Public Domain -URL: http://sourceware.org/systemtap/ -%if %{with_pyparsing} -%if %{with_python3} -Requires: python3-pyparsing -%else -Requires: pyparsing -%endif +Summary: Static probe support header files +License: GPL-2.0-or-later AND CC0-1.0 +URL: https://sourceware.org/systemtap/ +%if 0%{?rhel} && 0%{?rhel} <= 10 +# for RHEL buildability compatibility, pull in sdt-dtrace at all times +Requires: systemtap-sdt-dtrace = %{version}-%{release} %endif %description sdt-devel This package includes the header file used for static -instrumentation compiled into userspace programs and libraries, along -with the optional dtrace-compatibility preprocessor to process related -.d files into tracing-macro-laden .h headers. +instrumentation compiled into userspace programs. + + +%package sdt-dtrace +Summary: Static probe support dtrace tool +License: GPL-2.0-or-later AND CC0-1.0 +URL: https://sourceware.org/systemtap/ +Provides: dtrace = %{version}-%{release} +%if %{with_pyparsing} +%if %{with_python3} +Requires: python3-pyparsing +%else +%if 0%{?rhel} >= 7 +Requires: pyparsing +%else +Requires: python2-pyparsing +%endif +%endif +%endif + +%description sdt-dtrace +This package includes the dtrace-compatibility preprocessor +to process related .d files into tracing-macro-laden .h headers. %package testsuite Summary: Instrumentation System Testsuite -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later AND MIT +URL: https://sourceware.org/systemtap/ Requires: systemtap = %{version}-%{release} Requires: systemtap-sdt-devel = %{version}-%{release} Requires: systemtap-server = %{version}-%{release} -Requires: dejagnu which elfutils grep nc +Requires: dejagnu which elfutils grep nc wget +%if %{with_debuginfod} +Requires: elfutils-debuginfod +%endif +# work around fedora ci gating kvetching about i686<->x86-64 conflicts +%ifarch x86_64 +Conflicts: systemtap-testsuite = %{version}-%{release}.i686 +%endif +%ifarch i686 +Conflicts: systemtap-testsuite = %{version}-%{release}.x86_64 +%endif Requires: gcc gcc-c++ make glibc-devel # testsuite/systemtap.base/ptrace.exp needs strace Requires: strace @@ -372,7 +476,12 @@ Requires: systemtap-runtime-python2 = %{version}-%{release} Requires: systemtap-runtime-python3 = %{version}-%{release} %endif %ifarch x86_64 +%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20 +# fweimer, personal correspondence +Recommends: glibc-devel(x86-32) +%else Requires: /usr/lib/libc.so +%endif # ... and /usr/lib/libgcc_s.so.* # ... and /usr/lib/libstdc++.so.* %endif @@ -393,25 +502,30 @@ systemtap on the current system. %if %{with_java} %package runtime-java Summary: Systemtap Java Runtime Support -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ Requires: systemtap-runtime = %{version}-%{release} +# work around fedora ci gating kvetching about i686<->x86-64 conflicts +%ifarch x86_64 +Conflicts: systemtap-runtime = %{version}-%{release}.i686 +%endif +%ifarch i686 +Conflicts: systemtap-runtime = %{version}-%{release}.x86_64 +%endif Requires: byteman > 2.0 -Requires: net-tools +Requires: iproute +Requires: java-devel %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} %package runtime-python2 Summary: Systemtap Python 2 Runtime Support -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ Requires: systemtap-runtime = %{version}-%{release} %description runtime-python2 @@ -422,23 +536,40 @@ that probe python 2 processes. %if %{with_python3_probes} %package runtime-python3 Summary: Systemtap Python 3 Runtime Support -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ Requires: systemtap-runtime = %{version}-%{release} +%if ! (%{with_python2_probes}) +# Provide an clean upgrade path when the python2 package is removed +Obsoletes: %{name}-runtime-python2 < %{version}-%{release} +%endif + %description runtime-python3 This package includes support files needed to run systemtap scripts that probe python 3 processes. %endif +%if %{with_python3_probes} +%package exporter +Summary: Systemtap-prometheus interoperation mechanism +License: GPL-2.0-or-later +URL: https://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 -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ -Requires: libvirt >= 1.0.2 +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ +# only require libvirt-libs really +#Requires: libvirt >= 1.0.2 Requires: libxml2 %description runtime-virthost @@ -450,9 +581,8 @@ connection. %if %{with_virtguest} %package runtime-virtguest Summary: Systemtap Cross-VM Instrumentation - guest -Group: Development/System -License: GPLv2+ -URL: http://sourceware.org/systemtap/ +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ Requires: systemtap-runtime = %{version}-%{release} %if %{with_systemd} Requires(post): findutils coreutils @@ -469,41 +599,25 @@ This package installs the services necessary on a virtual machine for a systemtap-runtime-virthost machine to execute systemtap scripts. %endif +%package jupyter +Summary: ISystemtap jupyter kernel and examples +License: GPL-2.0-or-later +URL: https://sourceware.org/systemtap/ +Requires: systemtap = %{version}-%{release} + +%description jupyter +This package includes files needed to build and run +the interactive systemtap Jupyter kernel, either locally +or within a container. + # ------------------------------------------------------------------------ %prep -%setup -q %{?setup_elfutils} - -%if %{with_bundled_elfutils} -cd elfutils-%{elfutils_version} -%patch1 -p1 -sleep 1 -find . \( -name Makefile.in -o -name aclocal.m4 \) -print | xargs touch -sleep 1 -find . \( -name configure -o -name config.h.in \) -print | xargs touch -cd .. -%endif - -%patch10 -p1 -%patch11 -p1 +%setup -q +%patch 0 -p1 %build -%if %{with_bundled_elfutils} -# Build our own copy of elfutils. -%global elfutils_config --with-elfutils=elfutils-%{elfutils_version} - -# We have to prevent the standard dependency generation from identifying -# our private elfutils libraries in our provides and requires. -%global _use_internal_dependency_generator 0 -%global filter_eulibs() /bin/sh -c "%{1} | sed '/libelf/d;/libdw/d;/libebl/d'" -%global __find_provides %{filter_eulibs /usr/lib/rpm/find-provides} -%global __find_requires %{filter_eulibs /usr/lib/rpm/find-requires} - -# This will be needed for running stap when not installed, for the test suite. -%global elfutils_mflags LD_LIBRARY_PATH=`pwd`/lib-elfutils -%endif - # Enable/disable the dyninst pure-userspace backend %if %{with_dyninst} %global dyninst_config --with-dyninst @@ -511,6 +625,13 @@ cd .. %global dyninst_config --without-dyninst %endif +# Enable/disable the dyninst pure-userspace backend +%if %{with_Werror} +%global Werror_config --enable-Werror +%else +%global Werror_config --disable-Werror +%endif + # Enable/disable the sqlite coverage testing support %if %{with_sqlite} %global sqlite_config --enable-sqlite @@ -518,6 +639,13 @@ cd .. %global sqlite_config --disable-sqlite %endif +%if %{with_debuginfod} +%global debuginfod_config --with-debuginfod +%else +%global debuginfod_config --without-debuginfod +%endif + + # Enable/disable the crash extension %if %{with_crash} %global crash_config --enable-crash @@ -539,17 +667,9 @@ cd .. %global docs_config --enable-docs --disable-htmldocs %endif %else -%global docs_config --disable-docs +%global docs_config --enable-docs=prebuilt %endif -# Enable pie as configure defaults to disabling it -%if %{pie_supported} -%global pie_config --enable-pie -%else -%global pie_config --disable-pie -%endif - - %if %{with_java} %global java_config --with-java=%{_jvmdir}/java %else @@ -590,19 +710,26 @@ 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}" -make %{?_smp_mflags} +%configure %{Werror_config} %{dyninst_config} %{sqlite_config} %{crash_config} %{docs_config} %{rpm_config} %{java_config} %{virt_config} %{dracut_config} %{python3_config} %{python2_probes_config} %{python3_probes_config} %{httpd_config} %{bpf_config} %{debuginfod_config} --disable-silent-rules --with-extra-version="rpm %{version}-%{release}" +make %{?_smp_mflags} V=1 -%if %{with_emacsvim} -%{_emacs_bytecompile} emacs/systemtap-mode.el -%endif %install -rm -rf ${RPM_BUILD_ROOT} make DESTDIR=$RPM_BUILD_ROOT install + +%if ! (%{with_python3}) +rm -v $RPM_BUILD_ROOT%{_bindir}/stap-profile-annotate +%endif + %find_lang %{name} for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do dir=$(echo $dir | sed -e "s|^$RPM_BUILD_ROOT||") @@ -610,6 +737,16 @@ for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do echo "%%lang($lang) $dir/man*/*" >> %{name}.lang done +%if %{with_sysusers} +mkdir -p %{buildroot}%{_sysusersdir} +echo '%_systemtap_runtime_preinstall' > %{buildroot}%{_sysusersdir}/systemtap-runtime.conf +echo '%_systemtap_server_preinstall' > %{buildroot}%{_sysusersdir}/systemtap-server.conf +echo '%_systemtap_testsuite_preinstall' > %{buildroot}%{_sysusersdir}/systemtap-testsuite.conf +mkdir -p %{buildroot}%{_tmpfilesdir} +echo '%_systemtap_server_preinstall_tmpfiles' > %{buildroot}%{_tmpfilesdir}/systemtap-server.conf +%endif + + ln -s %{_datadir}/systemtap/examples # Fix paths in the example scripts. @@ -624,25 +761,24 @@ find testsuite -type f -name '.gitignore' -print0 | xargs -0 rm -f # permissions back to 04110 in the %files section below. chmod 755 $RPM_BUILD_ROOT%{_bindir}/staprun -#install the useful stap-prep script -install -c -m 755 stap-prep $RPM_BUILD_ROOT%{_bindir}/stap-prep - # Copy over the testsuite cp -rp testsuite $RPM_BUILD_ROOT%{_datadir}/systemtap -%if %{with_docs} # We want the manuals in the special doc dir, not the generic doc install dir. # We build it in place and then move it away so it doesn't get installed # twice. rpm can specify itself where the (versioned) docs go with the # %doc directive. mkdir docs.installed mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/*.pdf docs.installed/ +%if %{with_docs} %if %{with_htmldocs} mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/tapsets docs.installed/ mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/SystemTap_Beginners_Guide docs.installed/ %endif %endif +install -D -m 644 macros.systemtap $RPM_BUILD_ROOT%{_rpmmacrodir}/macros.systemtap + mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/stap-server mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/stap-server mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/stap-server/.systemtap @@ -652,12 +788,30 @@ 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 +# RHBZ2070857 +mkdir -p $RPM_BUILD_ROOT%{_presetdir} +echo 'enable systemtap.service' > $RPM_BUILD_ROOT%{_presetdir}/42-systemtap.preset +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 @@ -710,20 +864,63 @@ done touch $RPM_BUILD_ROOT%{dracutstap}/params.conf %endif -%clean -rm -rf ${RPM_BUILD_ROOT} +%if %{with_specific_python} +# Some files got ambiguous python shebangs, we fix them after everything else is done +%py3_shebang_fix %{buildroot}%{python3_sitearch} %{buildroot}%{_bindir}/* +%endif + +%check +%if %{with_check} +make check RUNTESTFLAGS=environment_sanity.exp +%endif + %pre runtime -getent group stapusr >/dev/null || groupadd -g 156 -r stapusr 2>/dev/null || groupadd -r stapusr -getent group stapsys >/dev/null || groupadd -g 157 -r stapsys 2>/dev/null || groupadd -r stapsys -getent group stapdev >/dev/null || groupadd -g 158 -r stapdev 2>/dev/null || groupadd -r stapdev +%if %{with_sysusers} +%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11) +echo '%_systemtap_runtime_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-runtime.conf - exit 0 +%endif +%else +getent group stapusr >/dev/null || groupadd -f -g 156 -r stapusr +getent group stapsys >/dev/null || groupadd -f -g 157 -r stapsys +getent group stapdev >/dev/null || groupadd -f -g 158 -r stapdev +getent passwd stapunpriv >/dev/null || \ + useradd -c "Systemtap Unprivileged User" -u 159 -g stapunpriv -d %{_localstatedir}/lib/stapunpriv -r -s /sbin/nologin stapunpriv 2>/dev/null || \ + useradd -c "Systemtap Unprivileged User" -g stapunpriv -d %{_localstatedir}/lib/stapunpriv -r -s /sbin/nologin stapunpriv +exit 0 +%endif %pre server -getent group stap-server >/dev/null || groupadd -g 155 -r stap-server 2>/dev/null || groupadd -r stap-server +%if %{with_sysusers} +%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11) +echo '%_systemtap_server_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-server.conf - +echo '%_systemtap_server_preinstall_tmpfiles' | systemd-tmpfiles --replace=%{_tmpfilesdir}/systemtap-server.conf - +exit 0 +%endif +%else +getent group stap-server >/dev/null || groupadd -f -g 155 -r stap-server getent passwd stap-server >/dev/null || \ useradd -c "Systemtap Compile Server" -u 155 -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server 2>/dev/null || \ useradd -c "Systemtap Compile Server" -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server +exit 0 +%endif + +%pre testsuite +%if %{with_sysusers} +%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11) +echo '%_systemtap_testsuite_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-testsuite.conf - +exit 0 +%endif +%else +getent passwd stapusr >/dev/null || \ + useradd -c "Systemtap 'stapusr' User" -g stapusr -r -s /sbin/nologin stapusr +getent passwd stapsys >/dev/null || \ + useradd -c "Systemtap 'stapsys' User" -g stapsys -G stapusr -r -s /sbin/nologin stapsys +getent passwd stapdev >/dev/null || \ + useradd -c "Systemtap 'stapdev' User" -g stapdev -G stapusr -r -s /sbin/nologin stapdev +exit 0 +%endif %post server @@ -743,7 +940,8 @@ if [ ! -f ~stap-server/.systemtap/rc ]; then numcpu=`/usr/bin/getconf _NPROCESSORS_ONLN` if [ -z "$numcpu" -o "$numcpu" -lt 1 ]; then numcpu=1; fi nproc=`expr $numcpu \* 30` - echo "--rlimit-as=614400000 --rlimit-cpu=60 --rlimit-nproc=$nproc --rlimit-stack=1024000 --rlimit-fsize=51200000" > ~stap-server/.systemtap/rc + # PR29661 -> 4G + echo "--rlimit-as=4294967296 --rlimit-cpu=60 --rlimit-nproc=$nproc --rlimit-stack=1024000 --rlimit-fsize=51200000" > ~stap-server/.systemtap/rc chown stap-server:stap-server ~stap-server/.systemtap/rc fi @@ -799,7 +997,8 @@ exit 0 %post initscript %if %{with_systemd} - /bin/systemctl enable systemtap.service >/dev/null 2>&1 || : + # RHBZ2070857 - use systemd presets instead + # /bin/systemctl enable systemtap.service >/dev/null 2>&1 || : %else /sbin/chkconfig --add systemtap %endif @@ -879,6 +1078,24 @@ if [ "$1" -ge "1" ]; then fi exit 0 +%if %{with_python3_probes} +%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 @@ -891,63 +1108,10 @@ exit 0 # ------------------------------------------------------------------------ -%if %{with_java} - -%triggerin runtime-java -- java-1.8.0-openjdk, java-1.7.0-openjdk, java-1.6.0-openjdk -for f in %{_libexecdir}/systemtap/libHelperSDT_*.so; do - %ifarch %{ix86} - arch=i386 - %else - arch=`basename $f | cut -f2 -d_ | cut -f1 -d.` - %endif - for archdir in %{_jvmdir}/*openjdk*/jre/lib/${arch}; do - if [ -d ${archdir} ]; then - ln -sf %{_libexecdir}/systemtap/libHelperSDT_${arch}.so ${archdir}/libHelperSDT_${arch}.so - ln -sf %{_libexecdir}/systemtap/HelperSDT.jar ${archdir}/../ext/HelperSDT.jar - fi - done -done - -%triggerun runtime-java -- java-1.8.0-openjdk, java-1.7.0-openjdk, java-1.6.0-openjdk -for f in %{_libexecdir}/systemtap/libHelperSDT_*.so; do - %ifarch %{ix86} - arch=i386 - %else - arch=`basename $f | cut -f2 -d_ | cut -f1 -d.` - %endif - for archdir in %{_jvmdir}/*openjdk*/jre/lib/${arch}; do - rm -f ${archdir}/libHelperSDT_${arch}.so - rm -f ${archdir}/../ext/HelperSDT.jar - done -done - -%triggerpostun runtime-java -- java-1.8.0-openjdk, java-1.7.0-openjdk, java-1.6.0-openjdk -# Restore links for any JDKs remaining after a package removal: -for f in %{_libexecdir}/systemtap/libHelperSDT_*.so; do - %ifarch %{ix86} - arch=i386 - %else - arch=`basename $f | cut -f2 -d_ | cut -f1 -d.` - %endif - for archdir in %{_jvmdir}/*openjdk*/jre/lib/${arch}; do - if [ -d ${archdir} ]; then - ln -sf %{_libexecdir}/systemtap/libHelperSDT_${arch}.so ${archdir}/libHelperSDT_${arch}.so - ln -sf %{_libexecdir}/systemtap/HelperSDT.jar ${archdir}/../ext/HelperSDT.jar - fi - done -done - -# XXX: analogous support for other types of JRE/JDK?? - -%endif - -# ------------------------------------------------------------------------ - -%files -f systemtap.lang -# The master "systemtap" rpm doesn't include any files. +%files +# The main "systemtap" rpm doesn't include any files. %files server -f systemtap.lang -%defattr(-,root,root) %{_bindir}/stap-server %dir %{_libexecdir}/systemtap %{_libexecdir}/systemtap/stap-serverd @@ -964,6 +1128,7 @@ done %if %{with_systemd} %{_unitdir}/stap-server.service %{_tmpfilesdir}/stap-server.conf +%{_tmpfilesdir}/systemtap-server.conf %else %{initdir}/stap-server %dir %{_sysconfdir}/stap-server/conf.d @@ -979,11 +1144,17 @@ done %doc README README.unprivileged AUTHORS NEWS %{!?_licensedir:%global license %%doc} %license COPYING +%if %{with_sysusers} +%{_sysusersdir}/systemtap-server.conf +%endif %files devel -f systemtap.lang %{_bindir}/stap %{_bindir}/stap-prep +%if %{with_python3} +%{_bindir}/stap-profile-annotate +%endif %{_bindir}/stap-report %dir %{_datadir}/systemtap %{_datadir}/systemtap/runtime @@ -999,28 +1170,24 @@ done %license COPYING %if %{with_java} %dir %{_libexecdir}/systemtap -%{_libexecdir}/systemtap/libHelperSDT_*.so -%endif -%if %{with_bundled_elfutils} -%dir %{_libdir}/systemtap -%{_libdir}/systemtap/lib*.so* +%{_libexecdir}/systemtap/libHelperSDT.so %endif %if %{with_emacsvim} %{_emacs_sitelispdir}/*.el* %{_emacs_sitestartdir}/systemtap-init.el -%{_datadir}/vim/vimfiles/*/*.vim +%{_datadir}/vim/vimfiles %endif # Notice that the stap-resolve-module-function.py file is used by # *both* the python2 and python3 subrpms. Both subrpms use that same # python script to help list python probes. %if %{with_python3_probes} || %{with_python2_probes} %{_libexecdir}/systemtap/python/stap-resolve-module-function.py +%dir %{_libexecdir}/systemtap/python %exclude %{_libexecdir}/systemtap/python/stap-resolve-module-function.py? %endif %files runtime -f systemtap.lang -%defattr(-,root,root) %attr(4110,root,stapusr) %{_bindir}/staprun %{_bindir}/stapsh %{_bindir}/stap-merge @@ -1053,16 +1220,18 @@ done %doc README README.security AUTHORS NEWS %{!?_licensedir:%global license %%doc} %license COPYING +%if %{with_sysusers} +%{_sysusersdir}/systemtap-runtime.conf +%endif %files client -f systemtap.lang -%defattr(-,root,root) %doc README README.unprivileged AUTHORS NEWS %{_datadir}/systemtap/examples %{!?_licensedir:%global license %%doc} %license COPYING -%if %{with_docs} %doc docs.installed/*.pdf +%if %{with_docs} %if %{with_htmldocs} %doc docs.installed/tapsets/*.html %doc docs.installed/SystemTap_Beginners_Guide @@ -1086,15 +1255,21 @@ done %files initscript -%defattr(-,root,root) +%if %{with_systemd} +%{_presetdir}/42-systemtap.preset +%{_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}/* @@ -1102,26 +1277,34 @@ done %files sdt-devel -%defattr(-,root,root) -%{_bindir}/dtrace %{_includedir}/sys/sdt.h %{_includedir}/sys/sdt-config.h -%{_mandir}/man1/dtrace.1* +%{_rpmmacrodir}/macros.systemtap %doc README AUTHORS NEWS %{!?_licensedir:%global license %%doc} %license COPYING +%files sdt-dtrace +%{_bindir}/dtrace +%doc README AUTHORS NEWS +%{!?_licensedir:%global license %%doc} +%license COPYING +%{_mandir}/man1/dtrace.1* + + %files testsuite -%defattr(-,root,root) %dir %{_datadir}/systemtap %{_datadir}/systemtap/testsuite +%if %{with_sysusers} +%{_sysusersdir}/systemtap-testsuite.conf +%endif %if %{with_java} %files runtime-java %dir %{_libexecdir}/systemtap -%{_libexecdir}/systemtap/libHelperSDT_*.so +%{_libexecdir}/systemtap/libHelperSDT.so %{_libexecdir}/systemtap/HelperSDT.jar %{_libexecdir}/systemtap/stapbm %endif @@ -1157,20 +1340,152 @@ done %endif %endif +%if %{with_python3_probes} +%files exporter +%{_sysconfdir}/stap-exporter +%{_sysconfdir}/sysconfig/stap-exporter +%{_unitdir}/stap-exporter.service +%{_mandir}/man8/stap-exporter.8* +%{_sbindir}/stap-exporter +%endif + +%files jupyter +%{_bindir}/stap-jupyter-container +%{_bindir}/stap-jupyter-install +%{_mandir}/man1/stap-jupyter.1* +%dir %{_datadir}/systemtap +%{_datadir}/systemtap/interactive-notebook + # ------------------------------------------------------------------------ # Future new-release entries should be of the form # * DDD MMM DD YYYY YOURNAME - V-R # - Upstream release, see wiki page below for detailed notes. -# http://sourceware.org/systemtap/wiki/SystemTapReleases +# https://sourceware.org/systemtap/wiki/SystemTapReleases # PRERELEASE %changelog -* Thu Feb 22 2018 Sergey Avseyev - 3.2-3 -- rhbz1546563 (backport fix for removed timers in kernel 4.15) +* Tue Jan 13 2026 Jonathan Wakely - 5.4-2 +- Patched to workaround Autoconf 2.72 incompatiblity with GCC 16 -* Fri Oct 20 2017 Frank Ch. Eigler - 3.2-2 -- rhbz1504009 (dtrace -G -o /dev/null) +* Fri Oct 31 2025 Frank Ch. Eigler - 5.4-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases + +* Mon Sep 22 2025 Frank Ch. Eigler - 5.4-17585496g86ab88eb +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Mon Sep 22 2025 Frank Ch. Eigler - 5.4-17585473g1fe4178d +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Fri Sep 19 2025 Python Maint - 5.3-5 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Fri Aug 15 2025 Python Maint - 5.3-4 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Fri Jul 25 2025 Fedora Release Engineering - 5.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jun 03 2025 Python Maint - 5.3-2 +- Rebuilt for Python 3.14 + +* Fri May 02 2025 Frank Ch. Eigler - 5.3-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases + +* Thu Feb 06 2025 Frank Ch. Eigler - 5.3~pre17373816g7a71d34b.5 +- Respin against dyninst 13 redux + +* Fri Jan 24 2025 Frank Ch. Eigler - 5.3~pre17373816g7a71d34b.3 +- Respin against dyninst 13, sans dyninst on i686. + +* Mon Jan 20 2025 Frank Ch. Eigler - 5.3-17373816g7a71d34b +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Mon Jan 20 2025 Frank Ch. Eigler - 5.3-17373794g3efe129d +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Sun Jan 19 2025 Frank Ch. Eigler - 5.3-17373422g9a48fbea +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Sun Jan 19 2025 Frank Ch. Eigler - 5.2-17373420g1e894ff0 +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Sun Jan 19 2025 Fedora Release Engineering - 5.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Nov 08 2024 Frank Ch. Eigler - 5.2-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases + +* Mon Oct 07 2024 William Cohen - 5.2-17283218gc5774e18 +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Tue Oct 01 2024 William Cohen - 5.2-17277956g0b7f6722 +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Fri Aug 30 2024 Frank Ch. Eigler - 5.2-17250223gd07e4284 +- Automated weekly rawhide release +- Applied spec changes from upstream git + +* Thu Aug 08 2024 Lumír Balhar - 5.2-pre +- Final split of sdt-dtrace and sdt-devel (rhbz#2296275) + https://fedoraproject.org/wiki/Changes/Separate_dtrace_package + +* Fri Apr 26 2024 Frank Ch. Eigler - 5.1-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases + +* Sat Nov 04 2023 Frank Ch. Eigler - 5.0-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases +- migrated to SPDX license + +* Fri Apr 28 2023 Frank Ch. Eigler - 4.9-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases + +* Thu Nov 03 2022 Serhei Makarov - 4.8-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases + +* Mon May 02 2022 Frank Ch. Eigler - 4.7-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases + +* Mon Nov 15 2021 Serhei Makarov - 4.6-1 +- Upstream release, see wiki page below for detailed notes. + https://sourceware.org/systemtap/wiki/SystemTapReleases + +* Fri May 07 2021 Serhei Makarov - 4.5-1 +- Upstream release. + +* Mon Nov 09 2020 Frank Ch. Eigler - 4.4-1 +- Upstream release. + +* Thu Jun 11 2020 Frank Ch. Eigler - 4.3-1 +- Upstream release. + +* Mon Nov 18 2019 Sagar Patel - 4.2-1 +- Upstream release. + +* Tue May 07 2019 Serguei Makarov - 4.1-1 +- Upstream release. + +* Sat Oct 13 2018 Frank Ch. Eigler - 4.0-1 +- Upstream release. + +* Thu Jun 07 2018 Frank Ch. Eigler - 3.3-1 +- Upstream release. * Wed Oct 18 2017 Frank Ch. Eigler - 3.2-1 - Upstream release. @@ -1194,7 +1509,7 @@ done - Upstream release. * Mon Jul 07 2014 Josh Stone -- Flip with_dyninst to an %ifarch whitelist. +- Flip with_dyninst to an %%ifarch passlist. * Wed Apr 30 2014 Jonathan Lebon - 2.5-1 - Upstream release.