-%define bundled_elfutils 1
-%define elfutils_version 0.116
+# 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
-
-ExclusiveArch: %{ix86} x86_64 ppc ia64
+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
-Requires: kernel-devel
-# or is that kernel-smp-devel?
+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.
-elfutils_includedir="`pwd`/include-elfutils"
-elfutils_libdir="`pwd`/lib-elfutils"
-mkdir build-elfutils
-cd build-elfutils
-cat > configure <<\EOF
-#!/bin/sh
-exec ../elfutils-%{elfutils_version}/configure "$@"
-EOF
-chmod +x configure
-LDFLAGS=-Wl,--enable-new-dtags,-rpath,%{_libdir}/%{name}
-export LDFLAGS
-%configure --enable-libebl-subdir=%{name}
-make %{?_smp_mflags}
-for dir in libelf libebl libdw libdwfl; do
- make -C $dir install includedir=$elfutils_includedir libdir=$elfutils_libdir
-done
-cd ..
-
-# We'll configure with these options to use the local headers and libraries.
-CPPFLAGS="-I${elfutils_includedir}"
-LDFLAGS="-L${elfutils_libdir} -Wl,-rpath-link,${elfutils_libdir} \
--Wl,--enable-new-dtags,-rpath,%{_libdir}/%{name}"
-export CPPFLAGS LDFLAGS
+%define 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.
%define elfutils_mflags LD_LIBRARY_PATH=`pwd`/lib-elfutils
%endif
-%configure
+# 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}
-%install
-rm -rf ${RPM_BUILD_ROOT}
+# 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@'
-%makeinstall
+# To avoid perl dependency, make perl sample script non-executable
+chmod -x examples/samples/kmalloc-top
-%if %{bundled_elfutils}
-installed_elfutils=${RPM_BUILD_ROOT}%{_libdir}/%{name}
-mkdir -p ${installed_elfutils}
-cp -P lib-elfutils/*.so* lib-elfutils/%{name}/*.so* ${installed_elfutils}/
-%endif
+%install
+rm -rf ${RPM_BUILD_ROOT}
+make DESTDIR=$RPM_BUILD_ROOT install
-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
%{_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
-* 2005-12-02 Frank Ch. Eigler <fche@redhat.com> - 0.5
+* 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
+
+* Fri May 5 2006 Frank Ch. Eigler <fche@redhat.com> - 0.5.7-1
+- PRs 2511 2453 2307 1813 1944 2497 2538 2476 2568 1341 2058 2220 2437
+ 1326 2014 2599 2427 2438 2465 1930 2149 2610 2293 2634 2506 2433
+
+* Tue Apr 4 2006 Roland McGrath <roland@redhat.com> - 0.5.5-1
+- Many changes, affected PRs include: 2068, 2293, 1989, 2334,
+ 1304, 2390, 2425, 953.
+
+* Wed Feb 1 2006 Frank Ch. Eigler <fche@redhat.com> - 0.5.4-1
+- PRs 1916, 2205, 2142, 2060, 1379
+
+* Mon Jan 16 2006 Roland McGrath <roland@redhat.com> - 0.5.3-1
+- Many changes, affected PRs include: 2056, 1144, 1379, 2057,
+ 2060, 1972, 2140, 2148
+
+* Mon Dec 19 2005 Roland McGrath <roland@redhat.com> - 0.5.2-1
+- Fixed build with gcc 4.1, various tapset changes.
+
+* Wed Dec 7 2005 Roland McGrath <roland@redhat.com> - 0.5.1-1
+- elfutils update, build changes
+
+* Fri Dec 02 2005 Frank Ch. Eigler <fche@redhat.com> - 0.5-1
- Many fixes and improvements: 1425, 1536, 1505, 1380, 1329, 1828, 1271,
1339, 1340, 1345, 1837, 1917, 1903, 1336, 1868, 1594, 1564, 1276, 1295