diff --git a/pcp.spec b/pcp.spec index 50f2ede..ffde623 100644 --- a/pcp.spec +++ b/pcp.spec @@ -1,6 +1,6 @@ Name: pcp -Version: 3.12.2 -Release: 5%{?dist} +Version: 4.0.0 +Release: 1%{?dist} Summary: System-level performance monitoring and performance management License: GPLv2+ and LGPLv2.1+ and CC-BY URL: http://www.pcp.io @@ -15,7 +15,7 @@ Source2: %{github}/pcp-webapp-grafana/archive/1.9.1-2/pcp-webapp-grafana-1.9.1-2 Source3: %{github}/pcp-webapp-graphite/archive/0.9.10/pcp-webapp-graphite-0.9.10.tar.gz Source4: %{github}/pcp-webapp-blinkenlights/archive/1.0.0/pcp-webapp-blinkenlights-1.0.0.tar.gz -%if 0%{?fedora} >= 24 || 0%{?rhel} > 7 +%if 0%{?fedora} >= 26 || 0%{?rhel} > 7 %global __python2 python2 %else %global __python2 python @@ -47,6 +47,7 @@ Source4: %{github}/pcp-webapp-blinkenlights/archive/1.0.0/pcp-webapp-blinkenligh %endif %global disable_microhttpd 0 +%global disable_webapps 0 %global disable_cairo 0 %global disable_python2 0 @@ -71,6 +72,17 @@ Source4: %{github}/pcp-webapp-blinkenlights/archive/1.0.0/pcp-webapp-blinkenligh %global perl_interpreter perl %endif +# support for pmdabcc +%if 0%{?fedora} >= 25 || 0%{?rhel} > 7 +%if !%{disable_python3} +%global disable_bcc 0 +%else +%global disable_bcc 1 +%endif +%else +%global disable_bcc 1 +%endif + # support for pmdajson %if 0%{?rhel} == 0 || 0%{?rhel} > 6 %if !%{disable_python2} || !%{disable_python3} @@ -279,6 +291,12 @@ Requires: pcp-libs = %{version}-%{release} %global _with_perfevent --with-perfevent=yes %endif +%if %{disable_bcc} +%global _with_bcc --with-pmdabcc=no +%else +%global _with_bcc --with-pmdabcc=yes +%endif + %if %{disable_json} %global _with_json --with-pmdajson=no %else @@ -297,8 +315,14 @@ Requires: pcp-libs = %{version}-%{release} %global _with_snmp --with-pmdasnmp=yes %endif +%if %{disable_webapps} +%global _with_webapps --with-webapps=no +%else +%global _with_webapps --with-webapps=yes +%endif + %global pmda_remove() %{expand: -if [ "%1" -eq 0 ] +if [ %1 -eq 0 ] then if [ -f "%{_confdir}/pmcd/pmcd.conf" ] && [ -f "%{_pmdasdir}/%2/domain.h" ] then @@ -308,28 +332,33 @@ fi } %global selinux_handle_policy() %{expand: -if [ "%1" -eq 1 ] +if [ -e /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled then - PCP_SELINUX_DIR=%{_selinuxdir} - if [ -f "$PCP_SELINUX_DIR/%2" ] + if [ %1 -ge 1 ] then - %if 0%{?fedora} >= 24 || 0%{?rhel} > 6 - (semodule -X 400 -i %{_selinuxdir}/%2) - %else - (semodule -i %{_selinuxdir}/%2) - %endif #distro version check - fi -elif [ "%1" -eq 0 ] -then - if semodule -l | grep %2 >/dev/null 2>&1 + PCP_SELINUX_DIR=%{_selinuxdir} + if [ -f "$PCP_SELINUX_DIR/%2" ] + then + if semodule -h | grep -q -- "-X" >/dev/null 2>&1 + then + (semodule -X 400 -i %{_selinuxdir}/%2) + else + (semodule -i %{_selinuxdir}/%2) + fi #semodule -X flag check + fi + elif [ %1 -eq 0 ] then - %if 0%{?fedora} >= 24 || 0%{?rhel} > 6 - (semodule -X 400 -r %2 >/dev/null) - %else - (semodule -r %2 >/dev/null) - %endif #distro version check + if semodule -l | grep %2 >/dev/null 2>&1 + then + if semodule -h | grep -q -- "-X" >/dev/null 2>&1 + then + (semodule -X 400 -r %2 >/dev/null) + else + (semodule -r %2 >/dev/null) + fi #semodule -X flag check + fi fi -fi +fi # check for an active selinux install } %description @@ -447,11 +476,12 @@ Co-Pilot (PCP) client API (PMAPI) to RESTful web applications using the HTTP (PMWEBAPI) protocol. %endif +%if !%{disable_webapps} # # pcp-webjs and pcp-webapp packages # %package webjs -License: ASL2.0 and MIT and CC-BY +License: ASL2.0 and MIT and CC-BY and GPLv3 Group: Applications/Internet Conflicts: pcp-webjs < 3.11.9 %if !%{disable_noarch} @@ -499,7 +529,7 @@ Grafana can render time series dashboards at the browser via flot.js server via png (less interactive, faster). %package webapp-graphite -License: ASL2.0 +License: ASL2.0 and GPLv3 Group: Applications/Internet Conflicts: pcp-webjs < 3.10.4 %if !%{disable_noarch} @@ -526,6 +556,7 @@ URL: http://pcp.io %description webapp-blinkenlights Demo web application showing traffic lights that change colour based on the periodic evaluation of performance metric expressions. +%endif # # perl-PCP-PMDA. This is the PCP agent perl binding. @@ -1417,6 +1448,23 @@ collecting metrics about the Device Mapper Cache and Thin Client. # end pcp-pmda-dm +%if !%{disable_bcc} +# +# pcp-pmda-bcc +# +%package pmda-bcc +License: ASL2.0 and GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics from eBPF/BCC modules +URL: http://www.pcp.io +Requires: python3-bcc +Requires: python3-pcp +%description pmda-bcc +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +extracting performance metrics from eBPF/BCC Python modules. +# end pcp-pmda-bcc +%endif + %if !%{disable_python2} || !%{disable_python3} # # pcp-pmda-gluster @@ -1892,6 +1940,9 @@ Requires: pcp-pmda-lustrecomm pcp-pmda-logger pcp-pmda-docker pcp-pmda-bind2 %if !%{disable_nutcracker} Requires: pcp-pmda-nutcracker %endif +%if !%{disable_bcc} +Requires: pcp-pmda-bcc +%endif %if !%{disable_python2} || !%{disable_python3} Requires: pcp-pmda-gluster pcp-pmda-zswap pcp-pmda-unbound pcp-pmda-mic Requires: pcp-pmda-libvirt pcp-pmda-lio pcp-pmda-prometheus pcp-pmda-haproxy @@ -1947,7 +1998,7 @@ automated pmie diagnosis, alerting and self-healing for the localhost. %if !%{disable_python2} # -# python-pcp. This is the PCP library bindings for python. +# python2-pcp. This is the PCP library bindings for python. # %package -n %{__python2}-pcp License: GPLv2+ @@ -1955,6 +2006,10 @@ Group: Development/Libraries Summary: Performance Co-Pilot (PCP) Python bindings and documentation URL: http://www.pcp.io Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if 0%{?fedora} >= 26 || 0%{?rhel} > 7 +# on these platforms, python2-pcp replaces python-pcp +Obsoletes: python-pcp +%endif %if 0%{?rhel} == 5 Requires: python%{default_python} %else @@ -2088,7 +2143,7 @@ updated policy package. %if !%{disable_python2} && 0%{?default_python} != 3 export PYTHON=python%{?default_python} %endif -%configure %{?_with_initd} %{?_with_doc} %{?_with_ib} %{?_with_papi} %{?_with_perfevent} %{?_with_json} %{?_with_snmp} %{?_with_nutcracker} +%configure %{?_with_initd} %{?_with_doc} %{?_with_ib} %{?_with_papi} %{?_with_perfevent} %{?_with_bcc} %{?_with_json} %{?_with_snmp} %{?_with_nutcracker} %{?_with_webapps} make %{?_smp_mflags} default_pcp %install @@ -2114,11 +2169,13 @@ rm -fr $RPM_BUILD_ROOT/%{_initddir}/pmwebd rm -fr $RPM_BUILD_ROOT/%{_unitdir}/pmwebd.service rm -f $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin/pmwebd %endif +%if !%{disable_webapps} for app in vector grafana graphite blinkenlights; do pwd webapp=`find ../$app -mindepth 1 -maxdepth 1` mv $webapp $RPM_BUILD_ROOT/%{_datadir}/pcp/webapps/$app done +%endif %if %{disable_infiniband} # remove pmdainfiniband on platforms lacking IB devel packages. @@ -2151,9 +2208,12 @@ for f in $RPM_BUILD_ROOT/%{_initddir}/{pcp,pmcd,pmlogger,pmie,pmwebd,pmmgr,pmpro done %if 0%{?fedora} > 26 +if [ "$1" -eq 1 ] +then PCP_SYSCONFIG_DIR=%{_sysconfdir}/sysconfig sed -i 's/^\#\ PMLOGGER_LOCAL.*/PMLOGGER_LOCAL=1/g' "$RPM_BUILD_ROOT/$PCP_SYSCONFIG_DIR/pmlogger" sed -i 's/^\#\ PMCD_LOCAL.*/PMCD_LOCAL=1/g' "$RPM_BUILD_ROOT/$PCP_SYSCONFIG_DIR/pmcd" +fi %endif # list of PMDAs in the base pkg @@ -2216,6 +2276,7 @@ ls -1 $RPM_BUILD_ROOT/%{_pmdasdir} |\ grep -E -v '^rpm' |\ grep -E -v '^json' |\ grep -E -v '^mic' |\ + grep -E -v '^bcc' |\ grep -E -v '^gluster' |\ grep -E -v '^zswap' |\ grep -E -v '^unbound' |\ @@ -2515,6 +2576,11 @@ fi %preun pmda-dm %{pmda_remove "$1" "dm"} +%if !%{disable_bcc} +%preun pmda-bcc +%{pmda_remove "$1" "bcc"} +%endif + %if !%{disable_python2} || !%{disable_python3} %preun pmda-gluster %{pmda_remove "$1" "gluster"} @@ -2789,6 +2855,7 @@ cd %config(noreplace) %{_sysconfdir}/sysconfig/pmproxy %config(noreplace) %{_sysconfdir}/sysconfig/pmcd %config %{_sysconfdir}/pcp.env +%dir %{_confdir}/labels %dir %{_confdir}/pmcd %config(noreplace) %{_confdir}/pmcd/pmcd.conf %config(noreplace) %{_confdir}/pmcd/pmcd.options @@ -2887,13 +2954,14 @@ cd %attr(0775,pcp,pcp) %{_logsdir}/pmwebd %{_confdir}/pmwebd %config(noreplace) %{_confdir}/pmwebd/pmwebd.options -# duplicate directories from pcp and pcp-webjs, but rpm copes with that. +# duplicate pcp, pcp-webapi and pcp-webjs directories, but rpm copes with that. %dir %{_datadir}/pcp %dir %{_datadir}/pcp/webapps %endif +%if !%{disable_webapps} %files webjs -# duplicate directories from pcp and pcp-webapi, but rpm copes with that. +# duplicate pcp, pcp-webapi and pcp-webjs directories, but rpm copes with that. %dir %{_datadir}/pcp %dir %{_datadir}/pcp/webapps %{_datadir}/pcp/webapps/*.png @@ -2919,6 +2987,7 @@ cd %dir %{_datadir}/pcp %dir %{_datadir}/pcp/webapps %{_datadir}/pcp/webapps/vector +%endif %files manager %{_initddir}/pmmgr @@ -3071,6 +3140,11 @@ cd %files pmda-dm %{_pmdasdir}/dm +%if !%{disable_bcc} +%files pmda-bcc +%{_pmdasdir}/bcc +%endif + %if !%{disable_python2} || !%{disable_python3} %files pmda-gluster %{_pmdasdir}/gluster @@ -3222,6 +3296,15 @@ cd %endif %changelog +* Fri Feb 16 2018 Nathan Scott - 4.0.0-1 +- pcp-atopsar: robustness around missing data (BZ 1508028) +- python pmcc method checking for missing metrics (BZ 1508026) +- Fix generic -s and -T option handling in libpcp (BZ 1352461) +- Resolve crash in local context mode in libpcp_pmda (BZ 1451475) +- python api: fix timezone segv from incorrect free (BZ 1352465) +- Remove section 1 and 5 man pages for pmview tool (BZ 1289126) +- Update to latest PCP sources. + * Thu Feb 08 2018 Nathan Scott - 3.12.2-5 - Update the Vector webapp to latest upstream (v1.2.1). diff --git a/sources b/sources index 9497e41..7e890a5 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (pcp-3.12.2.src.tar.gz) = 0d3f31cd174ab701a1662175210f0de238973da856600d3545567827221daf4f45ed47b4aaeb75a128d9c036d30b768bf013960bba99010c4db2b08c7c883981 +SHA512 (pcp-4.0.0.src.tar.gz) = 66593055f18cdf539094aa2216cfaac9d9bd489ce436425c12cede0d35f10fe71290a484f593fa0fadbba3831959ae38ce17ec7ca11ba8800316e57632646b5d SHA512 (pcp-webapp-blinkenlights-1.0.0.tar.gz) = 505eafd4b8eb2ab97ec6b0fea3b5510ab0b976fa07559f1d163d240c62a8d7419f062eecc180b28b6b240207b45daed6fcc39d8e2930c6d038790d5ac0c695ab SHA512 (pcp-webapp-grafana-1.9.1-2.tar.gz) = abd0f360b057853d343e506e352a37d16f78bbae6760124ecdfab0e43ffcf3b31404311f1fe5c962e8abdbf2ad8699df3f27e2920f03f1a10bca3c0e01179e21 SHA512 (pcp-webapp-vector-1.2.1.tar.gz) = c2e29df8551550f3f838a91e5f109edbf8fea4118e3d7a890ed412255824306f8f9fb762ff1edc9d160892a0c89f192307d1cfd8597f30de975e1f4d781b5615