pcp/pcp.spec
David Disseldorp 6fb7136bf4 - Create pcp user and group during installation.
- Package pre-populated tmp directory. The directory must be world writeable
  (with the sticky-bit set), as it may be used by any PMDAs or client tools;
  (bnc#782967).

- Update to pcp-3.6.10.
  + Transition daemons to run under an unprivileged account.
  + Fixes for security advisory CVE-2012-5530: tmpfile flaws;
    (bnc#782967).
  + Fix pcp(1) command short-form pmlogger reporting.
  + Fix pmdalogger error handling for directory files.
  + Fix pmstat handling of odd corner case in CPU metrics.
  + Correct the python ctype used for pmAtomValue 32bit ints.
  + Add missing RPM spec dependency for python-ctypes.
  + Corrections to pmdamysql metrics units.
  + Add pmdamysql slave status metrics.
  + Improve pmcollectl error messages.
  + Parameterize pmcollectl CPU counts in interrupt subsys.
  + Fix generic RPM packaging for powerpc builds.
  + Fix python API use of reentrant libpcp string routines.
  + Python code backporting for RHEL5 in qa and pmcollectl.
  + Fix edge cases in capturing interrupt error counts.
- Update to pcp-3.6.9.
  + Python wrapper for the pmimport API
  + Make sar2pcp work with the sysstat versions from RHEL5,
    RHEL6, and all recent Fedora versions (which is almost
    all current versions of sysstat verified).
  + Added a number of additional metrics into the importer
    for people starting to use it to analyse sar data from
    real customer incidents.

OBS-URL: https://build.opensuse.org/package/show/Base:System/pcp?expand=0&rev=25
2012-11-21 15:07:21 +00:00

533 lines
16 KiB
RPMSpec

#
# spec file for package pcp
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Summary: System-level performance monitoring and performance management
License: GPL-2.0
Group: System/Monitoring
Name: pcp
Version: 3.6.10
Release: 0
%if (0%{?suse_version} > 0)
%define pcp_gr System/Monitoring
%define lib_pkg libpcp3
%define lib_pkg_conflict pcp-libs
%define lib_gr System/Libraries
%define lib_devel_pkg libpcp-devel
%define lib_devel_pkg_conflict pcp-libs-devel
%define lib_devel_gr Development/Libraries/Other
%define license_gplv2 GPL-2.0
%define license_lgplv2 LGPL-2.0
%define license_lgplv2plus LGPL-2.1+
%define perl_version %(perl -V:version | sed "s!.*='!!;s!'.*!!")
%else
%define pcp_gr Applications/System
%define lib_pkg pcp-libs
%define lib_pkg_conflict libpcp3
%define lib_gr Applications/System
%define lib_devel_pkg pcp-libs-devel
%define lib_devel_pkg_conflict libpcp-devel
%define lib_devel_gr Applications/System
%define license_gplv2 GPLv2
%define license_lgplv2 LGPLv2
%define license_lgplv2plus LGPLv2+
%endif
Url: http://oss.sgi.com/projects/pcp
Source0: ftp://oss.sgi.com/projects/pcp/download/pcp-%{version}.src.tar.gz
Source1: pcp-rpmlintrc
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf
BuildRequires: bison
BuildRequires: flex
BuildRequires: ncurses-devel
BuildRequires: procps
BuildRequires: pwdutils
BuildRequires: readline-devel
BuildRequires: perl(ExtUtils::MakeMaker)
Patch6: pcp-xenbuild.patch
Patch9: static_lib_perms.diff
Patch10: pcp_legacy_init_lsb.patch
Patch13: remove_cpan_rpaths.patch
Patch14: rm_init_script_runlevel_4.patch
Patch15: create-pmlogger-and-pmie-logdirs-during-install.patch
%if (0%{?suse_version} > 0)
Requires: cpp
Requires: sysconfig
%else
Requires: initscripts
BuildRequires: initscripts
%if (0%{?fedora} > 0)
AutoReq: no
%endif
%endif
Requires: %{lib_pkg} = %{version}
Requires: bash
Requires: fileutils
Requires: findutils
Requires: gawk
Requires: grep
Requires: sed
%define _pmdasdir %{_localstatedir}/lib/pcp/pmdas
%description
Performance Co-Pilot (PCP) provides a framework and services to support
system-level performance monitoring and performance management.
The PCP open source release provides a unifying abstraction for all of
the interesting performance data in a system, and allows client
applications to easily retrieve and process any subset of that data.
#
# pcp-libs
#
%package -n %{lib_pkg}
Summary: Performance Co-Pilot run-time libraries
License: %{license_lgplv2}
Group: %{lib_gr}
Url: http://oss.sgi.com/projects/pcp/
Conflicts: %{lib_pkg_conflict}
AutoReq: no
%description -n %{lib_pkg}
Performance Co-Pilot (PCP) run-time libraries
#
# pcp-libs-devel
# SLE uses the legacy pcp-devel package name.
#
%package -n %{lib_devel_pkg}
Summary: Performance Co-Pilot (PCP) development headers and documentation
License: %{license_gplv2}
Group: %{lib_devel_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: %{lib_pkg} = %{version}
Conflicts: %{lib_devel_pkg_conflict}
%if (0%{?suse_version} > 0)
Provides: pcp-devel = %{version}
Obsoletes: pcp-devel < %{version}
%endif
%if (0%{?fedora} > 0)
AutoReq: no
%endif
%description -n %{lib_devel_pkg}
Performance Co-Pilot (PCP) headers, documentation and tools for development.
#
# perl-PCP-PMDA. This is the PCP agent perl binding.
#
%package -n perl-PCP-PMDA
Summary: Performance Co-Pilot (PCP) Perl bindings and documentation
License: %{license_gplv2}
Group: %{pcp_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: pcp >= %{version}
%if (0%{?suse_version} > 0)
Requires: perl = %{perl_version}
%endif
%description -n perl-PCP-PMDA
The PCP::PMDA Perl module contains the language bindings for
building Performance Metric Domain Agents (PMDAs) using Perl.
Each PMDA exports performance data for one specific domain, for
example the operating system kernel, Cisco routers, a database,
an application, etc.
#
# perl-PCP-MMV
#
%package -n perl-PCP-MMV
Summary: Performance Co-Pilot (PCP) Perl bindings for PCP Memory Mapped Values
License: %{license_gplv2}
Group: %{pcp_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: pcp >= %{version}
%if (0%{?suse_version} > 0)
Requires: perl = %{perl_version}
%endif
%description -n perl-PCP-MMV
The PCP::MMV module contains the Perl language bindings for
building scripts instrumented with the Performance Co-Pilot
(PCP) Memory Mapped Value (MMV) mechanism.
This mechanism allows arbitrary values to be exported from an
instrumented script into the PCP infrastructure for monitoring
and analysis with pmchart, pmie, pmlogger and other PCP tools.
#
# perl-PCP-LogImport
#
%package -n perl-PCP-LogImport
Summary: Performance Co-Pilot Perl bindings for importing external archive data
License: %{license_gplv2}
Group: %{pcp_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: pcp >= %{version}
%if (0%{?suse_version} > 0)
Requires: perl = %{perl_version}
%endif
%description -n perl-PCP-LogImport
The PCP::LogImport module contains the Perl language bindings for
importing data in various 3rd party formats into PCP archives so
they can be replayed with standard PCP monitoring tools.
#
# perl-PCP-LogSummary
#
%package -n perl-PCP-LogSummary
Summary: Performance Co-Pilot Perl bindings for processing pmlogsummary output
License: %{license_gplv2}
Group: %{pcp_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: pcp >= %{version}
%if (0%{?suse_version} > 0)
Requires: perl = %{perl_version}
%endif
%description -n perl-PCP-LogSummary
The PCP::LogSummary module provides a Perl module for using the
statistical summary data produced by the Performance Co-Pilot
pmlogsummary utility. This utility produces various averages,
minima, maxima, and other calculations based on the performance
data stored in a PCP archive. The Perl interface is ideal for
exporting this data into third-party tools (e.g. spreadsheets).
#
# pcp-import-sar2pcp
#
%package import-sar2pcp
Summary: Performance Co-Pilot tools for importing sar data into PCP archive logs
License: %{license_lgplv2plus}
Group: %{pcp_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: %{lib_pkg} >= %{version}
Requires: perl-PCP-LogImport >= %{version}
Requires: sysstat
%description import-sar2pcp
Performance Co-Pilot (PCP) front-end tools for importing sar data
into standard PCP archive logs for replay with any PCP monitoring tool.
#
# pcp-import-iostat2pcp
#
%package import-iostat2pcp
Summary: Performance Co-Pilot tools for importing iostat data into PCP archive logs
License: %{license_lgplv2plus}
Group: %{pcp_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: %{lib_pkg} >= %{version}
Requires: perl-PCP-LogImport >= %{version}
Requires: sysstat
%description import-iostat2pcp
Performance Co-Pilot (PCP) front-end tools for importing iostat data
into standard PCP archive logs for replay with any PCP monitoring tool.
#
# pcp-import-sheet2pcp
#
%package import-sheet2pcp
Summary: Performance Co-Pilot tools for importing spreadsheet data into PCP archive logs
License: %{license_lgplv2plus}
Group: %{pcp_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: %{lib_pkg} >= %{version}
Requires: perl-PCP-LogImport >= %{version}
Requires: sysstat
%description import-sheet2pcp
Performance Co-Pilot (PCP) front-end tools for importing spreadsheet data
into standard PCP archive logs for replay with any PCP monitoring tool.
#
# pcp-import-mrtg2pcp
#
%package import-mrtg2pcp
Summary: Performance Co-Pilot tools for importing MTRG data into PCP archive logs
License: %{license_lgplv2plus}
Group: %{pcp_gr}
Url: http://oss.sgi.com/projects/pcp/
Requires: %{lib_pkg} >= %{version}
Requires: perl-PCP-LogImport >= %{version}
%description import-mrtg2pcp
Performance Co-Pilot (PCP) front-end tools for importing MTRG data
into standard PCP archive logs for replay with any PCP monitoring tool.
%prep
%setup -q
%patch6
%patch9 -p1
%patch10
%patch13 -p1
%patch14 -p1
%patch15 -p1
autoconf
%configure --with-rcdir=/etc/init.d --with-tmpdir=/var/lib/pcp/tmp \
--with-docdir=%{_datadir}/doc/packages/pcp
%clean
rm -Rf $RPM_BUILD_ROOT
%build
make default_pcp
%install
export DIST_ROOT=$RPM_BUILD_ROOT
make install_pcp
# Fix stuff we do/don't want to ship
rm -f $RPM_BUILD_ROOT/%{_libdir}/*.a
rm -rf $RPM_BUILD_ROOT/%{_localstatedir}/lib/pcp/testsuite
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/run/pcp
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/pcp/tmp
%if (0%{?suse_version} > 0)
# add /etc/init.d/X symlinks at /usr/sbin/rcX
%__install -d -m 0755 ${RPM_BUILD_ROOT}/%{_sbindir}
for script in pcp pmie pmproxy pmlogger pmcd; do
ln -s "%{_sysconfdir}/init.d/${script}" \
"${RPM_BUILD_ROOT}/%{_sbindir}/rc${script}"
done
%else
# default chkconfig off for Fedora and RHEL
for f in $RPM_BUILD_ROOT/%{_sysconfdir}/rc.d/init.d/{pcp,pmie,pmproxy}; do
sed -i -e '/^# chkconfig/s/:.*$/: - 95 05/' -e '/^# Default-Start:/s/:.*$/:/' $f
done
%endif
# list of PMDAs in the base pkg
ls -1 $RPM_BUILD_ROOT/%{_pmdasdir} | egrep -v 'simple|sample|trivial|txmon' |\
sed -e 's#^#'%{_pmdasdir}'\/#' >base_pmdas.list
# bin and man1 files except those split out into sub packages
# man pages are transparently compressed so append a '*' suffix
ls -1 $RPM_BUILD_ROOT/%{_bindir} | grep -v '2pcp' |\
sed -e 's#^#'%{_bindir}'\/#' >base_binfiles.list
ls -1 $RPM_BUILD_ROOT/%{_mandir}/man1 | grep -v '2pcp' |\
sed -e 's#^#'%{_mandir}'\/man1\/#' |\
sed -e 's#$#*#' >base_man1files.list
cat base_pmdas.list base_binfiles.list base_man1files.list > base_specialfiles.list
%pre
getent group pcp >/dev/null || groupadd -r pcp
getent passwd pcp >/dev/null || \
useradd -c "Performance Co-Pilot" -g pcp -d %{_localstatedir}/lib/pcp -M -r -s /sbin/nologin pcp
exit 0
%if (0%{?suse_version} > 0)
%preun
%{?stop_on_removal:%{stop_on_removal pmlogger pmie pmproxy pmcd}}
%postun
/sbin/ldconfig
%{?restart_on_update:%{restart_on_update pcp pmproxy pmie}}
%{?insserv_cleanup:%{insserv_cleanup}}
%post
chown -R pcp:pcp /var/log/pcp/{pmcd,pmlogger,pmie,pmproxy} 2>/dev/null
/sbin/ldconfig
%else
%preun
if [ "$1" -eq 0 ]
then
#
# Stop daemons before erasing the package
#
/sbin/service pmlogger stop >/dev/null 2>&1
/sbin/service pmie stop >/dev/null 2>&1
/sbin/service pmproxy stop >/dev/null 2>&1
/sbin/service pcp stop >/dev/null 2>&1
/sbin/service pmcd stop >/dev/null 2>&1
/sbin/chkconfig --del pcp >/dev/null 2>&1
/sbin/chkconfig --del pmcd >/dev/null 2>&1
/sbin/chkconfig --del pmlogger >/dev/null 2>&1
/sbin/chkconfig --del pmie >/dev/null 2>&1
/sbin/chkconfig --del pmproxy >/dev/null 2>&1
fi
%post
chown -R pcp:pcp /var/log/pcp/{pmcd,pmlogger,pmie,pmproxy} 2>/dev/null
/sbin/chkconfig --add pmcd >/dev/null 2>&1
/sbin/service pmcd condrestart
/sbin/chkconfig --add pmlogger >/dev/null 2>&1
/sbin/service pmlogger condrestart
/sbin/chkconfig --add pmie >/dev/null 2>&1
/sbin/service pmie condrestart
/sbin/chkconfig --add pmproxy >/dev/null 2>&1
/sbin/service pmproxy condrestart
%endif
%post -n %{lib_pkg} -p /sbin/ldconfig
%postun -n %{lib_pkg} -p /sbin/ldconfig
%files -f base_specialfiles.list
#
# Note: there are some headers (e.g. domain.h) and in a few cases some
# C source files that rpmlint complains about. These are not devel files,
# but rather they are (slightly obscure) PMDA config files.
#
%defattr(-,root,root)
%{_datadir}/doc/packages/pcp
%if (0%{?suse_version} > 0)
%{_sbindir}/rc*
%endif
%ghost %dir %{_localstatedir}/run/pcp
%dir %{_localstatedir}/lib/pcp/tmp
%dir %{_localstatedir}/lib/pcp/tmp/pmdabash
%dir %{_localstatedir}/lib/pcp/tmp/mmv
%dir %{_localstatedir}/lib/pcp/tmp/pmie
%dir %{_localstatedir}/lib/pcp/tmp/pmlogger
%dir %{_pmdasdir}
%dir %{_datadir}/pcp
%dir %{_localstatedir}/lib/pcp
%dir %{_localstatedir}/lib/pcp/config
%{_libexecdir}/pcp
%{_datadir}/pcp/lib
%{_localstatedir}/log/pcp
%{_localstatedir}/lib/pcp/pmns
%config(missingok) %{_localstatedir}/lib/pcp/pmns/.NeedRebuild
%{_initrddir}/pcp
%{_initrddir}/pmcd
%{_initrddir}/pmlogger
%{_initrddir}/pmie
%{_initrddir}/pmproxy
%{_mandir}/man4/*
%config %{_sysconfdir}/bash_completion.d/pcp
%config %{_sysconfdir}/pcp.env
%config %{_sysconfdir}/pcp.sh
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmcd/pmcd.conf
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmcd/pmcd.options
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmcd/rc.local
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmie/config.default
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmie/control
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmie/crontab
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmlogger/config.default
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmlogger/control
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmlogger/crontab
%config(noreplace) %{_localstatedir}/lib/pcp/config/pmproxy/pmproxy.options
%{_localstatedir}/lib/pcp/config/*
%files -n %{lib_pkg}
%defattr(-,root,root)
%dir %{_includedir}/pcp
%{_includedir}/pcp/builddefs
%{_includedir}/pcp/buildrules
%config %{_sysconfdir}/pcp.conf
%{_libdir}/libpcp.so.3
%{_libdir}/libpcp_gui.so.2
%{_libdir}/libpcp_mmv.so.1
%{_libdir}/libpcp_pmda.so.3
%{_libdir}/libpcp_trace.so.2
%{_libdir}/libpcp_import.so.1
%files -n %{lib_devel_pkg}
%defattr(-,root,root)
%{_libdir}/libpcp.so
%{_libdir}/libpcp.so.2
%{_libdir}/libpcp_gui.so
%{_libdir}/libpcp_gui.so.1
%{_libdir}/libpcp_mmv.so
%{_libdir}/libpcp_pmda.so
%{_libdir}/libpcp_pmda.so.2
%{_libdir}/libpcp_trace.so
%{_libdir}/libpcp_import.so
%{_includedir}/pcp/*.h
%{_mandir}/man3/*.3.gz
%{_datadir}/pcp/demos
%{_datadir}/pcp/examples
# PMDAs that ship src and are not for production use
# straight out-of-the-box, for devel or QA use only.
%{_localstatedir}/lib/pcp/pmdas/simple
%{_localstatedir}/lib/pcp/pmdas/sample
%{_localstatedir}/lib/pcp/pmdas/trivial
%{_localstatedir}/lib/pcp/pmdas/txmon
%files import-sar2pcp
%defattr(-,root,root)
%{_bindir}/sar2pcp
%{_mandir}/man1/sar2pcp.1.gz
%files import-iostat2pcp
%defattr(-,root,root)
%{_bindir}/iostat2pcp
%{_mandir}/man1/iostat2pcp.1.gz
%files import-sheet2pcp
%defattr(-,root,root)
%{_bindir}/sheet2pcp
%{_mandir}/man1/sheet2pcp.1.gz
%files import-mrtg2pcp
%defattr(-,root,root)
%{_bindir}/mrtg2pcp
%{_mandir}/man1/mrtg2pcp.1.gz
%files -n perl-PCP-PMDA -f perl-pcp-pmda.list
%defattr(-,root,root)
%if (0%{?suse_version} > 0)
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/PCP
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/auto/PCP
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/auto/PCP/PMDA
%endif
%files -n perl-PCP-MMV -f perl-pcp-mmv.list
%defattr(-,root,root)
%if (0%{?suse_version} > 0)
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/PCP
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/auto/PCP
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/auto/PCP/MMV
%endif
%files -n perl-PCP-LogImport -f perl-pcp-logimport.list
%defattr(-,root,root)
%if (0%{?suse_version} > 0)
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/PCP
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/auto/PCP
%dir %{_prefix}/lib/perl5/vendor_perl/*/*-linux-thread-multi*/auto/PCP/LogImport
%endif
%files -n perl-PCP-LogSummary -f perl-pcp-logsummary.list
%defattr(-,root,root)
%if (0%{?suse_version} > 0)
%dir %{_prefix}/lib/perl5/vendor_perl/*/PCP
%endif
%changelog