commit 23d00c2c94e61485d7c2ba93d61947c16bbc42ac Author: CentOS Sources Date: Tue Nov 15 01:33:06 2022 -0500 import pcp-5.3.7-7.el9 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..052fd3e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/pcp-5.3.7.src.tar.gz diff --git a/.pcp.metadata b/.pcp.metadata new file mode 100644 index 0000000..e64a399 --- /dev/null +++ b/.pcp.metadata @@ -0,0 +1 @@ +a0a05bf501b016cb859fb211ae60ce18be2bbd99 SOURCES/pcp-5.3.7.src.tar.gz diff --git a/SOURCES/redhat-bugzilla-1981886-pmdasockets-backporting.patch b/SOURCES/redhat-bugzilla-1981886-pmdasockets-backporting.patch new file mode 100644 index 0000000..bdcc5d4 --- /dev/null +++ b/SOURCES/redhat-bugzilla-1981886-pmdasockets-backporting.patch @@ -0,0 +1,459 @@ +diff --git a/qa/1927 b/qa/1927 +new file mode 100755 +index 000000000..46afa9509 +--- /dev/null ++++ b/qa/1927 +@@ -0,0 +1,88 @@ ++#!/bin/sh ++# PCP QA Test No. 1927 ++# Exercise the sockets PMDA Install/Remove and string metric bug. ++# ++# Copyright (c) 2022 Red Hat. All Rights Reserved. ++# ++ ++seq=`basename $0` ++echo "QA output created by $seq" ++ ++# get standard environment, filters and checks ++. ./common.product ++. ./common.filter ++. ./common.check ++ ++[ -f $PCP_PMDAS_DIR/sockets/pmdasockets ] || _notrun "sockets pmda not installed" ++ ++_cleanup() ++{ ++ cd $here ++ $sudo rm -rf $tmp $tmp.* ++} ++ ++status=0 # success is the default! ++$sudo rm -rf $tmp $tmp.* $seq.full ++ ++_filter_sockets() ++{ ++ grep -v 'No value(s) available' ++} ++ ++pmdasockets_remove() ++{ ++ echo ++ echo "=== remove sockets agent ===" ++ $sudo ./Remove >$tmp.out 2>&1 ++ _filter_pmda_remove <$tmp.out ++} ++ ++pmdasockets_install() ++{ ++ # start from known starting points ++ cd $PCP_PMDAS_DIR/sockets ++ $sudo ./Remove >/dev/null 2>&1 ++ ++ echo ++ echo "=== sockets agent installation ===" ++ $sudo ./Install $tmp.out 2>&1 ++ cat $tmp.out >>$here/$seq.full ++ # Check sockets metrics have appeared ... X metrics and Y values ++ _filter_pmda_install <$tmp.out \ ++ | sed \ ++ -e 's/[0-9][0-9]* warnings, //' \ ++ | $PCP_AWK_PROG ' ++/Check network.persocket metrics have appeared/ { ++ if ($7 >= 50 && $7 <= 99) $7 = "X" ++ if ($10 >= 0) $10 = "Y" ++ } ++ { print }' ++} ++ ++_prepare_pmda sockets ++# note: _restore_auto_restart pmcd done in _cleanup_pmda() ++trap "_cleanup_pmda sockets; exit \$status" 0 1 2 3 15 ++ ++_stop_auto_restart pmcd ++ ++# real QA test starts here ++pmdasockets_install ++ ++# pmcd should have been started by the Install process - check ++if pminfo -v network.persocket > $tmp.info 2> $tmp.err ++then ++ : ++else ++ echo "... failed! ... here is the Install log ..." ++ cat $tmp.out ++fi ++cat $tmp.info $tmp.err | _filter_sockets ++ ++echo "Check the values for v6only metric are 0 or 1 ..." ++pminfo -f network.persocket.v6only | egrep -v 'value [01]$' | sed -e '/^$/d' ++ ++pmdasockets_remove ++status=0 ++ ++# success, all done ++exit +diff --git a/qa/1927.out b/qa/1927.out +new file mode 100644 +index 000000000..2ae4385fd +--- /dev/null ++++ b/qa/1927.out +@@ -0,0 +1,17 @@ ++QA output created by 1927 ++ ++=== sockets agent installation === ++Updating the Performance Metrics Name Space (PMNS) ... ++Terminate PMDA if already installed ... ++[...install files, make output...] ++Updating the PMCD control file, and notifying PMCD ... ++Check network.persocket metrics have appeared ... X metrics and Y values ++Check the values for v6only metric are 0 or 1 ... ++network.persocket.v6only ++ ++=== remove sockets agent === ++Culling the Performance Metrics Name Space ... ++network.persocket ... done ++Updating the PMCD control file, and notifying PMCD ... ++[...removing files...] ++Check network.persocket metrics have gone away ... OK +diff --git a/qa/group b/qa/group +index acfc5d208..846c0c4bd 100644 +--- a/qa/group ++++ b/qa/group +@@ -1967,6 +1967,7 @@ x11 + 1901 pmlogger local + 1902 help local + 1914 atop local ++1927 pmda.sockets local + 1937 pmlogrewrite pmda.xfs local + 1955 libpcp pmda pmda.pmcd local + 1956 pmda.linux pmcd local +diff --git a/src/pmdas/linux_sockets/pmda.c b/src/pmdas/linux_sockets/pmda.c +index d10eacf29..5a3018d8a 100644 +--- a/src/pmdas/linux_sockets/pmda.c ++++ b/src/pmdas/linux_sockets/pmda.c +@@ -1,7 +1,7 @@ + /* + * Sockets PMDA + * +- * Copyright (c) 2021 Red Hat. ++ * Copyright (c) 2021-2022 Red Hat. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the +@@ -14,6 +14,7 @@ + * for more details. + */ + ++#include + #include "pmapi.h" + #include "pmda.h" + +@@ -147,6 +148,31 @@ sockets_fetchCallBack(pmdaMetric *metric, unsigned int inst, pmAtomValue *atom) + return PMDA_FETCH_STATIC; + } + ++/* ++ * Restrict the allowed filter strings to only limited special ++ * characters (open and close brackets - everthing else can be ++ * done with alphanumerics) to limit any attack surface here. ++ * The ss filtering language is more complex than we ever want ++ * to be attempting to parse ourself, so we leave that side of ++ * things to the ss command itself. ++ */ ++int ++sockets_check_filter(const char *string) ++{ ++ const char *p; ++ ++ for (p = string; *p; p++) { ++ if (isspace(*p)) ++ continue; ++ if (isalnum(*p)) ++ continue; ++ if (*p == '(' || *p == ')') ++ continue; ++ return 0; /* disallow */ ++ } ++ return 1; ++} ++ + static int + sockets_store(pmResult *result, pmdaExt *pmda) + { +@@ -165,9 +191,14 @@ sockets_store(pmResult *result, pmdaExt *pmda) + case 0: /* network.persocket.filter */ + if ((sts = pmExtractValue(vsp->valfmt, &vsp->vlist[0], + PM_TYPE_STRING, &av, PM_TYPE_STRING)) >= 0) { ++ if (sockets_check_filter(av.cp)) { ++ sts = PM_ERR_BADSTORE; ++ free(av.cp); ++ break; ++ } + if (ss_filter) + free(ss_filter); +- ss_filter = av.cp; /* TODO filter syntax check */ ++ ss_filter = av.cp; + } + break; + default: +diff --git a/src/pmdas/linux_sockets/ss_parse.c b/src/pmdas/linux_sockets/ss_parse.c +index 94c5e16e9..9f3afc691 100644 +--- a/src/pmdas/linux_sockets/ss_parse.c ++++ b/src/pmdas/linux_sockets/ss_parse.c +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2021 Red Hat. ++ * Copyright (c) 2021-2022 Red Hat. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the +@@ -21,65 +21,70 @@ static ss_stats_t ss_p; + /* boolean value with no separate value, default 0 */ + #define PM_TYPE_BOOL (PM_TYPE_UNKNOWN-1) + ++/* helper macros to extract field address and size */ ++#define SSFIELD(str,type,f) {(str), (sizeof(str)-1), type, (&(f)), (sizeof(f))} ++#define SSNULLFIELD(str) {(str), (sizeof(str)-1), PM_TYPE_UNKNOWN, NULL} ++ + static struct { + char *field; + int len; + int type; + void *addr; ++ int size; + int found; + } parse_table[] = { +- { "timer:", 6, PM_TYPE_STRING, &ss_p.timer_str }, +- { "uid:", 4, PM_TYPE_U32, &ss_p.uid }, +- { "ino:", 4, PM_TYPE_64, &ss_p.inode }, +- { "sk:", 3, PM_TYPE_U64, &ss_p.sk }, +- { "cgroup:", 7, PM_TYPE_STRING, &ss_p.cgroup }, +- { "v6only:", 7, PM_TYPE_32, &ss_p.v6only }, +- { "--- ", 4, PM_TYPE_UNKNOWN, NULL }, +- { "<-> ", 4, PM_TYPE_UNKNOWN, NULL }, +- { "--> ", 4, PM_TYPE_UNKNOWN, NULL }, +- { "skmem:", 6, PM_TYPE_STRING, &ss_p.skmem_str, }, +- { "ts ", 3, PM_TYPE_BOOL, &ss_p.ts }, +- { "sack ", 5, PM_TYPE_BOOL, &ss_p.sack }, +- { "cubic ", 6, PM_TYPE_BOOL, &ss_p.cubic }, +- { "wscale:", 7, PM_TYPE_STRING, &ss_p.wscale_str }, +- { "rto:", 4, PM_TYPE_DOUBLE, &ss_p.rto }, +- { "rtt:", 4, PM_TYPE_STRING, &ss_p.round_trip_str }, +- { "ato:", 4, PM_TYPE_DOUBLE, &ss_p.ato }, +- { "backoff:", 8, PM_TYPE_32, &ss_p.backoff }, +- { "mss:", 4, PM_TYPE_U32, &ss_p.mss }, +- { "pmtu:", 5, PM_TYPE_U32, &ss_p.pmtu }, +- { "rcvmss:", 7, PM_TYPE_U32, &ss_p.rcvmss }, +- { "advmss:", 7, PM_TYPE_U32, &ss_p.advmss }, +- { "cwnd:", 5, PM_TYPE_U32, &ss_p.cwnd }, +- { "lost:", 5, PM_TYPE_32, &ss_p.lost }, +- { "ssthresh:", 9, PM_TYPE_U32, &ss_p.ssthresh }, +- { "bytes_sent:", 11, PM_TYPE_U64, &ss_p.bytes_sent }, +- { "bytes_retrans:", 14, PM_TYPE_U64, &ss_p.bytes_retrans }, +- { "bytes_acked:", 12, PM_TYPE_U64, &ss_p.bytes_acked }, +- { "bytes_received:", 15, PM_TYPE_U64, &ss_p.bytes_received }, +- { "segs_out:", 9, PM_TYPE_U32, &ss_p.segs_out }, +- { "segs_in:", 8, PM_TYPE_U32, &ss_p.segs_in }, +- { "data_segs_out:", 14, PM_TYPE_U32, &ss_p.data_segs_out }, +- { "data_segs_in:", 13, PM_TYPE_U32, &ss_p.data_segs_in }, +- { "send ", 5, PM_TYPE_DOUBLE, &ss_p.send }, /* no ':' */ +- { "lastsnd:", 8, PM_TYPE_U32, &ss_p.lastsnd }, +- { "lastrcv:", 8, PM_TYPE_U32, &ss_p.lastrcv }, +- { "lastack:", 8, PM_TYPE_U32, &ss_p.lastack }, +- { "pacing_rate ", 12, PM_TYPE_DOUBLE, &ss_p.pacing_rate }, /* no ':' */ +- { "delivery_rate ", 14, PM_TYPE_DOUBLE, &ss_p.delivery_rate }, /* no ':' */ +- { "delivered:", 10, PM_TYPE_U32, &ss_p.delivered }, +- { "app_limited ", 12, PM_TYPE_BOOL, &ss_p.app_limited }, +- { "reord_seen:", 11, PM_TYPE_32, &ss_p.reord_seen }, +- { "busy:", 5, PM_TYPE_U64, &ss_p.busy }, +- { "unacked:", 8, PM_TYPE_32, &ss_p.unacked }, +- { "rwnd_limited:", 13, PM_TYPE_U64, &ss_p.rwnd_limited }, +- { "retrans:", 8, PM_TYPE_STRING, &ss_p.retrans_str }, +- { "dsack_dups:", 11, PM_TYPE_U32, &ss_p.dsack_dups }, +- { "rcv_rtt:", 8, PM_TYPE_DOUBLE, &ss_p.rcv_rtt }, +- { "rcv_space:", 10, PM_TYPE_32, &ss_p.rcv_space }, +- { "rcv_ssthresh:", 13, PM_TYPE_32, &ss_p.rcv_ssthresh }, +- { "minrtt:", 7, PM_TYPE_DOUBLE, &ss_p.minrtt }, +- { "notsent:", 8, PM_TYPE_U32, &ss_p.notsent }, ++ SSFIELD("timer:", PM_TYPE_STRING, ss_p.timer_str), ++ SSFIELD("uid:", PM_TYPE_U32, ss_p.uid), ++ SSFIELD("ino:", PM_TYPE_64, ss_p.inode), ++ SSFIELD("sk:", PM_TYPE_U64, ss_p.sk), ++ SSFIELD("cgroup:", PM_TYPE_STRING, ss_p.cgroup), ++ SSFIELD("v6only:", PM_TYPE_32, ss_p.v6only), ++ SSNULLFIELD("--- "), ++ SSNULLFIELD("<-> "), ++ SSNULLFIELD("--> "), ++ SSFIELD("skmem:", PM_TYPE_STRING, ss_p.skmem_str), ++ SSFIELD("ts ", PM_TYPE_BOOL, ss_p.ts), ++ SSFIELD("sack ", PM_TYPE_BOOL, ss_p.sack), ++ SSFIELD("cubic ", PM_TYPE_BOOL, ss_p.cubic), ++ SSFIELD("wscale:", PM_TYPE_STRING, ss_p.wscale_str), ++ SSFIELD("rto:", PM_TYPE_DOUBLE, ss_p.rto), ++ SSFIELD("rtt:", PM_TYPE_STRING, ss_p.round_trip_str), ++ SSFIELD("ato:", PM_TYPE_DOUBLE, ss_p.ato), ++ SSFIELD("backoff:", PM_TYPE_32, ss_p.backoff), ++ SSFIELD("mss:", PM_TYPE_U32, ss_p.mss), ++ SSFIELD("pmtu:", PM_TYPE_U32, ss_p.pmtu), ++ SSFIELD("rcvmss:", PM_TYPE_U32, ss_p.rcvmss), ++ SSFIELD("advmss:", PM_TYPE_U32, ss_p.advmss), ++ SSFIELD("cwnd:", PM_TYPE_U32, ss_p.cwnd), ++ SSFIELD("lost:", PM_TYPE_32, ss_p.lost), ++ SSFIELD("ssthresh:", PM_TYPE_U32, ss_p.ssthresh), ++ SSFIELD("bytes_sent:", PM_TYPE_U64, ss_p.bytes_sent), ++ SSFIELD("bytes_retrans:", PM_TYPE_U64, ss_p.bytes_retrans), ++ SSFIELD("bytes_acked:", PM_TYPE_U64, ss_p.bytes_acked), ++ SSFIELD("bytes_received:", PM_TYPE_U64, ss_p.bytes_received), ++ SSFIELD("segs_out:", PM_TYPE_U32, ss_p.segs_out), ++ SSFIELD("segs_in:", PM_TYPE_U32, ss_p.segs_in), ++ SSFIELD("data_segs_out:", PM_TYPE_U32, ss_p.data_segs_out), ++ SSFIELD("data_segs_in:", PM_TYPE_U32, ss_p.data_segs_in), ++ SSFIELD("send ", PM_TYPE_DOUBLE, ss_p.send), /* no ':' */ ++ SSFIELD("lastsnd:", PM_TYPE_U32, ss_p.lastsnd), ++ SSFIELD("lastrcv:", PM_TYPE_U32, ss_p.lastrcv), ++ SSFIELD("lastack:", PM_TYPE_U32, ss_p.lastack), ++ SSFIELD("pacing_rate ", PM_TYPE_DOUBLE, ss_p.pacing_rate), /* no ':' */ ++ SSFIELD("delivery_rate ", PM_TYPE_DOUBLE, ss_p.delivery_rate), /* no ':' */ ++ SSFIELD("delivered:", PM_TYPE_U32, ss_p.delivered), ++ SSFIELD("app_limited ", PM_TYPE_BOOL, ss_p.app_limited), ++ SSFIELD("reord_seen:", PM_TYPE_32, ss_p.reord_seen), ++ SSFIELD("busy:", PM_TYPE_U64, ss_p.busy), ++ SSFIELD("unacked:", PM_TYPE_32, ss_p.unacked), ++ SSFIELD("rwnd_limited:", PM_TYPE_U64, ss_p.rwnd_limited), ++ SSFIELD("retrans:", PM_TYPE_STRING, ss_p.retrans_str), ++ SSFIELD("dsack_dups:", PM_TYPE_U32, ss_p.dsack_dups), ++ SSFIELD("rcv_rtt:", PM_TYPE_DOUBLE, ss_p.rcv_rtt), ++ SSFIELD("rcv_space:", PM_TYPE_32, ss_p.rcv_space), ++ SSFIELD("rcv_ssthresh:", PM_TYPE_32, ss_p.rcv_ssthresh), ++ SSFIELD("minrtt:", PM_TYPE_DOUBLE, ss_p.minrtt), ++ SSFIELD("notsent:", PM_TYPE_U32, ss_p.notsent), + + { NULL } + }; +@@ -225,8 +230,11 @@ ss_parse(char *line, int has_state_field, ss_stats_t *ss) + if (*p == '(') + p++; + r = (char *)parse_table[i].addr; +- for (s=p; *s && *s != ' ' && *s != '\n' && *s != ')'; s++) +- *r++ = *s; /* TODO check r len */ ++ for (s=p; *s && *s != ' ' && *s != '\n' && *s != ')'; s++) { ++ *r++ = *s; ++ if (r - (char *)parse_table[i].addr >= parse_table[i].size - 1) ++ break; ++ } + *r = '\0'; + break; + case PM_TYPE_32: +diff --git a/src/pmdas/linux_sockets/ss_stats.h b/src/pmdas/linux_sockets/ss_stats.h +index 183db5afa..009a00cd9 100644 +--- a/src/pmdas/linux_sockets/ss_stats.h ++++ b/src/pmdas/linux_sockets/ss_stats.h +@@ -1,11 +1,11 @@ + /* +- * Copyright (c) 2021 Red Hat. +- * ++ * Copyright (c) 2021-2022 Red Hat. ++ * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. +- * ++ * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +@@ -26,7 +26,7 @@ typedef struct ss_stats { + __int32_t timer_retrans; + __uint32_t uid; + __uint64_t sk; +- char cgroup[64]; ++ char cgroup[128]; + __int32_t v6only; + char skmem_str[64]; + __int32_t skmem_rmem_alloc; +commit 77ba20d5e76ada83283a262dd2083b2fc284b5f8 +Author: Nathan Scott +Date: Thu May 5 09:33:46 2022 +1000 + + selinux: policy updates needed for the pmdasockets metrics + + Thanks to Jan Kurík and Miloš Malík we have the additional + selinux policy requirements - without these we see QE test + failures for this agent with pcp-ss(1) on RHEL. + + Related to Red Hat BZ #1981886. + +diff --git a/qa/917.out.in b/qa/917.out.in +index 3bd1dc15e..6a4356a12 100644 +--- a/qa/917.out.in ++++ b/qa/917.out.in +@@ -154,9 +154,9 @@ Checking policies. + # -- end logging_watch_journal_dirs(pcp_domain) expansion + allow [pcp_pmcd_t] [cluster_tmpfs_t] : [file] { write }; + allow [pcp_pmcd_t] [drbd_exec_t] : [file] { execute execute_no_trans }; +- allow [pcp_pmcd_t] self : [netlink_generic_socket] { bind create getattr setopt write read }; +- allow [pcp_pmcd_t] [sbd_exec_t] : [file] { execute execute_no_trans }; +- allow [pcp_pmcd_t] self : [netlink_tcpdiag_socket] { bind create getattr nlmsg_read setopt }; ++! allow [pcp_pmcd_t] self : [netlink_generic_socket] { bind create getattr setopt write read }; ++! allow [pcp_pmcd_t] [sbd_exec_t] : [file] { execute execute_no_trans }; ++! allow [pcp_pmcd_t] self : [netlink_tcpdiag_socket] { append bind connect create getattr getopt ioctl lock read setattr setopt shutdown write }; + allow [syslogd_t] [pcp_log_t] : [fifo_file] { open read write }; + allow [pcp_pmcd_t] [etc_t] : [dir] { open read search getattr lock ioctl }; + allow [pcp_pmcd_t] [shadow_t] : [file] { getattr ioctl lock open read }; +diff --git a/src/selinux/GNUlocaldefs b/src/selinux/GNUlocaldefs +index 1a1b1428c..1462c5ccb 100644 +--- a/src/selinux/GNUlocaldefs ++++ b/src/selinux/GNUlocaldefs +@@ -138,8 +138,8 @@ PCP_NETLINK_GENERIC_SOCKET_RULE="allow pcp_pmcd_t self:netlink_generic_socket { + endif + + ifeq "$(PCP_SELINUX_NETLINK_TCPDIAG_SOCKET_CLASS)" "true" +-PCP_NETLINK_TCPDIAG_SOCKET_CLASS="class netlink_tcpdiag_socket { bind create getattr nlmsg_read setopt };" +-PCP_NETLINK_TCPDIAG_SOCKET_RULE="allow pcp_pmcd_t self:netlink_tcpdiag_socket { bind create getattr nlmsg_read setopt };" ++PCP_NETLINK_TCPDIAG_SOCKET_CLASS="class netlink_tcpdiag_socket { append bind connect create getattr getopt ioctl lock read setattr setopt shutdown write };" ++PCP_NETLINK_TCPDIAG_SOCKET_RULE="allow pcp_pmcd_t self:netlink_tcpdiag_socket { append bind connect create getattr getopt ioctl lock read setattr setopt shutdown write };" + endif + + ifeq "$(PCP_SELINUX_LOCKDOWN_CLASS)" "true" +commit a6222992fe5f97f94bdddd928ce9557be1918bfd +Author: Jan Kurik +Date: Fri May 6 08:04:46 2022 +1000 + + selinux: fine-tune netlink_tcpdiag_socket policy for all platforms + + Previous policy set did not apply correctly on ppc64le and aarch64 + architectures. After some tweaking the following set of permissions + was found to work on all the supported architectures and fixes the + behavior of the sockets PMDA. + + Related to Red Hat BZ #1981886. + +diff --git a/qa/917.out.in b/qa/917.out.in +index 6a4356a12..723193aa2 100644 +--- a/qa/917.out.in ++++ b/qa/917.out.in +@@ -156,7 +156,7 @@ Checking policies. + allow [pcp_pmcd_t] [drbd_exec_t] : [file] { execute execute_no_trans }; + ! allow [pcp_pmcd_t] self : [netlink_generic_socket] { bind create getattr setopt write read }; + ! allow [pcp_pmcd_t] [sbd_exec_t] : [file] { execute execute_no_trans }; +-! allow [pcp_pmcd_t] self : [netlink_tcpdiag_socket] { append bind connect create getattr getopt ioctl lock read setattr setopt shutdown write }; ++! allow [pcp_pmcd_t] self : [netlink_tcpdiag_socket] { append bind connect create getattr getopt ioctl lock nlmsg_read nlmsg_write read setattr setopt shutdown write }; + allow [syslogd_t] [pcp_log_t] : [fifo_file] { open read write }; + allow [pcp_pmcd_t] [etc_t] : [dir] { open read search getattr lock ioctl }; + allow [pcp_pmcd_t] [shadow_t] : [file] { getattr ioctl lock open read }; +diff --git a/src/selinux/GNUlocaldefs b/src/selinux/GNUlocaldefs +index 1462c5ccb..9733aead9 100644 +--- a/src/selinux/GNUlocaldefs ++++ b/src/selinux/GNUlocaldefs +@@ -138,8 +138,8 @@ PCP_NETLINK_GENERIC_SOCKET_RULE="allow pcp_pmcd_t self:netlink_generic_socket { + endif + + ifeq "$(PCP_SELINUX_NETLINK_TCPDIAG_SOCKET_CLASS)" "true" +-PCP_NETLINK_TCPDIAG_SOCKET_CLASS="class netlink_tcpdiag_socket { append bind connect create getattr getopt ioctl lock read setattr setopt shutdown write };" +-PCP_NETLINK_TCPDIAG_SOCKET_RULE="allow pcp_pmcd_t self:netlink_tcpdiag_socket { append bind connect create getattr getopt ioctl lock read setattr setopt shutdown write };" ++PCP_NETLINK_TCPDIAG_SOCKET_CLASS="class netlink_tcpdiag_socket { append bind connect create getattr getopt ioctl lock nlmsg_read nlmsg_write read setattr setopt shutdown write };" ++PCP_NETLINK_TCPDIAG_SOCKET_RULE="allow pcp_pmcd_t self:netlink_tcpdiag_socket { append bind connect create getattr getopt ioctl lock nlmsg_read nlmsg_write read setattr setopt shutdown write };" + endif + + ifeq "$(PCP_SELINUX_LOCKDOWN_CLASS)" "true" diff --git a/SOURCES/redhat-bugzilla-2059461-pmie-systemd-fixup.patch b/SOURCES/redhat-bugzilla-2059461-pmie-systemd-fixup.patch new file mode 100644 index 0000000..b3190a7 --- /dev/null +++ b/SOURCES/redhat-bugzilla-2059461-pmie-systemd-fixup.patch @@ -0,0 +1,11 @@ +diff -Naurp pcp-5.3.7.orig/src/pmie/GNUmakefile pcp-5.3.7/src/pmie/GNUmakefile +--- pcp-5.3.7.orig/src/pmie/GNUmakefile 2022-02-02 11:53:05.000000000 +1100 ++++ pcp-5.3.7/src/pmie/GNUmakefile 2022-05-03 11:45:12.108743480 +1000 +@@ -80,6 +80,7 @@ pmie.service : pmie.service.in + $(SED) <$< >$@ \ + -e 's;@PCP_RC_DIR@;'$(PCP_RC_DIR)';' \ + -e 's;@PCP_RUN_DIR@;'$(PCP_RUN_DIR)';' \ ++ -e 's;@PCP_SYSCONFIG_DIR@;'$(PCP_SYSCONFIG_DIR)';' \ + # END + + pmie_farm.service : pmie_farm.service.in diff --git a/SOURCES/redhat-bugzilla-2059463-pmdapostfix-harden.patch b/SOURCES/redhat-bugzilla-2059463-pmdapostfix-harden.patch new file mode 100644 index 0000000..73236d6 --- /dev/null +++ b/SOURCES/redhat-bugzilla-2059463-pmdapostfix-harden.patch @@ -0,0 +1,146 @@ +commit f54eddf494e474531e5af609bcc376037a918977 +Author: Nathan Scott +Date: Tue Apr 26 14:32:59 2022 +1000 + + pmdapostfix: harden against a not-yet-running postfix + + Ensure the postfix PMDA can start and service requests even + if postfix is not yet started. + +diff --git a/src/perl/PMDA/local.c b/src/perl/PMDA/local.c +index e223bde7a..33130bc5d 100644 +--- a/src/perl/PMDA/local.c ++++ b/src/perl/PMDA/local.c +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2012-2017 Red Hat. ++ * Copyright (c) 2012-2017,2022 Red Hat. + * Copyright (c) 2008-2011 Aconex. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it +@@ -139,18 +139,15 @@ int + local_tail(char *file, scalar_t *callback, int cookie) + { + int fd = open(file, O_RDONLY | O_NDELAY); +- struct stat stats; ++ struct stat stats = {0}; + int me; + +- if (fd < 0) { +- pmNotifyErr(LOG_ERR, "open failed (%s): %s", file, osstrerror()); +- exit(1); +- } +- if (fstat(fd, &stats) < 0) { +- pmNotifyErr(LOG_ERR, "fstat failed (%s): %s", file, osstrerror()); +- exit(1); +- } +- lseek(fd, 0L, SEEK_END); ++ if (fd < 0) ++ pmNotifyErr(LOG_INFO, "open failed (%s): %s", file, osstrerror()); ++ else if (fstat(fd, &stats) < 0) ++ pmNotifyErr(LOG_INFO, "fstat failed (%s): %s", file, osstrerror()); ++ else ++ lseek(fd, 0L, SEEK_END); + me = local_file(FILE_TAIL, fd, callback, cookie); + files[me].me.tail.path = strdup(file); + files[me].me.tail.dev = stats.st_dev; +@@ -416,10 +413,11 @@ local_pmdaMain(pmdaInterface *self) + } + + for (i = 0; i < nfiles; i++) { +- fd = files[i].fd; + /* check for log rotation or host reconnection needed */ + if ((count % 10) == 0) /* but only once every 10 */ + local_connection(&files[i]); ++ if ((fd = files[i].fd) < 0) ++ continue; + if (files[i].type != FILE_TAIL && !(__pmFD_ISSET(fd, &readyfds))) + continue; + offset = 0; +@@ -431,21 +429,16 @@ multiread: + (oserror() == EAGAIN) || + (oserror() == EWOULDBLOCK))) + continue; +- if (files[i].type == FILE_SOCK) { +- close(files[i].fd); +- files[i].fd = -1; +- continue; +- } +- pmNotifyErr(LOG_ERR, "Data read error on %s: %s\n", +- local_filetype(files[i].type), osstrerror()); +- exit(1); ++ close(files[i].fd); ++ files[i].fd = -1; ++ continue; + } + if (bytes == 0) { + if (files[i].type == FILE_TAIL) + continue; +- pmNotifyErr(LOG_ERR, "No data to read - %s may be closed\n", +- local_filetype(files[i].type)); +- exit(1); ++ close(files[i].fd); ++ files[i].fd = -1; ++ continue; + } + /* + * good read ... data up to buffer + offset + bytes is all OK +diff --git a/src/pmdas/postfix/pmdapostfix.pl b/src/pmdas/postfix/pmdapostfix.pl +index ac46816bc..d6d3f4d3a 100644 +--- a/src/pmdas/postfix/pmdapostfix.pl ++++ b/src/pmdas/postfix/pmdapostfix.pl +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2012-2015 Red Hat. ++# Copyright (c) 2012-2015,2022 Red Hat. + # Copyright (c) 2009-2010 Josef 'Jeff' Sipek + # + # This program is free software; you can redistribute it and/or modify it +@@ -56,8 +56,6 @@ my @postfix_received_dom = ( + 1 => 'smtp', + ); + +-my $setup = defined($ENV{'PCP_PERL_PMNS'}) || defined($ENV{'PCP_PERL_DOMAIN'}); +- + sub postfix_do_refresh + { + QUEUE: +@@ -212,7 +210,7 @@ $logstats{"received"}{1} = 0; + + # Note: + # Environment variables. +-# $PMDA_POSTFIX_QSHAPE: alternative executable qshape scrpipt (for QA) ++# $PMDA_POSTFIX_QSHAPE: alternative executable qshape script (for QA) + # ... over-rides default and command line argument. + # ... over-rides default arguments -b 10 -t $refresh + # $PMDA_POSTFIX_REFRESH: alternative refresh rate (for QA) +@@ -228,7 +226,7 @@ if (defined($ENV{'PMDA_POSTFIX_QSHAPE'})) { + $qshape = $ENV{'PMDA_POSTFIX_QSHAPE'}; + $qshape_args = ''; + } +-if (!$setup) { $pmda->log("qshape cmd: $qshape $qshape_args "); } ++unless (pmda_install()) { $pmda->log("qshape cmd: $qshape $qshape_args "); } + + if (defined($ENV{'PMDA_POSTFIX_REFRESH'})) { $refresh = $ENV{'PMDA_POSTFIX_REFRESH'}; } + +@@ -238,12 +236,15 @@ foreach my $file ( @logfiles ) { + } + } + if (defined($ENV{'PMDA_POSTFIX_LOG'})) { $logfile = $ENV{'PMDA_POSTFIX_LOG'}; } +-unless(defined($logfile)) +-{ +- $pmda->log("Fatal: No Postfix log file found in: @logfiles"); +- die 'No Postfix log file found'; ++unless (pmda_install()) { ++ if (defined($logfile)) { ++ $pmda->log("logfile: $logfile"); ++ } else { ++ $pmda->log("Warning: assuming logfile: $logfiles[0] as no Postfix log found yet from: @logfiles"); ++ } + } +-if (!$setup) { $pmda->log("logfile: $logfile"); } ++# set a good default if none found, before continuing ++unless (defined($logfile)) { $logfile = $logfiles[0]; } + + $pmda->add_indom($postfix_queues_indom, \@postfix_queues_dom, '', ''); + $pmda->add_indom($postfix_sent_indom, \@postfix_sent_dom, '', ''); diff --git a/SOURCES/redhat-bugzilla-2081262-pmdaproc-cgroups-fix.patch b/SOURCES/redhat-bugzilla-2081262-pmdaproc-cgroups-fix.patch new file mode 100644 index 0000000..77256ef --- /dev/null +++ b/SOURCES/redhat-bugzilla-2081262-pmdaproc-cgroups-fix.patch @@ -0,0 +1,44 @@ +commit d874d2e486c8a64fa9945ed7aa0048cccbd46f77 +Author: Nathan Scott +Date: Wed May 4 17:11:19 2022 +1000 + + pmdaproc: fix cgroup cpu metrics refresh structures + + Jan Kurik encountered this issue when running the regression + testsuite (especially qa/359) on non-x86_64 architectures. + + Something must've changed in the toolchain recently on these + platforms since we've not seen this before, but this bug has + been in our code for some time. It works everywhere else by + good fortune, when there just happen to be NULLs after these + cgroups CPU parsing data structures. + + Resolves Red Hat BZ #2081262. + +diff --git a/src/pmdas/linux_proc/cgroups.c b/src/pmdas/linux_proc/cgroups.c +index 413a72343..26d59863a 100644 +--- a/src/pmdas/linux_proc/cgroups.c ++++ b/src/pmdas/linux_proc/cgroups.c +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2012-2019 Red Hat. ++ * Copyright (c) 2012-2019,2022 Red Hat. + * Copyright (c) 2010 Aconex. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it +@@ -863,6 +863,7 @@ read_cpu_time(const char *file, cgroup_cputime_t *ccp) + { "usage_usec", &cputime.usage }, + { "user_usec", &cputime.user }, + { "system_usec", &cputime.system }, ++ { NULL, NULL } + }; + char buffer[4096], name[64]; + unsigned long long value; +@@ -903,6 +904,7 @@ read_cpu_stats(const char *file, cgroup_cpustat_t *ccp) + { "nr_periods", &cpustat.nr_periods }, + { "nr_throttled", &cpustat.nr_throttled }, + { "throttled_time", &cpustat.throttled_time }, ++ { NULL, NULL } + }; + char buffer[4096], name[64]; + unsigned long long value; diff --git a/SPECS/pcp.spec b/SPECS/pcp.spec new file mode 100644 index 0000000..e328201 --- /dev/null +++ b/SPECS/pcp.spec @@ -0,0 +1,4109 @@ +Name: pcp +Version: 5.3.7 +Release: 7%{?dist} +Summary: System-level performance monitoring and performance management +License: GPLv2+ and LGPLv2+ and CC-BY +URL: https://pcp.io + +%global artifactory https://performancecopilot.jfrog.io/artifactory +Source0: %{artifactory}/pcp-source-release/pcp-%{version}.src.tar.gz +Patch0: redhat-bugzilla-1981886-pmdasockets-backporting.patch +Patch1: redhat-bugzilla-2059461-pmie-systemd-fixup.patch +Patch2: redhat-bugzilla-2081262-pmdaproc-cgroups-fix.patch +Patch3: redhat-bugzilla-2059463-pmdapostfix-harden.patch + +# The additional linker flags break out-of-tree PMDAs. +# https://bugzilla.redhat.com/show_bug.cgi?id=2043092 +%undefine _package_note_flags + +%if 0%{?fedora} >= 26 || 0%{?rhel} > 7 +%global __python2 python2 +%else +%global __python2 python +%endif + +# UsrMerge was completed in EL 7, however the latest 'hostname' package in EL 7 contains "Provides: /bin/hostname" +%if 0%{?rhel} >= 8 || 0%{?fedora} >= 17 +%global _hostname_executable /usr/bin/hostname +%else +%global _hostname_executable /bin/hostname +%endif + +%global disable_perl 0 + +%if 0%{?fedora} || 0%{?rhel} > 5 +%global disable_selinux 0 +%else +%global disable_selinux 1 +%endif + +%global disable_snmp 0 + +# No libpfm devel packages for s390, armv7hl nor for some rhels, disable +%ifarch s390 s390x armv7hl +%global disable_perfevent 1 +%else +%if 0%{?fedora} >= 20 || 0%{?rhel} > 6 +%global disable_perfevent 0 +%else +%global disable_perfevent 1 +%endif +%endif + +%global disable_podman 0 + +# libchan, libhdr_histogram and pmdastatsd +%if 0%{?fedora} >= 29 || 0%{?rhel} > 7 +%global disable_statsd 0 +%else +%global disable_statsd 1 +%endif + +%if 0%{?fedora} >= 30 || 0%{?rhel} > 7 +%global _with_python2 --with-python=no +%global disable_python2 1 +%else +%global disable_python2 0 +%endif + +# Default for epel5 is python24, so use the (optional) python26 packages +%if 0%{?rhel} == 5 +%global default_python 26 +%endif +# No python3 development environment before el8 +%if 0%{?rhel} == 0 || 0%{?rhel} > 7 +%global disable_python3 0 +# Do we wish to mandate python3 use in pcp? (f22+ and el8+) +%if 0%{?fedora} >= 22 || 0%{?rhel} > 7 +%global default_python 3 +%endif +%else +%global disable_python3 1 +%endif + +%if 0%{?fedora} >= 24 || 0%{?rhel} > 7 +%global perl_interpreter perl-interpreter +%else +%global perl_interpreter perl +%endif + +# support for pmdabcc, check bcc.spec for supported architectures of bcc +%if 0%{?fedora} >= 25 || 0%{?rhel} > 6 +%ifarch x86_64 %{power64} aarch64 s390x +%global disable_bcc 0 +%else +%global disable_bcc 1 +%endif +%else +%global disable_bcc 1 +%endif + +# support for pmdabpf, check bpf.spec for supported architectures of bpf +%if 0%{?fedora} >= 33 || 0%{?rhel} > 8 +%ifarch x86_64 ppc64 ppc64le aarch64 +%global disable_bpf 0 +%else +%global disable_bpf 1 +%endif +%else +%global disable_bpf 1 +%endif + +# support for pmdabpftrace, check bpftrace.spec for supported architectures of bpftrace +%if 0%{?fedora} >= 30 || 0%{?rhel} > 7 +%ifarch x86_64 %{power64} aarch64 s390x +%global disable_bpftrace 0 +%else +%global disable_bpftrace 1 +%endif +%else +%global disable_bpftrace 1 +%endif + +# support for pmdajson +%if 0%{?rhel} == 0 || 0%{?rhel} > 6 +%if !%{disable_python2} || !%{disable_python3} +%global disable_json 0 +%else +%global disable_json 1 +%endif +%else +%global disable_json 1 +%endif + +# No mssql ODBC driver on non-x86 platforms +%ifarch x86_64 +%if !%{disable_python2} || !%{disable_python3} +%global disable_mssql 0 +%else +%global disable_mssql 1 +%endif +%else +%global disable_mssql 1 +%endif + +# support for pmdanutcracker (perl deps missing on rhel) +%if 0%{?rhel} == 0 +%global disable_nutcracker 0 +%else +%global disable_nutcracker 1 +%endif + +# Qt development and runtime environment missing components before el6 +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +%global disable_qt 0 +%if 0%{?fedora} != 0 || 0%{?rhel} > 7 +%global default_qt 5 +%endif +%else +%global disable_qt 1 +%endif + +# systemd services and pmdasystemd +%if 0%{?fedora} >= 19 || 0%{?rhel} >= 7 +%global disable_systemd 0 +%else +%global disable_systemd 1 +%endif + +# static probes, missing before el6 and on some architectures +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +%global disable_sdt 0 +%else +%ifnarch ppc ppc64 +%global disable_sdt 0 +%else +%global disable_sdt 1 +%endif +%endif + +# libuv async event library +%if 0%{?fedora} >= 28 || 0%{?rhel} > 7 +%global disable_libuv 0 +%else +%global disable_libuv 1 +%endif + +%global disable_openssl 0 + +# rpm producing "noarch" packages +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +%global disable_noarch 0 +%else +%global disable_noarch 1 +%endif + +%if 0%{?fedora} >= 24 +%global disable_xlsx 0 +%else +%global disable_xlsx 1 +%endif + +# prevent conflicting binary and man page install for pcp(1) +Conflicts: librapi < 0.16 + +# KVM PMDA moved into pcp (no longer using Perl, default on) +Obsoletes: pcp-pmda-kvm < 4.1.1 +Provides: pcp-pmda-kvm = %{version}-%{release} + +# RPM PMDA retired completely +Obsoletes: pcp-pmda-rpm < 5.3.2 +Obsoletes: pcp-pmda-rpm-debuginfo < 5.3.2 + +# PCP REST APIs are now provided by pmproxy +Obsoletes: pcp-webapi-debuginfo < 5.0.0 +Obsoletes: pcp-webapi < 5.0.0 +Provides: pcp-webapi = %{version}-%{release} + +# PCP discovery service now provided by pmfind +Obsoletes: pcp-manager-debuginfo < 5.2.0 +Obsoletes: pcp-manager < 5.2.0 + +# Some older releases did not update or replace pcp-gui-debuginfo properly +%if 0%{?fedora} < 27 && 0%{?rhel} <= 7 && "%{_vendor}" == "redhat" +Obsoletes: pcp-gui-debuginfo < 4.1.1 +%endif + +Obsoletes: pcp-compat < 4.2.0 +Obsoletes: pcp-monitor < 4.2.0 +Obsoletes: pcp-collector < 4.2.0 +Obsoletes: pcp-pmda-nvidia < 3.10.5 + +# https://fedoraproject.org/wiki/Packaging "C and C++" +BuildRequires: make +BuildRequires: gcc gcc-c++ +BuildRequires: procps autoconf bison flex +BuildRequires: nss-devel +BuildRequires: avahi-devel +BuildRequires: xz-devel +BuildRequires: zlib-devel +%if !%{disable_python2} +%if 0%{?default_python} != 3 +BuildRequires: python%{?default_python}-devel +%else +BuildRequires: %{__python2}-devel +%endif +%endif +%if !%{disable_python3} +BuildRequires: python3-devel +BuildRequires: python3-setuptools +%endif +BuildRequires: ncurses-devel +BuildRequires: readline-devel +BuildRequires: cyrus-sasl-devel +%if !%{disable_statsd} +# ragel unavailable on RHEL8 +%if 0%{?rhel} == 0 +BuildRequires: ragel +%endif +BuildRequires: chan-devel HdrHistogram_c-devel +%endif +%if !%{disable_perfevent} +BuildRequires: libpfm-devel >= 4 +%endif +%if !%{disable_sdt} +BuildRequires: systemtap-sdt-devel +%endif +%if !%{disable_libuv} +BuildRequires: libuv-devel >= 1.0 +%endif +%if !%{disable_openssl} +BuildRequires: openssl-devel >= 1.1.1 +%endif +%if 0%{?rhel} == 0 || 0%{?rhel} > 7 +BuildRequires: perl-generators +%endif +BuildRequires: perl-devel perl(strict) +BuildRequires: perl(ExtUtils::MakeMaker) perl(LWP::UserAgent) perl(JSON) +BuildRequires: perl(Time::HiRes) perl(Digest::MD5) +BuildRequires: perl(XML::LibXML) perl(File::Slurp) +BuildRequires: man %{_hostname_executable} +%if !%{disable_systemd} +BuildRequires: systemd-devel systemd-rpm-macros +%endif +%if !%{disable_qt} +BuildRequires: desktop-file-utils +%if 0%{?default_qt} != 5 +BuildRequires: qt4-devel >= 4.4 +%else +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qtsvg-devel +%endif +%endif + +Requires: bash xz gawk sed grep findutils which %{_hostname_executable} +%if 0%{?rhel} > 8 +Requires: cyrus-sasl-scram +%endif +Requires: pcp-libs = %{version}-%{release} +%if !%{disable_selinux} + +# rpm boolean dependencies are supported since RHEL 8 +%if 0%{?fedora} >= 35 || 0%{?rhel} >= 8 +# This ensures that the pcp-selinux package and all it's dependencies are not pulled +# into containers and other systems that do not use SELinux +Requires: (pcp-selinux = %{version}-%{release} if selinux-policy-targeted) +%else +Requires: pcp-selinux = %{version}-%{release} +%endif + +%endif + +%global _confdir %{_sysconfdir}/pcp +%global _logsdir %{_localstatedir}/log/pcp +%global _pmnsdir %{_localstatedir}/lib/pcp/pmns +%global _pmnsexecdir %{_libexecdir}/pcp/pmns +%global _tempsdir %{_localstatedir}/lib/pcp/tmp +%global _pmdasdir %{_localstatedir}/lib/pcp/pmdas +%global _pmdasexecdir %{_libexecdir}/pcp/pmdas +%global _testsdir %{_localstatedir}/lib/pcp/testsuite +%global _selinuxdir %{_localstatedir}/lib/pcp/selinux +%global _selinuxexecdir %{_libexecdir}/pcp/selinux +%global _logconfdir %{_localstatedir}/lib/pcp/config/pmlogconf +%global _ieconfdir %{_localstatedir}/lib/pcp/config/pmieconf +%global _tapsetdir %{_datadir}/systemtap/tapset +%global _bashcompdir %{_datadir}/bash-completion/completions +%global _pixmapdir %{_datadir}/pcp-gui/pixmaps +%global _hicolordir %{_datadir}/icons/hicolor +%global _booksdir %{_datadir}/doc/pcp-doc + +%if 0%{?fedora} >= 20 || 0%{?rhel} >= 8 +%global _with_doc --with-docdir=%{_docdir}/%{name} +%endif + +%if 0%{?fedora} >= 29 || 0%{?rhel} >= 8 +%global _with_dstat --with-dstat-symlink=yes +%global disable_dstat 0 +%else +%global _with_dstat --with-dstat-symlink=no +%global disable_dstat 1 +%endif + +%if !%{disable_systemd} +%global _initddir %{_libexecdir}/pcp/lib +%else +%global _initddir %{_sysconfdir}/rc.d/init.d +%global _with_initd --with-rcdir=%{_initddir} +%endif + +# we never want Infiniband on s390 and armv7hl platforms +%ifarch s390 s390x armv7hl +%global disable_infiniband 1 +%else +# we never want Infiniband on RHEL5 or earlier +%if 0%{?rhel} != 0 && 0%{?rhel} < 6 +%global disable_infiniband 1 +%else +%global disable_infiniband 0 +%endif +%endif + +%if !%{disable_infiniband} +%global _with_ib --with-infiniband=yes +%endif + +%if %{disable_perfevent} +%global _with_perfevent --with-perfevent=no +%else +%global _with_perfevent --with-perfevent=yes +%endif + +%if %{disable_podman} +%global _with_podman --with-podman=no +%else +%global _with_podman --with-podman=yes +%endif + +%if %{disable_statsd} +%global _with_statsd --with-pmdastatsd=no +%else +%global _with_statsd --with-pmdastatsd=yes +%endif + +%if %{disable_bcc} +%global _with_bcc --with-pmdabcc=no +%else +%global _with_bcc --with-pmdabcc=yes +%endif + +%if %{disable_bpf} +%global _with_bpf --with-pmdabpf=no +%else +%global _with_bpf --with-pmdabpf=yes +%endif + +%if %{disable_bpftrace} +%global _with_bpftrace --with-pmdabpftrace=no +%else +%global _with_bpftrace --with-pmdabpftrace=yes +%endif + +%if %{disable_json} +%global _with_json --with-pmdajson=no +%else +%global _with_json --with-pmdajson=yes +%endif + +%if %{disable_nutcracker} +%global _with_nutcracker --with-pmdanutcracker=no +%else +%global _with_nutcracker --with-pmdanutcracker=yes +%endif + +%if %{disable_snmp} +%global _with_snmp --with-pmdasnmp=no +%else +%global _with_snmp --with-pmdasnmp=yes +%endif + +%global pmda_remove() %{expand: +if [ %1 -eq 0 ] +then + PCP_PMDAS_DIR=%{_pmdasdir} + PCP_PMCDCONF_PATH=%{_confdir}/pmcd/pmcd.conf + if [ -f "$PCP_PMCDCONF_PATH" -a -f "$PCP_PMDAS_DIR/%2/domain.h" ] + then + (cd "$PCP_PMDAS_DIR/%2/" && ./Remove >/dev/null 2>&1) + fi +fi +} + +%global install_file() %{expand: +if [ -w "%1" ] +then + (cd "%1" && touch "%2" && chmod 644 "%2") +else + echo "WARNING: Cannot write to %1, skipping %2 creation." >&2 +fi +} + +%global rebuild_pmns() %{expand: +if [ -w "%1" ] +then + (cd "%1" && ./Rebuild -s && rm -f "%2") +else + echo "WARNING: Cannot write to %1, skipping namespace rebuild." >&2 +fi +} + +%global selinux_handle_policy() %{expand: +if [ %1 -ge 1 ] +then + %{_libexecdir}/pcp/bin/selinux-setup %{_selinuxdir} install %2 +elif [ %1 -eq 0 ] +then + %{_libexecdir}/pcp/bin/selinux-setup %{_selinuxdir} remove %2 +fi +} + +%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-conf +# +%package conf +License: LGPLv2+ +Summary: Performance Co-Pilot run-time configuration +URL: https://pcp.io + +# http://fedoraproject.org/wiki/Packaging:Conflicts "Splitting Packages" +Conflicts: pcp-libs < 3.9 + +%description conf +Performance Co-Pilot (PCP) run-time configuration + +# +# pcp-libs +# +%package libs +License: LGPLv2+ +Summary: Performance Co-Pilot run-time libraries +URL: https://pcp.io +Requires: pcp-conf = %{version}-%{release} + +%description libs +Performance Co-Pilot (PCP) run-time libraries + +# +# pcp-libs-devel +# +%package libs-devel +License: GPLv2+ and LGPLv2+ +Summary: Performance Co-Pilot (PCP) development headers +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} + +%description libs-devel +Performance Co-Pilot (PCP) headers for development. + +# +# pcp-devel +# +%package devel +License: GPLv2+ and LGPLv2+ +Summary: Performance Co-Pilot (PCP) development tools and documentation +URL: https://pcp.io +Requires: pcp = %{version}-%{release} +Requires: pcp-libs = %{version}-%{release} +Requires: pcp-libs-devel = %{version}-%{release} + +%description devel +Performance Co-Pilot (PCP) documentation and tools for development. + +# +# pcp-testsuite +# +%package testsuite +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) test suite +URL: https://pcp.io +Requires: pcp = %{version}-%{release} +Requires: pcp-libs = %{version}-%{release} +Requires: pcp-libs-devel = %{version}-%{release} +Requires: pcp-devel = %{version}-%{release} +Obsoletes: pcp-gui-testsuite < 3.9.5 +# The following are inherited from pcp-collector and pcp-monitor, +# both of which are now obsoleted by the base pcp package +Requires: pcp-pmda-activemq pcp-pmda-bonding pcp-pmda-dbping pcp-pmda-ds389 pcp-pmda-ds389log +Requires: pcp-pmda-elasticsearch pcp-pmda-gpfs pcp-pmda-gpsd pcp-pmda-lustre +Requires: pcp-pmda-memcache pcp-pmda-mysql pcp-pmda-named pcp-pmda-netfilter pcp-pmda-news +Requires: pcp-pmda-nginx pcp-pmda-nfsclient pcp-pmda-pdns pcp-pmda-postfix pcp-pmda-postgresql pcp-pmda-oracle +Requires: pcp-pmda-samba pcp-pmda-slurm pcp-pmda-zimbra +Requires: pcp-pmda-dm pcp-pmda-apache +Requires: pcp-pmda-bash pcp-pmda-cisco pcp-pmda-gfs2 pcp-pmda-mailq pcp-pmda-mounts +Requires: pcp-pmda-nvidia-gpu pcp-pmda-roomtemp pcp-pmda-sendmail pcp-pmda-shping pcp-pmda-smart +Requires: pcp-pmda-hacluster pcp-pmda-lustrecomm pcp-pmda-logger pcp-pmda-denki pcp-pmda-docker pcp-pmda-bind2 +Requires: pcp-pmda-sockets +%if !%{disable_podman} +Requires: pcp-pmda-podman +%endif +%if !%{disable_statsd} +Requires: pcp-pmda-statsd +%endif +%if !%{disable_nutcracker} +Requires: pcp-pmda-nutcracker +%endif +%if !%{disable_bcc} +Requires: pcp-pmda-bcc +%endif +%if !%{disable_bpf} +Requires: pcp-pmda-bpf +%endif +%if !%{disable_bpftrace} +Requires: pcp-pmda-bpftrace +%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-openmetrics pcp-pmda-haproxy +Requires: pcp-pmda-lmsensors pcp-pmda-netcheck pcp-pmda-rabbitmq +Requires: pcp-pmda-openvswitch pcp-pmda-mongodb +%endif +%if !%{disable_mssql} +Requires: pcp-pmda-mssql +%endif +%if !%{disable_snmp} +Requires: pcp-pmda-snmp +%endif +%if !%{disable_json} +Requires: pcp-pmda-json +%endif +Requires: pcp-pmda-summary pcp-pmda-trace pcp-pmda-weblog +Requires: pcp-system-tools +%if !%{disable_qt} +Requires: pcp-gui +%endif +Requires: bc gcc gzip bzip2 +Requires: redhat-rpm-config +%if !%{disable_selinux} +Requires: selinux-policy-devel +Requires: selinux-policy-targeted +%if 0%{?rhel} == 5 +Requires: setools +%else +Requires: setools-console +%endif +%endif + +%description testsuite +Quality assurance test suite for Performance Co-Pilot (PCP). +# end testsuite + +# +# perl-PCP-PMDA. This is the PCP agent perl binding. +# +%package -n perl-PCP-PMDA +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) Perl bindings and documentation +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: %{perl_interpreter} + +%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 +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) Perl bindings for PCP Memory Mapped Values +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: %{perl_interpreter} + +%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 +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) Perl bindings for importing external data into PCP archives +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: %{perl_interpreter} + +%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 +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) Perl bindings for post-processing output of pmlogsummary +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: %{perl_interpreter} + +%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 +License: LGPLv2+ +Summary: Performance Co-Pilot tools for importing sar data into PCP archive logs +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: perl-PCP-LogImport = %{version}-%{release} +Requires: perl(XML::TokeParser) + +%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 +License: LGPLv2+ +Summary: Performance Co-Pilot tools for importing iostat data into PCP archive logs +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: perl-PCP-LogImport = %{version}-%{release} + +%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-mrtg2pcp +# +%package import-mrtg2pcp +License: LGPLv2+ +Summary: Performance Co-Pilot tools for importing MTRG data into PCP archive logs +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: perl-PCP-LogImport = %{version}-%{release} + +%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. + +# +# pcp-import-ganglia2pcp +# +%package import-ganglia2pcp +License: LGPLv2+ +Summary: Performance Co-Pilot tools for importing ganglia data into PCP archive logs +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: perl-PCP-LogImport = %{version}-%{release} + +%description import-ganglia2pcp +Performance Co-Pilot (PCP) front-end tools for importing ganglia data +into standard PCP archive logs for replay with any PCP monitoring tool. + +# +# pcp-import-collectl2pcp +# +%package import-collectl2pcp +License: LGPLv2+ +Summary: Performance Co-Pilot tools for importing collectl log files into PCP archive logs +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} + +%description import-collectl2pcp +Performance Co-Pilot (PCP) front-end tools for importing collectl data +into standard PCP archive logs for replay with any PCP monitoring tool. + +# +# pcp-export-zabbix-agent +# +%package export-zabbix-agent +License: GPLv2+ +Summary: Module for exporting PCP metrics to Zabbix agent +URL: https://pcp.io +Requires: pcp-libs = %{version}-%{release} + +%description export-zabbix-agent +Performance Co-Pilot (PCP) module for exporting metrics from PCP to +Zabbix via the Zabbix agent - see zbxpcp(3) for further details. + +%if !%{disable_python2} || !%{disable_python3} +# +# pcp-export-pcp2elasticsearch +# +%package export-pcp2elasticsearch +License: GPLv2+ +Summary: Performance Co-Pilot tools for exporting PCP metrics to ElasticSearch +URL: https://pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +Requires: python3-requests +BuildRequires: python3-requests +%else +Requires: %{__python2}-pcp = %{version}-%{release} +Requires: %{__python2}-requests +BuildRequires: %{__python2}-requests +%endif + +%description export-pcp2elasticsearch +Performance Co-Pilot (PCP) front-end tools for exporting metric values +to Elasticsearch - a distributed, RESTful search and analytics engine. +See https://www.elastic.co/community for further details. + +# +# pcp-export-pcp2graphite +# +%package export-pcp2graphite +License: GPLv2+ +Summary: Performance Co-Pilot tools for exporting PCP metrics to Graphite +URL: https://pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: %{__python2}-pcp = %{version}-%{release} +%endif + +%description export-pcp2graphite +Performance Co-Pilot (PCP) front-end tools for exporting metric values +to graphite (http://graphite.readthedocs.org). + +# pcp-export-pcp2influxdb +# +%package export-pcp2influxdb +License: GPLv2+ +Summary: Performance Co-Pilot tools for exporting PCP metrics to InfluxDB +URL: https://pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +Requires: python3-requests +%else +Requires: %{__python2}-pcp = %{version}-%{release} +Requires: %{__python2}-requests +%endif + +%description export-pcp2influxdb +Performance Co-Pilot (PCP) front-end tools for exporting metric values +to InfluxDB (https://influxdata.com/time-series-platform/influxdb). + +# +# pcp-export-pcp2json +# +%package export-pcp2json +License: GPLv2+ +Summary: Performance Co-Pilot tools for exporting PCP metrics in JSON format +URL: https://pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: %{__python2}-pcp = %{version}-%{release} +%endif + +%description export-pcp2json +Performance Co-Pilot (PCP) front-end tools for exporting metric values +in JSON format. + +# +# pcp-export-pcp2spark +# +%package export-pcp2spark +License: GPLv2+ +Summary: Performance Co-Pilot tools for exporting PCP metrics to Apache Spark +URL: https://pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: %{__python2}-pcp = %{version}-%{release} +%endif + +%description export-pcp2spark +Performance Co-Pilot (PCP) front-end tools for exporting metric values +in JSON format to Apache Spark. See https://spark.apache.org/ for +further details on Apache Spark. + +# +# pcp-export-pcp2xlsx +# +%if !%{disable_xlsx} +%package export-pcp2xlsx +License: GPLv2+ +Summary: Performance Co-Pilot tools for exporting PCP metrics to Excel +URL: https://pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +Requires: python3-openpyxl +BuildRequires: python3-openpyxl +%else +Requires: %{__python2}-pcp = %{version}-%{release} +Requires: %{__python2}-openpyxl +BuildRequires: %{__python2}-openpyxl +%endif + +%description export-pcp2xlsx +Performance Co-Pilot (PCP) front-end tools for exporting metric values +in Excel spreadsheet format. +%endif +# +# pcp-export-pcp2xml +# +%package export-pcp2xml +License: GPLv2+ +Summary: Performance Co-Pilot tools for exporting PCP metrics in XML format +URL: https://pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: %{__python2}-pcp = %{version}-%{release} +%endif + +%description export-pcp2xml +Performance Co-Pilot (PCP) front-end tools for exporting metric values +in XML format. + +# +# pcp-export-pcp2zabbix +# +%package export-pcp2zabbix +License: GPLv2+ +Summary: Performance Co-Pilot tools for exporting PCP metrics to Zabbix +URL: https://pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: %{__python2}-pcp = %{version}-%{release} +%endif + +%description export-pcp2zabbix +Performance Co-Pilot (PCP) front-end tools for exporting metric values +to the Zabbix (https://www.zabbix.org/) monitoring software. +%endif + +%if !%{disable_podman} +# +# pcp-pmda-podman +# +%package pmda-podman +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for podman containers +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} + +%description pmda-podman +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting podman container and pod statistics via the podman REST API. +%endif + +%if !%{disable_statsd} +# +# pcp-pmda-statsd +# +%package pmda-statsd +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from statsd +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: chan HdrHistogram_c + +%description pmda-statsd +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting statistics from the statsd daemon. +%endif + +%if !%{disable_perfevent} +# +# pcp-pmda-perfevent +# +%package pmda-perfevent +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for hardware counters +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: libpfm >= 4 +BuildRequires: libpfm-devel >= 4 +Obsoletes: pcp-pmda-papi < 5.0.0 +Obsoletes: pcp-pmda-papi-debuginfo < 5.0.0 + +%description pmda-perfevent +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting hardware counters statistics through libpfm. +%endif + +%if !%{disable_infiniband} +# +# pcp-pmda-infiniband +# +%package pmda-infiniband +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Infiniband HCAs and switches +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: libibmad >= 1.3.7 libibumad >= 1.3.7 +BuildRequires: libibmad-devel >= 1.3.7 libibumad-devel >= 1.3.7 + +%description pmda-infiniband +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting Infiniband statistics. By default, it monitors the local HCAs +but can also be configured to monitor remote GUIDs such as IB switches. +%endif + +# +# pcp-pmda-activemq +# +%package pmda-activemq +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for ActiveMQ +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(LWP::UserAgent) + +%description pmda-activemq +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the ActiveMQ message broker. +#end pcp-pmda-activemq + +# +# pcp-pmda-bind2 +# +%package pmda-bind2 +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for BIND servers +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(LWP::UserAgent) +Requires: perl(XML::LibXML) +Requires: perl(File::Slurp) +Requires: perl-autodie +Requires: perl-Time-HiRes + +%description pmda-bind2 +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from BIND (Berkeley Internet Name Domain). +#end pcp-pmda-bind2 + +# +# pcp-pmda-redis +# +%package pmda-redis +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Redis +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl-autodie +Requires: perl-Time-HiRes +Requires: perl-Data-Dumper + +%description pmda-redis +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from Redis servers (redis.io). +#end pcp-pmda-redis + +%if !%{disable_nutcracker} +# +# pcp-pmda-nutcracker +# +%package pmda-nutcracker +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for NutCracker (TwemCache) +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(YAML::XS::LibYAML) +Requires: perl(JSON) + +%description pmda-nutcracker +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from NutCracker (TwemCache). +#end pcp-pmda-nutcracker +%endif + +# +# pcp-pmda-bonding +# +%package pmda-bonding +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Bonded network interfaces +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-bonding +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about bonded network interfaces. +#end pcp-pmda-bonding + +# +# pcp-pmda-dbping +# +%package pmda-dbping +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Database response times and Availablility +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl-DBI + +%description pmda-dbping +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Database response times and Availablility. +#end pcp-pmda-dbping + +# +# pcp-pmda-ds389 +# +%package pmda-ds389 +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for 389 Directory Servers +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +%if 0%{?rhel} <= 7 +Requires: perl-LDAP +%endif + +%description pmda-ds389 +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about a 389 Directory Server. +#end pcp-pmda-ds389 + +# +# pcp-pmda-ds389log +# +%package pmda-ds389log +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for 389 Directory Server Loggers +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl-Date-Manip + +%description pmda-ds389log +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from a 389 Directory Server log. +#end pcp-pmda-ds389log + + +# +# pcp-pmda-gpfs +# +%package pmda-gpfs +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for GPFS Filesystem +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-gpfs +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the GPFS filesystem. +#end pcp-pmda-gpfs + +# +# pcp-pmda-gpsd +# +%package pmda-gpsd +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for a GPS Daemon +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl-Time-HiRes +Requires: perl-JSON + +%description pmda-gpsd +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about a GPS Daemon. +#end pcp-pmda-gpsd + +# +# pcp-pmda-denki +# +%package pmda-denki +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics dealing with electrical power +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-denki +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics related to the electrical power consumed by and inside +the system. +# end pcp-pmda-denki + +# +# pcp-pmda-docker +# +%package pmda-docker +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from the Docker daemon +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} + +%description pmda-docker +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics using the Docker daemon REST API. +#end pcp-pmda-docker + +# +# pcp-pmda-lustre +# +%package pmda-lustre +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Lustre Filesytem +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-lustre +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Lustre Filesystem. +#end pcp-pmda-lustre + +# +# pcp-pmda-lustrecomm +# +%package pmda-lustrecomm +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Lustre Filesytem Comms +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} + +%description pmda-lustrecomm +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Lustre Filesystem Comms. +#end pcp-pmda-lustrecomm + +# +# pcp-pmda-memcache +# +%package pmda-memcache +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Memcached +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-memcache +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Memcached. +#end pcp-pmda-memcache + +# +# pcp-pmda-mysql +# +%package pmda-mysql +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for MySQL +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(DBI) perl(DBD::mysql) +BuildRequires: perl(DBI) perl(DBD::mysql) + +%description pmda-mysql +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the MySQL database. +#end pcp-pmda-mysql + +# +# pcp-pmda-named +# +%package pmda-named +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Named +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-named +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Named nameserver. +#end pcp-pmda-named + +# pcp-pmda-netfilter +# +%package pmda-netfilter +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Netfilter framework +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-netfilter +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Netfilter packet filtering framework. +#end pcp-pmda-netfilter + +# +# pcp-pmda-news +# +%package pmda-news +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Usenet News +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-news +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Usenet News. +#end pcp-pmda-news + +# +# pcp-pmda-nginx +# +%package pmda-nginx +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Nginx Webserver +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(LWP::UserAgent) +BuildRequires: perl(LWP::UserAgent) + +%description pmda-nginx +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Nginx Webserver. +#end pcp-pmda-nginx + +# +# pcp-pmda-oracle +# +%package pmda-oracle +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Oracle database +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(DBI) +BuildRequires: perl(DBI) + +%description pmda-oracle +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Oracle database. +#end pcp-pmda-oracle + +# +# pcp-pmda-pdns +# +%package pmda-pdns +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for PowerDNS +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl-Time-HiRes + +%description pmda-pdns +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the PowerDNS. +#end pcp-pmda-pdns + +# +# pcp-pmda-postfix +# +%package pmda-postfix +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Postfix (MTA) +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl-Time-HiRes +%if 0%{?fedora} > 16 || 0%{?rhel} > 5 +Requires: postfix-perl-scripts +BuildRequires: postfix-perl-scripts +%endif +%if 0%{?rhel} <= 5 +Requires: postfix +BuildRequires: postfix +%endif +%if "%{_vendor}" == "suse" +Requires: postfix-doc +BuildRequires: postfix-doc +%endif + +%description pmda-postfix +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Postfix (MTA). +#end pcp-pmda-postfix + +# +# pcp-pmda-rsyslog +# +%package pmda-rsyslog +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Rsyslog +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-rsyslog +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Rsyslog. +#end pcp-pmda-rsyslog + +# +# pcp-pmda-samba +# +%package pmda-samba +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Samba +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-samba +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Samba. +#end pcp-pmda-samba + +# +# pcp-pmda-slurm +# +%package pmda-slurm +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the SLURM Workload Manager +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-slurm +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from the SLURM Workload Manager. +#end pcp-pmda-slurm + +%if !%{disable_snmp} +# +# pcp-pmda-snmp +# +%package pmda-snmp +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Simple Network Management Protocol +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} +# There are no perl-Net-SNMP packages in rhel, disable unless non-rhel or epel5 +%if 0%{?rhel} == 0 || 0%{?rhel} < 6 +Requires: perl(Net::SNMP) +%endif + +%description pmda-snmp +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about SNMP. +#end pcp-pmda-snmp +%endif + +# +# pcp-pmda-zimbra +# +%package pmda-zimbra +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Zimbra +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-zimbra +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Zimbra. +#end pcp-pmda-zimbra + +# +# pcp-pmda-dm +# +%package pmda-dm +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Device Mapper Cache and Thin Client +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +BuildRequires: device-mapper-devel +%description pmda-dm +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Device Mapper Cache and Thin Client. +# end pcp-pmda-dm + + +%if !%{disable_bcc} +# +# pcp-pmda-bcc +# +%package pmda-bcc +License: ASL 2.0 and GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from eBPF/BCC modules +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +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_bpf} +# +# pcp-pmda-bpf +# +%package pmda-bpf +License: ASL 2.0 and GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from eBPF ELF modules +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: libbpf +BuildRequires: libbpf-devel clang llvm bpftool +%description pmda-bpf +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +extracting performance metrics from eBPF ELF modules. +# end pcp-pmda-bpf +%endif + +%if !%{disable_bpftrace} +# +# pcp-pmda-bpftrace +# +%package pmda-bpftrace +License: ASL 2.0 and GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from bpftrace scripts +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: bpftrace >= 0.9.2 +Requires: python3-pcp +Requires: python3 >= 3.6 +%description pmda-bpftrace +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +extracting performance metrics from bpftrace scripts. +# end pcp-pmda-bpftrace +%endif + +%if !%{disable_python2} || !%{disable_python3} +# +# pcp-pmda-gluster +# +%package pmda-gluster +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Gluster filesystem +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-gluster +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the gluster filesystem. +# end pcp-pmda-gluster + +# +# pcp-pmda-nfsclient +# +%package pmda-nfsclient +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for NFS Clients +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-nfsclient +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics for NFS Clients. +#end pcp-pmda-nfsclient + +# +# pcp-pmda-postgresql +# +%package pmda-postgresql +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for PostgreSQL +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +Requires: python3-psycopg2 +BuildRequires: python3-psycopg2 +%else +Requires: %{__python2}-pcp +Requires: %{__python2}-psycopg2 +BuildRequires: %{__python2}-psycopg2 +%endif +%description pmda-postgresql +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the PostgreSQL database. +#end pcp-pmda-postgresql + +# +# pcp-pmda-zswap +# +%package pmda-zswap +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for compressed swap +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-zswap +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about compressed swap. +# end pcp-pmda-zswap + +# +# pcp-pmda-unbound +# +%package pmda-unbound +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Unbound DNS Resolver +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-unbound +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Unbound DNS Resolver. +# end pcp-pmda-unbound + +# +# pcp-pmda-mic +# +%package pmda-mic +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Intel MIC cards +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-mic +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Intel MIC cards. +# end pcp-pmda-mic + +# +# pcp-pmda-haproxy +# +%package pmda-haproxy +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for HAProxy +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-haproxy +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +extracting performance metrics from HAProxy over the HAProxy stats socket. +# end pcp-pmda-haproxy + +# +# pcp-pmda-libvirt +# +%package pmda-libvirt +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from virtual machines +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +Requires: libvirt-python3 python3-lxml +BuildRequires: libvirt-python3 python3-lxml +%else +%if 0%{?rhel} == 0 || 0%{?fedora} >= 27 +Requires: %{__python2}-pcp +Requires: %{__python2}-libvirt %{__python2}-lxml +BuildRequires: %{__python2}-libvirt %{__python2}-lxml +%endif +%if 0%{?rhel} > 5 +Requires: %{__python2}-pcp +Requires: libvirt-%{__python2} %{__python2}-lxml +BuildRequires: libvirt-%{__python2} %{__python2}-lxml +%endif +%endif +%description pmda-libvirt +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +extracting virtualisation statistics from libvirt about behaviour of guest +and hypervisor machines. +# end pcp-pmda-libvirt + +# +# pcp-pmda-elasticsearch +# +%package pmda-elasticsearch +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Elasticsearch +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-elasticsearch +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Elasticsearch. +#end pcp-pmda-elasticsearch + +# +# pcp-pmda-openvswitch +# +%package pmda-openvswitch +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Open vSwitch +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-openvswitch +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from Open vSwitch. +#end pcp-pmda-openvswitch + +# +# pcp-pmda-rabbitmq +# +%package pmda-rabbitmq +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for RabbitMQ queues +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-rabbitmq +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about RabbitMQ message queues. +#end pcp-pmda-rabbitmq + +# +# pcp-pmda-lio +# +%package pmda-lio +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the LIO subsystem +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +Requires: python3-rtslib +BuildRequires: python3-rtslib +%else +Requires: %{__python2}-pcp +Requires: %{__python2}-rtslib +BuildRequires: %{__python2}-rtslib +%endif +%description pmda-lio +This package provides a PMDA to gather performance metrics from the kernels +iSCSI target interface (LIO). The metrics are stored by LIO within the Linux +kernels configfs filesystem. The PMDA provides per LUN level stats, and a +summary instance per iSCSI target, which aggregates all LUN metrics within the +target. +#end pcp-pmda-lio + +# +# pcp-pmda-openmetrics +# +%package pmda-openmetrics +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from OpenMetrics endpoints +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +Requires: python3-requests +BuildRequires: python3-requests +%else +Requires: %{__python2}-pcp +Requires: %{__python2}-requests +BuildRequires: %{__python2}-requests +%endif +Obsoletes: pcp-pmda-prometheus < 5.0.0 +Provides: pcp-pmda-prometheus < 5.0.0 +Obsoletes: pcp-pmda-vmware < 5.3.5 + +%description pmda-openmetrics +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +extracting metrics from OpenMetrics (https://openmetrics.io/) endpoints. +#end pcp-pmda-openmetrics + +# +# pcp-pmda-lmsensors +# +%package pmda-lmsensors +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for hardware sensors +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: lm_sensors +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +# rewritten in python, so there is no longer a debuginfo package +Obsoletes: pcp-pmda-lmsensors-debuginfo < 4.2.0 +%description pmda-lmsensors +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Linux hardware monitoring sensors. +# end pcp-pmda-lmsensors + +# +# pcp-pmda-netcheck +# +%package pmda-netcheck +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for simple network checks +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: %{__python2}-pcp +%endif +%description pmda-netcheck +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from simple network checks. +# end pcp-pmda-netcheck + +# +# pcp-pmda-mongodb +# +%package pmda-mongodb +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for MongoDB +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%if 0%{?rhel} == 0 +Requires: python3-pymongo +%endif +%else +Requires: %{__python2}-pcp +%if 0%{?rhel} == 0 +Requires: %{__python2}-pymongo +%endif +%endif +%description pmda-mongodb +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from MongoDB. +# end pcp-pmda-mongodb +%endif + +%if !%{disable_mssql} +# +# pcp-pmda-mssql +# +%package pmda-mssql +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Microsoft SQL Server +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +%if 0%{?rhel} == 0 || 0%{?rhel} > 7 +Requires: python3-pyodbc +%endif +%else +Requires: %{__python2}-pcp +%if 0%{?rhel} == 0 +Requires: %{__python2}-pyodbc +%endif +%endif +%description pmda-mssql +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from Microsoft SQL Server. +# end pcp-pmda-mssql +%endif + +%if !%{disable_json} +# +# pcp-pmda-json +# +%package pmda-json +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for JSON data +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +Requires: python3-jsonpointer python3-six +BuildRequires: python3-jsonpointer python3-six +%else +Requires: %{__python2}-pcp +Requires: %{__python2}-jsonpointer %{__python2}-six +BuildRequires: %{__python2}-jsonpointer %{__python2}-six +%endif +%description pmda-json +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics output in JSON. +# end pcp-pmda-json +%endif + +# +# C pmdas +# pcp-pmda-apache +# +%package pmda-apache +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Apache webserver +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-apache +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Apache webserver. +# end pcp-pmda-apache + +# +# pcp-pmda-bash +# +%package pmda-bash +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Bash shell +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-bash +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Bash shell. +# end pcp-pmda-bash + +# +# pcp-pmda-cifs +# +%package pmda-cifs +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the CIFS protocol +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-cifs +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Common Internet Filesytem. +# end pcp-pmda-cifs + +# +# pcp-pmda-cisco +# +%package pmda-cisco +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Cisco routers +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-cisco +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Cisco routers. +# end pcp-pmda-cisco + +# +# pcp-pmda-gfs2 +# +%package pmda-gfs2 +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the GFS2 filesystem +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-gfs2 +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Global Filesystem v2. +# end pcp-pmda-gfs2 + +# +# pcp-pmda-logger +# +%package pmda-logger +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from arbitrary log files +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-logger +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from a specified set of log files (or pipes). The PMDA +supports both sampled and event-style metrics. +# end pcp-pmda-logger + +# +# pcp-pmda-mailq +# +%package pmda-mailq +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the sendmail queue +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-mailq +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about email queues managed by sendmail. +# end pcp-pmda-mailq + +# +# pcp-pmda-mounts +# +%package pmda-mounts +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for filesystem mounts +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-mounts +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about filesystem mounts. +# end pcp-pmda-mounts + +# +# pcp-pmda-nvidia-gpu +# +%package pmda-nvidia-gpu +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the Nvidia GPU +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-nvidia-gpu +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Nvidia GPUs. +# end pcp-pmda-nvidia-gpu + +# +# pcp-pmda-roomtemp +# +%package pmda-roomtemp +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for the room temperature +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-roomtemp +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the room temperature. +# end pcp-pmda-roomtemp + +# +# pcp-pmda-sendmail +# +%package pmda-sendmail +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for Sendmail +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-sendmail +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Sendmail traffic. +# end pcp-pmda-sendmail + +# +# pcp-pmda-shping +# +%package pmda-shping +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for shell command responses +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-shping +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about quality of service and response time measurements of +arbitrary shell commands. +# end pcp-pmda-shping + +# +# pcp-pmda-smart +# +%package pmda-smart +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for S.M.A.R.T values +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: smartmontools +%description pmda-smart +This package contains the PCP Performance Metric Domain Agent (PMDA) for +collecting metrics of disk S.M.A.R.T values making use of data from the +smartmontools package. +#end pcp-pmda-smart + +# +# pcp-pmda-sockets +# +%package pmda-sockets +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) per-socket metrics +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: iproute +%description pmda-sockets +This package contains the PCP Performance Metric Domain Agent (PMDA) for +collecting per-socket statistics, making use of utilities such as 'ss'. +#end pcp-pmda-sockets + +# +# pcp-pmda-hacluster +# +%package pmda-hacluster +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for High Availability Clusters +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-hacluster +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about linux High Availability (HA) Clusters. +# end pcp-pmda-hacluster + +# +# pcp-pmda-summary +# +%package pmda-summary +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) summary metrics from pmie +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-summary +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about other installed PMDAs. +# end pcp-pmda-summary + +%if !%{disable_systemd} +# +# pcp-pmda-systemd +# +%package pmda-systemd +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from the Systemd journal +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-systemd +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics from the Systemd journal. +# end pcp-pmda-systemd +%endif + +# +# pcp-pmda-trace +# +%package pmda-trace +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics for application tracing +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-trace +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about trace performance data in applications. +# end pcp-pmda-trace + +# +# pcp-pmda-weblog +# +%package pmda-weblog +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) metrics from web server logs +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%description pmda-weblog +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about web server logs. +# end pcp-pmda-weblog +# end C pmdas + +%package zeroconf +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) Zeroconf Package +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: pcp-system-tools = %{version}-%{release} +Requires: pcp-doc = %{version}-%{release} +Requires: pcp-pmda-dm = %{version}-%{release} +%if !%{disable_python2} || !%{disable_python3} +Requires: pcp-pmda-nfsclient = %{version}-%{release} +Requires: pcp-pmda-openmetrics = %{version}-%{release} +%endif +%description zeroconf +This package contains configuration tweaks and files to increase metrics +gathering frequency, several extended pmlogger configurations, as well as +automated pmie diagnosis, alerting and self-healing for the localhost. + +%if !%{disable_python2} +# +# python2-pcp. This is the PCP library bindings for python. +# +%package -n %{__python2}-pcp +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) Python bindings and documentation +URL: https://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 < %{version} +%endif +%if 0%{?rhel} == 5 +Requires: python%{default_python} +%else +Requires: %{__python2} +%endif + +%description -n %{__python2}-pcp +This python PCP module contains the language bindings for +Performance Metric API (PMAPI) monitor tools and Performance +Metric Domain Agent (PMDA) collector tools written in Python. +%endif + +%if !%{disable_python3} +# +# python3-pcp. This is the PCP library bindings for python3. +# +%package -n python3-pcp +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) Python3 bindings and documentation +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: python3 + +%description -n python3-pcp +This python PCP module contains the language bindings for +Performance Metric API (PMAPI) monitor tools and Performance +Metric Domain Agent (PMDA) collector tools written in Python3. +%endif + +# +# pcp-system-tools +# +%package system-tools +License: GPLv2+ +Summary: Performance Co-Pilot (PCP) System and Monitoring Tools +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if !%{disable_python2} || !%{disable_python3} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: %{__python2}-pcp = %{version}-%{release} +%endif +%if !%{disable_dstat} +# https://fedoraproject.org/wiki/Packaging:Guidelines "Renaming/Replacing Existing Packages" +Provides: dstat = %{version}-%{release} +Provides: /usr/bin/dstat +Obsoletes: dstat <= 0.8 +%endif +%endif + +%description system-tools +This PCP module contains additional system monitoring tools written +in the Python language. + +%if !%{disable_qt} +# +# pcp-gui package for Qt tools +# +%package gui +License: GPLv2+ and LGPLv2+ and LGPLv2+ with exceptions +Summary: Visualization tools for the Performance Co-Pilot toolkit +URL: https://pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: liberation-sans-fonts +BuildRequires: hicolor-icon-theme + +%description gui +Visualization tools for the Performance Co-Pilot toolkit. +The pcp-gui package primarily includes visualization tools for +monitoring systems using live and archived Performance Co-Pilot +(PCP) sources. +%endif + +# +# pcp-doc package +# +%package doc +License: GPLv2+ and CC-BY +%if !%{disable_noarch} +BuildArch: noarch +%endif +Summary: Documentation and tutorial for the Performance Co-Pilot +URL: https://pcp.io +# http://fedoraproject.org/wiki/Packaging:Conflicts "Splitting Packages" +# (all man pages migrated to pcp-doc during great package split of '15) +Conflicts: pcp-pmda-infiniband < 3.10.5 + +%description doc +Documentation and tutorial for the Performance Co-Pilot +Performance Co-Pilot (PCP) provides a framework and services to support +system-level performance monitoring and performance management. + +The pcp-doc package provides useful information on using and +configuring the Performance Co-Pilot (PCP) toolkit for system +level performance management. It includes tutorials, HOWTOs, +and other detailed documentation about the internals of core +PCP utilities and daemons, and the PCP graphical tools. + +# +# pcp-selinux package +# +%if !%{disable_selinux} +%package selinux +License: GPLv2+ and CC-BY +Summary: Selinux policy package +URL: https://pcp.io +BuildRequires: selinux-policy-devel +BuildRequires: selinux-policy-targeted +%if 0%{?rhel} == 5 +BuildRequires: setools +%else +BuildRequires: setools-console +%endif +Requires: policycoreutils selinux-policy-targeted + +%description selinux +This package contains SELinux support for PCP. The package contains +interface rules, type enforcement and file context adjustments for an +updated policy package. +%endif + + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +%build +# the buildsubdir macro gets defined in %setup and is apparently only available in the next step (i.e. the %build step) +%global __strip %{_builddir}/%{?buildsubdir}/build/rpm/custom-strip + +# fix up build version +_build=`echo %{release} | sed -e 's/\..*$//'` +sed -i "/PACKAGE_BUILD/s/=[0-9]*/=$_build/" VERSION.pcp + +%if !%{disable_python2} && 0%{?default_python} != 3 +export PYTHON=python%{?default_python} +%endif +%configure %{?_with_initd} %{?_with_doc} %{?_with_dstat} %{?_with_ib} %{?_with_podman} %{?_with_statsd} %{?_with_perfevent} %{?_with_bcc} %{?_with_bpf} %{?_with_bpftrace} %{?_with_json} %{?_with_snmp} %{?_with_nutcracker} %{?_with_python2} +make %{?_smp_mflags} default_pcp + +%install +rm -Rf $RPM_BUILD_ROOT +BACKDIR=`pwd` +NO_CHOWN=true +DIST_ROOT=$RPM_BUILD_ROOT +DIST_TMPFILES=$BACKDIR/install.tmpfiles +DIST_MANIFEST=$BACKDIR/install.manifest +export NO_CHOWN DIST_ROOT DIST_MANIFEST DIST_TMPFILES +rm -f $DIST_MANIFEST $DIST_TMPFILES +make install_pcp + +### TODO: remove these by incorporating into the actual build + +# Fix stuff we do/don't want to ship +rm -f $RPM_BUILD_ROOT/%{_libdir}/*.a +sed -i -e '/\.a$/d' $DIST_MANIFEST + +# remove sheet2pcp until BZ 830923 and BZ 754678 are resolved. +rm -f $RPM_BUILD_ROOT/%{_bindir}/sheet2pcp $RPM_BUILD_ROOT/%{_mandir}/man1/sheet2pcp.1* +sed -i -e '/sheet2pcp/d' $DIST_MANIFEST + +# remove {config,platform}sz.h as these are not multilib friendly. +rm -f $RPM_BUILD_ROOT/%{_includedir}/pcp/configsz.h +sed -i -e '/configsz.h/d' $DIST_MANIFEST +rm -f $RPM_BUILD_ROOT/%{_includedir}/pcp/platformsz.h +sed -i -e '/platformsz.h/d' $DIST_MANIFEST + +%if %{disable_mssql} +# remove pmdamssql on platforms lacking MSODBC driver packages. +rm -fr $RPM_BUILD_ROOT/%{_confdir}/mssql +rm -fr $RPM_BUILD_ROOT/%{_confdir}/pmieconf/mssql +rm -fr $RPM_BUILD_ROOT/%{_ieconfdir}/mssql +rm -fr $RPM_BUILD_ROOT/%{_pmdasdir}/mssql +rm -fr $RPM_BUILD_ROOT/%{_pmdasexecdir}/mssql +%endif + +%if !%{disable_qt} +desktop-file-validate $RPM_BUILD_ROOT/%{_datadir}/applications/pmchart.desktop +%endif + +%if 0%{?rhel} || 0%{?fedora} +# Fedora and RHEL default local only access for pmcd and pmlogger +sed -i -e '/^# .*_LOCAL=1/s/^# //' $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/{pmcd,pmlogger} +%endif + +# default chkconfig off (all RPM platforms) +for f in $RPM_BUILD_ROOT/%{_initddir}/{pcp,pmcd,pmlogger,pmie,pmproxy}; do + test -f "$f" || continue + sed -i -e '/^# chkconfig/s/:.*$/: - 95 05/' -e '/^# Default-Start:/s/:.*$/:/' $f +done + +### end TODO + +PCP_GUI='pmchart|pmconfirm|pmdumptext|pmmessage|pmquery|pmsnap|pmtime' + +PCP_CONF=$BACKDIR/src/include/pcp.conf +export PCP_CONF +. $BACKDIR/src/include/pcp.env +CFGFILELIST=`ls -1 $BACKDIR/debian/pcp-conf.{install,dirs}` +LIBFILELIST=`ls -1 $BACKDIR/debian/lib*.{install,dirs} | grep -F -v -- -dev.` +DEVFILELIST=`ls -1 $BACKDIR/debian/lib*-dev.{install,dirs}` + +# Package split: pcp{-conf,-libs,-libs-devel,-testsuite,-import-*,-export-*}... +# The above list is ordered by file selection; files for each package are +# removed from a global set, then the base package catches all remaining. +sed -e 's/^/\//' $CFGFILELIST >pcp-conf-files +sed -e 's/^/\//' $LIBFILELIST >pcp-libs-files +sed -e 's/^/\//' $DEVFILELIST >pcp-devel-files +grep "\.h$" $DEVFILELIST | cut -f2 -d":" >pcp-libs-devel-files +grep "\.pc$" $DEVFILELIST | cut -f2 -d":" >>pcp-libs-devel-files +grep "\.so$" $DEVFILELIST | cut -f2 -d":" >>pcp-libs-devel-files +grep "\.a$" $DEVFILELIST | cut -f2 -d":" >>pcp-libs-devel-files +sed -i -e 's/^/\//' pcp-libs-devel-files +sed -i '/.h$/d' pcp-devel-files +sed -i '/.pc$/d' pcp-devel-files +sed -i '/.so$/d' pcp-devel-files +sed -i '/.a$/d' pcp-devel-files +sed -i '/\/man\//d' pcp-devel-files +sed -i '/\/include\//d' pcp-devel-files + +%ifarch x86_64 ppc64 ppc64le aarch64 s390x +sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-libs-files +sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-devel-files +sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-libs-devel-files +%endif +%ifarch ia64 +%if "%{_vendor}" != "suse" +sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-libs-files +sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-devel-files +sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-libs-devel-files +%endif +%endif + +# some special cases for devel +awk '{print $NF}' $DIST_MANIFEST |\ +grep -E 'pcp\/(examples|demos)|(etc/pcp|pcp/pmdas)\/(sample|simple|trivial|txmon)|bin/(pmdbg|pmclient|pmerr|genpmda)' | grep -E -v tutorials >>pcp-devel-files + +# Patterns for files to be marked %%config(noreplace). +# Note: /etc/pcp.{conf,env,sh} are %%config but not noreplace +# and are treated specially below. +cat >confpath.list <pcp-doc-files +total_manifest | keep 'testsuite|etc/systemd/system|libpcp_fault|pcp/fault.h' >pcp-testsuite-files + +basic_manifest | keep "$PCP_GUI|pcp-gui|applications|pixmaps|hicolor" | cull 'pmtime.h' >pcp-gui-files +basic_manifest | keep 'selinux' | cull 'tmp|GNUselinuxdefs' >pcp-selinux-files +basic_manifest | keep 'zeroconf|daily[-_]report|/sa$' >pcp-zeroconf-files +basic_manifest | grep -E -e 'pmiostat|pmrep|dstat|htop|pcp2csv' \ + -e 'pcp-atop|pcp-dmcache|pcp-dstat|pcp-free|pcp-htop' \ + -e 'pcp-ipcs|pcp-iostat|pcp-lvmcache|pcp-mpstat' \ + -e 'pcp-numastat|pcp-pidstat|pcp-shping|pcp-tapestat' \ + -e 'pcp-uptime|pcp-verify|pcp-ss' | \ + cull 'selinux|pmlogconf|pmieconf|pmrepconf' >pcp-system-tools-files + +basic_manifest | keep 'sar2pcp' >pcp-import-sar2pcp-files +basic_manifest | keep 'iostat2pcp' >pcp-import-iostat2pcp-files +basic_manifest | keep 'sheet2pcp' >pcp-import-sheet2pcp-files +basic_manifest | keep 'mrtg2pcp' >pcp-import-mrtg2pcp-files +basic_manifest | keep 'ganglia2pcp' >pcp-import-ganglia2pcp-files +basic_manifest | keep 'collectl2pcp' >pcp-import-collectl2pcp-files +basic_manifest | keep 'pcp2elasticsearch' >pcp-export-pcp2elasticsearch-files +basic_manifest | keep 'pcp2influxdb' >pcp-export-pcp2influxdb-files +basic_manifest | keep 'pcp2xlsx' >pcp-export-pcp2xlsx-files +basic_manifest | keep 'pcp2graphite' >pcp-export-pcp2graphite-files +basic_manifest | keep 'pcp2json' >pcp-export-pcp2json-files +basic_manifest | keep 'pcp2spark' >pcp-export-pcp2spark-files +basic_manifest | keep 'pcp2xml' >pcp-export-pcp2xml-files +basic_manifest | keep 'pcp2zabbix' >pcp-export-pcp2zabbix-files +basic_manifest | keep 'zabbix|zbxpcp' | cull pcp2zabbix >pcp-export-zabbix-agent-files +basic_manifest | keep '(etc/pcp|pmdas)/activemq(/|$)' >pcp-pmda-activemq-files +basic_manifest | keep '(etc/pcp|pmdas)/apache(/|$)' >pcp-pmda-apache-files +basic_manifest | keep '(etc/pcp|pmdas)/bash(/|$)' >pcp-pmda-bash-files +basic_manifest | keep '(etc/pcp|pmdas)/bcc(/|$)' >pcp-pmda-bcc-files +basic_manifest | keep '(etc/pcp|pmdas)/bind2(/|$)' >pcp-pmda-bind2-files +basic_manifest | keep '(etc/pcp|pmdas)/bonding(/|$)' >pcp-pmda-bonding-files +basic_manifest | keep '(etc/pcp|pmdas)/bpf(/|$)' >pcp-pmda-bpf-files +basic_manifest | keep '(etc/pcp|pmdas)/bpftrace(/|$)' >pcp-pmda-bpftrace-files +basic_manifest | keep '(etc/pcp|pmdas)/cifs(/|$)' >pcp-pmda-cifs-files +basic_manifest | keep '(etc/pcp|pmdas)/cisco(/|$)' >pcp-pmda-cisco-files +basic_manifest | keep '(etc/pcp|pmdas)/dbping(/|$)' >pcp-pmda-dbping-files +basic_manifest | keep '(etc/pcp|pmdas|pmieconf)/dm(/|$)' >pcp-pmda-dm-files +basic_manifest | keep '(etc/pcp|pmdas)/denki(/|$)' >pcp-pmda-denki-files +basic_manifest | keep '(etc/pcp|pmdas)/docker(/|$)' >pcp-pmda-docker-files +basic_manifest | keep '(etc/pcp|pmdas)/ds389log(/|$)' >pcp-pmda-ds389log-files +basic_manifest | keep '(etc/pcp|pmdas)/ds389(/|$)' >pcp-pmda-ds389-files +basic_manifest | keep '(etc/pcp|pmdas)/elasticsearch(/|$)' >pcp-pmda-elasticsearch-files +basic_manifest | keep '(etc/pcp|pmdas)/gfs2(/|$)' >pcp-pmda-gfs2-files +basic_manifest | keep '(etc/pcp|pmdas)/gluster(/|$)' >pcp-pmda-gluster-files +basic_manifest | keep '(etc/pcp|pmdas)/gpfs(/|$)' >pcp-pmda-gpfs-files +basic_manifest | keep '(etc/pcp|pmdas)/gpsd(/|$)' >pcp-pmda-gpsd-files +basic_manifest | keep '(etc/pcp|pmdas)/hacluster(/|$)' >pcp-pmda-hacluster-files +basic_manifest | keep '(etc/pcp|pmdas)/haproxy(/|$)' >pcp-pmda-haproxy-files +basic_manifest | keep '(etc/pcp|pmdas)/infiniband(/|$)' >pcp-pmda-infiniband-files +basic_manifest | keep '(etc/pcp|pmdas)/json(/|$)' >pcp-pmda-json-files +basic_manifest | keep '(etc/pcp|pmdas)/libvirt(/|$)' >pcp-pmda-libvirt-files +basic_manifest | keep '(etc/pcp|pmdas)/lio(/|$)' >pcp-pmda-lio-files +basic_manifest | keep '(etc/pcp|pmdas)/lmsensors(/|$)' >pcp-pmda-lmsensors-files +basic_manifest | keep '(etc/pcp|pmdas)/logger(/|$)' >pcp-pmda-logger-files +basic_manifest | keep '(etc/pcp|pmdas)/lustre(/|$)' >pcp-pmda-lustre-files +basic_manifest | keep '(etc/pcp|pmdas)/lustrecomm(/|$)' >pcp-pmda-lustrecomm-files +basic_manifest | keep '(etc/pcp|pmdas)/memcache(/|$)' >pcp-pmda-memcache-files +basic_manifest | keep '(etc/pcp|pmdas)/mailq(/|$)' >pcp-pmda-mailq-files +basic_manifest | keep '(etc/pcp|pmdas)/mic(/|$)' >pcp-pmda-mic-files +basic_manifest | keep '(etc/pcp|pmdas)/mounts(/|$)' >pcp-pmda-mounts-files +basic_manifest | keep '(etc/pcp|pmdas)/mongodb(/|$)' >pcp-pmda-mongodb-files +basic_manifest | keep '(etc/pcp|pmdas|pmieconf)/mssql(/|$)' >pcp-pmda-mssql-files +basic_manifest | keep '(etc/pcp|pmdas)/mysql(/|$)' >pcp-pmda-mysql-files +basic_manifest | keep '(etc/pcp|pmdas)/named(/|$)' >pcp-pmda-named-files +basic_manifest | keep '(etc/pcp|pmdas)/netfilter(/|$)' >pcp-pmda-netfilter-files +basic_manifest | keep '(etc/pcp|pmdas)/netcheck(/|$)' >pcp-pmda-netcheck-files +basic_manifest | keep '(etc/pcp|pmdas)/news(/|$)' >pcp-pmda-news-files +basic_manifest | keep '(etc/pcp|pmdas)/nfsclient(/|$)' >pcp-pmda-nfsclient-files +basic_manifest | keep '(etc/pcp|pmdas)/nginx(/|$)' >pcp-pmda-nginx-files +basic_manifest | keep '(etc/pcp|pmdas)/nutcracker(/|$)' >pcp-pmda-nutcracker-files +basic_manifest | keep '(etc/pcp|pmdas)/nvidia(/|$)' >pcp-pmda-nvidia-files +basic_manifest | keep '(etc/pcp|pmdas)/openmetrics(/|$)' >pcp-pmda-openmetrics-files +basic_manifest | keep '(etc/pcp|pmdas)/openvswitch(/|$)' >pcp-pmda-openvswitch-files +basic_manifest | keep '(etc/pcp|pmdas)/oracle(/|$)' >pcp-pmda-oracle-files +basic_manifest | keep '(etc/pcp|pmdas)/pdns(/|$)' >pcp-pmda-pdns-files +basic_manifest | keep '(etc/pcp|pmdas)/perfevent(/|$)' >pcp-pmda-perfevent-files +basic_manifest | keep '(etc/pcp|pmdas)/podman(/|$)' >pcp-pmda-podman-files +basic_manifest | keep '(etc/pcp|pmdas)/postfix(/|$)' >pcp-pmda-postfix-files +basic_manifest | keep '(etc/pcp|pmdas)/postgresql(/|$)' >pcp-pmda-postgresql-files +basic_manifest | keep '(etc/pcp|pmdas)/rabbitmq(/|$)' >pcp-pmda-rabbitmq-files +basic_manifest | keep '(etc/pcp|pmdas)/redis(/|$)' >pcp-pmda-redis-files +basic_manifest | keep '(etc/pcp|pmdas)/roomtemp(/|$)' >pcp-pmda-roomtemp-files +basic_manifest | keep '(etc/pcp|pmdas)/rpm(/|$)' >pcp-pmda-rpm-files +basic_manifest | keep '(etc/pcp|pmdas)/rsyslog(/|$)' >pcp-pmda-rsyslog-files +basic_manifest | keep '(etc/pcp|pmdas)/samba(/|$)' >pcp-pmda-samba-files +basic_manifest | keep '(etc/pcp|pmdas)/sendmail(/|$)' >pcp-pmda-sendmail-files +basic_manifest | keep '(etc/pcp|pmdas)/shping(/|$)' >pcp-pmda-shping-files +basic_manifest | keep '(etc/pcp|pmdas)/slurm(/|$)' >pcp-pmda-slurm-files +basic_manifest | keep '(etc/pcp|pmdas)/smart(/|$)' >pcp-pmda-smart-files +basic_manifest | keep '(etc/pcp|pmdas)/snmp(/|$)' >pcp-pmda-snmp-files +basic_manifest | keep '(etc/pcp|pmdas)/sockets(/|$)' >pcp-pmda-sockets-files +basic_manifest | keep '(etc/pcp|pmdas)/statsd(/|$)' >pcp-pmda-statsd-files +basic_manifest | keep '(etc/pcp|pmdas)/summary(/|$)' >pcp-pmda-summary-files +basic_manifest | keep '(etc/pcp|pmdas)/systemd(/|$)' >pcp-pmda-systemd-files +basic_manifest | keep '(etc/pcp|pmdas)/trace(/|$)' >pcp-pmda-trace-files +basic_manifest | keep '(etc/pcp|pmdas)/unbound(/|$)' >pcp-pmda-unbound-files +basic_manifest | keep '(etc/pcp|pmdas)/weblog(/|$)' >pcp-pmda-weblog-files +basic_manifest | keep '(etc/pcp|pmdas)/zimbra(/|$)' >pcp-pmda-zimbra-files +basic_manifest | keep '(etc/pcp|pmdas)/zswap(/|$)' >pcp-pmda-zswap-files + +rm -f packages.list +for pmda_package in \ + activemq apache \ + bash bcc bind2 bonding bpf bpftrace \ + cifs cisco \ + dbping denki docker dm ds389 ds389log \ + elasticsearch \ + gfs2 gluster gpfs gpsd \ + hacluster haproxy \ + infiniband \ + json \ + libvirt lio lmsensors logger lustre lustrecomm \ + mailq memcache mic mounts mongodb mssql mysql \ + named netcheck netfilter news nfsclient nginx \ + nutcracker nvidia \ + openmetrics openvswitch oracle \ + pdns perfevent podman postfix postgresql \ + rabbitmq redis roomtemp rpm rsyslog \ + samba sendmail shping slurm smart snmp \ + sockets statsd summary systemd \ + unbound \ + trace \ + weblog \ + zimbra zswap ; \ +do \ + pmda_packages="$pmda_packages pcp-pmda-$pmda_package"; \ +done + +for import_package in \ + collectl2pcp iostat2pcp ganglia2pcp mrtg2pcp sar2pcp sheet2pcp ; \ +do \ + import_packages="$import_packages pcp-import-$import_package"; \ +done + +for export_package in \ + pcp2elasticsearch pcp2graphite pcp2influxdb pcp2json \ + pcp2spark pcp2xlsx pcp2xml pcp2zabbix zabbix-agent ; \ +do \ + export_packages="$export_packages pcp-export-$export_package"; \ +done + +for subpackage in \ + pcp-conf pcp-gui pcp-doc pcp-libs pcp-devel pcp-libs-devel \ + pcp-selinux pcp-system-tools pcp-testsuite pcp-zeroconf \ + $pmda_packages $import_packages $export_packages ; \ +do \ + echo $subpackage >> packages.list; \ +done + +rm -f *-files.rpm *-tmpfiles.rpm +sort -u $DIST_MANIFEST | awk ' +function loadfiles(files) { + system ("touch " files"-files"); + filelist=files"-files"; + while (getline < filelist) { + if (length(pkg[$0]) > 0 && pkg[$0] != files) + print "Dup: ", $0, " package: ", pkg[$0], " and ", files; + if (length(pkg[$0]) == 0) + pkg[$0] = files; + } +} +BEGIN { + while (getline < "packages.list") loadfiles($0); + while (getline < "confpath.list") conf[nconf++]=$0; +} +{ + if (pkg[$NF]) p=pkg[$NF]; + else p="pcp"; + f=p"-files.rpm"; +} +$1 == "d" { + if (match ($5, "'$PCP_RUN_DIR'")) { + printf ("%%%%ghost ") >> f; + } + if (match ($5, "'$PCP_VAR_DIR'/testsuite")) { + $3 = $4 = "pcpqa"; + } + printf ("%%%%dir %%%%attr(%s,%s,%s) %s\n", $2, $3, $4, $5) >> f + } +$1 == "f" && $6 ~ "etc/pcp\\.conf" { printf ("%%%%config ") >> f; } +$1 == "f" && $6 ~ "etc/pcp\\.env" { printf ("%%%%config ") >> f; } +$1 == "f" && $6 ~ "etc/pcp\\.sh" { printf ("%%%%config ") >> f; } +$1 == "f" { + for (i=0; i < nconf; i++) { + if ($6 ~ conf[i]) { + printf ("%%%%config(noreplace) ") >> f; + break; + } + } + if (match ($6, "'$PCP_VAR_DIR'/testsuite")) { + $3 = $4 = "pcpqa"; + } + if (match ($6, "'$PCP_MAN_DIR'") || match ($6, "'$PCP_DOC_DIR'")) { + printf ("%%%%doc ") >> f; + } + printf ("%%%%attr(%s,%s,%s) %s\n", $2, $3, $4, $6) >> f + } +$1 == "l" { +%if !%{disable_systemd} + if (match ($3, "'$PCP_VAR_DIR'")) { + print $3 >> p"-tmpfiles"; + if (length(tmpfiles[p]) == 0) { + printf ("'$PCP_SYSTEMDTMPFILES_DIR'/%s.conf\n", p) >> f; + tmpfiles[p] = p; + } + } +%endif + print $3 >> f; + }' + +%if !%{disable_systemd} +mkdir -p $DIST_ROOT/$PCP_SYSTEMDTMPFILES_DIR +sort -u $DIST_TMPFILES | awk ' +function loadtmpfiles(files) { + system ("touch " files"-tmpfiles"); + filelist=files"-tmpfiles"; + while (getline < filelist) { + if (pkg[$0] && pkg[$0] != files) + print "Dup: ", $0, " package: ", pkg[$0], " and ", files; + pkg[$0] = files; + } +} +BEGIN { + while (getline < "packages.list") loadtmpfiles($0); +} +{ + if (pkg[$2]) p=pkg[$2]; + else p="pcp"; + f=p".conf"; + printf ("%s\n", $0) >> f; +}' + +%if %{disable_mssql} +# TODO: integrate better into the PCP build (via autoconf) +# so that this and other mssql artifacts are not generated. +rm -f pcp-pmda-mssql.conf +%endif + +for tmpfile in *.conf ; \ +do \ + mv $tmpfile $DIST_ROOT/$PCP_SYSTEMDTMPFILES_DIR/$tmpfile; \ +done +%endif + +%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 +chown -R pcpqa:pcpqa %{_testsdir} 2>/dev/null +exit 0 + +%post testsuite +chown -R pcpqa:pcpqa %{_testsdir} 2>/dev/null +%if 0%{?rhel} +%if !%{disable_systemd} + systemctl restart pmcd pmlogger >/dev/null 2>&1 + systemctl enable pmcd pmlogger >/dev/null 2>&1 +%else + /sbin/chkconfig --add pmcd >/dev/null 2>&1 + /sbin/chkconfig --add pmlogger >/dev/null 2>&1 + /sbin/service pmcd condrestart + /sbin/service pmlogger condrestart +%endif +%endif +exit 0 + +%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 !%{disable_systemd} +%preun pmda-systemd +%{pmda_remove "$1" "systemd"} +%endif + +%if !%{disable_infiniband} +%preun pmda-infiniband +%{pmda_remove "$1" "infiniband"} +%endif + +%if !%{disable_perfevent} +%preun pmda-perfevent +%{pmda_remove "$1" "perfevent"} +%endif + +%if !%{disable_podman} +%preun pmda-podman +%{pmda_remove "$1" "podman"} +%endif + +%if !%{disable_statsd} +%preun pmda-statsd +%{pmda_remove "$1" "statsd"} +%endif + +%if !%{disable_json} +%preun pmda-json +%{pmda_remove "$1" "json"} +%endif + +%preun pmda-nginx +%{pmda_remove "$1" "nginx"} + +%preun pmda-oracle +%{pmda_remove "$1" "oracle"} + +%preun pmda-postgresql +%{pmda_remove "$1" "postgresql"} + +%preun pmda-postfix +%{pmda_remove "$1" "postfix"} + +%preun pmda-elasticsearch +%{pmda_remove "$1" "elasticsearch"} + +%preun pmda-openvswitch +%{pmda_remove "$1" "openvswitch"} + +%preun pmda-rabbitmq +%{pmda_remove "$1" "rabbitmq"} + +%if !%{disable_snmp} +%preun pmda-snmp +%{pmda_remove "$1" "snmp"} +%endif + +%preun pmda-mysql +%{pmda_remove "$1" "mysql"} + +%preun pmda-activemq +%{pmda_remove "$1" "activemq"} + +%preun pmda-bind2 +%{pmda_remove "$1" "bind2"} + +%preun pmda-bonding +%{pmda_remove "$1" "bonding"} + +%preun pmda-dbping +%{pmda_remove "$1" "dbping"} + +%preun pmda-denki +%{pmda_remove "$1" "denki"} + +%preun pmda-docker +%{pmda_remove "$1" "docker"} + +%preun pmda-ds389 +%{pmda_remove "$1" "ds389"} + +%preun pmda-ds389log +%{pmda_remove "$1" "ds389log"} + +%preun pmda-gpfs +%{pmda_remove "$1" "gpfs"} + +%preun pmda-gpsd +%{pmda_remove "$1" "gpsd"} + +%preun pmda-lio +%{pmda_remove "$1" "lio"} + +%preun pmda-openmetrics +%{pmda_remove "$1" "openmetrics"} + +%preun pmda-lustre +%{pmda_remove "$1" "lustre"} + +%preun pmda-lustrecomm +%{pmda_remove "$1" "lustrecomm"} + +%preun pmda-memcache +%{pmda_remove "$1" "memcache"} + +%preun pmda-named +%{pmda_remove "$1" "named"} + +%preun pmda-netfilter +%{pmda_remove "$1" "netfilter"} + +%preun pmda-news +%{pmda_remove "$1" "news"} + +%preun pmda-nfsclient +%{pmda_remove "$1" "nfsclient"} + +%if !%{disable_nutcracker} +%preun pmda-nutcracker +%{pmda_remove "$1" "nutcracker"} +%endif + +%preun pmda-pdns +%{pmda_remove "$1" "pdns"} + +%preun pmda-rsyslog +%{pmda_remove "$1" "rsyslog"} + +%preun pmda-redis +%{pmda_remove "$1" "redis"} + +%preun pmda-samba +%{pmda_remove "$1" "samba"} + +%preun pmda-zimbra +%{pmda_remove "$1" "zimbra"} + +%preun pmda-dm +%{pmda_remove "$1" "dm"} + +%if !%{disable_bcc} +%preun pmda-bcc +%{pmda_remove "$1" "bcc"} +%endif + +%if !%{disable_bpf} +%preun pmda-bpf +%{pmda_remove "$1" "bpf"} +%endif + +%if !%{disable_bpftrace} +%preun pmda-bpftrace +%{pmda_remove "$1" "bpftrace"} +%endif + +%if !%{disable_python2} || !%{disable_python3} +%preun pmda-gluster +%{pmda_remove "$1" "gluster"} + +%preun pmda-zswap +%{pmda_remove "$1" "zswap"} + +%preun pmda-unbound +%{pmda_remove "$1" "unbound"} + +%preun pmda-mic +%{pmda_remove "$1" "mic"} + +%preun pmda-haproxy +%{pmda_remove "$1" "haproxy"} + +%preun pmda-libvirt +%{pmda_remove "$1" "libvirt"} + +%preun pmda-lmsensors +%{pmda_remove "$1" "lmsensors"} + +%preun pmda-mongodb +%{pmda_remove "$1" "mongodb"} + +%if !%{disable_mssql} +%preun pmda-mssql +%{pmda_remove "$1" "mssql"} +%endif + +%preun pmda-netcheck +%{pmda_remove "$1" "netcheck"} + +%endif + +%preun pmda-apache +%{pmda_remove "$1" "apache"} + +%preun pmda-bash +%{pmda_remove "$1" "bash"} + +%preun pmda-cifs +%{pmda_remove "$1" "cifs"} + +%preun pmda-cisco +%{pmda_remove "$1" "cisco"} + +%preun pmda-gfs2 +%{pmda_remove "$1" "gfs2"} + +%preun pmda-logger +%{pmda_remove "$1" "logger"} + +%preun pmda-mailq +%{pmda_remove "$1" "mailq"} + +%preun pmda-mounts +%{pmda_remove "$1" "mounts"} + +%preun pmda-nvidia-gpu +%{pmda_remove "$1" "nvidia"} + +%preun pmda-roomtemp +%{pmda_remove "$1" "roomtemp"} + +%preun pmda-sendmail +%{pmda_remove "$1" "sendmail"} + +%preun pmda-shping +%{pmda_remove "$1" "shping"} + +%preun pmda-smart +%{pmda_remove "$1" "smart"} + +%preun pmda-sockets +%{pmda_remove "$1" "sockets"} + +%preun pmda-hacluster +%{pmda_remove "$1" "hacluster"} + +%preun pmda-summary +%{pmda_remove "$1" "summary"} + +%preun pmda-trace +%{pmda_remove "$1" "trace"} + +%preun pmda-weblog +%{pmda_remove "$1" "weblog"} + +%if !%{disable_systemd} +%preun zeroconf +if [ "$1" -eq 0 ] +then + %systemd_preun pmlogger_daily_report.timer pmlogger_daily_report.service +fi +%endif + +%preun +if [ "$1" -eq 0 ] +then + # stop daemons before erasing the package + %if !%{disable_systemd} + %systemd_preun pmlogger_check.timer pmlogger_daily.timer pmlogger_farm_check.timer pmlogger_farm_check.service pmlogger_farm.service pmlogger.service pmie_check.timer pmie_daily.timer pmie_farm_check.timer pmie_farm_check.service pmie_farm.service pmie.service pmproxy.service pmfind.service pmcd.service + + systemctl stop pmlogger.service pmie.service pmproxy.service pmfind.service pmcd.service >/dev/null 2>&1 + %else + /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 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 + %endif + # cleanup namespace state/flag, may still exist + PCP_PMNS_DIR=%{_pmnsdir} + rm -f "$PCP_PMNS_DIR/.NeedRebuild" >/dev/null 2>&1 +fi + +%post zeroconf +PCP_PMDAS_DIR=%{_pmdasdir} +PCP_SYSCONFIG_DIR=%{_sysconfdir}/sysconfig +PCP_PMCDCONF_PATH=%{_confdir}/pmcd/pmcd.conf +# auto-install important PMDAs for RH Support (if not present already) +for PMDA in dm nfsclient openmetrics ; do + if ! grep -q "$PMDA/pmda$PMDA" "$PCP_PMCDCONF_PATH" + then + %{install_file "$PCP_PMDAS_DIR/$PMDA" .NeedInstall} + fi +done +# auto-enable these usually optional pmie rules +pmieconf -c enable dmthin +%if 0%{?rhel} +%if !%{disable_systemd} + systemctl restart pmcd pmlogger pmie >/dev/null 2>&1 + systemctl enable pmcd pmlogger pmie >/dev/null 2>&1 +%else + /sbin/chkconfig --add pmcd >/dev/null 2>&1 + /sbin/chkconfig --add pmlogger >/dev/null 2>&1 + /sbin/chkconfig --add pmie >/dev/null 2>&1 + /sbin/service pmcd condrestart + /sbin/service pmlogger condrestart + /sbin/service pmie condrestart +%endif +%endif + +%if !%{disable_selinux} +%post selinux +%{selinux_handle_policy "$1" "pcpupstream"} + +%triggerin selinux -- docker-selinux +%{selinux_handle_policy "$1" "pcpupstream-docker"} + +%triggerin selinux -- container-selinux +%{selinux_handle_policy "$1" "pcpupstream-container"} +%endif + +%post +PCP_PMNS_DIR=%{_pmnsdir} +PCP_LOG_DIR=%{_logsdir} +%{install_file "$PCP_PMNS_DIR" .NeedRebuild} +%{install_file "$PCP_LOG_DIR/pmlogger" .NeedRewrite} +%if !%{disable_systemd} + # clean up any stale symlinks for deprecated pm*-poll services + rm -f %{_sysconfdir}/systemd/system/pm*.requires/pm*-poll.* >/dev/null 2>&1 || true + + %systemd_postun_with_restart pmcd.service + %systemd_post pmcd.service + %systemd_postun_with_restart pmlogger.service + %systemd_post pmlogger.service + %systemd_postun_with_restart pmie.service + %systemd_post pmie.service + %systemd_postun_with_restart pmproxy.service + %systemd_post pmproxy.service + %systemd_post pmfind.service +%else + /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 +%{rebuild_pmns "$PCP_PMNS_DIR" .NeedRebuild} + +%if 0%{?fedora} >= 26 || 0%{?rhel} > 7 +%ldconfig_scriptlets libs +%else +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig +%endif + +%if !%{disable_selinux} +%preun selinux +%{selinux_handle_policy "$1" "pcpupstream"} + +%triggerun selinux -- docker-selinux +%{selinux_handle_policy "$1" "pcpupstream-docker"} + +%triggerun selinux -- container-selinux +%{selinux_handle_policy "$1" "pcpupstream-container"} +%endif + +%files -f pcp-files.rpm +%doc CHANGELOG COPYING INSTALL.md README.md VERSION.pcp pcp.lsm +%ghost %dir %attr(0775,pcp,pcp) %{_localstatedir}/run/pcp + +%files conf -f pcp-conf-files.rpm + +%files libs -f pcp-libs-files.rpm + +%files libs-devel -f pcp-libs-devel-files.rpm + +%files devel -f pcp-devel-files.rpm + +%files doc -f pcp-doc-files.rpm + +%if !%{disable_selinux} +%files selinux -f pcp-selinux-files.rpm +%endif + +%if !%{disable_qt} +%files gui -f pcp-gui-files.rpm +%endif + +%files testsuite -f pcp-testsuite-files.rpm + +%if !%{disable_infiniband} +%files pmda-infiniband -f pcp-pmda-infiniband-files.rpm +%endif + +%if !%{disable_podman} +%files pmda-podman -f pcp-pmda-podman-files.rpm +%endif + +%if !%{disable_statsd} +%files pmda-statsd -f pcp-pmda-statsd-files.rpm +%endif + +%if !%{disable_perfevent} +%files pmda-perfevent -f pcp-pmda-perfevent-files.rpm +%endif + +%if !%{disable_perl} +%files pmda-activemq -f pcp-pmda-activemq-files.rpm +%endif + +%if !%{disable_perl} +%files pmda-bind2 -f pcp-pmda-bind2-files.rpm +%endif + +%if !%{disable_nutcracker} +%files pmda-nutcracker -f pcp-pmda-nutcracker-files.rpm +%endif + +%if !%{disable_python2} || !%{disable_python3} +%files pmda-elasticsearch -f pcp-pmda-elasticsearch-files.rpm +%endif + +%if !%{disable_perl} +%files pmda-redis -f pcp-pmda-redis-files.rpm + +%files pmda-bonding -f pcp-pmda-bonding-files.rpm + +%files pmda-dbping -f pcp-pmda-dbping-files.rpm + +%files pmda-ds389log -f pcp-pmda-ds389log-files.rpm + +%files pmda-ds389 -f pcp-pmda-ds389-files.rpm + +%files pmda-gpfs -f pcp-pmda-gpfs-files.rpm + +%files pmda-gpsd -f pcp-pmda-gpsd-files.rpm + +%files pmda-lustre -f pcp-pmda-lustre-files.rpm + +%files pmda-memcache -f pcp-pmda-memcache-files.rpm + +%files pmda-named -f pcp-pmda-named-files.rpm + +%files pmda-netfilter -f pcp-pmda-netfilter-files.rpm + +%files pmda-news -f pcp-pmda-news-files.rpm + +%files pmda-pdns -f pcp-pmda-pdns-files.rpm + +%files pmda-rsyslog -f pcp-pmda-rsyslog-files.rpm + +%files pmda-samba -f pcp-pmda-samba-files.rpm + +%files pmda-slurm -f pcp-pmda-slurm-files.rpm + +%files pmda-zimbra -f pcp-pmda-zimbra-files.rpm +%endif + +%files pmda-denki -f pcp-pmda-denki-files.rpm + +%files pmda-docker -f pcp-pmda-docker-files.rpm + +%files pmda-lustrecomm -f pcp-pmda-lustrecomm-files.rpm + +%if !%{disable_perl} +%files pmda-mysql -f pcp-pmda-mysql-files.rpm +%endif + +%files pmda-nginx -f pcp-pmda-nginx-files.rpm + +%if !%{disable_perl} +%files pmda-postfix -f pcp-pmda-postfix-files.rpm +%endif + +%if !%{disable_python2} || !%{disable_python3} +%files pmda-postgresql -f pcp-pmda-postgresql-files.rpm +%endif + +%if !%{disable_perl} +%files pmda-oracle -f pcp-pmda-oracle-files.rpm +%endif + +%if !%{disable_perl} +%files pmda-snmp -f pcp-pmda-snmp-files.rpm +%endif + +%files pmda-dm -f pcp-pmda-dm-files.rpm + +%if !%{disable_bcc} +%files pmda-bcc -f pcp-pmda-bcc-files.rpm +%endif + +%if !%{disable_bpf} +%files pmda-bpf -f pcp-pmda-bpf-files.rpm +%endif + +%if !%{disable_bpftrace} +%files pmda-bpftrace -f pcp-pmda-bpftrace-files.rpm +%endif + +%if !%{disable_python2} || !%{disable_python3} +%files pmda-gluster -f pcp-pmda-gluster-files.rpm + +%files pmda-zswap -f pcp-pmda-zswap-files.rpm + +%files pmda-unbound -f pcp-pmda-unbound-files.rpm + +%files pmda-mic -f pcp-pmda-mic-files.rpm + +%files pmda-haproxy -f pcp-pmda-haproxy-files.rpm + +%files pmda-lmsensors -f pcp-pmda-lmsensors-files.rpm + +%files pmda-mongodb -f pcp-pmda-mongodb-files.rpm + +%if !%{disable_mssql} +%files pmda-mssql -f pcp-pmda-mssql-files.rpm +%endif + +%files pmda-netcheck -f pcp-pmda-netcheck-files.rpm + +%files pmda-nfsclient -f pcp-pmda-nfsclient-files.rpm + +%files pmda-openvswitch -f pcp-pmda-openvswitch-files.rpm + +%files pmda-rabbitmq -f pcp-pmda-rabbitmq-files.rpm + +%files export-pcp2graphite -f pcp-export-pcp2graphite-files.rpm + +%files export-pcp2json -f pcp-export-pcp2json-files.rpm + +%files export-pcp2spark -f pcp-export-pcp2spark-files.rpm + +%files export-pcp2xml -f pcp-export-pcp2xml-files.rpm + +%files export-pcp2zabbix -f pcp-export-pcp2zabbix-files.rpm +%endif + +%if !%{disable_python2} || !%{disable_python3} +%files export-pcp2elasticsearch -f pcp-export-pcp2elasticsearch-files.rpm +%endif + +%if !%{disable_python2} || !%{disable_python3} +%files export-pcp2influxdb -f pcp-export-pcp2influxdb-files.rpm +%endif + +%if !%{disable_xlsx} +%files export-pcp2xlsx -f pcp-export-pcp2xlsx-files.rpm +%endif + +%files export-zabbix-agent -f pcp-export-zabbix-agent-files.rpm + +%if !%{disable_json} +%files pmda-json -f pcp-pmda-json-files.rpm +%endif + +%if !%{disable_python2} || !%{disable_python3} +%files pmda-libvirt -f pcp-pmda-libvirt-files.rpm + +%files pmda-lio -f pcp-pmda-lio-files.rpm + +%files pmda-openmetrics -f pcp-pmda-openmetrics-files.rpm +%endif + +%files pmda-apache -f pcp-pmda-apache-files.rpm + +%files pmda-bash -f pcp-pmda-bash-files.rpm + +%files pmda-cifs -f pcp-pmda-cifs-files.rpm + +%files pmda-cisco -f pcp-pmda-cisco-files.rpm + +%files pmda-gfs2 -f pcp-pmda-gfs2-files.rpm + +%files pmda-logger -f pcp-pmda-logger-files.rpm + +%files pmda-mailq -f pcp-pmda-mailq-files.rpm + +%files pmda-mounts -f pcp-pmda-mounts-files.rpm + +%files pmda-nvidia-gpu -f pcp-pmda-nvidia-files.rpm + +%files pmda-roomtemp -f pcp-pmda-roomtemp-files.rpm + +%files pmda-sendmail -f pcp-pmda-sendmail-files.rpm + +%files pmda-shping -f pcp-pmda-shping-files.rpm + +%files pmda-smart -f pcp-pmda-smart-files.rpm + +%files pmda-sockets -f pcp-pmda-sockets-files.rpm + +%files pmda-hacluster -f pcp-pmda-hacluster-files.rpm + +%files pmda-summary -f pcp-pmda-summary-files.rpm + +%if !%{disable_systemd} +%files pmda-systemd -f pcp-pmda-systemd-files.rpm +%endif + +%files pmda-trace -f pcp-pmda-trace-files.rpm + +%files pmda-weblog -f pcp-pmda-weblog-files.rpm + +%if !%{disable_perl} +%files import-sar2pcp -f pcp-import-sar2pcp-files.rpm + +%files import-iostat2pcp -f pcp-import-iostat2pcp-files.rpm + +#TODO: +#%%files import-sheet2pcp -f pcp-import-sheet2pcp-files.rpm + +%files import-mrtg2pcp -f pcp-import-mrtg2pcp-files.rpm + +%files import-ganglia2pcp -f pcp-import-ganglia2pcp-files.rpm +%endif + +%files import-collectl2pcp -f pcp-import-collectl2pcp-files.rpm + +%if !%{disable_perl} +%files -n perl-PCP-PMDA -f perl-pcp-pmda.list + +%files -n perl-PCP-MMV -f perl-pcp-mmv.list + +%files -n perl-PCP-LogImport -f perl-pcp-logimport.list + +%files -n perl-PCP-LogSummary -f perl-pcp-logsummary.list +%endif + +%if !%{disable_python2} +%files -n %{__python2}-pcp -f python-pcp.list.rpm +%endif + +%if !%{disable_python3} +%files -n python3-pcp -f python3-pcp.list.rpm +%endif + +%files system-tools -f pcp-system-tools-files.rpm + +%files zeroconf -f pcp-zeroconf-files.rpm + +%changelog +* Mon May 09 2022 Nathan Scott - 5.3.7-7 +- Additional selinux policy rules for pmdasockets (BZ 1981886) + +* Thu May 05 2022 Nathan Scott - 5.3.7-5 +- Harden pmdapostfix(1) against missing Postfix (BZ 2059463) +- Fix cgroups failure on non-x86_64 platforms (BZ 2081262) + +* Tue May 03 2022 Nathan Scott - 5.3.7-3 +- Fix remaining issues in the pcp-ss(1) utility (BZ 1981886) +- Remove benign pmie systemd unit file warning (BZ 2072971) + +* Tue Apr 05 2022 Nathan Scott - 5.3.7-2 +- Rebase to latest stable version of PCP (BZ 2059462) + +* Wed Feb 02 2022 Nathan Scott - 5.3.5-8 +- Fix pcp-zeroconf logger interval override regression (BZ 1991764) +- Remove warnings from spec setup of PCP systemd units (BZ 2048024) + +* Fri Jan 21 2022 Nathan Scott - 5.3.5-5 +- Further improve pmlogger and pmie farm services (BZ 2030138) +- Resolve a further KVM selinux issue with KVM (BZ 2006430) +- Rebuild to use latest selinux-policy for el9 (BZ 2041503) + +* Fri Dec 17 2021 Nathan Scott - 5.3.5-4 +- pmdabcc: resolve compilation issues of some bcc PMDA modules on + aarch64, ppc64le and s390x (BZ 2024982) +- pmdabpf: support arm and powerpc architectures (BZ 2024980) +- Further improve pmlogger service startup latency (BZ 1973833) +- Additional improvements to farm systemd services (BZ 2030138) + +* Thu Dec 09 2021 Nathan Scott - 5.3.5-3 +- Resolve failure in the Nvidia metrics agent (BZ 2030123) +- PMDA indom cache loading performance improvements (BZ 2030122) +- Consistent user experience for new farm services (BZ 2030138) +- Resilience improvements for the pmproxy service (BZ 2030141) + +* Fri Nov 26 2021 Nathan Scott - 5.3.5-2 +- Updates to pmlogconf persistance changes (BZ 2017632) + +* Wed Nov 10 2021 Nathan Scott - 5.3.5-1 +- Update to latest PCP sources (BZ 1991764) + +* Fri Oct 15 2021 Mark Goodwin - 5.3.4-2 +- Fix pmlogger manual start with service disabled (BZ 2013937) + +* Fri Oct 08 2021 Nathan Scott - 5.3.4-1 +- Update to latest PCP sources (BZ 1991764) + +* Tue Oct 05 2021 Nathan Scott - 5.3.3-1 +- Resolve pmdakvm(1) selinux AVC denials (BZ 2006430) +- Related: rhbz#1991764 + +* Mon Aug 30 2021 Nathan Scott - 5.3.1-6 +- Fix pmdapodman initialization and selinux policy +- Related: rhbz#1957575 + +* Mon Aug 09 2021 Mohan Boddu - 5.3.1-5 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Mon Jul 12 2021 Mark Goodwin - 5.3.1-4 +- Improve pmproxy and libpcp_web scalability (BZ 1975069) +- Provide a pcp-ss(1) tool in pcp-system-tools (BZ 1879350) + +* Fri Jun 25 2021 Nathan Scott - 5.3.1-3 +- Fix pmproxy parallel TLS requests bug (BZ 1947989) +- Backport pmrep archive creation fix (BZ 1974266) +- Related: rhbz#1957575 + +* Wed Jun 16 2021 Mohan Boddu - 5.3.1-2 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Wed Jun 09 2021 Nathan Scott - 5.3.1-1 +- Add selinux rules for pmdabcc bpf access (BZ 1952374) +- Update to latest PCP sources (BZ 1957575) + +* Tue May 18 2021 Nathan Scott - 5.3.0-2 +- Improve pmchart duplicate archive diagnostics (BZ 1615718) +- Save pmchart users prefered archive locations (BZ 1615742) +- Remove libvarlink dependency from podman PMDA (BZ 1956608) +- Correct pcp-testsuite file permissions (BZ 1922040) +- Resolve pcp-testsuite linkage problems (BZ 1950263) + +* Thu May 06 2021 Nathan Scott - 5.3.0-1 +- Added conditional lockdown policy access by pmdakvm (BZ 1940971) +- Added spec file dependency on cyrus-sasl-scram (BZ 1942879) +- Update to latest PCP sources (BZ 1957575) + +* Fri Apr 16 2021 Mohan Boddu - 5.2.5-5 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Fri Feb 19 2021 Nathan Scott - 5.2.5-4 +- Revert removal of pmcd unit dependencies (BZs 1929556, 1930284) + +* Fri Feb 12 2021 Mark Goodwin - 5.2.5-3 +- Specify pmns_name in sockets PMDA Install and Remove scripts +- Add selinux rules for pmcd to use netlink tcpdiag sockets (BZ 1926756) + +* Wed Feb 10 2021 Nathan Scott - 5.2.5-2 +- Update to latest PCP sources. +- Fix pcp-dstat(1) sample count being off-by-one (BZ 1922768) +- Add dstat(1) symlink to pcp-dstat(1) in pcp-doc (BZ 1922771) + +* Tue Jan 26 2021 Fedora Release Engineering - 5.2.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Dec 18 2020 Nathan Scott - 5.2.3-1 +- Update to latest PCP sources. + +* Wed Nov 11 2020 Nathan Scott - 5.2.2-1 +- Update to latest PCP sources. + +* Fri Sep 25 2020 Nathan Scott - 5.2.1-1 +- Update to latest PCP sources. + +* Sat Aug 08 2020 Mark Goodwin - 5.2.0-1 +- FHS compliance in installed /var file locations (BZ 1827441) +- pmproxy intermittently crashes at uv_timer_stop (BZ 1789312) +- Update to latest PCP sources. +- Re-enabled LTO. + +* Tue Jul 28 2020 Fedora Release Engineering - 5.1.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 01 2020 Jeff Law - 5.1.1-3 +- Disable LTO + +* Tue Jun 23 2020 Jitka Plesnikova - 5.1.1-2 +- Perl 5.32 rebuild + +* Fri May 29 2020 Mark Goodwin - 5.1.1-1 +- Update to latest PCP sources. +- Rebuild to pick up changed HdrHistogram_c version (BZ 1831502) +- pmdakvm: handle kernel lockdown in integrity mode (BZ 1824297) + +* Fri Apr 24 2020 Mark Goodwin - 5.1.0-1 +- pmdakvm: debugfs access is restricted (BZ 1824297) +- Error starting pmlogger; pid file not owned by root (BZ 1761962) +- Update to latest PCP sources. + +* Wed Mar 11 2020 Mark Goodwin - 5.0.3-3 +- Resolve pcp-selinux issues causing services failures - (BZ 1810458) + +* Mon Mar 02 2020 Mark Goodwin - 5.0.3-2 +- Fix typo in Requires: perl-Time-HiRes affecting pcp-pmda-bind2 + +* Thu Feb 27 2020 Mark Goodwin - 5.0.3-1 +- Avoid python ctypes bitfield struct on-stack (BZ 1800685) +- Add dstat support for DM/MD/part devices (BZ 1794273) +- Fix compilation with gcc version 10 (BZ 1793495) +- Fix dstat sub-sample averaging (BZ 1780039) +- Update to latest PCP sources. + +* Wed Dec 11 2019 Nathan Scott - 5.0.2-1 +- Resolve fresh install pmlogger timeout bug (BZ 1721223) +- Fix dstat exception writing to a closed fd (BZ 1768619) +- Fix chan lib dependency of pcp-pmda-statsd (BZ 1770815) +- Update to latest PCP sources. + +* Mon Nov 04 2019 Nathan Scott - 5.0.1-1 +- Resolve selinux policy issues in PCP tools (BZ 1743040) +- Update to latest PCP sources. + +* Sun Oct 20 2019 Mark Goodwin - 5.0.0-2 +- Various spec fixes for pmdastatsd +- Add patch1 to fix pmdastatsd build on rawhide + +* Fri Oct 11 2019 Mark Goodwin - 5.0.0-1 +- Update to latest PCP sources. + +* Fri Aug 16 2019 Nathan Scott - 4.3.4-1 +- Resolve bootup issues with pmlogger service (BZ 1737091, BZ 1721223) +- Resolve selinux policy issues in PCP tools (BZ 1721644, BZ 1711547) +- Update to latest PCP sources. + +* Fri Jul 26 2019 Fedora Release Engineering - 4.3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Jun 28 2019 Mark Goodwin - 4.3.3-1 +- Resolve segv running pmchart with bogus timezone (BZ 1718948) +- Resolve pmrep wait.formula for collectl-dm-sD and collectl-sD (BZ 1724288) +- Update to latest PCP sources. + +* Mon Jun 10 22:13:21 CET 2019 Igor Gnatenko - 4.3.2-4 +- Rebuild for RPM 4.15 + +* Mon Jun 10 15:42:04 CET 2019 Igor Gnatenko - 4.3.2-3 +- Rebuild for RPM 4.15 + +* Fri May 31 2019 Jitka Plesnikova - 4.3.2-2 +- Perl 5.30 rebuild + +* Fri Apr 26 2019 Mark Goodwin - 4.3.2-1 +- Resolve selinux policy issues for pmie daemon mode (BZ 1702589) +- Resolve selinux policy issues for BPF permissions (BZ 1693332) +- Further improvements to daily archive processing (BZ 1647390) +- Update to latest PCP sources. + +* Wed Feb 27 2019 Mark Goodwin - 4.3.1-1 +- Fixes pcp-dstat in --full (all instances) mode (BZ 1661912) +- Remove package dependencies on initscripts (BZ 1592380) +- Set include directory for cppcheck use (BZ 1663372) +- Update to latest PCP sources. + +* Fri Dec 21 2018 Nathan Scott - 4.3.0-1 +- Add the dstat -f/--full option to expand instances (BZ 1651536) +- Improve systemd interaction for local pmie (BZ 1650999) +- SELinux is preventing ps from 'search' accesses on the directory + .config (BZ 1569697) +- SELinux is preventing pmdalinux from 'search' accesses on + the directory /var/lib/libvirt/images (BZ 1579988) +- SELinux is preventing pmdalinux from 'unix_read' accesses + on the semáforo Unknown (BZ 1607658) +- SELinux is preventing pmdalinux from 'unix_read' accesses + on the shared memory Unknown (BZ 1618756, BZ 1619381, BZ 1601721) +- Update to latest PCP sources. + +* Fri Nov 16 2018 Mark Goodwin - 4.2.0-1 +- Resolves dstat packaging issues (BZ 1640912) +- Resolves dstat cursor positioning problem (BZ 1640913) +- Resolve a signal handling issue in dstat shutdown (BZ 1648552) +- Rename variable named await in python code (BZ 1633367) +- New conditionally-built pcp-pmda-podman sub-package. +- SELinux is preventing pmdalinux from 'unix_read' accesses on the shared memory labeled gpsd_t + (BZ 1626487) +- SELinux is preventing ps from 'search' accesses on the directory .cache + (BZ 1634205, BZ 1635522) +- SELinux is preventing ps from 'sys_ptrace' accesses on the cap_userns Unknown + (BZ 1635394) +- PCP SELinux AVCs (BZ 1633211) +- SELinux is preventing pmdalinux from 'search' accesses on the directory spider + (BZ 1647843) +- Update to latest PCP sources. + +* Fri Sep 21 2018 Nathan Scott - 4.1.3-1 +- Update to latest PCP sources. + +* Wed Aug 29 2018 Nathan Scott - 4.1.1-3 +- Updated versions of Vector (1.3.1) and Blinkenlights (1.0.1) webapps + +* Fri Aug 03 2018 Dave Brolley - 4.1.1-2 +- pcp.spec: Fix the _with_dstat reference in the %%configure command + +* Fri Aug 03 2018 Dave Brolley - 4.1.1-1 +- SELinux is preventing pmdalinux from 'unix_read' accesses on the shared memory Unknown + (BZ 1592901) +- SELinux is preventing pmdalinux from getattr, associate access on the shared memory Unknown + (BZ 1594991) +- PCP BCC PMDA AVCs (BZ 1597978) +- PCP BCC PMDA packaging issue (BZ 1597979) +- pmdaproc only reads the first 1024 bytes of the /proc/*/status file resulting in lost metric + values(BZ 1600262) +- Update to latest PCP sources. + +* Fri Jul 13 2018 Fedora Release Engineering - 4.1.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jul 03 2018 Petr Pisar - 4.1.0-6 +- Perl 5.28 rebuild + +* Fri Jun 29 2018 Miro Hrončok - 4.1.0-5 +- Rebuilt for Python 3.7 + +* Thu Jun 28 2018 Jitka Plesnikova - 4.1.0-4 +- Perl 5.28 rebuild + +* Tue Jun 19 2018 Miro Hrončok - 4.1.0-3 +- Rebuilt for Python 3.7 + +* Fri Jun 15 2018 Nathan Scott - 4.1.0-2 +- Rapid compression of PCP log data and metadata (BZ 1293471) +- Added Perl package build dependencies. +- Update to latest PCP sources. + +* Fri May 11 2018 Mark Goodwin - 4.0.2-1 +- Propogate build flags throughout PCP (BZ 1538187) +- Further additions to selinux policy (BZ 1565158) +- Update to Vector v1.2.2 in pcp-webapp-vector. +- Update to latest PCP sources. + +* Thu Mar 29 2018 Mark Goodwin - 4.0.1-1 +- Fix selinux policy to allow pmdagluster to work (BZ 1558708) +- pmcd binding only to localhost:44321 by default (BZ 1529915) +- Update to latest PCP sources. + +* Thu Mar 01 2018 Iryna Shcherbina - 4.0.0-3 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Tue Feb 20 2018 Nathan Scott - 4.0.0-2 +- Disable pmdabcc on architectures without BCC/eBPF support. + +* 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). + +* Wed Jan 10 2018 Lukas Berk - 3.12.2-4 +- Remove Obsoletes line for pcp-gui-debuginfo +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Tue Nov 07 2017 Igor Gnatenko - 3.12.2-2 +- Remove old crufty coreutils requires + +* Wed Oct 18 2017 Lukas Berk - 3.12.2-1 +- selinux: add pmlogger_exec_t rule from (BZ 1483320) +- selinux: pmlc accessing tcp port 4330 (BZ 1447585) +- selinux: pmnewlog.sh using ps to check pid's for pmloggers (BZ 1488116) +- Update to latest PCP sources. + +* Mon Aug 28 2017 Nathan Scott - 3.12.1-3 +- Disable infiniband and papi packages on armv7hl (BZ 1485692) + +* Fri Aug 25 2017 Lukas Berk - 3.12.1-2 +- Rebuild for infiniband dep breakage. + +* Wed Aug 16 2017 Nathan Scott - 3.12.1-1 +- Update to latest PCP sources. + +* Thu Jul 13 2017 Petr Pisar - 3.12.0-2 +- perl dependency renamed to perl-interpreter + + +* Fri Jun 30 2017 Lukas Berk - 3.12.0-1 +- Fix pcp-atop failure in open-ended write mode (BZ 1431292) +- Resolve additional selinux policy issues (BZ 1317515) +- Improve poor pmlogconf performance (BZ1376857) +- Update to latest PCP sources. + +* Mon Jun 05 2017 Jitka Plesnikova - 3.11.10-3 +- Perl 5.26 rebuild + +* Fri Jun 2 2017 Lukas Berk - 3.11.10-2 +- Correct subrpm inclusion of zeroconf config files (BZ 1456262) + +* Wed May 17 2017 Dave Brolley - 3.11.10-1 +- python api: handle non-POSIXLY_CORRECT getopt cases (BZ 1289912) +- Fix pmchart reaction to timezone changes from pmtime (BZ 968823) +- Require Qt5 for Fedora. +- Update to latest PCP sources. + +* Fri Mar 31 2017 Nathan Scott - 3.11.9-1 +- Fix pmchart chart legends toggling behaviour (BZ 1359961) +- Improve multiple local context attr handling (BZ 1430248) +- Fix error during installation of pcp-selinux (BZ 1433271) +- Update to latest PCP sources. + +* Fri Feb 17 2017 Lukas Berk - 3.11.8-1 +- Support newer kernels /proc/vmstat file contents (BZ 1396148) +- Added pcp-selinux policy (BZs 1214090, 1381127, 1337968, 1398147) + +* Wed Dec 21 2016 Dave Brolley - 3.11.7-1 +- pmchart run-away mem leak replaying multi-archive when rewinding (BZ 1359975) + +* Fri Nov 11 2016 Mark Goodwin - 3.11.6-1 +- Optimize DSO lookups for local context mode startup (BZ 1275293) +- Correct return code for derive metric help text (BZ 1336208) +- Improve pmrep metrics collection via extend_indom (BZ 1377464) +- Fix network.interface.speed value extraction (BZ 1379431) + +* Mon Sep 26 2016 Mark Goodwin - 3.11.5-1 +- Allow systemd-based auto-restart of all daemons (BZ 1365658) +- Ensure pmieconf and pmlogconf handle empty files (BZ 1249123) +- Ignore rpmsave and rpmnew suffixed control files (BZ 1375415) +- Add new pcp-pmda-libvirt package for virtual machine metrics +- Update to latest PCP sources. + +* Fri Aug 05 2016 Nathan Scott - 3.11.4-1 +- Support inside-container metric values in python (BZ 1333702) +- Fix pmdaproc handling of commands with whitespace (BZ 1350816) +- Use persistent DM names for the filesystem metrics (BZ 1349932) +- Add to the ds389{,log} RPM package dependencies (BZ 1354055) +- Use "dirsrv" as default pmdads389log user account (BZ 1357607) +- Make pmie(1) honour SIGINT while parsing rules (BZ 1327226) +- Add pmlogconf support for pcp-pidstat and pcp-mpstat (BZ 1361943) +- Update to latest PCP sources. + +* Fri Jun 17 2016 Nathan Scott - 3.11.3-1 +- Fix memory leak in derived metrics error handling (BZ 1331973) +- Correctly propogate indom in mixed derived metrics (BZ 1337212, BZ 1336130) +- Disallow stopping pmie/pmlogger daemons from cron (BZ 1336792) +- Fail fast for easily detected bad pmcd configuration (BZ 1336210) +- Implement primary (local) pmie concept in rc pmie (BZ 1323851) +- Update to latest PCP sources. + +* Mon May 16 2016 Jitka Plesnikova - 3.11.2-2.1 +- Perl 5.24 rebuild + +* Fri Apr 29 2016 Lukas Berk - 3.11.2-1 +- Negative nice values reported incorrectly (BZ 1328432) +- Multithreaded clients with concurrent pmNewContext improvements (BZ 1325363) +- PMCD agent auto-restart (BZ 1323521) +- Segv in libpcp during discovery error processing (BZ 1319288) +- Update to latest PCP sources. + +* Fri Mar 18 2016 Dave Brolley - 3.11.1-1 +- Call Remove script when uninstalling individual PMDAs (BZ 1304722) +- Restrict pmcd.services to checking known pcp services (BZ 1286361) +- Support for multi-archive contexts, across all clients (BZ 1262723) +- Remove the default shotgun approach to stopping daemons (BZ 1210976) +- Add mechanism for automatic recovery from PMDA timeouts (BZ 1065803) +- Update to latest PCP sources. + +* Fri Jan 29 2016 Mark Goodwin - 3.11.0-1 +- Significant speedups to elapsed time stopping pmcd (BZ 1292027) +- Fix python derived metric exception handling issues (BZ 1299806) +- incorrect interpolation across record in a merged archive (BZ 1296750) +- pcp requires pcp-compat pulling in a lot of unneeded pcp-pmda-* packages (BZ 1293466) +- Update to latest PCP sources. + +* Wed Dec 16 2015 Lukas Berk - 3.10.9-1 +- Add -V/--version support to several more commands (BZ 1284411) +- Resolve a pcp-iostat(1) transient device exception (BZ 1249572) +- Provides pmdapipe, an output-capturing domain agent (BZ 1163413) +- Python PMAPI pmSetMode allows None timeval parameter (BZ 1284417) +- Python PMI pmiPutValue now supports singular metrics (BZ 1285371) +- Fix python PMAPI pmRegisterDerived wrapper interface (BZ 1286733) +- Fix pmstat SEGV when run with graphical time control (BZ 1287678) +- Make pmNonOptionsFromList error message less cryptic (BZ 1287778) +- Drop unimplemented pmdumptext options from usage, man page (BZ 1289909) +- Stop creating configuration files in tmp_t locations (BZ 1256125) +- Update to latest PCP sources. + +* Fri Oct 30 2015 Mark Goodwin - 3.10.8-1 +- Update pmlogger to log an immediate sample first (BZ 1269921) +- Add pmOption host and archive setter python APIs (BZ 1270176) +- Replace old pmatop(1) man page with pcp-atop(1) (BZ 1270761) +- Update to latest PCP sources. + +* Wed Sep 16 2015 Nathan Scott - 3.10.7-1 +- Resolved pmchart sigsegv opening view without context (BZ 1256708) +- Fixed pmchart memory corruption restoring Saved Hosts (BZ 1257009) +- Fix perl PMDA API double-free on socket error path (BZ 1258862) +- Fix python API pmGetOption(3) alignment interface (BZ 1262722) +- Added missing RPM dependencies to several PMDA sub-packages. +- Update to latest stable Vector release for pcp-vector-webapp. +- Update to latest PCP sources. + +* Sat Sep 05 2015 Kalev Lember - 3.10.6-2.1 +- Rebuilt for librpm soname bump + +* Thu Aug 06 2015 Lukas Berk - 3.10.6-2 +- Fix SDT related build error (BZ 1250894) + +* Tue Aug 04 2015 Nathan Scott - 3.10.6-1 +- Fix pcp2graphite write method invocation failure (BZ 1243123) +- Reduce diagnostics in pmdaproc unknown state case (BZ 1224431) +- Derived metrics via multiple files, directory expansion (BZ 1235556) +- Update to latest PCP sources. + +* Mon Jun 15 2015 Mark Goodwin - 3.10.5-1 +- Provide and use non-exit(1)ing pmGetConfig(3) variant (BZ 1187588) +- Resolve a pmdaproc.sh pmlogger restart regression (BZ 1229458) +- Replacement of pmatop/pcp-atop(1) utility (BZ 1160811, BZ 1018575) +- Reduced installation size for minimal applications (BZ 1182184) +- Ensure pmlogger start scripts wait on pmcd startup (BZ 1185760) +- Need to run pmcd at least once before pmval -L will work (BZ 185749) + +* Wed Apr 15 2015 Nathan Scott - 3.10.4-1 +- Update to latest PCP, pcp-webjs and Vector sources. +- Packaging improvements after re-review (BZ 1204467) +- Start pmlogger/pmie independent of persistent state (BZ 1185755) +- Fix cron error reports for disabled pmlogger service (BZ 1208699) +- Incorporate Vector from Netflix (https://github.com/Netflix/vector) +- Sub-packages for pcp-webjs allowing choice and reducing used space. + +* Wed Mar 04 2015 Dave Brolley - 3.10.3-2 +- papi 5.4.1 rebuild + +* Mon Mar 02 2015 Dave Brolley - 3.10.3-1 +- Update to latest PCP sources. +- New sub-package for pcp-import-ganglia2pcp. +- Python3 support, enabled by default in f22 onward (BZ 1194324) + +* Mon Feb 23 2015 Slavek Kabrda - 3.10.2-3 +- Only use Python 3 in Fedora >= 23, more info at + https://bugzilla.redhat.com/show_bug.cgi?id=1194324#c4 + +* Mon Feb 23 2015 Nathan Scott - 3.10.2-2 +- Initial changes to support python3 as default (BZ 1194324) + +* Fri Jan 23 2015 Dave Brolley - 3.10.2-1 +- Update to latest PCP sources. +- Improve pmdaInit diagnostics for DSO helptext (BZ 1182949) +- Tighten up PMDA termination on pmcd stop (BZ 1180109) +- Correct units for cgroup memory metrics (BZ 1180351) +- Add the pcp2graphite(1) export script (BZ 1163986) + +* Mon Dec 01 2014 Nathan Scott - 3.10.1-1 +- New conditionally-built pcp-pmda-perfevent sub-package. +- Update to latest PCP sources. + +* Tue Nov 18 2014 Dave Brolley - 3.10.0-2 +- papi 5.4.0 rebuild + +* Fri Oct 31 2014 Nathan Scott - 3.10.0-1 +- Create new sub-packages for pcp-webjs and python3-pcp. +- Fix __pmDiscoverServicesWithOptions(1) codes (BZ 1139529) +- Update to latest PCP sources. + +* Fri Sep 05 2014 Nathan Scott - 3.9.10-1 +- Convert PCP init scripts to systemd services (BZ 996438) +- Fix pmlogsummary -S/-T time window reporting (BZ 1132476) +- Resolve pmdumptext segfault with invalid host (BZ 1131779) +- Fix signedness in some service discovery codes (BZ 1136166) +- New conditionally-built pcp-pmda-papi sub-package. +- Update to latest PCP sources. + +* Tue Aug 26 2014 Jitka Plesnikova - 3.9.9-1.2 +- Perl 5.20 rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 3.9.9-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Aug 13 2014 Nathan Scott - 3.9.9-1 +- Update to latest PCP sources. + +* Wed Jul 16 2014 Mark Goodwin - 3.9.7-1 +- Update to latest PCP sources. + +* Wed Jun 18 2014 Dave Brolley - 3.9.5-1 +- Daemon signal handlers no longer use unsafe APIs (BZ 847343) +- Handle /var/run setups on a temporary filesystem (BZ 656659) +- Resolve pmlogcheck sigsegv for some archives (BZ 1077432) +- Ensure pcp-gui-{testsuite,debuginfo} packages get replaced. +- Revive support for EPEL5 builds, post pcp-gui merge. +- Update to latest PCP sources. + +* Fri Jun 06 2014 Fedora Release Engineering - 3.9.4-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu May 15 2014 Nathan Scott - 3.9.4-1 +- Merged pcp-gui and pcp-doc packages into core PCP. +- Allow for conditional libmicrohttpd builds in spec file. +- Adopt slow-start capability in systemd PMDA (BZ 1073658) +- Resolve pmcollectl network/disk mis-reporting (BZ 1097095) +- Update to latest PCP sources. + +* Tue Apr 15 2014 Dave Brolley - 3.9.2-1 +- Improve pmdarpm(1) concurrency complications (BZ 1044297) +- Fix pmconfig(1) shell output string quoting (BZ 1085401) +- Update to latest PCP sources. + +* Wed Mar 19 2014 Nathan Scott - 3.9.1-1 +- Update to latest PCP sources. + +* Thu Feb 20 2014 Nathan Scott - 3.9.0-2 +- Workaround further PowerPC/tapset-related build fallout. + +* 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. + +* Wed Jan 15 2014 Nathan Scott - 3.8.10-1 +- Update to latest PCP sources. + +* Thu Dec 12 2013 Nathan Scott - 3.8.9-1 +- Reduce set of exported symbols from DSO PMDAs (BZ 1025694) +- Symbol-versioning for PCP shared libraries (BZ 1037771) +- Fix pmcd/Avahi interaction with multiple ports (BZ 1035513) +- Update to latest PCP sources. + +* Sun Nov 03 2013 Nathan Scott - 3.8.8-1 +- Update to latest PCP sources (simple build fixes only). + +* Fri Nov 01 2013 Nathan Scott - 3.8.6-1 +- Update to latest PCP sources. +- Rework pmpost test which confused virus checkers (BZ 1024850) +- Tackle pmatop reporting issues via alternate metrics (BZ 998735) + +* Fri Oct 18 2013 Nathan Scott - 3.8.5-1 +- Update to latest PCP sources. +- Disable pcp-pmda-infiniband sub-package on RHEL5 (BZ 1016368) + +* Mon Sep 16 2013 Nathan Scott - 3.8.4-2 +- Disable the pcp-pmda-infiniband sub-package on s390 platforms. + +* Sun Sep 15 2013 Nathan Scott - 3.8.4-1 +- Very minor release containing mostly QA related changes. +- Enables many more metrics to be logged for Linux hosts. + +* Wed Sep 11 2013 Stan Cox - 3.8.3-2 +- Disable pmcd.stp on el5 ppc. + +* Mon Sep 09 2013 Nathan Scott - 3.8.3-1 +- Default to Unix domain socket (authenticated) local connections. +- Introduces new pcp-pmda-infiniband sub-package. +- Disable systemtap-sdt-devel usage on ppc. + +* Sat Aug 03 2013 Petr Pisar - 3.8.2-1.1 +- Perl 5.18 rebuild + +* Wed Jul 31 2013 Nathan Scott - 3.8.2-1 +- Update to latest PCP sources. +- Integrate gluster related stats with PCP (BZ 969348) +- Fix for iostat2pcp not parsing iostat output (BZ 981545) +- Start pmlogger with usable config by default (BZ 953759) +- Fix pmatop failing to start, gives stacktrace (BZ 963085) + +* Wed Jun 19 2013 Nathan Scott - 3.8.1-1 +- Update to latest PCP sources. +- Fix log import silently dropping >1024 metrics (BZ 968210) +- Move some commonly used tools on the usual PATH (BZ 967709) +- Improve pmatop handling of missing proc metrics (BZ 963085) +- Stop out-of-order records corrupting import logs (BZ 958745) + +* Tue May 14 2013 Nathan Scott - 3.8.0-1 +- Update to latest PCP sources. +- Validate metric names passed into pmiAddMetric (BZ 958019) +- Install log directories with correct ownership (BZ 960858) + +* Fri Apr 19 2013 Nathan Scott - 3.7.2-1 +- Update to latest PCP sources. +- Ensure root namespace exists at the end of install (BZ 952977) + +* Wed Mar 20 2013 Nathan Scott - 3.7.1-1 +- Update to latest PCP sources. +- Migrate all tempfiles correctly to the new tempdir hierarchy. + +* Sun Mar 10 2013 Nathan Scott - 3.7.0-1 +- Update to latest PCP sources. +- Migrate all configuration files below the /etc/pcp hierarchy. + +* Thu Feb 14 2013 Fedora Release Engineering - 3.6.10-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Nov 28 2012 Nathan Scott - 3.6.10-2 +- Ensure tmpfile directories created in %%files section. +- Resolve tmpfile create/teardown race conditions. + +* Mon Nov 19 2012 Nathan Scott - 3.6.10-1 +- Update to latest PCP sources. +- Resolve tmpfile security flaws: CVE-2012-5530 +- Introduces new "pcp" user account for all daemons to use. + +* Fri Oct 12 2012 Nathan Scott - 3.6.9-1 +- Update to latest PCP sources. +- Fix pmcd sigsegv in NUMA/CPU indom setup (BZ 858384) +- Fix sar2pcp uninitialised perl variable warning (BZ 859117) +- Fix pcp.py and pmcollectl with older python versions (BZ 852234) + +* Fri Sep 14 2012 Nathan Scott - 3.6.8-1 +- Update to latest PCP sources. + +* Wed Sep 05 2012 Nathan Scott - 3.6.6-1.1 +- Move configure step from prep to build section of spec (BZ 854128) + +* Tue Aug 28 2012 Mark Goodwin - 3.6.6-1 +- Update to latest PCP sources, see installed CHANGELOG for details. +- Introduces new python-pcp and pcp-testsuite sub-packages. + +* Thu Aug 16 2012 Mark Goodwin - 3.6.5-1 +- Update to latest PCP sources, see installed CHANGELOG for details. +- Fix security flaws: CVE-2012-3418 CVE-2012-3419 CVE-2012-3420 and CVE-2012-3421 (BZ 848629) + +* Thu Jul 19 2012 Mark Goodwin +- pmcd and pmlogger services are not supposed to be enabled by default (BZ 840763) - 3.6.3-1.3 + +* Thu Jun 21 2012 Mark Goodwin +- remove pcp-import-sheet2pcp subpackage due to missing deps (BZ 830923) - 3.6.3-1.2 + +* Fri May 18 2012 Dan Hork - 3.6.3-1.1 +- fix build on s390x + +* Mon Apr 30 2012 Mark Goodwin - 3.6.3-1 +- Update to latest PCP sources + +* Thu Apr 26 2012 Mark Goodwin - 3.6.2-1 +- Update to latest PCP sources + +* Thu Apr 12 2012 Mark Goodwin - 3.6.1-1 +- Update to latest PCP sources + +* Thu Mar 22 2012 Mark Goodwin - 3.6.0-1 +- use %%configure macro for correct libdir logic +- update to latest PCP sources + +* Thu Dec 15 2011 Mark Goodwin - 3.5.11-2 +- patched configure.in for libdir=/usr/lib64 on ppc64 + +* Thu Dec 01 2011 Mark Goodwin - 3.5.11-1 +- Update to latest PCP sources. + +* Fri Nov 04 2011 Mark Goodwin - 3.5.10-1 +- Update to latest PCP sources. + +* Mon Oct 24 2011 Mark Goodwin - 3.5.9-1 +- Update to latest PCP sources. + +* Mon Aug 08 2011 Mark Goodwin - 3.5.8-1 +- Update to latest PCP sources. + +* Fri Aug 05 2011 Mark Goodwin - 3.5.7-1 +- Update to latest PCP sources. + +* Fri Jul 22 2011 Mark Goodwin - 3.5.6-1 +- Update to latest PCP sources. + +* Tue Jul 19 2011 Mark Goodwin - 3.5.5-1 +- Update to latest PCP sources. + +* Thu Feb 03 2011 Mark Goodwin - 3.5.0-1 +- Update to latest PCP sources. + +* Thu Sep 30 2010 Mark Goodwin - 3.4.0-1 +- Update to latest PCP sources. + +* Fri Jul 16 2010 Mark Goodwin - 3.3.3-1 +- Update to latest PCP sources. + +* Sat Jul 10 2010 Mark Goodwin - 3.3.2-1 +- Update to latest PCP sources. + +* Tue Jun 29 2010 Mark Goodwin - 3.3.1-1 +- Update to latest PCP sources. + +* Fri Jun 25 2010 Mark Goodwin - 3.3.0-1 +- Update to latest PCP sources. + +* Thu Mar 18 2010 Mark Goodwin - 3.1.2-1 +- Update to latest PCP sources. + +* Wed Jan 27 2010 Mark Goodwin - 3.1.0-1 +- BuildRequires: initscripts for %%{_vendor} == redhat. + +* Thu Dec 10 2009 Mark Goodwin - 3.0.3-1 +- BuildRequires: initscripts for FC12. + +* Wed Dec 02 2009 Mark Goodwin - 3.0.2-1 +- Added sysfs.kernel metrics, rebased to minor community release. + +* Mon Oct 19 2009 Martin Hicks - 3.0.1-2 +- Remove IB dependencies. The Infiniband PMDA is being moved to + a stand-alone package. +- Move cluster PMDA to a stand-alone package. + +* Fri Oct 09 2009 Mark Goodwin - 3.0.0-9 +- This is the initial import for Fedora +- See 3.0.0 details in CHANGELOG