-# Yo! DO NOT CHANGE THE FOLLOWING LINE.
-%define bundled_elfutils 1
-%define elfutils_version 0.121
+# Release number for rpm build. Stays at 1 for new PACKAGE_VERSION increases.
+%define release 3
+# Version number of oldest elfutils release that works with systemtap.
+%define elfutils_version 0.127
+
+# Default options (suitable for fedora)
+%define with_sqlite 1
+%define with_crash 0
+%define with_bundled_elfutils 0
+
+# Enable these options by default for RHEL
+%if 0%{?rhel} >= 5
+%define with_crash 1
+%define with_bundled_elfutils 1
+%endif
Name: systemtap
Version: @VERSION@
-Release: 1
+Release: %{release}%{?dist}
Summary: Instrumentation System
Group: Development/System
-License: GPL
+License: GPLv2+
URL: http://sourceware.org/systemtap/
-Source: ftp://sourceware.org/pub/%{name}/%{name}-%{version}.tar.gz
+Source: ftp://sourceware.org/pub/%{name}/releases/%{name}-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-root
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: kernel >= 2.6.9-11
-BuildRequires: glib2-devel >= 2.0.0
-Requires: glib2 >= 2.0.0
+BuildRequires: libcap-devel
+%if %{with_sqlite}
+BuildRequires: sqlite-devel
+Requires: sqlite
+%endif
+%if %{with_crash}
+BuildRequires: crash-devel zlib-devel
+%endif
# Requires: kernel-devel
# or is that kernel-smp-devel? kernel-hugemem-devel?
Requires: gcc make
# Suggest: kernel-debuginfo
+Requires: systemtap-runtime = %{version}-%{release}
-%if %{bundled_elfutils}
+%if %{with_bundled_elfutils}
Source1: elfutils-%{elfutils_version}.tar.gz
Patch1: elfutils-portability.patch
%define setup_elfutils -a1
%else
BuildRequires: elfutils-devel >= %{elfutils_version}
%endif
+%if %{with_crash}
+Requires: crash
+%endif
%description
SystemTap is an instrumentation system for systems running Linux 2.6.
Developers can write instrumentation to collect data on the operation
of the system.
+%package runtime
+Summary: Instrumentation System Runtime
+Group: Development/System
+License: GPLv2+
+URL: http://sourceware.org/systemtap/
+Requires: kernel >= 2.6.9-11
+Requires(pre): shadow-utils
+
+%description runtime
+SystemTap runtime is the runtime component of an instrumentation
+system for systems running Linux 2.6. Developers can write
+instrumentation to collect data on the operation of the system.
+
+%package testsuite
+Summary: Instrumentation System Testsuite
+Group: Development/System
+License: GPLv2+
+URL: http://sourceware.org/systemtap/
+Requires: systemtap dejagnu
+
+%description testsuite
+The testsuite allows testing of the entire SystemTap toolchain
+without having to rebuild from sources.
+
%prep
%setup -q %{?setup_elfutils}
-%if %{bundled_elfutils}
+%if %{with_bundled_elfutils}
cd elfutils-%{elfutils_version}
%patch1 -p1
sleep 1
%build
-%if %{bundled_elfutils}
+%if %{with_bundled_elfutils}
# Build our own copy of elfutils.
%define elfutils_config --with-elfutils=elfutils-%{elfutils_version}
%define elfutils_mflags LD_LIBRARY_PATH=`pwd`/lib-elfutils
%endif
-%configure %{?elfutils_config}
+# Enable/disable the sqlite coverage testing support
+%if %{with_sqlite}
+%define sqlite_config --enable-sqlite
+%else
+%define sqlite_config --disable-sqlite
+%endif
+
+# Enable/disable the crash extension
+%if %{with_crash}
+%define crash_config --enable-crash
+%else
+%define crash_config --disable-crash
+%endif
+
+%configure %{?elfutils_config} %{sqlite_config} %{crash_config}
make %{?_smp_mflags}
+# Fix paths in the example & testsuite scripts
+find examples testsuite -type f -name '*.stp' -print0 | xargs -0 sed -i -r -e '1s@^#!.+stap@#!%{_bindir}/stap@'
+
+# To avoid perl dependency, make perl sample script non-executable
+chmod -x examples/samples/kmalloc-top
+
%install
rm -rf ${RPM_BUILD_ROOT}
+make DESTDIR=$RPM_BUILD_ROOT install
-%makeinstall
-
-mkdir -p $RPM_BUILD_ROOT/var/cache/systemtap
+# Because "make install" may install staprun with mode 04111, the
+# post-processing programs rpmbuild runs won't be able to read it.
+# So, we change permissions so that they can read it. We'll set the
+# permissions back to 04111 in the %files section below.
+chmod 755 $RPM_BUILD_ROOT%{_bindir}/staprun
-%check
-make check %{?elfutils_mflags} || :
+# Copy over the testsuite
+cp -rp testsuite $RPM_BUILD_ROOT%{_datadir}/systemtap
%clean
rm -rf ${RPM_BUILD_ROOT}
+%pre runtime
+getent group stapdev >/dev/null || groupadd -r stapdev
+getent group stapusr >/dev/null || groupadd -r stapusr
+exit 0
+
%files
%defattr(-,root,root)
-%doc README AUTHORS NEWS COPYING
+%doc README AUTHORS NEWS COPYING examples
%{_bindir}/stap
-%{_bindir}/lket-b2a
%{_mandir}/man1/*
%{_mandir}/man5/*
-%{_libexecdir}/systemtap/*
%dir %{_datadir}/systemtap
%{_datadir}/systemtap/runtime
%{_datadir}/systemtap/tapset
-%dir %attr(0755,root,root) /var/cache/systemtap
-
-%if %{bundled_elfutils}
+%if %{with_bundled_elfutils} || %{with_crash}
%dir %{_libdir}/%{name}
+%endif
+%if %{with_bundled_elfutils}
%{_libdir}/%{name}/lib*.so*
%endif
+%if %{with_crash}
+%{_libdir}/%{name}/staplog.so*
+%endif
+
+%files runtime
+%defattr(-,root,root)
+%attr(4111,root,root) %{_bindir}/staprun
+%{_libexecdir}/systemtap
+%{_mandir}/man8/*
+
+%doc README AUTHORS NEWS COPYING
+
+%files testsuite
+%defattr(-,root,root)
+%{_datadir}/systemtap/testsuite
%changelog
+* Fri Feb 1 2008 Frank Ch. Eigler <fche@redhat.com> - 0.6.1-3
+- Add zlib-devel to buildreq; missing from crash-devel
+- Process testsuite .stp files for #!stap->#!/usr/bin/stap
+
+* Fri Jan 18 2008 Frank Ch. Eigler <fche@redhat.com> - 0.6.1-1
+- Add crash-devel buildreq to build staplog.so crash(8) module.
+- Many robustness & functionality improvements:
+
+* Wed Dec 5 2007 Will Cohen <wcohen@redhat.com> - 0.6-2
+- Correct Source to point to location contain code.
+
+* Thu Aug 9 2007 David Smith <dsmith@redhat.com> - 0.6-1
+- Bumped version, added libcap-devel BuildRequires.
+
+* Wed Jul 11 2007 Will Cohen <wcohen@redhat.com> - 0.5.14-2
+- Fix Requires and BuildRequires for sqlite.
+
+* Tue Jul 2 2007 Frank Ch. Eigler <fche@redhat.com> - 0.5.14-1
+- Many robustness improvements: 1117, 1134, 1305, 1307, 1570, 1806,
+ 2033, 2116, 2224, 2339, 2341, 2406, 2426, 2438, 2583, 3037,
+ 3261, 3282, 3331, 3428 3519, 3545, 3625, 3648, 3880, 3888, 3911,
+ 3952, 3965, 4066, 4071, 4075, 4078, 4081, 4096, 4119, 4122, 4127,
+ 4146, 4171, 4179, 4183, 4221, 4224, 4254, 4281, 4319, 4323, 4326,
+ 4329, 4332, 4337, 4415, 4432, 4444, 4445, 4458, 4467, 4470, 4471,
+ 4518, 4567, 4570, 4579, 4589, 4609, 4664
+
+* Mon Mar 26 2007 Frank Ch. Eigler <fche@redhat.com> - 0.5.13-1
+- An emergency / preliminary refresh, mainly for compatibility
+ with 2.6.21-pre kernels.
+
+* Mon Jan 1 2007 Frank Ch. Eigler <fche@redhat.com> - 0.5.12-1
+- Many changes, see NEWS file.
+
+* Tue Sep 26 2006 David Smith <dsmith@redhat.com> - 0.5.10-1
+- Added 'systemtap-runtime' subpackage.
+
+* Wed Jul 19 2006 Roland McGrath <roland@redhat.com> - 0.5.9-1
+- PRs 2669, 2913
+
* Fri Jun 16 2006 Roland McGrath <roland@redhat.com> - 0.5.8-1
- PRs 2627, 2520, 2228, 2645