--- /dev/null
+diff -urpa systemtap-3.2.orig/configure.ac systemtap-3.2/configure.ac
+--- systemtap-3.2.orig/configure.ac 2017-10-18 17:59:37.000000000 +0000
++++ systemtap-3.2/configure.ac 2018-03-14 12:27:03.557939628 +0000
+@@ -465,6 +465,19 @@ AC_ARG_WITH([rpm],
+ [AS_HELP_STRING([--with-rpm],
+ [query rpm database for missing debuginfos])], [], [with_rpm="auto"])
+ if test "$with_rpm" != "no"; then
++ PKG_CHECK_MODULES([RPM], [rpm], [
++ AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
++ CPPFLAGS="$RPM_CFLAGS $CPPFLAGS"
++ stap_LIBS="$stap_LIBS $RPM_LIBS"
++ ], [
++ AC_PATH_PROG(RPM_PATH,rpm,none)
++ if test "$RPM_PATH" = "none"; then
++ AC_MSG_ERROR([RPM executable was not found in your system])
++ else
++ AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
++ fi
++ ]
++)
+ AC_CHECK_LIB(rpm, rpmtsInitIterator, [
+ AC_DEFINE([HAVE_LIBRPM],[1],[have librpm])
+ stap_LIBS="$stap_LIBS -lc -lrpm"
+diff -urpa systemtap-3.2.orig/rpm_finder.cxx systemtap-3.2/rpm_finder.cxx
+--- systemtap-3.2.orig/rpm_finder.cxx 2017-10-18 17:59:37.000000000 +0000
++++ systemtap-3.2/rpm_finder.cxx 2018-03-14 12:24:39.000000000 +0000
+@@ -24,6 +24,7 @@ extern "C" {
+
+ #include <string.h>
+ #include <rpm/rpmlib.h>
++#include <rpm/rpmmacro.h>
+ #include <rpm/rpmts.h>
+ #include <rpm/rpmdb.h>
+ #include <rpm/header.h>
+@@ -99,7 +100,9 @@ missing_rpm_enlist (systemtap_session& s
+ break;
+ /* Verify the kernel file is not already installed. */
+
+- rpminfo = headerFormat(h, header, &err);
++ char *nvra = rpmExpand("%{___NVRA}", NULL);
++ rpminfo = headerSprintf(h, header, rpmTagTable, rpmHeaderFormats, &err);
++ free(nvra);
+
+ if (!rpminfo)
+ {
+@@ -151,9 +154,10 @@ missing_rpm_enlist (systemtap_session& s
+ }
+ /* The allocated memory gets utilized below for MISSING_RPM_HASH. */
+ if(strcmp(rpm_type,"-debuginfo")==0){
++ char *nvra = rpmExpand("%{___NVRA}", NULL);
+ xfree(rpminfo);
+- rpminfo = headerFormat(h, "%{name}-%{version}-%{release}.%{arch}",
+- &err);
++ rpminfo = headerSprintf(h, nvra, rpmTagTable, rpmHeaderFormats, &err);
++ free(nvra);
+ }
+ if (!rpminfo)
+ {
+++ /dev/null
---- systemtap-1.5/configure.ac.rpm5~ 2011-05-23 21:21:36.000000000 +0200
-+++ systemtap-1.5/configure.ac 2011-09-26 08:22:28.072465175 +0200
-@@ -449,6 +449,19 @@ AC_ARG_WITH([rpm],
- [AS_HELP_STRING([--with-rpm],
- [query rpm database for missing debuginfos])], [], [with_rpm="auto"])
- if test "$with_rpm" != "no"; then
-+ PKG_CHECK_MODULES([RPM], [rpm], [
-+ AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
-+ CPPFLAGS="$RPM_CFLAGS $CPPFLAGS"
-+ stap_LIBS="$stap_LIBS $RPM_LIBS"
-+ ], [
-+ AC_PATH_PROG(RPM_PATH,rpm,none)
-+ if test "$RPM_PATH" = "none"; then
-+ AC_MSG_ERROR([RPM executable was not found in your system])
-+ else
-+ AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
-+ fi
-+ ]
-+)
- AC_CHECK_LIB(rpm, rpmtsInitIterator, [
- AC_DEFINE([HAVE_LIBRPM],[1],[have librpm])
- stap_LIBS="$stap_LIBS -lrpm"
---- systemtap-1.5/rpm_finder.cxx.rpm5~ 2011-05-23 21:21:36.000000000 +0200
-+++ systemtap-1.5/rpm_finder.cxx 2011-09-26 08:14:28.829226303 +0200
-@@ -20,21 +20,22 @@ using namespace std;
-
- #ifdef HAVE_LIBRPM
-
--extern "C" {
--
--#define _RPM_4_4_COMPAT
--#include <string.h>
--#include <rpm/rpmlib.h>
--#include <rpm/rpmts.h>
--#include <rpm/rpmdb.h>
--#include <rpm/header.h>
-+#include <cstring>
-+#include <tr1/cstdint>
-+#include <rpmtypes.h>
-+#include <rpmiotypes.h>
-+#include <rpmtag.h>
-+#include <rpmts.h>
-+#include <rpmrc.h>
-+#include <rpmdb.h>
-+#include <rpmmacro.h>
-+#include <rpmio.h>
-+#include <rpmcli.h>
-
- #ifndef xfree
- #define xfree free
- #endif
-
--}
--
- #if ! HAVE_LIBRPMIO && HAVE_NSS
- extern "C" {
- #include <nss.h>
-@@ -51,7 +52,7 @@ missing_rpm_enlist (systemtap_session& s
- {
- static int rpm_init_done = 0;
- rpmts ts;
-- rpmdbMatchIterator mi;
-+ rpmmi mi;
- int count = 0;
-
- if (filename == NULL)
-@@ -90,8 +91,8 @@ missing_rpm_enlist (systemtap_session& s
- errmsg_t err;
- size_t rpminfolen = strlen(rpm_type);
- size_t srcrpmlen = sizeof (".src.rpm") - 1;
-- rpmdbMatchIterator mi_rpminfo;
-- h = rpmdbNextIterator(mi);
-+ rpmmi mi_rpminfo;
-+ h = rpmmiNext(mi);
- if (h == NULL)
- break;
- /* Verify the kernel file is not already installed. */
-@@ -138,21 +139,23 @@ missing_rpm_enlist (systemtap_session& s
- /* s = `-debuginfo-%{version}-%{release}.%{arch}' */
-
- /* RPMDBI_PACKAGES requires keylen == sizeof (int). */
-- /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */
-- mi_rpminfo = rpmtsInitIterator(ts, (rpmTag) RPMDBI_LABEL,
-+ /* RPMTAG_NVRA is an interface for NVR-based dbiFindByLabel(). */
-+ mi_rpminfo = rpmtsInitIterator(ts, (rpmTag) RPMTAG_NVRA,
- rpminfo, 0);
- if (mi_rpminfo)
- {
-- rpmdbFreeIterator(mi_rpminfo);
-+ rpmmiFree(mi_rpminfo);
- count = 0;
- break;
- }
- /* The allocated memory gets utilized below for MISSING_RPM_HASH. */
- if(strcmp(rpm_type,"-debuginfo")==0){
-+ char *nvra = rpmExpand("%{___NVRA}", NULL);
- xfree(rpminfo);
- rpminfo = headerSprintf(h,
-- "%{name}-%{version}-%{release}.%{arch}",
-+ nvra,
- rpmTagTable, rpmHeaderFormats, &err);
-+ free(nvra);
- }
- if (!rpminfo)
- {
-@@ -176,7 +179,7 @@ missing_rpm_enlist (systemtap_session& s
- sess.rpms_to_install.insert(rpminfo);
- }
- count++;
-- rpmdbFreeIterator(mi);
-+ rpmmiFree(mi);
- }
-
- rpmtsFree(ts);
#
# Conditional build:
-%bcond_with doc # documentation build
-%bcond_with publican # publican guides build (requires functional publican+wkhtmltopdf)
+%bcond_without doc # documentation build
+%bcond_with publican # publican guides build [as of 3.0 not rebuilt automatically, PDFs are included]
%bcond_without crash # crash extension
%bcond_without dyninst # dyninst support
%bcond_without java # Java runtime support
+%bcond_without python2 # Python 2.x runtime support
+%bcond_without python3 # Python 3.x runtime support
%ifnarch %{ix86} %{x8664} alpha arm ia64 ppc64 s390 s390x
%undefine with_crash
%endif
-%ifnarch %{ix86} %{x8664} ppc ppc64
+%ifnarch %{ix86} %{x8664} x32 ppc ppc64 aarch64
%undefine with_dyninst
%endif
Summary: Instrumentation System
Summary(pl.UTF-8): System oprzyrządowania
Name: systemtap
-Version: 2.7
-Release: 2
+Version: 3.2
+Release: 1
License: GPL v2+
Group: Base
Source0: http://sourceware.org/systemtap/ftp/releases/%{name}-%{version}.tar.gz
-# Source0-md5: e0c3c36955323ae59be07a26a9563474
+# Source0-md5: 457147cde312eab7ff8cb49add93f4b4
Patch0: %{name}-configure.patch
Patch1: %{name}-build.patch
-Patch2: %{name}-rpm5-support.patch
+Patch2: %{name}-rpm-4.5-support.patch
+Patch3: %{name}-no-werror.patch
Patch4: format-security.patch
+Patch5: %{name}-dyninst.patch
URL: http://sourceware.org/systemtap/
BuildRequires: autoconf >= 2.63
BuildRequires: automake
BuildRequires: docbook-dtd412-xml
%{?with_dyninst:BuildRequires: dyninst-devel >= 8.0}
BuildRequires: elfutils-devel >= 0.148
-BuildRequires: gettext-devel >= 0.18.2
-BuildRequires: gettext-tools >= 0.18.2
+BuildRequires: gettext-devel >= 0.19.4
+BuildRequires: gettext-tools >= 0.19.4
BuildRequires: glib2-devel
-%if %{with java}
-BuildRequires: jdk
-BuildRequires: rpm-javaprov
-%endif
+BuildRequires: json-c-devel >= 0.12
+%{?with_java:BuildRequires: jdk}
%if %{with dyninst} || %{with java}
BuildRequires: libselinux-devel
%endif
-BuildRequires: libstdc++-devel
+BuildRequires: libstdc++-devel >= 6:4.5
BuildRequires: libvirt-devel >= 1.0.2
BuildRequires: libxml2-devel >= 2.0
BuildRequires: mysql-devel
+BuildRequires: ncurses-devel
BuildRequires: nss-devel >= 3
BuildRequires: pkgconfig
+%if %{with python2}
+BuildRequires: python-devel >= 1:2.6
+BuildRequires: python-setuptools
+%endif
+%if %{with python3}
+BuildRequires: python3-devel >= 1:3.2
+BuildRequires: python3-setuptools
+%endif
+BuildRequires: readline-devel
BuildRequires: rpm-devel
+%{?with_java:BuildRequires: rpm-javaprov}
BuildRequires: rpm-pythonprov
-BuildRequires: sqlite3-devel >= 3
+BuildRequires: rpmbuild(macros) >= 1.219
+BuildRequires: sqlite3-devel >= 3.7
BuildRequires: xmlto
%if %{with doc}
BuildRequires: latex2html
Summary: Programmable system-wide instrumentation system - runtime
Summary(pl.UTF-8): Programowalny systemowy system oprzyrządowania - środowisko uruchomieniowe
Group: Applications/System
+Requires: json-c >= 0.12
%description runtime
SystemTap runtime contains the components needed to execute a
%description runtime-java -l pl.UTF-8
Ten pakiet zawiera pliki niezbędne do uruchamiania skryptów systemtap
-sondujące procesy Javy działające w środowiskach OpenJDK 1.6 i OpenJDK
-1.7 przy użyciu Bytemana.
+sondujących procesy Javy działające w środowiskach OpenJDK 1.6 i
+OpenJDK 1.7 przy użyciu Bytemana.
+
+%package runtime-python2
+Summary: SystemTap Python 2 Runtime Support
+Summary(pl.UTF-8): Obsługa Pythona 2 dla środowiska uruchomieniowego SystemTap
+Group: Development/Tools
+Requires: %{name}-runtime = %{version}-%{release}
+Requires: python-modules >= 1:2.6
+
+%description runtime-python2
+This package includes support files needed to run systemtap scripts
+that probe Python 2 processes.
+
+%description runtime-python2 -l pl.UTF-8
+Ten pakiet zawiera pliki niezbędne do uruchamiania skryptów systemtap
+sondujących procesy Pythona 2.
+
+%package runtime-python3
+Summary: SystemTap Python 3 Runtime Support
+Summary(pl.UTF-8): Obsługa Pythona 3 dla środowiska uruchomieniowego SystemTap
+Group: Development/Tools
+Requires: %{name}-runtime = %{version}-%{release}
+Requires: python3-modules >= 1:3.2
+
+%description runtime-python3
+This package includes support files needed to run systemtap scripts
+that probe Python 3 processes.
+
+%description runtime-python3 -l pl.UTF-8
+Ten pakiet zawiera pliki niezbędne do uruchamiania skryptów systemtap
+sondujących procesy Pythona 3.
%package client
Summary: Programmable system-wide instrumentation system - client
Group: Development/Tools
Requires: %{name}-client = %{version}-%{release}
Requires: gcc
-#Requires: kernel-module-build
+Requires: kernel-module-build
Requires: make
%description devel
%setup -q
%patch0 -p1
%patch1 -p1
-%patch4 -p1
-%if "%{_rpmversion}" >= "5.0"
%patch2 -p1
-%endif
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
%build
%{__gettextize}
%{?with_crash:--enable-crash} \
--enable-docs%{!?with_doc:=no} \
--enable-pie \
- --enable-publican%{!?with_publican:=no} \
--enable-server \
--enable-sqlite \
--with-dyninst%{!?with_dyninst:=no} \
install -d $RPM_BUILD_ROOT/var/lib/stap-server/.systemtap
install -d $RPM_BUILD_ROOT/var/log/stap-server
-%if %{with doc}
-install -d $RPM_BUILD_ROOT%{_examplesdir}
-mv $RPM_BUILD_ROOT{%{_docdir}/%{name}/examples,%{_examplesdir}/%{name}-client-%{version}}
-%endif
-
%{__mv} $RPM_BUILD_ROOT%{_docdir}/systemtap docs-installed
+%if %{with python2}
+%py_postclean
+%endif
+
%find_lang %{name}
%clean
%doc AUTHORS NEWS README*
%attr(755,root,root) %{_bindir}/stap-merge
%attr(755,root,root) %{_bindir}/stap-report
+%attr(755,root,root) %{_bindir}/stapbpf
%{?with_dyninst:%attr(755,root,root) %{_bindir}/stapdyn}
%attr(755,root,root) %{_bindir}/stapsh
# XXX: %attr(4754,root,stapusr) staprun ?
%{?with_crash:%attr(755,root,root) %{_libdir}/%{name}/staplog.so}
%{_mandir}/man1/stap-merge.1*
%{_mandir}/man1/stap-report.1*
+%{_mandir}/man1/stapref.1*
%{_mandir}/man3/stapex.3stap*
%{_mandir}/man3/stapfuncs.3stap*
%{_mandir}/man3/stapprobes.3stap*
%{_mandir}/man3/stapvars.3stap*
%if %{with doc}
%{_mandir}/man3/function::*.3stap*
+%{_mandir}/man3/macro::*.3stap*
%{_mandir}/man3/probe::*.3stap*
%{_mandir}/man3/tapset::*.3stap*
%endif
%{_mandir}/man7/stappaths.7*
%{_mandir}/man7/warning::debuginfo.7stap*
%{_mandir}/man7/warning::symbols.7stap*
+%{_mandir}/man8/stapbpf.8*
%{?with_dyninst:%{_mandir}/man8/stapdyn.8*}
%{_mandir}/man8/staprun.8*
%{_mandir}/man8/stapsh.8*
%{_mandir}/man8/systemtap.8*
+%lang(cs) %{_mandir}/cs/man1/stap-merge.1*
+%lang(cs) %{_mandir}/cs/man1/stap-report.1*
+%lang(cs) %{_mandir}/cs/man1/stapref.1*
+%lang(cs) %{_mandir}/cs/man3/stapex.3stap*
+%lang(cs) %{_mandir}/cs/man3/stapfuncs.3stap*
+%lang(cs) %{_mandir}/cs/man3/stapprobes.3stap*
+%lang(cs) %{_mandir}/cs/man3/stapvars.3stap*
+%lang(cs) %{_mandir}/cs/man7/error::*.7stap*
+%lang(cs) %{_mandir}/cs/man7/stappaths.7*
+%lang(cs) %{_mandir}/cs/man7/warning::debuginfo.7stap*
+%lang(cs) %{_mandir}/cs/man7/warning::symbols.7stap*
+%lang(cs) %{_mandir}/cs/man8/stapsh.8*
+%lang(cs) %{_mandir}/cs/man8/systemtap.8*
%if %{with java}
%files runtime-java
%{_libdir}/%{name}/HelperSDT.jar
%endif
-%files client
+%if %{with python2}
+%files runtime-python2
%defattr(644,root,root,755)
-%if %{with doc}
-%doc docs-installed/{tapsets,langref.pdf,tutorial.pdf}
-%{_examplesdir}/%{name}-client-%{version}
+%dir %{py_sitedir}/HelperSDT
+%attr(755,root,root) %{py_sitedir}/HelperSDT/_HelperSDT.so
+%{py_sitedir}/HelperSDT/*.py[co]
+%{py_sitedir}/HelperSDT-0.1.0-py*.egg-info
%endif
+
+%if %{with python3}
+%files runtime-python3
+%defattr(644,root,root,755)
+%dir %{py3_sitedir}/HelperSDT
+%attr(755,root,root) %{py3_sitedir}/HelperSDT/_HelperSDT.cpython-*.so
+%{py3_sitedir}/HelperSDT/*.py
+%{py3_sitedir}/HelperSDT/__pycache__
+%{py3_sitedir}/HelperSDT-0.1.0-py*.egg-info
+%endif
+
+%files client
+%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/stap
%attr(755,root,root) %{_bindir}/stap-prep
%attr(755,root,root) %{_bindir}/stapvirt
%dir %{_datadir}/%{name}
+%{_datadir}/%{name}/examples
%{_datadir}/%{name}/tapset
%{_mandir}/man1/stap.1*
%{_mandir}/man1/stap-prep.1*
%{_mandir}/man1/stapvirt.1*
+%lang(cs) %{_mandir}/cs/man1/stap.1*
+%lang(cs) %{_mandir}/cs/man1/stap-prep.1*
+%lang(cs) %{_mandir}/cs/man1/stapvirt.1*
%files devel
%defattr(644,root,root,755)
%{_datadir}/%{name}/runtime
+%if %{with python2} || %{with python3}
+%dir %{_libexecdir}/systemtap
+%dir %{_libexecdir}/systemtap/python
+%attr(755,root,root) %{_libexecdir}/systemtap/python/stap-resolve-module-function.py
+%endif
%files initscript
%defattr(644,root,root,755)
#%attr(755,stap-server,stap-server) %dir /var/log/stap-server
#%attr(755,stap-server,stap-server) %dir /var/run/stap-server
%{_mandir}/man8/stap-server.8*
+%lang(cs) %{_mandir}/cs/man8/stap-server.8*
%files sdt-devel
%defattr(644,root,root,755)
%{_includedir}/sys/sdt.h
%{_includedir}/sys/sdt-config.h
%{_mandir}/man1/dtrace.1*
+%lang(cs) %{_mandir}/cs/man1/dtrace.1*
-%if %{with publican}
+%if %{with doc}
%files doc
%defattr(644,root,root,755)
-%doc doc/{langref,tutorial}.pdf doc/beginners/SystemTap_Beginners_Guide.pdf
+%doc doc/{langref,tutorial}.pdf doc/beginners/SystemTap_Beginners_Guide.pdf docs-installed/tapsets.pdf
%endif