diff --git a/.gitignore b/.gitignore index 79fe147..bb5f387 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ pcp-3.3.3-1.src.tar.gz /pcp-3.8.10.src.tar.gz /pcp-3.8.11.src.tar.gz /pcp-3.8.12.src.tar.gz +/pcp-3.9.0.src.tar.gz diff --git a/pcp.spec b/pcp.spec index 985a2fc..76118cf 100644 --- a/pcp.spec +++ b/pcp.spec @@ -1,6 +1,6 @@ Summary: System-level performance monitoring and performance management Name: pcp -Version: 3.8.12 +Version: 3.9.0 %define buildversion 1 Release: %{buildversion}%{?dist} @@ -19,7 +19,9 @@ BuildRequires: ncurses-devel BuildRequires: readline-devel BuildRequires: cyrus-sasl-devel BuildRequires: libmicrohttpd-devel +%ifnarch ppc ppc64 BuildRequires: systemtap-sdt-devel +%endif BuildRequires: perl(ExtUtils::MakeMaker) BuildRequires: initscripts man %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 @@ -76,6 +78,21 @@ 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-conf +# +%package conf +License: LGPLv2+ +Group: Development/Libraries +Summary: Performance Co-Pilot run-time configuration +URL: http://oss.sgi.com/projects/pcp/ + +# http://fedoraproject.org/wiki/Packaging:Conflicts "Splitting Packages" +Conflicts: pcp-libs < 3.9 + +%description conf +Performance Co-Pilot (PCP) run-time configuration + # # pcp-libs # @@ -85,6 +102,8 @@ Group: Development/Libraries Summary: Performance Co-Pilot run-time libraries URL: http://oss.sgi.com/projects/pcp/ +Requires: pcp-conf = %{version}-%{release} + %description libs Performance Co-Pilot (PCP) run-time libraries @@ -116,6 +135,47 @@ Requires: pcp-libs-devel = %{version}-%{release} %description testsuite Quality assurance test suite for Performance Co-Pilot (PCP). +# +# pcp-manager +# +%package manager +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) manager daemon +URL: http://oss.sgi.com/projects/pcp/ + +Requires: pcp = %{version}-%{release} +Requires: pcp-libs = %{version}-%{release} + +%description manager +An optional daemon (pmmgr) that manages a collection of pmlogger and +pmie daemons, for a set of discovered local and remote hosts running +the performance metrics collection daemon (pmcd). It ensures these +daemons are running when appropriate, and manages their log rotation +needs (which are particularly complex in the case of pmlogger). +The base PCP package provides comparable functionality through cron +scripts which predate this daemon but do still provide effective and +efficient log management services. +The pcp-manager package aims to aggressively enable new PCP features +and as a result may not be suited to all production environments. + +# +# pcp-webapi +# +%package webapi +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) web API service +URL: http://oss.sgi.com/projects/pcp/ + +Requires: pcp = %{version}-%{release} +Requires: pcp-libs = %{version}-%{release} + +%description webapi +Provides a daemon (pmwebd) that binds a large subset of the Performance +Co-Pilot (PCP) client API (PMAPI) to RESTful web applications using the +HTTP (PMWEBAPI) protocol. + # # perl-PCP-PMDA. This is the PCP agent perl binding. # @@ -300,6 +360,9 @@ mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/run/pcp # remove sheet2pcp until BZ 830923 and BZ 754678 are resolved. rm -f $RPM_BUILD_ROOT/%{_bindir}/sheet2pcp $RPM_BUILD_ROOT/%{_mandir}/man1/sheet2pcp.1.gz +# remove configsz.h as this is not multilib friendly. +rm -f $RPM_BUILD_ROOT/%{_includedir}/pcp/configsz.h + %if %{disable_infiniband} # remove pmdainfiniband on platforms lacking IB devel packages. rm -f $RPM_BUILD_ROOT/%{_pmdasdir}/ib $RPM_BUILD_ROOT/man1/pmdaib.1.gz @@ -317,19 +380,27 @@ egrep -v 'simple|sample|trivial|txmon' |\ egrep -v '^ib$|infiniband' |\ sed -e 's#^#'%{_pmdasdir}'\/#' >base_pmdas.list -# bin and man1 files except those split out into sub packages -ls -1 $RPM_BUILD_ROOT/%{_bindir} | egrep -v '2pcp' |\ -sed -e 's#^#'%{_bindir}'\/#' >base_binfiles.list -ls -1 $RPM_BUILD_ROOT/%{_mandir}/man1 | egrep -v '2pcp|pmdaib' |\ -sed -e 's#^#'%{_mandir}'\/man1\/#' >base_man1files.list +# all base pcp package files except those split out into sub packages +ls -1 $RPM_BUILD_ROOT/%{_bindir} |\ +sed -e 's#^#'%{_bindir}'\/#' >base_bin.list +ls -1 $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin |\ +sed -e 's#^#'%{_libexecdir}/pcp/bin'\/#' >base_exec.list +ls -1 $RPM_BUILD_ROOT/%{_mandir}/man1 |\ +sed -e 's#^#'%{_mandir}'\/man1\/#' >base_man.list +cat base_pmdas.list base_bin.list base_conf.list base_exec.list base_man.list |\ +egrep -v 'pmdaib|pmmgr|pmweb|2pcp' |\ +egrep -v %{_confdir} | egrep -v %{_logsdir} > base.list -cat base_pmdas.list base_binfiles.list base_man1files.list > base_specialfiles.list +# all devel pcp package files except those split out into sub packages +ls -1 $RPM_BUILD_ROOT/%{_mandir}/man3 |\ +sed -e 's#^#'%{_mandir}'\/man3\/#' | egrep -v '3pm|PMWEBAPI' >devel.list %pre testsuite test -d %{_testsdir} || mkdir -p -m 755 %{_testsdir} getent group pcpqa >/dev/null || groupadd -r pcpqa getent passwd pcpqa >/dev/null || \ - useradd -c "PCP Quality Assurance" -g pcpqa -d %{_testsdir} -m -r -s /bin/bash pcpqa 2>/dev/null + useradd -c "PCP Quality Assurance" -g pcpqa -d %{_testsdir} -M -r -s /bin/bash pcpqa 2>/dev/null +chown -R pcpqa:pcpqa %{_testsdir} 2>/dev/null exit 0 %post testsuite @@ -378,13 +449,27 @@ save_configs_script() # migrate and clean configs if we have had a previous in-use installation [ -d "$PCP_LOG_DIR" ] || exit 0 # no configuration file upgrades required rm -f "$PCP_LOG_DIR/configs.sh" -for daemon in pmcd pmie pmlogger pmwebd pmproxy +for daemon in pmcd pmie pmlogger pmproxy do save_configs_script >> "$PCP_LOG_DIR/configs.sh" "$PCP_SYSCONF_DIR/$daemon" \ /var/lib/pcp/config/$daemon /etc/$daemon /etc/pcp/$daemon /etc/sysconfig/$daemon done exit 0 +%preun webapi +if [ "$1" -eq 0 ] +then + /sbin/service pmwebd stop >/dev/null 2>&1 + /sbin/chkconfig --del pmwebd >/dev/null 2>&1 +fi + +%preun manager +if [ "$1" -eq 0 ] +then + /sbin/service pmmgr stop >/dev/null 2>&1 + /sbin/chkconfig --del pmmgr >/dev/null 2>&1 +fi + %preun if [ "$1" -eq 0 ] then @@ -392,16 +477,12 @@ then /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 pmwebd stop >/dev/null 2>&1 - /sbin/service pmmgr 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 pmmgr >/dev/null 2>&1 - /sbin/chkconfig --del pmwebd >/dev/null 2>&1 /sbin/chkconfig --del pmproxy >/dev/null 2>&1 # cleanup namespace state/flag, may still exist @@ -409,6 +490,16 @@ then rm -f "$PCP_PMNS_DIR/.NeedRebuild" >/dev/null 2>&1 fi +%post webapi +chown -R pcp:pcp %{_logsdir}/pmwebd 2>/dev/null +/sbin/chkconfig --add pmwebd >/dev/null 2>&1 +/sbin/service pmwebd condrestart + +%post manager +chown -R pcp:pcp %{_logsdir}/pmmgr 2>/dev/null +/sbin/chkconfig --add pmmgr >/dev/null 2>&1 +/sbin/service pmmgr condrestart + %post PCP_LOG_DIR=%{_logsdir} PCP_PMNS_DIR=%{_pmnsdir} @@ -443,8 +534,6 @@ done chown -R pcp:pcp %{_logsdir}/pmcd 2>/dev/null chown -R pcp:pcp %{_logsdir}/pmlogger 2>/dev/null chown -R pcp:pcp %{_logsdir}/pmie 2>/dev/null -chown -R pcp:pcp %{_logsdir}/pmmgr 2>/dev/null -chown -R pcp:pcp %{_logsdir}/pmwebd 2>/dev/null chown -R pcp:pcp %{_logsdir}/pmproxy 2>/dev/null touch "$PCP_PMNS_DIR/.NeedRebuild" chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" @@ -454,17 +543,13 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" /sbin/service pmlogger condrestart /sbin/chkconfig --add pmie >/dev/null 2>&1 /sbin/service pmie condrestart -/sbin/chkconfig --add pmmgr >/dev/null 2>&1 -/sbin/service pmmgr condrestart -/sbin/chkconfig --add pmwebd >/dev/null 2>&1 -/sbin/service pmwebd condrestart /sbin/chkconfig --add pmproxy >/dev/null 2>&1 /sbin/service pmproxy condrestart %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig -%files -f base_specialfiles.list +%files -f base.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, @@ -473,6 +558,7 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" %defattr(-,root,root) %doc CHANGELOG COPYING INSTALL README VERSION.pcp pcp.lsm +%dir %{_confdir} %dir %{_pmdasdir} %dir %{_datadir}/pcp %dir %attr(0775,pcp,pcp) %{_localstatedir}/run/pcp @@ -482,22 +568,18 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" %dir %attr(0775,pcp,pcp) %{_tempsdir} %dir %attr(0775,pcp,pcp) %{_tempsdir}/pmie %dir %attr(0775,pcp,pcp) %{_tempsdir}/pmlogger +%dir %attr(0775,pcp,pcp) %{_logsdir} -%{_libexecdir}/pcp %{_datadir}/pcp/lib -%attr(0775,pcp,pcp) %{_logsdir} %attr(0775,pcp,pcp) %{_logsdir}/pmcd %attr(0775,pcp,pcp) %{_logsdir}/pmlogger %attr(0775,pcp,pcp) %{_logsdir}/pmie -%attr(0775,pcp,pcp) %{_logsdir}/pmwebd %attr(0775,pcp,pcp) %{_logsdir}/pmproxy %{_localstatedir}/lib/pcp/pmns %{_initddir}/pcp %{_initddir}/pmcd %{_initddir}/pmlogger %{_initddir}/pmie -%{_initddir}/pmmgr -%{_initddir}/pmwebd %{_initddir}/pmproxy %{_mandir}/man5/* %config(noreplace) %{_sysconfdir}/sasl2/pmcd.conf @@ -506,12 +588,11 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" %config %{_sysconfdir}/bash_completion.d/pcp %config %{_sysconfdir}/pcp.env %{_sysconfdir}/pcp.sh -%{_sysconfdir}/pcp +%dir %{_confdir}/pmcd %config(noreplace) %{_confdir}/pmcd/pmcd.conf %config(noreplace) %{_confdir}/pmcd/pmcd.options %config(noreplace) %{_confdir}/pmcd/rc.local -%config(noreplace) %{_confdir}/pmmgr/pmmgr.options -%config(noreplace) %{_confdir}/pmwebd/pmwebd.options +%dir %{_confdir}/pmproxy %config(noreplace) %{_confdir}/pmproxy/pmproxy.options %dir %attr(0775,pcp,pcp) %{_confdir}/pmie %attr(0664,pcp,pcp) %config(noreplace) %{_confdir}/pmie/control @@ -529,13 +610,17 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" %endif # ppc %endif -%files libs +%files conf %defattr(-,root,root) %dir %{_includedir}/pcp %{_includedir}/pcp/builddefs %{_includedir}/pcp/buildrules %config %{_sysconfdir}/pcp.conf + +%files libs +%defattr(-,root,root) + %{_libdir}/libpcp.so.3 %{_libdir}/libpcp_gui.so.2 %{_libdir}/libpcp_mmv.so.1 @@ -543,7 +628,7 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" %{_libdir}/libpcp_trace.so.2 %{_libdir}/libpcp_import.so.1 -%files libs-devel +%files libs-devel -f devel.list %defattr(-,root,root) %{_libdir}/libpcp.so @@ -556,7 +641,6 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" %{_libdir}/libpcp_trace.so %{_libdir}/libpcp_import.so %{_includedir}/pcp/*.h -%{_mandir}/man3/*.3.gz %{_datadir}/pcp/demos %{_datadir}/pcp/examples @@ -571,6 +655,25 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" %defattr(-,pcpqa,pcpqa) %{_testsdir} +%files webapi +%defattr(-,root,root) +%{_initddir}/pmwebd +%{_libexecdir}/pcp/bin/pmwebd +%attr(0775,pcp,pcp) %{_logsdir}/pmwebd +%{_confdir}/pmwebd +%config(noreplace) %{_confdir}/pmwebd/pmwebd.options +%{_mandir}/man1/pmwebd.1.gz +%{_mandir}/man3/PMWEBAPI.3.gz + +%files manager +%defattr(-,root,root) +%{_initddir}/pmmgr +%{_libexecdir}/pcp/bin/pmmgr +%attr(0775,pcp,pcp) %{_logsdir}/pmmgr +%{_confdir}/pmmgr +%config(noreplace) %{_confdir}/pmmgr/pmmgr.options +%{_mandir}/man1/pmmgr.1.gz + %files import-sar2pcp %defattr(-,root,root) %{_bindir}/sar2pcp @@ -615,6 +718,12 @@ chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" %defattr(-,root,root) %changelog +* Wed Feb 19 2014 Nathan Scott - 3.9.0-1 +- Create new sub-packages for pcp-webapi and pcp-manager +- Split configuration from pcp-libs into pcp-conf (multilib) +- Fix pmdagluster to handle more volumes, fileops (BZ 1066544) +- Update to latest PCP sources. + * Wed Jan 29 2014 Nathan Scott - 3.8.12-1 - Resolves SNMP procfs file ICMP line parse issue (BZ 1055818) - Update to latest PCP sources. diff --git a/sources b/sources index 8b154f3..0ea4b95 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -36cce7354c2aa3439de1f6a97f3cf590 pcp-3.8.12.src.tar.gz +ff418ff346f4110fb056330ff8f266ce pcp-3.9.0.src.tar.gz