From 7c1dc1a31f46925d7b57ae85fb5a69be605f0878 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Apr 10 2018 05:42:20 +0000 Subject: import pcp-3.12.2-5.el7 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0879f46 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +SOURCES/pcp-3.12.2.src.tar.gz +SOURCES/pcp-webapp-blinkenlights-1.0.0.tar.gz +SOURCES/pcp-webapp-grafana-1.9.1-2.tar.gz +SOURCES/pcp-webapp-graphite-0.9.10.tar.gz +SOURCES/pcp-webapp-vector-1.1.2.tar.gz diff --git a/.pcp.metadata b/.pcp.metadata new file mode 100644 index 0000000..889a361 --- /dev/null +++ b/.pcp.metadata @@ -0,0 +1,5 @@ +9d9ad460d7e521106195d039cf7c0c4113617330 SOURCES/pcp-3.12.2.src.tar.gz +7241116259edb86888e8db16d6b0717279523a22 SOURCES/pcp-webapp-blinkenlights-1.0.0.tar.gz +9fbce28ae069f9d1fb1408093a1d4303c5d60322 SOURCES/pcp-webapp-grafana-1.9.1-2.tar.gz +05f083a4cddff47cf25ce50a27c20aaccad0dbcb SOURCES/pcp-webapp-graphite-0.9.10.tar.gz +efb0b9994ef963af291e21aad8d0d46a3aee2cfc SOURCES/pcp-webapp-vector-1.1.2.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/logmeta.patch b/SOURCES/logmeta.patch new file mode 100644 index 0000000..c2c96b8 --- /dev/null +++ b/SOURCES/logmeta.patch @@ -0,0 +1,82 @@ +diff -Naurp pcp-3.12.2.orig/src/pmlogextract/pmlogextract.c pcp-3.12.2/src/pmlogextract/pmlogextract.c +--- pcp-3.12.2.orig/src/pmlogextract/pmlogextract.c 2017-10-03 07:46:36.000000000 +1100 ++++ pcp-3.12.2/src/pmlogextract/pmlogextract.c 2017-11-29 14:07:06.674837371 +1100 +@@ -1108,6 +1108,7 @@ nextmeta(void) + { + int i; + int j; ++ int type; + int want; + int numeof = 0; + int sts; +@@ -1158,10 +1159,12 @@ againmeta: + continue; + } + ++ type = ntohl(iap->pb[META][1]); ++ + /* pmDesc entries, if not seen before & wanted, + * then append to desc list + */ +- if (ntohl(iap->pb[META][1]) == TYPE_DESC) { ++ if (type == TYPE_DESC) { + pmid = ntoh_pmID(iap->pb[META][2]); + + /* if ml is defined, then look for pmid in the list +@@ -1194,7 +1197,7 @@ againmeta: + goto againmeta; + } + } +- else if (ntohl(iap->pb[META][1]) == TYPE_INDOM) { ++ else if (type == TYPE_INDOM) { + /* if ml is defined, then look for instance domain in the list + * if indom is not in the list then discard it immediately + */ +@@ -1227,15 +1230,25 @@ againmeta: + goto againmeta; + } + } +- else if (ntohl(iap->pb[META][1]) == 3 /*TYPE_LABEL*/) { +- /* discard this optional metadata, not supported */ ++ else if (type == 3 /*TYPE_LABEL*/) { ++ if (pmDebugOptions.logmeta) ++ fprintf(stderr, "%s: Warning: %s\n", ++ pmProgname, pmErrStr(PM_ERR_NYI)); ++ free(iap->pb[META]); ++ iap->pb[META] = NULL; ++ goto againmeta; ++ } ++ else if (type == 4 /*TYPE_TEXT*/) { ++ if (pmDebugOptions.logmeta) ++ fprintf(stderr, "%s: Warning: %s\n", ++ pmProgname, pmErrStr(PM_ERR_NYI)); + free(iap->pb[META]); + iap->pb[META] = NULL; + goto againmeta; + } + else { + fprintf(stderr, "%s: Error: unrecognised meta data type: %d\n", +- pmProgname, (int)ntohl(iap->pb[META][1])); ++ pmProgname, type); + abandon_extract(); + } + +diff -Naurp pcp-3.12.2.orig/src/pmlogrewrite/pmlogrewrite.c pcp-3.12.2/src/pmlogrewrite/pmlogrewrite.c +--- pcp-3.12.2.orig/src/pmlogrewrite/pmlogrewrite.c 2017-10-03 07:46:36.000000000 +1100 ++++ pcp-3.12.2/src/pmlogrewrite/pmlogrewrite.c 2017-11-29 14:06:25.421841627 +1100 +@@ -1220,7 +1220,14 @@ main(int argc, char **argv) + do_indom(); + } + else if (stsmeta == 3 /*TYPE_LABEL*/) { +- ; /* silently ignore optional metadata */ ++ if (pmDebugOptions.logmeta) ++ fprintf(stderr, "%s: Warning: %s\n", ++ pmProgname, pmErrStr(PM_ERR_NYI)); ++ } ++ else if (stsmeta == 4 /*TYPE_TEXT*/) { ++ if (pmDebugOptions.logmeta) ++ fprintf(stderr, "%s: Warning: %s\n", ++ pmProgname, pmErrStr(PM_ERR_NYI)); + } + else { + fprintf(stderr, "%s: Error: unrecognised meta data type: %d\n", diff --git a/SOURCES/rhbz1488116.patch b/SOURCES/rhbz1488116.patch new file mode 100644 index 0000000..bb69891 --- /dev/null +++ b/SOURCES/rhbz1488116.patch @@ -0,0 +1,218 @@ +commit c79e4b8a8a365e0f7d2455f8f4e3288e07ce9bed +Author: Lukas Berk +Date: Mon Jan 15 16:24:29 2018 -0500 + + build: selinux, update policy package on upgrade + + Don't just install new policy package on a fresh install, we need to + make sure it's up to date on an upgrade as well. Also, version match + the policy package to ensure changes on specific releases are visible + via diagnostic tools like semodule. + +diff --git a/src/selinux/GNUmakefile b/src/selinux/GNUmakefile +index 6635c8e7b..6c993ee4c 100644 +--- a/src/selinux/GNUmakefile ++++ b/src/selinux/GNUmakefile +@@ -61,6 +61,7 @@ $(IAM).te: $(IAM).te.in + -e 's;@PCP_SOCK_FILE_GETATTR@;'$(PCP_SOCK_FILE_GETATTR)';' \ + -e 's;@PCP_SOCK_FILE_GETATTR_RULE@;'$(PCP_SOCK_FILE_GETATTR_RULE)';' \ + -e 's;@PCP_HOSTNAME_EXEC_MAP@;'$(PCP_HOSTNAME_EXEC_MAP)';' \ ++ -e 's;@PACKAGE_VERSION@;'$(PACKAGE_VERSION)';' \ + + # END + make -f /usr/share/selinux/devel/Makefile +diff --git a/src/selinux/pcpupstream.te.in b/src/selinux/pcpupstream.te.in +index e6a504c8a..56376ac4e 100644 +--- a/src/selinux/pcpupstream.te.in ++++ b/src/selinux/pcpupstream.te.in +@@ -1,4 +1,4 @@ +-module pcpupstream 1.0; ++module pcpupstream @PACKAGE_VERSION@; + + require { + type pcp_pmcd_t; + +commit 50d0d55ffe2c9af2a73bb55a8bf826c68b97ce1e +Author: Lukas Berk +Date: Thu Jan 25 21:22:57 2018 -0500 + + selinux: rhbz1488116, rhbz1533080 rules, update qa + +diff --git a/qa/917 b/qa/917 +index 9fc3a993e..3afa39b8c 100755 +--- a/qa/917 ++++ b/qa/917 +@@ -37,6 +37,7 @@ class_status=`seinfo -x --class=system | grep "status$"` + sock_file_getattr=`seinfo -x --class=sock_file | grep "getattr$"` + hostname_exec_map_a=`seinfo -x --class=file | grep "map$"` + hostname_exec_map_b=`seinfo -x --common=file 2>/dev/null | grep "map$"` ++container_runtime_tmpfs_t=`seinfo -t | grep "container_runtime_tmpfs_t$"` + + _filter_semodule() + { +@@ -54,6 +55,7 @@ _filter_sedismod1() + _filter_outfile() + { + awk -v container_t="$container_runtime_t" \ ++ -v container_tmpfs_t="$container_runtime_tmpfs_t" \ + -v nsfs_t="$nsfs_t" \ + -v docker_var_lib_t="$docker_var_lib_t" \ + -v svirt_lxc_net_t="$svirt_lxc_net_t" \ +@@ -70,8 +72,10 @@ _filter_outfile() + -v hostname_exec_map_a="$hostname_exec_map_a" \ + -v hostname_exec_map_b="$hostname_exec_map_b" \ + '{ +- if (container_t == "" && /container_runtime_t/) +- !/container_runtime_t/ ; ++ if (container_t == "" && /container_runtime_t /) ++ !/container_runtime_t / ; ++ else if (container_tmpfs_t == "" && /container_runtime_tmpfs_t/) ++ !/container_runtime_tmpfs_t/ ; + else if (nsfs_t == "" && /nsfs_t/) + !/nsfs_t/ ; + else if (docker_var_lib_t == "" && /docker_var_lib_t/) +diff --git a/qa/917.out.in b/qa/917.out.in +index edd247e25..0c2472d64 100644 +--- a/qa/917.out.in ++++ b/qa/917.out.in +@@ -48,6 +48,12 @@ decl 1: + allow [pcp_pmcd_t] [nfsd_fs_t] : [file] { getattr open read }; + allow [pcp_pmcd_t] [gpmctl_t] : [sock_file] { getattr }; + allow [pcp_pmcd_t] [postfix_spool_t] : [dir] { read }; ++ allow [pcp_pmcd_t] [container_runtime_tmpfs_t] : [dir] { getattr }; ++ allow [pcp_pmcd_t] [unconfined_service_t] : [sem] { associate getattr }; ++ allow [pcp_pmcd_t] [mock_var_lib_t] : [dir] { getattr }; ++ allow [pcp_pmcd_t] [ldconfig_exec_t] : [file] { map }; ++ allow [pcp_pmcd_t] [httpd_t] : [shm] { unix_read associate getattr }; ++ allow [pcp_pmcd_t] [httpd_t] : [sem] { unix_read associate getattr }; + allow [pcp_pmlogger_t] [kmsg_device_t] : [chr_file] { open write }; + allow [pcp_pmlogger_t] self : [capability] { kill }; + allow [pcp_pmlogger_t] [init_t] : [system] { status }; +@@ -68,6 +74,8 @@ decl 1: + allow [pcp_pmie_t] [unconfined_t] : [unix_stream_socket] { connectto }; + allow [pcp_pmie_t] [pcp_pmie_exec_t] : [file] { execute_no_trans }; + allow [pcp_pmie_t] [proc_net_t] : [file] { read }; ++ allow [pcp_pmie_t] [kmsg_device_t] : [chr_file] { open }; ++ allow [pcp_pmie_t] [pcp_pmcd_t] : [process] { signal }; + allow [pcp_pmcd_t] [configfs_t] : [dir] { open read search }; + allow [pcp_pmcd_t] [configfs_t] : [file] { getattr open read }; + allow [pcp_pmcd_t] [configfs_t] : [lnk_file] { read getattr }; +diff --git a/src/selinux/GNUlocaldefs b/src/selinux/GNUlocaldefs +index 65c296611..7d36cb6a2 100644 +--- a/src/selinux/GNUlocaldefs ++++ b/src/selinux/GNUlocaldefs +@@ -66,4 +66,5 @@ endif + + ifeq "$(PCP_SELINUX_HOSTNAME_EXEC_MAP)" "true" + PCP_HOSTNAME_EXEC_MAP=" map " ++PCP_LDCONFIG_EXEC_MAP_RULE="allow pcp_pmcd_t ldconfig_exec_t:file map\;" + endif +\ No newline at end of file +diff --git a/src/selinux/GNUmakefile b/src/selinux/GNUmakefile +index 6c993ee4c..343178d38 100644 +--- a/src/selinux/GNUmakefile ++++ b/src/selinux/GNUmakefile +@@ -61,6 +61,7 @@ $(IAM).te: $(IAM).te.in + -e 's;@PCP_SOCK_FILE_GETATTR@;'$(PCP_SOCK_FILE_GETATTR)';' \ + -e 's;@PCP_SOCK_FILE_GETATTR_RULE@;'$(PCP_SOCK_FILE_GETATTR_RULE)';' \ + -e 's;@PCP_HOSTNAME_EXEC_MAP@;'$(PCP_HOSTNAME_EXEC_MAP)';' \ ++ -e 's;@PCP_LDCONFIG_EXEC_MAP_RULE@;'$(PCP_LDCONFIG_EXEC_MAP_RULE)';' \ + -e 's;@PACKAGE_VERSION@;'$(PACKAGE_VERSION)';' \ + + # END +diff --git a/src/selinux/pcpupstream.te.in b/src/selinux/pcpupstream.te.in +index 56376ac4e..fb14fec96 100644 +--- a/src/selinux/pcpupstream.te.in ++++ b/src/selinux/pcpupstream.te.in +@@ -49,6 +49,12 @@ require { + type gpmctl_t; #RHBZ1517656 + type proc_net_t; #RHBZ1517656 + type postfix_spool_t; #RHBZ1517862 ++ type container_runtime_tmpfs_t; ++ type unconfined_service_t; ++ type mock_var_lib_t; ++ type ldconfig_exec_t; ++ type httpd_t; ++ class sem { unix_read associate getattr }; + class lnk_file { read getattr }; + class file { append create execute execute_no_trans getattr ioctl lock open read write @PCP_HOSTNAME_EXEC_MAP@ }; + class dir { add_name open read search write getattr }; +@@ -112,7 +118,6 @@ allow pcp_pmcd_t proc_kcore_t:file getattr; + #type=AVC msg=audit(1491581538.587:10952): avc: denied { sys_ptrace } for pid=9375 comm="pmdaproc" capability=19 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=cap_userns permissive=1 + @PCP_CAPUSERNS_PTRACE_RULE@ + +- + #type=AVC msg=audit(1485899863.032:3024): avc: denied { sys_chroot } for pid=25873 comm="pmdalinux" capability=18 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=capability + allow pcp_pmcd_t self:capability sys_chroot; + +@@ -182,6 +187,21 @@ allow pcp_pmcd_t nfsd_fs_t:file { getattr open read }; + + #RHBZ1517862 + allow pcp_pmcd_t postfix_spool_t:dir read; ++ ++allow pcp_pmcd_t container_runtime_tmpfs_t:dir getattr; ++ ++allow pcp_pmcd_t unconfined_service_t:sem { associate getattr }; ++ ++#type=AVC msg=audit(...): avc: denied { getattr } for pid=NNN comm="pmdalinux" path="/var/lib/mock" dev="dm-1" ino=917749 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:mock_var_lib_t:s0 tclass=dir permissive=1 ++allow pcp_pmcd_t mock_var_lib_t:dir getattr; ++ ++#type=AVC msg=audit(...): avc: denied { map } for pid=NNN comm="ldconfig" path="/usr/sbin/ldconfig" dev="dm-1" ino=1052382 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:ldconfig_exec_t:s0 tclass=file permissive=1 ++@PCP_LDCONFIG_EXEC_MAP_RULE@ ++ ++#RHBZ1488116 ++allow pcp_pmcd_t httpd_t:shm { unix_read associate getattr }; ++allow pcp_pmcd_t httpd_t:sem { unix_read associate getattr }; ++ + #============= pcp_pmlogger_t ============== + allow pcp_pmlogger_t kmsg_device_t:chr_file { open write }; + allow pcp_pmlogger_t self:capability kill; +@@ -250,6 +270,11 @@ allow pcp_pmie_t pcp_pmie_exec_t:file execute_no_trans; + #RHBZ1517656 + allow pcp_pmie_t proc_net_t:file read; + ++#type=AVC msg=audit(...): avc: denied { open } for pid=NNN comm="runlevel" path="/dev/kmsg" dev="devtmpfs" ino=1043 scontext=system_u:system_r:pcp_pmie_t:s0 tcontext=system_u:object_r:kmsg_device_t:s0 tclass=chr_file permissive=1 ++allow pcp_pmie_t kmsg_device_t:chr_file open; ++ ++#RHBZ1533080 ++allow pcp_pmie_t pcp_pmcd_t:process signal; + #============= pmda-lio ============== + allow pcp_pmcd_t configfs_t:dir { open read search }; + allow pcp_pmcd_t configfs_t:file { getattr open read }; + +commit 7ab2c18f36f96e73a93892bcabc2a53797aaeb54 +Author: Lukas Berk +Date: Fri Dec 8 10:42:59 2017 -0500 + + selinux: RHBZ1460131 add gettatr, open to pcp_var_lib_t:fifo_file + + adjust qa output + +diff --git a/qa/917.out.in b/qa/917.out.in +index 86805d11a..edd247e25 100644 +--- a/qa/917.out.in ++++ b/qa/917.out.in +@@ -19,7 +19,7 @@ decl 1: + allow [pcp_pmcd_t] [debugfs_t] : [dir] { read }; + allow [pcp_pmcd_t] [debugfs_t] : [file] { getattr ioctl open read }; + allow [pcp_pmcd_t] [pcp_pmie_exec_t] : [file] { execute execute_no_trans open read }; +- allow [pcp_pmcd_t] [pcp_var_lib_t] : [fifo_file] { read unlink }; ++ allow [pcp_pmcd_t] [pcp_var_lib_t] : [fifo_file] { getattr read open unlink }; + allow [pcp_pmcd_t] self : [capability] { sys_ptrace net_admin chown ipc_owner }; + allow [pcp_pmcd_t] [initctl_t] : [fifo_file] { getattr }; + allow [pcp_pmcd_t] [proc_kcore_t] : [file] { getattr }; +diff --git a/src/selinux/pcpupstream.te.in b/src/selinux/pcpupstream.te.in +index 236a0ecf1..e6a504c8a 100644 +--- a/src/selinux/pcpupstream.te.in ++++ b/src/selinux/pcpupstream.te.in +@@ -97,8 +97,7 @@ allow pcp_pmcd_t user_home_t:file { execute execute_no_trans open read }; + allow pcp_pmcd_t debugfs_t:dir read; + allow pcp_pmcd_t debugfs_t:file { getattr ioctl open read }; + allow pcp_pmcd_t pcp_pmie_exec_t:file { execute execute_no_trans open read }; +-allow pcp_pmcd_t pcp_var_lib_t:fifo_file { read unlink }; #RHBZ1460131 +- ++allow pcp_pmcd_t pcp_var_lib_t:fifo_file { getattr open read unlink }; #RHBZ1460131 + #type=AVC msg=audit(1463754714.313:316): avc: denied { net_admin } for pid=2335 comm="pmcd" capability=12 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=capability permissive=1 + #type=AVC msg=audit(1491576442.619:1738169): avc: denied { sys_ptrace } for pid=15205 comm="pmdaproc" capability=19 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=capability permissive=0 + #type=AVC msg=audit(1498833776.957:2094): avc: denied { ipc_owner } for pid=21341 comm="pmdalinux" capability=15 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=capability permissive=0 + diff --git a/SOURCES/rhbz1513503.patch b/SOURCES/rhbz1513503.patch new file mode 100644 index 0000000..48e984c --- /dev/null +++ b/SOURCES/rhbz1513503.patch @@ -0,0 +1,95 @@ +commit dac8621e4d9b70cf5891ba00307dc1c4fdf9013a +Author: Nathan Scott +Date: Wed Oct 25 11:32:46 2017 +1100 + + build: multilib strikes again - updates since autoreconf work + +diff --git a/src/include/pcp/config.h.in b/src/include/pcp/config.h.in +index f9376b8b3..72b4e825e 100644 +--- a/src/include/pcp/config.h.in ++++ b/src/include/pcp/config.h.in +@@ -3,18 +3,6 @@ + /* Define to 1 if `TIOCGWINSZ' requires . */ + #undef GWINSZ_IN_SYS_IOCTL + +-/* sizeof long */ +-#undef HAVE_32BIT_LONG +- +-/* pointer size */ +-#undef HAVE_32BIT_PTR +- +-/* sizeof long */ +-#undef HAVE_64BIT_LONG +- +-/* pointer size */ +-#undef HAVE_64BIT_PTR +- + /* AI_ADDRCONFIG macro */ + #undef HAVE_AI_ADDRCONFIG + +@@ -48,6 +36,9 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_BITS_WORDSIZE_H + ++/* Define to 1 if you have the header file. */ ++#undef HAVE_BOOST_FLYWEIGHT_HPP ++ + /* Define to 1 if you have the `brk' function. */ + #undef HAVE_BRK + +@@ -697,12 +688,6 @@ + /* Define to the version of this package. */ + #undef PACKAGE_VERSION + +-/* sizeof suseconds_t */ +-#undef PM_SIZEOF_SUSECONDS_T +- +-/* sizeof time_t */ +-#undef PM_SIZEOF_TIME_T +- + /* Define as the return type of signal handlers (`int' or `void'). */ + #undef RETSIGTYPE + +diff --git a/src/include/pcp/configsz.h.in b/src/include/pcp/configsz.h.in +index d983b6e38..18d35197a 100644 +--- a/src/include/pcp/configsz.h.in ++++ b/src/include/pcp/configsz.h.in +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2014,2016 Red Hat. ++ * Copyright (c) 2014-2017 Red Hat. + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published +@@ -14,20 +14,28 @@ + #ifndef PCP_CONFIGSZ_H + #define PCP_CONFIGSZ_H + +-/* long and pointer must be either 32 bit or 64 bit */ ++/* sizeof long */ + #undef HAVE_64BIT_LONG ++ ++/* sizeof long */ + #undef HAVE_32BIT_LONG ++ ++/* pointer size */ + #undef HAVE_32BIT_PTR ++ ++/* pointer size */ + #undef HAVE_64BIT_PTR + +-/* Check size of suseconds_t type (struct timeval) */ ++/* sizeof suseconds_t */ + #undef PM_SIZEOF_SUSECONDS_T ++ + #ifndef PM_SIZEOF_SUSECONDS_T + #error Unknown suseconds_t size + #endif + +-/* Check size of time_t (struct timeval, timespec) */ ++/* sizeof time_t */ + #undef PM_SIZEOF_TIME_T ++ + #ifndef PM_SIZEOF_TIME_T + #error Unknown time_t size + #endif diff --git a/SOURCES/rhbz1525864.patch b/SOURCES/rhbz1525864.patch new file mode 100644 index 0000000..60007f3 --- /dev/null +++ b/SOURCES/rhbz1525864.patch @@ -0,0 +1,25 @@ +diff -Naurp pcp-3.12.2.orig/src/pmdas/perfevent/configparser.l pcp-3.12.2/src/pmdas/perfevent/configparser.l +--- pcp-3.12.2.orig/src/pmdas/perfevent/configparser.l 2017-09-06 06:00:26.000000000 +1000 ++++ pcp-3.12.2/src/pmdas/perfevent/configparser.l 2018-01-30 08:05:25.603971547 +1100 +@@ -289,6 +289,10 @@ static void set_pmcsetting_derived_scale + if (context_derived) + { + setting_lists = config->derivedArr[config->nDerivedEntries-1].setting_lists; ++ if (NULL == setting_lists) ++ { ++ return; ++ } + while (setting_lists->next) + { + setting_lists = setting_lists->next; +@@ -318,6 +322,10 @@ static void set_pmcsetting_cpuconfig(con + if (context_derived) + { + setting_lists = config->derivedArr[config->nDerivedEntries-1].setting_lists; ++ if (NULL == setting_lists) ++ { ++ return; ++ } + while (setting_lists->next) + { + setting_lists = setting_lists->next; diff --git a/SOURCES/rhbz1537623.patch b/SOURCES/rhbz1537623.patch new file mode 100644 index 0000000..b6e5f1a --- /dev/null +++ b/SOURCES/rhbz1537623.patch @@ -0,0 +1,57 @@ +commit 4117de7ca98a38b79d32398680e883b47d55fffa +Author: Nathan Scott +Date: Tue Jan 30 11:12:27 2018 +1100 + + build: more multilib fallout - drop accidental redefinitions + + Some 64 vs 32 bit macro definitions have been accidentally + duplicated into config.h (must reside in config{sz,32,64}.h). + + These then resulted in potentially incorrect pmlogrewrite + rules being generated in the build, which resulted in some + bad pmlogger setups happening internally. + + Tweak qa/377 to ensure this duplication doesn't occur again. + +diff --git a/qa/377 b/qa/377 +index 071b840cf..0f7854068 100755 +--- a/qa/377 ++++ b/qa/377 +@@ -15,19 +15,15 @@ echo "QA output created by $seq" + + if [ -f $PCP_INC_DIR/config.h ] + then +- # PCP 3.8.3 or later + defs=$PCP_INC_DIR/config.h +-elif [ -f $PCP_INC_DIR/platform_header.h ] +-then +- # PCP 3.6 or later +- defs=$PCP_INC_DIR/platform_header.h +-elif [ -f $PCP_INC_DIR/platform_defs.h ] +-then +- # older PCP versions +- defs=$PCP_INC_DIR/platform_defs.h + else + _notrun "No $PCP_INC_DIR headers found" + fi ++ ++# HAVE_64BIT_LONG should be in config{sz,64}.h, *not* here: ++grep '#define HAVE_64BIT_LONG' $defs >/dev/null 2>&1 && \ ++ _fail "HAVE_64BIT_LONG is defined in $defs" ++ + grep '#define HAVE_BITFIELDS_LTOR' $defs >/dev/null 2>&1 || \ + _notrun "HAVE_BITFIELDS_LTOR is false" + +diff --git a/src/pmdas/linux/mk.rewrite b/src/pmdas/linux/mk.rewrite +index a1f81b3b2..80355f0e0 100755 +--- a/src/pmdas/linux/mk.rewrite ++++ b/src/pmdas/linux/mk.rewrite +@@ -12,7 +12,7 @@ tmp=/var/tmp/$$ + trap "rm -f $tmp.*; exit 0" 0 1 2 3 15 + + cat <$tmp.c +-#include ++#include + #if defined(HAVE_64BIT_LONG) + KERNEL_ULONG=PM_TYPE_U64 + #else diff --git a/SOURCES/selinux-pmstore.patch b/SOURCES/selinux-pmstore.patch new file mode 100644 index 0000000..87b4568 --- /dev/null +++ b/SOURCES/selinux-pmstore.patch @@ -0,0 +1,44 @@ +commit 8f75ee909cb751a1cc6b3988c5ba5476ca237de1 +Author: Lukas Berk +Date: Tue Oct 24 10:23:42 2017 -0400 + + selinux: rhbz1505888 - A pmstore command is blocked by SELinux + + Add to policy file, update testcase 917 + +diff --git a/qa/917.out.in b/qa/917.out.in +index b0073c23f..a8c337964 100644 +--- a/qa/917.out.in ++++ b/qa/917.out.in +@@ -43,6 +43,7 @@ decl 1: + allow [pcp_pmcd_t] [haproxy_var_lib_t] : [dir] { search }; + allow [pcp_pmcd_t] [haproxy_var_lib_t] : [sock_file] { write }; + allow [pcp_pmcd_t] [haproxy_t] : [unix_stream_socket] { connectto }; ++ allow [pcp_pmcd_t] [sysctl_fs_t] : [file] { write }; + allow [pcp_pmlogger_t] [kmsg_device_t] : [chr_file] { open write }; + allow [pcp_pmlogger_t] self : [capability] { kill }; + allow [pcp_pmlogger_t] [init_t] : [system] { status }; +diff --git a/src/selinux/pcpupstream.te.in b/src/selinux/pcpupstream.te.in +index f070e6024..5f48533c1 100644 +--- a/src/selinux/pcpupstream.te.in ++++ b/src/selinux/pcpupstream.te.in +@@ -19,6 +19,7 @@ require { + type pcp_pmmgr_t; + type pcp_tmp_t; + type sysctl_net_t; ++ type sysctl_fs_t; #RHBZ1505888 + type svirt_sandbox_file_t; + @PCP_SVIRT_LXC_NET_T@ + type virtd_t; # pmda.libvirt +@@ -163,6 +164,11 @@ allow pcp_pmcd_t virtd_t:unix_stream_socket connectto; + allow pcp_pmcd_t haproxy_var_lib_t:dir search; + allow pcp_pmcd_t haproxy_var_lib_t:sock_file write; + allow pcp_pmcd_t haproxy_t:unix_stream_socket connectto; ++ ++#type=AVC msg=audit(1508779244.425:386): avc: denied { write } for pid=2967 comm="pmdaxfs" name="stats_clear" dev="proc" ino=87731 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:sysctl_fs_t:s0 tclass=file ++#RHBZ1505888 ++allow pcp_pmcd_t sysctl_fs_t:file write; ++ + #============= pcp_pmlogger_t ============== + allow pcp_pmlogger_t kmsg_device_t:chr_file { open write }; + allow pcp_pmlogger_t self:capability kill; diff --git a/SOURCES/selinux.patch b/SOURCES/selinux.patch new file mode 100644 index 0000000..b0c551e --- /dev/null +++ b/SOURCES/selinux.patch @@ -0,0 +1,411 @@ +commit 60ae66d7478bd6c944442377274a3a365d0861bb +Author: Lukas Berk +Date: Fri Nov 24 10:24:44 2017 -0500 + + selinux: quick README update for tl:dr instructions + + selinux: rhbz1515928 allow nfsd_fs_t accesses (file/dir) + + Add to policy file, update testcase 917 + + build: selinux - directly test existance of semodule -X option + + Instead of guessing, based on distro, if the semodule command adjusts + for priority, we now directly test and decide what command to issue + based on the output. + + rpms: selinux - don't install policy file if selinux isnt active + + Added a runtime check to see, even if the system has the proper + packages for selinux, if it's enabled on the system. For example; + containers, may have selinux packages to install, but it's not enabled + by default. + + selinux: RHBZ1517656 + + Add three type enforcement context allowance lines + update qa, config bits for conditional context + + selinux: RHBZ1517862 postfix context access addition + + add context access for postfix_spool_t dir read's + update testcase + + selinux: rhbz1517655 add missing file:map access + + Added a single missing class capability for file's accessing maps + adjust qa and configure scripts accordingly to check + +diff --git a/configure b/configure +index d39b76e59..f8dceca28 100755 +--- a/configure ++++ b/configure +@@ -708,6 +708,8 @@ fmt_uint64 + fmt_int64 + fmt_pid + rdynamic_flag ++pcp_selinux_hostname_exec_map ++pcp_selinux_sock_file_getattr + pcp_selinux_tracefs + pcp_selinux_unreserved_port + pcp_selinux_systemd_exec +@@ -951,7 +953,6 @@ infodir + docdir + oldincludedir + includedir +-runstatedir + localstatedir + sharedstatedir + sysconfdir +@@ -1098,7 +1099,6 @@ datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-runstatedir='${localstatedir}/run' + includedir='${prefix}/include' + oldincludedir='/usr/include' + docdir='${datarootdir}/doc/${PACKAGE}' +@@ -1351,15 +1351,6 @@ do + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + +- -runstatedir | --runstatedir | --runstatedi | --runstated \ +- | --runstate | --runstat | --runsta | --runst | --runs \ +- | --run | --ru | --r) +- ac_prev=runstatedir ;; +- -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ +- | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ +- | --run=* | --ru=* | --r=*) +- runstatedir=$ac_optarg ;; +- + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ +@@ -1497,7 +1488,7 @@ fi + for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ +- libdir localedir mandir runstatedir ++ libdir localedir mandir + do + eval ac_val=\$$ac_var + # Remove trailing slashes. +@@ -1650,7 +1641,6 @@ Fine tuning of the installation directories: + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] +- --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] +@@ -11800,6 +11790,8 @@ pcp_selinux_systemd_unit_file=false + pcp_selinux_systemd_exec=false + pcp_selinux_tracefs=false + pcp_selinux_unreserved_port=false ++pcp_selinux_sock_file_getattr=false ++pcp_selinux_hostname_exec_map=false + if test "x$enable_selinux" != "xfalse"; then : + + for policy_file in /etc/selinux/targeted/policy/policy.* +@@ -11856,6 +11848,17 @@ do + then + pcp_selinux_tracefs=true + fi ++ sock_file_getattr=`eval seinfo -x --class=sock_file -- $policy_file | grep getattr | awk '{ print $1 }'` ++ if test "x$sock_file_getattr" != "x" ++ then ++ pcp_selinux_sock_file_getattr=true ++ fi ++ hostname_exec_map_a=`eval seinfo -x --class=file -- $policy_file | grep map | awk '{ print $1 }'` ++ hostname_exec_map_b=`eval seinfo -x --common file -- $policy_file 2>/dev/null | grep map | awk '{ print $1 }'` ++ if test "x$hostname_exec_map_a" != "x" -o "x$hostname_exec_map_b" != "x" ++ then ++ pcp_selinux_hostname_exec_map=true ++ fi + + fi + done +@@ -11872,6 +11875,8 @@ fi + + + ++ ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 + $as_echo_n "checking return type of signal handlers... " >&6; } + if ${ac_cv_type_signal+:} false; then : +diff --git a/configure.ac b/configure.ac +index ba799d146..42efb6bfe 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1937,6 +1937,8 @@ pcp_selinux_systemd_unit_file=false + pcp_selinux_systemd_exec=false + pcp_selinux_tracefs=false + pcp_selinux_unreserved_port=false ++pcp_selinux_sock_file_getattr=false ++pcp_selinux_hostname_exec_map=false + AS_IF([test "x$enable_selinux" != "xfalse"], [ + for policy_file in /etc/selinux/targeted/policy/policy.* + do +@@ -1992,6 +1994,17 @@ do + then + pcp_selinux_tracefs=true + fi ++ sock_file_getattr=`eval seinfo -x --class=sock_file -- $policy_file | grep getattr | awk '{ print $1 }'` ++ if test "x$sock_file_getattr" != "x" ++ then ++ pcp_selinux_sock_file_getattr=true ++ fi ++ hostname_exec_map_a=`eval seinfo -x --class=file -- $policy_file | grep map | awk '{ print $1 }'` ++ hostname_exec_map_b=`eval seinfo -x --common file -- $policy_file 2>/dev/null | grep map | awk '{ print $1 }'` ++ if test "x$hostname_exec_map_a" != "x" -o "x$hostname_exec_map_b" != "x" ++ then ++ pcp_selinux_hostname_exec_map=true ++ fi + + fi + done +@@ -2006,6 +2019,8 @@ AC_SUBST(pcp_selinux_systemd_unit_file) + AC_SUBST(pcp_selinux_systemd_exec) + AC_SUBST(pcp_selinux_unreserved_port) + AC_SUBST(pcp_selinux_tracefs) ++AC_SUBST(pcp_selinux_sock_file_getattr) ++AC_SUBST(pcp_selinux_hostname_exec_map) + + dnl Checks for library functions. + AC_TYPE_SIGNAL +diff --git a/qa/917 b/qa/917 +index 83a6ed684..9fc3a993e 100755 +--- a/qa/917 ++++ b/qa/917 +@@ -34,6 +34,9 @@ cap_userns_ptrace=`seinfo --class=cap_userns -x 2>&1 | grep "sys_ptrace$"` + unreserved_port_t=`seinfo -t | grep "unreserved_port_t$"` + tracefs_t=`seinfo -t | grep "tracefs_t$"` + class_status=`seinfo -x --class=system | grep "status$"` ++sock_file_getattr=`seinfo -x --class=sock_file | grep "getattr$"` ++hostname_exec_map_a=`seinfo -x --class=file | grep "map$"` ++hostname_exec_map_b=`seinfo -x --common=file 2>/dev/null | grep "map$"` + + _filter_semodule() + { +@@ -63,6 +66,9 @@ _filter_outfile() + -v cap_userns_ptrace="$cap_userns_ptrace" \ + -v unreserved_port_t="$unreserved_port_t" \ + -v tracefs_t="$tracefs_t" \ ++ -v sock_file_getattr="$sock_file_getattr" \ ++ -v hostname_exec_map_a="$hostname_exec_map_a" \ ++ -v hostname_exec_map_b="$hostname_exec_map_b" \ + '{ + if (container_t == "" && /container_runtime_t/) + !/container_runtime_t/ ; +@@ -90,6 +96,11 @@ _filter_outfile() + !/tracefs_t/ ; + else if (class_status == "" && /system.*status/) + !/system.*status/ ; ++ else if (sock_file_getattr == "" && /gpmctl_t/) ++ !/gpmctl_t/ ; ++ else if (hostname_exec_map_a == "" && hostname_exec_map_b == "" && /hostname_exec_t/ && /pcp_pmie_t/) { ++ printf(" allow [pcp_pmie_t] [hostname_exec_t] : [file] { execute execute_no_trans getattr open read };\n") ++ } + else + print; + }' +diff --git a/qa/917.out.in b/qa/917.out.in +index a8c337964..86805d11a 100644 +--- a/qa/917.out.in ++++ b/qa/917.out.in +@@ -44,6 +44,10 @@ decl 1: + allow [pcp_pmcd_t] [haproxy_var_lib_t] : [sock_file] { write }; + allow [pcp_pmcd_t] [haproxy_t] : [unix_stream_socket] { connectto }; + allow [pcp_pmcd_t] [sysctl_fs_t] : [file] { write }; ++ allow [pcp_pmcd_t] [nfsd_fs_t] : [dir] { search }; ++ allow [pcp_pmcd_t] [nfsd_fs_t] : [file] { getattr open read }; ++ allow [pcp_pmcd_t] [gpmctl_t] : [sock_file] { getattr }; ++ allow [pcp_pmcd_t] [postfix_spool_t] : [dir] { read }; + allow [pcp_pmlogger_t] [kmsg_device_t] : [chr_file] { open write }; + allow [pcp_pmlogger_t] self : [capability] { kill }; + allow [pcp_pmlogger_t] [init_t] : [system] { status }; +@@ -54,7 +58,7 @@ decl 1: + allow [pcp_pmlogger_t] [pcp_pmlogger_exec_t] : [file] { execute_no_trans }; + allow [pcp_pmlogger_t] [dey_sapi_port_t] : [tcp_socket] { name_connect }; + allow [pcp_pmlogger_t] [user_home_dir_t] : [dir] { search }; +- allow [pcp_pmie_t] [hostname_exec_t] : [file] { execute execute_no_trans getattr open read }; ++ allow [pcp_pmie_t] [hostname_exec_t] : [file] { execute execute_no_trans getattr open read map }; + allow [pcp_pmie_t] self : [capability] { kill sys_ptrace net_admin chown }; + allow [pcp_pmie_t] [init_t] : [unix_stream_socket] { connectto }; + allow [pcp_pmie_t] [initrc_var_run_t] : [file] { lock open read }; +@@ -63,6 +67,7 @@ decl 1: + allow [pcp_pmie_t] [systemd_systemctl_exec_t] : [file] { execute execute_no_trans getattr open read }; + allow [pcp_pmie_t] [unconfined_t] : [unix_stream_socket] { connectto }; + allow [pcp_pmie_t] [pcp_pmie_exec_t] : [file] { execute_no_trans }; ++ allow [pcp_pmie_t] [proc_net_t] : [file] { read }; + allow [pcp_pmcd_t] [configfs_t] : [dir] { open read search }; + allow [pcp_pmcd_t] [configfs_t] : [file] { getattr open read }; + allow [pcp_pmcd_t] [configfs_t] : [lnk_file] { read getattr }; +@@ -75,6 +80,7 @@ decl 1: + allow [pcp_pmproxy_t] self : [capability] { net_admin }; + allow [pcp_pmproxy_t] [sysctl_net_t] : [file] { getattr open read }; + allow [pcp_pmproxy_t] [sysctl_net_t] : [dir] { search }; ++ allow [pcp_pmproxy_t] [proc_net_t] : [file] { read }; + allow [pcp_pmmgr_t] [unreserved_port_t] : [tcp_socket] { name_bind }; + allow [pcp_pmmgr_t] [unconfined_t] : [unix_stream_socket] { connectto }; + +diff --git a/src/include/builddefs.in b/src/include/builddefs.in +index e75a08d61..40fc380fb 100644 +--- a/src/include/builddefs.in ++++ b/src/include/builddefs.in +@@ -265,6 +265,8 @@ PCP_SELINUX_SYSTEMD_UNIT_FILE = @pcp_selinux_systemd_unit_file@ + PCP_SELINUX_SYSTEMD_EXEC = @pcp_selinux_systemd_exec@ + PCP_SELINUX_UNRESERVED_PORT = @pcp_selinux_unreserved_port@ + PCP_SELINUX_TRACEFS = @pcp_selinux_tracefs@ ++PCP_SELINUX_SOCK_FILE_GETATTR = @pcp_selinux_sock_file_getattr@ ++PCP_SELINUX_HOSTNAME_EXEC_MAP = @pcp_selinux_hostname_exec_map@ + + # for code supporting any modern version of perl + HAVE_PERL = @have_perl@ +diff --git a/src/selinux/GNUlocaldefs b/src/selinux/GNUlocaldefs +index 32f493a8a..65c296611 100644 +--- a/src/selinux/GNUlocaldefs ++++ b/src/selinux/GNUlocaldefs +@@ -58,3 +58,12 @@ PCP_TRACEFS_FS_RULE="allow pcp_pmcd_t tracefs_t:filesystem mount\;" + PCP_TRACEFS_DIR_RULE="allow pcp_pmcd_t tracefs_t:dir { search read open }\;" + PCP_TRACEFS_FILE_RULE="allow pcp_pmcd_t tracefs_t:file { read open }\;" + endif ++ ++ifeq "$(PCP_SELINUX_SOCK_FILE_GETATTR)" "true" ++PCP_SOCK_FILE_GETATTR="class sock_file getattr\;" ++PCP_SOCK_FILE_GETATTR_RULE="allow pcp_pmcd_t gpmctl_t:sock_file getattr\;" ++endif ++ ++ifeq "$(PCP_SELINUX_HOSTNAME_EXEC_MAP)" "true" ++PCP_HOSTNAME_EXEC_MAP=" map " ++endif +\ No newline at end of file +diff --git a/src/selinux/GNUmakefile b/src/selinux/GNUmakefile +index ed4132b80..6635c8e7b 100644 +--- a/src/selinux/GNUmakefile ++++ b/src/selinux/GNUmakefile +@@ -58,6 +58,9 @@ $(IAM).te: $(IAM).te.in + -e 's;@PCP_TRACEFS_FS_RULE@;'$(PCP_TRACEFS_FS_RULE)';' \ + -e 's;@PCP_TRACEFS_DIR_RULE@;'$(PCP_TRACEFS_DIR_RULE)';' \ + -e 's;@PCP_TRACEFS_FILE_RULE@;'$(PCP_TRACEFS_FILE_RULE)';' \ ++ -e 's;@PCP_SOCK_FILE_GETATTR@;'$(PCP_SOCK_FILE_GETATTR)';' \ ++ -e 's;@PCP_SOCK_FILE_GETATTR_RULE@;'$(PCP_SOCK_FILE_GETATTR_RULE)';' \ ++ -e 's;@PCP_HOSTNAME_EXEC_MAP@;'$(PCP_HOSTNAME_EXEC_MAP)';' \ + + # END + make -f /usr/share/selinux/devel/Makefile +diff --git a/src/selinux/README b/src/selinux/README +index af7d51be1..b071bbd5a 100644 +--- a/src/selinux/README ++++ b/src/selinux/README +@@ -1,5 +1,28 @@ + PCP SELinux Module + ++== TL;DR == ++ ++Dammit Jim, I'm a developer, not a selinux expert! ++ ++Ok ok, AVC denials are logged in /var/log/audit/audit.log Pull out the ++relevant errors, and either, forward that along with the bug/pull ++request for us to add/fix, or run: ++ ++cat /var/log/audit/audit.log | audit2allow -w ++ ++which will verify that the avc is not already covered in the pcp ++policy file, and then: ++ ++cat /var/log/audit/audit.log | audit2allow -M mypolicy ++semodule -i mypolicy.pp ++ ++Be careful you understand what context accesses you're allowing with ++this policy, and that they *should* be allowed. ++ ++If you choose the latter, please be a good samaritan and forward the ++relevant avc denials upstream for the community to apply and ship the ++updated policy package. ++ + == Building == + + make -f /usr/share/selinux/devel/Makefile +diff --git a/src/selinux/pcpupstream.te.in b/src/selinux/pcpupstream.te.in +index 5f48533c1..236a0ecf1 100644 +--- a/src/selinux/pcpupstream.te.in ++++ b/src/selinux/pcpupstream.te.in +@@ -31,6 +31,7 @@ require { + type saslauthd_t; # pcp-lio + type modules_object_t; # pcp-lio + @PCP_NSFS_T@ ++ type nfsd_fs_t; #RHBZ1515928 + type pcp_pmie_exec_t; # pmdasummary + @PCP_SYSTEMCTL_UNIT_FILE_T@ + @PCP_SYSTEMCTL_EXEC_T@ +@@ -45,8 +46,11 @@ require { + type haproxy_t; # pmda.haproxy + type websm_port_t; # pmda.prometheus + type dey_sapi_port_t; #RHBZ1447585 ++ type gpmctl_t; #RHBZ1517656 ++ type proc_net_t; #RHBZ1517656 ++ type postfix_spool_t; #RHBZ1517862 + class lnk_file { read getattr }; +- class file { append create execute execute_no_trans getattr ioctl lock open read write }; ++ class file { append create execute execute_no_trans getattr ioctl lock open read write @PCP_HOSTNAME_EXEC_MAP@ }; + class dir { add_name open read search write getattr }; + class unix_stream_socket connectto; + class capability { kill sys_ptrace net_admin chown sys_chroot ipc_owner }; +@@ -55,6 +59,7 @@ require { + class fifo_file { getattr read open unlink }; # qa/455 + class process signal; #RHBZ1443632 + class sock_file write; #RHBZ1449671 ++ @PCP_SOCK_FILE_GETATTR@ + @PCP_CLASS_STATUS@ + class tcp_socket { name_bind name_connect }; + class shm { unix_read associate getattr }; +@@ -169,6 +174,15 @@ allow pcp_pmcd_t haproxy_t:unix_stream_socket connectto; + #RHBZ1505888 + allow pcp_pmcd_t sysctl_fs_t:file write; + ++#RHBZ1515928 ++allow pcp_pmcd_t nfsd_fs_t:dir search; ++allow pcp_pmcd_t nfsd_fs_t:file { getattr open read }; ++ ++#RHBZ1517656 ++@PCP_SOCK_FILE_GETATTR_RULE@ ++ ++#RHBZ1517862 ++allow pcp_pmcd_t postfix_spool_t:dir read; + #============= pcp_pmlogger_t ============== + allow pcp_pmlogger_t kmsg_device_t:chr_file { open write }; + allow pcp_pmlogger_t self:capability kill; +@@ -199,7 +213,7 @@ allow pcp_pmlogger_t dey_sapi_port_t:tcp_socket name_connect; + allow pcp_pmlogger_t user_home_dir_t:dir search; + + #============= pcp_pmie_t ============== +-allow pcp_pmie_t hostname_exec_t:file { execute execute_no_trans getattr open read }; ++allow pcp_pmie_t hostname_exec_t:file { execute execute_no_trans getattr open read @PCP_HOSTNAME_EXEC_MAP@ }; + + #type=AVC msg=audit(1498847682.537:15753): avc: denied { sys_ptrace } for pid=30881 comm="ps" capability=19 scontext=system_u:system_r:pcp_pmie_t:s0 tcontext=system_u:system_r:pcp_pmie_t:s0 tclass=capability permissive=0 + allow pcp_pmie_t self:capability { chown kill net_admin sys_ptrace }; +@@ -233,6 +247,10 @@ allow pcp_pmie_t unconfined_t:unix_stream_socket connectto; + + #audit: type=1400 audit(1504924094.677:197): avc: denied { execute_no_trans } for pid=3703 comm=pmie_check path=/usr/bin/pmie dev=dm-0 ino=2506240 scontext=system_u:system_r:pcp_pmie_t:s0 tcontext=system_u:object_r:pcp_pmie_exec_t:s0 tclass=file permissive=0 + allow pcp_pmie_t pcp_pmie_exec_t:file execute_no_trans; ++ ++#RHBZ1517656 ++allow pcp_pmie_t proc_net_t:file read; ++ + #============= pmda-lio ============== + allow pcp_pmcd_t configfs_t:dir { open read search }; + allow pcp_pmcd_t configfs_t:file { getattr open read }; +@@ -259,6 +277,11 @@ allow pcp_pmproxy_t sysctl_net_t:file { getattr open read }; + + #type=AVC msg=audit(1498837089.845:16693): avc: denied { search } for pid=14446 comm="pmproxy" name="net" dev="proc" ino=1168 scontext=system_u:system_r:pcp_pmproxy_t:s0 tcontext=system_u:object_r:sysctl_net_t:s0 tclass=dir permissive=0 + allow pcp_pmproxy_t sysctl_net_t:dir search; ++ ++#type=AVC msg=audit(1511771694.686:575): avc: denied { read } for pid=28833 comm="pmproxy" name="unix" dev="proc" ino=4026532015 scontext=system_u:system_r:pcp_pmproxy_t:s0 tcontext=system_u:object_r:proc_net_t:s0 tclass=file ++#RHBZ1517656 ++allow pcp_pmproxy_t proc_net_t:file read; ++ + #============= pcp_pmmgr_t ============== + + #type=AVC msg=audit(1498835526.281:10254): avc: denied { name_bind } for pid=13114 comm="pmlogger" src=4332 scontext=system_u:system_r:pcp_pmmgr_t:s0 tcontext=system_u:object_r:unreserved_port_t:s0 tclass=tcp_socket permissive=0 diff --git a/SPECS/pcp.spec b/SPECS/pcp.spec new file mode 100644 index 0000000..e986729 --- /dev/null +++ b/SPECS/pcp.spec @@ -0,0 +1,3598 @@ +Name: pcp +Version: 3.12.2 +Release: 5%{?dist} +Summary: System-level performance monitoring and performance management +License: GPLv2+ and LGPLv2.1+ and CC-BY +URL: http://www.pcp.io +Group: Applications/System + +%global bintray https://bintray.com/artifact/download +%global github https://github.com/performancecopilot + +Source0: %{bintray}/download/pcp/source/pcp-%{version}.src.tar.gz +Source1: %{github}/pcp-webapp-vector/archive/1.1.2/pcp-webapp-vector-1.1.2.tar.gz +Source2: %{github}/pcp-webapp-grafana/archive/1.9.1-2/pcp-webapp-grafana-1.9.1-2.tar.gz +Source3: %{github}/pcp-webapp-graphite/archive/0.9.10/pcp-webapp-graphite-0.9.10.tar.gz +Source4: %{github}/pcp-webapp-blinkenlights/archive/1.0.0/pcp-webapp-blinkenlights-1.0.0.tar.gz + +Patch0: rhbz1513503.patch +Patch1: selinux-pmstore.patch +Patch2: selinux.patch +Patch3: logmeta.patch +Patch4: rhbz1488116.patch +Patch5: rhbz1525864.patch +Patch6: rhbz1537623.patch + +%if 0%{?fedora} || 0%{?rhel} > 5 +%global disable_selinux 0 +%else +%global disable_selinux 1 +%endif + +%global disable_snmp 0 + +# There are no papi/libpfm devel packages for s390, armv7hl nor for some rhels, disable +%ifarch s390 s390x armv7hl +%global disable_papi 1 +%global disable_perfevent 1 +%else +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +%global disable_papi 0 +%else +%global disable_papi 1 +%endif +%if 0%{?fedora} >= 20 || 0%{?rhel} > 6 +%global disable_perfevent 0 +%else +%global disable_perfevent 1 +%endif +%endif + +%global disable_microhttpd 0 +%global disable_cairo 0 + +%global disable_python2 0 +# 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 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 + +# support for pmdanutcracker (perl deps missing on rhel) +%if 0%{?rhel} == 0 +%global disable_nutcracker 0 +%else +%global disable_nutcracker 1 +%endif + +# support for pmdarpm +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +%global disable_rpm 0 +%else +%global disable_rpm 1 +%endif + +# Qt development and runtime environment missing components before el6 +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +%global disable_qt 0 +# We need qt5 for fedora +%if 0%{?fedora} != 0 +%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 + +# systemtap static probing, 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 + +# boost c++ library, widely available +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +%global disable_boost 0 +%else +%global disable_boost 1 +%endif + +# 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_elasticsearch 0 +%else +%global disable_elasticsearch 1 +%endif + +# python's xlsxwriter module hasn't been included yet, but hopefully +# it will be eventually, leaving this as a variable for now. +%if 0%{?fedora} || 0%{?rhel} +%global disable_xlsx 1 +%else +%global disable_xlsx 1 +%endif + +# prevent conflicting binary and man page install for pcp(1) +Conflicts: librapi + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +# https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B +BuildRequires: gcc gcc-c++ +BuildRequires: procps autoconf bison flex +BuildRequires: nss-devel +BuildRequires: rpm-devel +BuildRequires: avahi-devel +BuildRequires: zlib-devel +%if !%{disable_python2} +%if 0%{?default_python} != 3 +BuildRequires: python%{?default_python}-devel +%else +BuildRequires: python-devel +%endif +%endif +%if !%{disable_python3} +BuildRequires: python3-devel +%endif +BuildRequires: ncurses-devel +BuildRequires: readline-devel +BuildRequires: cyrus-sasl-devel +%if !%{disable_papi} +BuildRequires: papi-devel +%endif +%if !%{disable_perfevent} +BuildRequires: libpfm-devel >= 4 +%endif +%if !%{disable_microhttpd} +BuildRequires: libmicrohttpd-devel +%endif +%if !%{disable_cairo} +BuildRequires: cairo-devel +%endif +%if !%{disable_sdt} +BuildRequires: systemtap-sdt-devel +%endif +%if !%{disable_boost} +BuildRequires: boost-devel +%endif +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +BuildRequires: perl-devel +%endif +BuildRequires: perl(ExtUtils::MakeMaker) +BuildRequires: initscripts man +%if !%{disable_systemd} +BuildRequires: systemd-devel +%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 gawk sed grep fileutils findutils initscripts which +Requires: pcp-libs = %{version}-%{release} +%if !%{disable_selinux} +Requires: pcp-selinux = %{version}-%{release} +%endif +Obsoletes: pcp-gui-debuginfo +Obsoletes: pcp-pmda-nvidia + +# Obsoletes for distros that already have single install pmda's with compat package +Obsoletes: pcp-compat + +Requires: pcp-libs = %{version}-%{release} +Obsoletes: pcp-gui-debuginfo + +%global tapsetdir %{_datadir}/systemtap/tapset + +%global _confdir %{_sysconfdir}/pcp +%global _logsdir %{_localstatedir}/log/pcp +%global _pmnsdir %{_localstatedir}/lib/pcp/pmns +%global _tempsdir %{_localstatedir}/lib/pcp/tmp +%global _pmdasdir %{_localstatedir}/lib/pcp/pmdas +%global _testsdir %{_localstatedir}/lib/pcp/testsuite +%global _selinuxdir %{_localstatedir}/lib/pcp/selinux +%global _logconfdir %{_localstatedir}/lib/pcp/config/pmlogconf +%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 !%{disable_systemd} +%global _initddir %{_datadir}/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_papi} +%global _with_papi --with-papi=yes +%endif + +%if %{disable_perfevent} +%global _with_perfevent --with-perfevent=no +%else +%global _with_perfevent --with-perfevent=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 + if [ -f "%{_confdir}/pmcd/pmcd.conf" ] && [ -f "%{_pmdasdir}/%2/domain.h" ] + then + (cd %{_pmdasdir}/%2/ && ./Remove >/dev/null 2>&1) + fi +fi +} + +%global selinux_handle_policy() %{expand: +if [ -e /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled +then + if [ %1 -ge 1 ] + then + PCP_SELINUX_DIR=%{_selinuxdir} + if [ -f "$PCP_SELINUX_DIR/%2" ] + then + if semodule -h | grep -q -- "-X" >/dev/null 2>&1 + then + (semodule -X 400 -i %{_selinuxdir}/%2) + else + (semodule -i %{_selinuxdir}/%2) + fi #semodule -X flag check + fi + elif [ %1 -eq 0 ] + then + if semodule -l | grep %2 >/dev/null 2>&1 + then + if semodule -h | grep -q -- "-X" >/dev/null 2>&1 + then + (semodule -X 400 -r %2 >/dev/null) + else + (semodule -r %2 >/dev/null) + fi #semodule -X flag check + fi + fi +fi # check for an active selinux install +} + +%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.1+ +Group: System Environment/Libraries +Summary: Performance Co-Pilot run-time configuration +URL: http://www.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.1+ +Group: System Environment/Libraries +Summary: Performance Co-Pilot run-time libraries +URL: http://www.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.1+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) development headers +URL: http://www.pcp.io + +%description libs-devel +Performance Co-Pilot (PCP) headers for development. + +# +# pcp-devel +# +%package devel +License: GPLv2+ and LGPLv2.1+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) development tools and documentation +URL: http://www.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+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) test suite +URL: http://www.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 + +%description testsuite +Quality assurance test suite for Performance Co-Pilot (PCP). + +# +# pcp-manager +# +%package manager +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) manager daemon +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} + +%description manager +An optional daemon (pmmgr) that manages a collection of pmlogger and +pmie daemons, for a set of discovered local and remote hosts running +the performance metrics collection daemon (pmcd). It ensures these +daemons are running when appropriate, and manages their log rotation +needs. It is an alternative to the cron-based pmlogger/pmie service +scripts. + +%if !%{disable_microhttpd} +# +# pcp-webapi +# +%package webapi +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) web API service +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} + +%description webapi +Provides a daemon (pmwebd) that binds a large subset of the Performance +Co-Pilot (PCP) client API (PMAPI) to RESTful web applications using the +HTTP (PMWEBAPI) protocol. +%endif + +# +# pcp-webjs and pcp-webapp packages +# +%package webjs +License: ASL2.0 and MIT and CC-BY +Group: Applications/Internet +Conflicts: pcp-webjs < 3.11.9 +%if !%{disable_noarch} +BuildArch: noarch +%endif +Requires: pcp-webapp-vector pcp-webapp-blinkenlights +Requires: pcp-webapp-graphite pcp-webapp-grafana +Summary: Performance Co-Pilot (PCP) web applications +URL: http://www.pcp.io + +%description webjs +Javascript web application content for the Performance Co-Pilot (PCP) +web service. + +%package webapp-vector +License: ASL2.0 +Group: Applications/Internet +%if !%{disable_noarch} +BuildArch: noarch +%endif +Summary: Vector web application for Performance Co-Pilot (PCP) +URL: https://github.com/Netflix/vector + +%description webapp-vector +Vector web application for the Performance Co-Pilot (PCP). + +%package webapp-grafana +License: ASL2.0 +Group: Applications/Internet +Conflicts: pcp-webjs < 3.10.4 +%if !%{disable_noarch} +BuildArch: noarch +%endif +Summary: Grafana web application for Performance Co-Pilot (PCP) +URL: https://grafana.org + +%description webapp-grafana +Grafana is an open source, feature rich metrics dashboard and graph +editor. This package provides a Grafana that uses the Performance +Co-Pilot (PCP) as the data repository. Other Grafana backends are +not used. + +Grafana can render time series dashboards at the browser via flot.js +(more interactive, slower, for beefy browsers) or alternately at the +server via png (less interactive, faster). + +%package webapp-graphite +License: ASL2.0 +Group: Applications/Internet +Conflicts: pcp-webjs < 3.10.4 +%if !%{disable_noarch} +BuildArch: noarch +%endif +Summary: Graphite web application for Performance Co-Pilot (PCP) +URL: http://graphite.readthedocs.org + +%description webapp-graphite +Graphite is a highly scalable real-time graphing system. This package +provides a graphite version that uses the Performance Co-Pilot (PCP) +as the data repository, and Graphites web interface renders it. The +Carbon and Whisper subsystems of Graphite are not included nor used. + +%package webapp-blinkenlights +License: ASL2.0 +Group: Applications/Internet +%if !%{disable_noarch} +BuildArch: noarch +%endif +Summary: Blinking lights web application for Performance Co-Pilot (PCP) +URL: http://pcp.io + +%description webapp-blinkenlights +Demo web application showing traffic lights that change colour based +on the periodic evaluation of performance metric expressions. + +# +# perl-PCP-PMDA. This is the PCP agent perl binding. +# +%package -n perl-PCP-PMDA +License: GPLv2+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) Perl bindings and documentation +URL: http://www.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+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) Perl bindings for PCP Memory Mapped Values +URL: http://www.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+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) Perl bindings for importing external data into PCP archives +URL: http://www.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+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) Perl bindings for post-processing output of pmlogsummary +URL: http://www.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+ +Group: Applications/System +Summary: Performance Co-Pilot tools for importing sar data into PCP archive logs +URL: http://www.pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: perl-PCP-LogImport = %{version}-%{release} +Requires: sysstat +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+ +Group: Applications/System +Summary: Performance Co-Pilot tools for importing iostat data into PCP archive logs +URL: http://www.pcp.io +Requires: pcp-libs = %{version}-%{release} +Requires: perl-PCP-LogImport = %{version}-%{release} +Requires: sysstat + +%description import-iostat2pcp +Performance Co-Pilot (PCP) front-end tools for importing iostat data +into standard PCP archive logs for replay with any PCP monitoring tool. + +# +# pcp-import-mrtg2pcp +# +%package import-mrtg2pcp +License: LGPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot tools for importing MTRG data into PCP archive logs +URL: http://www.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+ +Group: Applications/System +Summary: Performance Co-Pilot tools for importing ganglia data into PCP archive logs +URL: http://www.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+ +Group: Applications/System +Summary: Performance Co-Pilot tools for importing collectl log files into PCP archive logs +URL: http://www.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+ +Group: Applications/System +Summary: Module for exporting PCP metrics to Zabbix agent +URL: http://www.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 +# +%if !%{disable_elasticsearch} +%package export-pcp2elasticsearch +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot tools for exporting PCP metrics to ElasticSearch +URL: http://www.pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +Requires: python3-elasticsearch +BuildRequires: python3-elasticsearch +%else +Requires: python-pcp = %{version}-%{release} +Requires: python-elasticsearch +BuildRequires: python-elasticsearch +%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. +%endif +# +# pcp-export-pcp2graphite +# +%package export-pcp2graphite +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot tools for exporting PCP metrics to Graphite +URL: http://www.pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: python-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+ +Group: Applications/System +Summary: Performance Co-Pilot tools for exporting PCP metrics to InfluxDB +URL: http://www.pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +Requires: python3-requests +%else +Requires: python-pcp = %{version}-%{release} +Requires: python-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+ +Group: Applications/System +Summary: Performance Co-Pilot tools for exporting PCP metrics in JSON format +URL: http://www.pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: python-pcp = %{version}-%{release} +%endif + +%description export-pcp2json +Performance Co-Pilot (PCP) front-end tools for exporting metric values +in JSON format. + +# +# pcp-export-pcp2xlsx +# +%if !%{disable_xlsx} +%package export-pcp2xlsx +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot tools for exporting PCP metrics to Excel +URL: http://www.pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: python-pcp = %{version}-%{release} +%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+ +Group: Applications/System +Summary: Performance Co-Pilot tools for exporting PCP metrics in XML format +URL: http://www.pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: python-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+ +Group: Applications/System +Summary: Performance Co-Pilot tools for exporting PCP metrics to Zabbix +URL: http://www.pcp.io +Requires: pcp-libs >= %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%else +Requires: python-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_papi} +# +# pcp-pmda-papi +# +%package pmda-papi +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Performance API and hardware counters +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +BuildRequires: papi-devel + +%description pmda-papi +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting hardware counters statistics through PAPI (Performance API). +%endif + +%if !%{disable_perfevent} +# +# pcp-pmda-perfevent +# +%package pmda-perfevent +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for hardware counters +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +Requires: libpfm >= 4 +BuildRequires: libpfm-devel >= 4 + +%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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Infiniband HCAs and switches +URL: http://www.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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for ActiveMQ +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for BIND servers +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(LWP::UserAgent) +Requires: perl(XML::LibXML) +Requires: perl(File::Slurp) + +%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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Redis +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} + +%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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for NutCracker (TwemCache) +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Bonded network interfaces +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Database response times and Availablility +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} + +%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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for 389 Directory Servers +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl-LDAP + +%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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for 389 Directory Server Loggers +URL: http://www.pcp.io +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-elasticsearch +# +%package pmda-elasticsearch +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Elasticsearch +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(LWP::UserAgent) +BuildRequires: perl(LWP::UserAgent) + +%description pmda-elasticsearch +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about Elasticsearch. +#end pcp-pmda-elasticsearch + +# +# pcp-pmda-gpfs +# +%package pmda-gpfs +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for GPFS Filesystem +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for a GPS Daemon +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} + +%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-kvm +# +%package pmda-kvm +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for KVM +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-kvm +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the Kernel based Virtual Machine. +#end pcp-pmda-kvm + +# +# pcp-pmda-docker +# +%package pmda-docker +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics from the Docker daemon +URL: http://www.pcp.io + +%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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Lustre Filesytem +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Lustre Filesytem Comms +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Memcached +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for MySQL +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Named +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Netfilter framework +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Usenet News +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Nginx Webserver +URL: http://www.pcp.io +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-nfsclient +# +%package pmda-nfsclient +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for NFS Clients +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} + +%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-oracle +# +%package pmda-oracle +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Oracle database +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for PowerDNS +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} + +%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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Postfix (MTA) +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} +%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-postgresql +# +%package pmda-postgresql +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for PostgreSQL +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} +Requires: perl(DBI) perl(DBD::Pg) +BuildRequires: perl(DBI) perl(DBD::Pg) + +%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-rsyslog +# +%package pmda-rsyslog +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Rsyslog +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Samba +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for NFS Clients +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Simple Network Management Protocol +URL: http://www.pcp.io +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-vmware +# +%package pmda-vmware +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for VMware +URL: http://www.pcp.io +Requires: perl-PCP-PMDA = %{version}-%{release} + +%description pmda-vmware +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics for VMware. +#end pcp-pmda-vmware + +# +# pcp-pmda-zimbra +# +%package pmda-zimbra +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Zimbra +URL: http://www.pcp.io +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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Device Mapper Cache and Thin Client +URL: http://www.pcp.io +Requires: pcp-libs = %{version}-%{release} +%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_python2} || !%{disable_python3} +# +# pcp-pmda-gluster +# +%package pmda-gluster +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Gluster filesystem +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: python-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-zswap +# +%package pmda-zswap +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for compressed swap +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: python-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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Unbound DNS Resolver +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: python-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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Intel MIC cards +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: python-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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for HAProxy +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp +%else +Requires: python-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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for virtual machines +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp +Requires: libvirt-python3 python3-lxml +BuildRequires: libvirt-python3 python3-lxml +%else +Requires: python-pcp +Requires: libvirt-python python-lxml +%if 0%{?rhel} == 0 || 0%{?rhel} > 5 +BuildRequires: libvirt-python python-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-lio +# +%package pmda-lio +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the LIO subsystem +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp +Requires: python3-rtslib +BuildRequires: python3-rtslib +%else +Requires: python-pcp +Requires: python-rtslib +BuildRequires: python-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-prometheus +# +%package pmda-prometheus +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics from Prometheus endpoints +URL: http://www.pcp.io +Requires: pcp-libs = %{version}-%{release} +%if !%{disable_python3} +Requires: python3-pcp +Requires: python3-requests +BuildRequires: python3-requests +%else +Requires: python-pcp +Requires: python-requests +BuildRequires: python-requests +%endif + +%description pmda-prometheus +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +extracting statistics from programs instrumented as Prometheus endpoints. +#end pcp-pmda-prometheus + +%endif # !%{disable_python2} || !%{disable_python3} + +%if !%{disable_json} +# +# pcp-pmda-json +# +%package pmda-json +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for JSON data +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp +Requires: python3-jsonpointer python3-six +BuildRequires: python3-jsonpointer python3-six +%else +Requires: python-pcp +Requires: python-jsonpointer python-six +BuildRequires: python-jsonpointer python-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 # !%{disable_json} + +# +# C pmdas +# pcp-pmda-apache +# +%package pmda-apache +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Apache webserver +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Bash shell +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the CIFS protocol +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Cisco routers +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the GFS2 filesystem +URL: http://www.pcp.io +Requires: 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-lmsensors +# +%package pmda-lmsensors +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for hardware sensors +URL: http://www.pcp.io +Requires: pcp-libs = %{version}-%{release} +%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-logger +# +%package pmda-logger +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics from arbitrary log files +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the sendmail queue +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for filesystem mounts +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the Nvidia GPU +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the room temperature +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} +Requires: 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 + +%if !%{disable_rpm} +# +# pcp-pmda-rpm +# +%package pmda-rpm +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for the RPM package manager +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} +Requires: pcp-libs = %{version}-%{release} +%description pmda-rpm +This package contains the PCP Performance Metrics Domain Agent (PMDA) for +collecting metrics about the installed RPM packages. +%endif +# end pcp-pmda-rpm + + +# +# pcp-pmda-sendmail +# +%package pmda-sendmail +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for Sendmail +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for shell command responses +URL: http://www.pcp.io +Requires: 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-summary +# +%package pmda-summary +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) summary metrics from pmie +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics from the Systemd journal +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics for application tracing +URL: http://www.pcp.io +Requires: 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+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) metrics from web server logs +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} +Requires: 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 + +# pcp-collector metapackage +%package collector +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) Collection meta Package +URL: http://www.pcp.io +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-kvm 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-vmware pcp-pmda-zimbra +Requires: pcp-pmda-dm pcp-pmda-apache +Requires: pcp-pmda-bash pcp-pmda-cisco pcp-pmda-gfs2 pcp-pmda-lmsensors pcp-pmda-mailq pcp-pmda-mounts +Requires: pcp-pmda-nvidia-gpu pcp-pmda-roomtemp pcp-pmda-sendmail pcp-pmda-shping +Requires: pcp-pmda-lustrecomm pcp-pmda-logger pcp-pmda-docker pcp-pmda-bind2 +%if !%{disable_nutcracker} +Requires: pcp-pmda-nutcracker +%endif +%if !%{disable_python2} || !%{disable_python3} +Requires: pcp-pmda-gluster pcp-pmda-zswap pcp-pmda-unbound pcp-pmda-mic +Requires: pcp-pmda-libvirt pcp-pmda-lio pcp-pmda-prometheus pcp-pmda-haproxy +%endif +%if !%{disable_snmp} +Requires: pcp-pmda-snmp +%endif +%if !%{disable_json} +Requires: pcp-pmda-json +%endif +%if !%{disable_rpm} +Requires: pcp-pmda-rpm +%endif +Requires: pcp-pmda-summary pcp-pmda-trace pcp-pmda-weblog +%description collector +This meta-package installs the PCP metric collection dependencies. This +includes the vast majority of packages used to collect PCP metrics. The +pcp-collector package also automatically enables and starts the pmcd and +pmlogger services. +# collector + +# pcp-monitor metapackage +%package monitor +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) Monitoring meta Package +URL: http://www.pcp.io +%if !%{disable_microhttpd} +Requires: pcp-webapi +%endif +%if !%{disable_python2} || !%{disable_python3} +Requires: pcp-system-tools +%endif +%if !%{disable_qt} +Requires: pcp-gui +%endif +%description monitor +This meta-package contains the PCP performance monitoring dependencies. This +includes a large number of packages for analysing PCP metrics in various ways. +# monitor + +%package zeroconf +License: GPLv2+ +Group: Applications/System +Summary: Performance Co-Pilot (PCP) Zeroconf Package +URL: http://www.pcp.io +Requires: pcp +Requires: pcp-pmda-dm pcp-pmda-nfsclient +%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} +# +# python-pcp. This is the PCP library bindings for python. +# +%package -n python-pcp +License: GPLv2+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) Python bindings and documentation +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +%if 0%{?rhel} == 5 +Requires: python%{default_python} +%else +Requires: python +%endif + +%description -n python-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+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) Python3 bindings and documentation +URL: http://www.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 + +%if !%{disable_python2} || !%{disable_python3} +# +# pcp-system-tools +# +%package system-tools +License: GPLv2+ +Group: Development/Libraries +Summary: Performance Co-Pilot (PCP) System and Monitoring Tools +URL: http://www.pcp.io +%if !%{disable_python3} +Requires: python3-pcp = %{version}-%{release} +%endif +%if !%{disable_python2} +Requires: python-pcp = %{version}-%{release} +%endif +Requires: pcp-libs = %{version}-%{release} + +%description system-tools +This PCP module contains additional system monitoring tools written +in python. +%endif #end pcp-system-tools + +%if !%{disable_qt} +# +# pcp-gui package for Qt tools +# +%package gui +License: GPLv2+ and LGPLv2+ and LGPLv2+ with exceptions +Group: Applications/System +Summary: Visualization tools for the Performance Co-Pilot toolkit +URL: http://www.pcp.io +Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release} +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 +Group: Documentation +%if !%{disable_noarch} +BuildArch: noarch +%endif +Summary: Documentation and tutorial for the Performance Co-Pilot +URL: http://www.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-pmda < 3.10.5 +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 +Group: Applications/System +Summary: Selinux policy package +URL: http://www.pcp.io +BuildRequires: selinux-policy-devel +BuildRequires: selinux-policy-targeted +%if 0%{?rhel} == 5 +BuildRequires: setools +%else +BuildRequires: setools-console +%endif +Requires: policycoreutils + +%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 -T -D -a 1 -c -n vector +%setup -q -T -D -a 2 -c -n grafana +%setup -q -T -D -a 3 -c -n graphite +%setup -q -T -D -a 4 -c -n blinkenlights +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 + +%clean +rm -Rf $RPM_BUILD_ROOT + +%build +%if !%{disable_python2} && 0%{?default_python} != 3 +export PYTHON=python%{?default_python} +%endif +%configure %{?_with_initd} %{?_with_doc} %{?_with_ib} %{?_with_papi} %{?_with_perfevent} %{?_with_json} %{?_with_snmp} %{?_with_nutcracker} +make %{?_smp_mflags} default_pcp + +%install +rm -Rf $RPM_BUILD_ROOT +export NO_CHOWN=true DIST_ROOT=$RPM_BUILD_ROOT +make install_pcp + +PCP_GUI='pmchart|pmconfirm|pmdumptext|pmmessage|pmquery|pmsnap|pmtime' + +# Fix stuff we do/don't want to ship +rm -f $RPM_BUILD_ROOT/%{_libdir}/*.a + +# remove sheet2pcp until BZ 830923 and BZ 754678 are resolved. +rm -f $RPM_BUILD_ROOT/%{_bindir}/sheet2pcp $RPM_BUILD_ROOT/%{_mandir}/man1/sheet2pcp.1* + +# remove {config,platform}sz.h as these are not multilib friendly. +rm -f $RPM_BUILD_ROOT/%{_includedir}/pcp/configsz.h +rm -f $RPM_BUILD_ROOT/%{_includedir}/pcp/platformsz.h + +%if %{disable_microhttpd} +rm -fr $RPM_BUILD_ROOT/%{_confdir}/pmwebd +rm -fr $RPM_BUILD_ROOT/%{_initddir}/pmwebd +rm -fr $RPM_BUILD_ROOT/%{_unitdir}/pmwebd.service +rm -f $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin/pmwebd +%endif +for app in vector grafana graphite blinkenlights; do + pwd + webapp=`find ../$app -mindepth 1 -maxdepth 1` + mv $webapp $RPM_BUILD_ROOT/%{_datadir}/pcp/webapps/$app +done + +%if %{disable_infiniband} +# remove pmdainfiniband on platforms lacking IB devel packages. +rm -f $RPM_BUILD_ROOT/%{_pmdasdir}/ib +rm -fr $RPM_BUILD_ROOT/%{_pmdasdir}/infiniband +%endif + +%if %{disable_selinux} +rm -fr $RPM_BUILD_ROOT/%{_selinuxdir} +%endif + +%if %{disable_qt} +rm -fr $RPM_BUILD_ROOT/%{_pixmapdir} +rm -fr $RPM_BUILD_ROOT/%{_hicolordir} +rm -fr $RPM_BUILD_ROOT/%{_confdir}/pmsnap +rm -fr $RPM_BUILD_ROOT/%{_localstatedir}/lib/pcp/config/pmsnap +rm -fr $RPM_BUILD_ROOT/%{_localstatedir}/lib/pcp/config/pmchart +rm -f $RPM_BUILD_ROOT/%{_localstatedir}/lib/pcp/config/pmafm/pcp-gui +rm -f $RPM_BUILD_ROOT/%{_datadir}/applications/pmchart.desktop +rm -f `find $RPM_BUILD_ROOT/%{_mandir}/man1 | grep -E "$PCP_GUI"` +%else +rm -rf $RPM_BUILD_ROOT/usr/share/doc/pcp-gui +desktop-file-validate $RPM_BUILD_ROOT/%{_datadir}/applications/pmchart.desktop +%endif + +# default chkconfig off for Fedora and RHEL +for f in $RPM_BUILD_ROOT/%{_initddir}/{pcp,pmcd,pmlogger,pmie,pmwebd,pmmgr,pmproxy}; do + test -f "$f" || continue + sed -i -e '/^# chkconfig/s/:.*$/: - 95 05/' -e '/^# Default-Start:/s/:.*$/:/' $f +done + +%if 0%{?fedora} > 26 +PCP_SYSCONFIG_DIR=%{_sysconfdir}/sysconfig +sed -i 's/^\#\ PMLOGGER_LOCAL.*/PMLOGGER_LOCAL=1/g' "$RPM_BUILD_ROOT/$PCP_SYSCONFIG_DIR/pmlogger" +sed -i 's/^\#\ PMCD_LOCAL.*/PMCD_LOCAL=1/g' "$RPM_BUILD_ROOT/$PCP_SYSCONFIG_DIR/pmcd" +%endif + +# list of PMDAs in the base pkg +ls -1 $RPM_BUILD_ROOT/%{_pmdasdir} |\ + grep -E -v '^simple|sample|trivial|txmon' |\ + grep -E -v '^perfevent|perfalloc.1' |\ + grep -E -v '^ib$|^infiniband' |\ + grep -E -v '^activemq' |\ + grep -E -v '^bonding' |\ + grep -E -v '^bind2' |\ + grep -E -v '^dbping' |\ + grep -E -v '^docker' |\ + grep -E -v '^ds389log'|\ + grep -E -v '^ds389' |\ + grep -E -v '^elasticsearch' |\ + grep -E -v '^gpfs' |\ + grep -E -v '^gpsd' |\ + grep -E -v '^kvm' |\ + grep -E -v '^lio' |\ + grep -E -v '^lustre' |\ + grep -E -v '^lustrecomm' |\ + grep -E -v '^memcache' |\ + grep -E -v '^mysql' |\ + grep -E -v '^named' |\ + grep -E -v '^netfilter' |\ + grep -E -v '^news' |\ + grep -E -v '^nfsclient' |\ + grep -E -v '^nginx' |\ + grep -E -v '^nutcracker' |\ + grep -E -v '^oracle' |\ + grep -E -v '^papi' |\ + grep -E -v '^pdns' |\ + grep -E -v '^postfix' |\ + grep -E -v '^postgresql' |\ + grep -E -v '^redis' |\ + grep -E -v '^rsyslog' |\ + grep -E -v '^samba' |\ + grep -E -v '^slurm' |\ + grep -E -v '^snmp' |\ + grep -E -v '^vmware' |\ + grep -E -v '^zimbra' |\ + grep -E -v '^dm' |\ + grep -E -v '^apache' |\ + grep -E -v '^bash' |\ + grep -E -v '^cifs' |\ + grep -E -v '^cisco' |\ + grep -E -v '^gfs2' |\ + grep -E -v '^libvirt' |\ + grep -E -v '^lmsensors' |\ + grep -E -v '^logger' |\ + grep -E -v '^mailq' |\ + grep -E -v '^mounts' |\ + grep -E -v '^nvidia' |\ + grep -E -v '^roomtemp' |\ + grep -E -v '^sendmail' |\ + grep -E -v '^shping' |\ + grep -E -v '^summary' |\ + grep -E -v '^trace' |\ + grep -E -v '^weblog' |\ + grep -E -v '^rpm' |\ + grep -E -v '^json' |\ + grep -E -v '^mic' |\ + grep -E -v '^gluster' |\ + grep -E -v '^zswap' |\ + grep -E -v '^unbound' |\ + grep -E -v '^haproxy' |\ + sed -e 's#^#'%{_pmdasdir}'\/#' >base_pmdas.list + +# all base pcp package files except those split out into sub packages +ls -1 $RPM_BUILD_ROOT/%{_bindir} |\ + grep -E -v 'pmiostat|pmcollectl|pmatop|zabbix|zbxpcp' |\ + grep -E -v 'pmrep|pcp2graphite|pcp2influxdb|pcp2zabbix' |\ + grep -E -v 'pcp2elasticsearch|pcp2json|pcp2xlsx|pcp2xml' |\ + grep -E -v 'pmdbg|pmclient|pmerr|genpmda' |\ +sed -e 's#^#'%{_bindir}'\/#' >base_bin.list +# +# Separate the pcp-system-tools package files. +# +# pmatop, pmcollectl and pmiostat are back-compat symlinks to their +# pcp(1) sub-command variants so must also be in pcp-system-tools. +%if !%{disable_python2} || !%{disable_python3} +ls -1 $RPM_BUILD_ROOT/%{_bindir} |\ + grep -E 'pmiostat|pmcollectl|pmatop|pmrep' |\ + sed -e 's#^#'%{_bindir}'\/#' >pcp_system_tools.list +ls -1 $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin |\ + grep -E 'atop|collectl|dmcache|free|iostat|mpstat|numastat|pidstat|tapestat|verify|uptime|shping' |\ + sed -e 's#^#'%{_libexecdir}/pcp/bin'\/#' >>pcp_system_tools.list +%endif + +ls -1 $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin |\ +%if !%{disable_python2} || !%{disable_python3} + grep -E -v 'atop|collectl|dmcache|free|iostat|mpstat|numastat|pidstat|tapestat|verify|uptime|shping' |\ +%endif + sed -e 's#^#'%{_libexecdir}/pcp/bin'\/#' >base_exec.list +ls -1 $RPM_BUILD_ROOT/%{_booksdir} |\ + sed -e 's#^#'%{_booksdir}'\/#' > pcp-doc.list +ls -1 $RPM_BUILD_ROOT/%{_mandir}/man1 |\ + sed -e 's#^#'%{_mandir}'\/man1\/#' >>pcp-doc.list +ls -1 $RPM_BUILD_ROOT/%{_mandir}/man5 |\ + sed -e 's#^#'%{_mandir}'\/man5\/#' >>pcp-doc.list +ls -1 $RPM_BUILD_ROOT/%{_datadir}/pcp/demos/tutorials |\ + sed -e 's#^#'%{_datadir}/pcp/demos/tutorials'\/#' >>pcp-doc.list +%if !%{disable_selinux} +ls -1 $RPM_BUILD_ROOT/%{_selinuxdir} |\ + sed -e 's#^#'%{_selinuxdir}'\/#' > pcp-selinux.list +%endif +%if !%{disable_qt} +ls -1 $RPM_BUILD_ROOT/%{_pixmapdir} |\ + sed -e 's#^#'%{_pixmapdir}'\/#' > pcp-gui.list +ls -1 $RPM_BUILD_ROOT/%{_hicolordir} |\ + sed -e 's#^#'%{_hicolordir}'\/#' >> pcp-gui.list +cat base_bin.list base_exec.list |\ + grep -E "$PCP_GUI" >> pcp-gui.list +%endif +ls -1 $RPM_BUILD_ROOT/%{_logconfdir}/ |\ + sed -e 's#^#'%{_logconfdir}'\/#' |\ + grep -E -v 'zeroconf' >pcp-logconf.list +cat base_pmdas.list base_bin.list base_exec.list pcp-logconf.list |\ + grep -E -v 'pmdaib|pmmgr|pmweb|pmsnap|2pcp|pmdas/systemd' |\ + grep -E -v "$PCP_GUI|pixmaps|hicolor|pcp-doc|tutorials|selinux" |\ + grep -E -v %{_confdir} | grep -E -v %{_logsdir} > base.list + +# all devel pcp package files except those split out into sub packages +ls -1 $RPM_BUILD_ROOT/%{_mandir}/man3 |\ +sed -e 's#^#'%{_mandir}'\/man3\/#' | grep -v '3pm' >>pcp-doc.list +ls -1 $RPM_BUILD_ROOT/%{_datadir}/pcp/demos |\ +sed -e 's#^#'%{_datadir}'\/pcp\/demos\/#' | grep -E -v tutorials >> devel.list +ls -1 $RPM_BUILD_ROOT/%{_bindir} |\ +grep -E 'pmdbg|pmclient|pmerr|genpmda' |\ +sed -e 's#^#'%{_bindir}'\/#' >>devel.list + +%pre testsuite +test -d %{_testsdir} || mkdir -p -m 755 %{_testsdir} +getent group pcpqa >/dev/null || groupadd -r pcpqa +getent passwd pcpqa >/dev/null || \ + useradd -c "PCP Quality Assurance" -g pcpqa -d %{_testsdir} -M -r -s /bin/bash pcpqa 2>/dev/null +chown -R pcpqa:pcpqa %{_testsdir} 2>/dev/null +exit 0 + +%post testsuite +chown -R pcpqa:pcpqa %{_testsdir} 2>/dev/null +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 +PCP_CONFIG_DIR=%{_localstatedir}/lib/pcp/config +PCP_SYSCONF_DIR=%{_confdir} +PCP_LOG_DIR=%{_logsdir} +PCP_ETC_DIR=%{_sysconfdir} +# rename crontab files to align with current Fedora packaging guidelines +for crontab in pmlogger pmie +do + test -f "$PCP_ETC_DIR/cron.d/$crontab" || continue + mv -f "$PCP_ETC_DIR/cron.d/$crontab" "$PCP_ETC_DIR/cron.d/pcp-$crontab" +done +# produce a script to run post-install to move configs to their new homes +save_configs_script() +{ + _new="$1" + shift + for _dir + do + [ "$_dir" = "$_new" ] && continue + if [ -d "$_dir" ] + then + ( cd "$_dir" ; find . -maxdepth 1 -type f ) | sed -e 's/^\.\///' \ + | while read _file + do + [ "$_file" = "control" ] && continue + _want=true + if [ -f "$_new/$_file" ] + then + # file exists in both directories, pick the more + # recently modified one + _try=`find "$_dir/$_file" -newer "$_new/$_file" -print` + [ -n "$_try" ] || _want=false + fi + $_want && echo cp -p "$_dir/$_file" "$_new/$_file" + done + fi + done +} +# migrate and clean configs if we have had a previous in-use installation +[ -d "$PCP_LOG_DIR" ] || exit 0 # no configuration file upgrades required +rm -f "$PCP_LOG_DIR/configs.sh" +for daemon in pmie pmlogger +do + save_configs_script >> "$PCP_LOG_DIR/configs.sh" "$PCP_CONFIG_DIR/$daemon" \ + "$PCP_SYSCONF_DIR/$daemon" +done +for daemon in pmcd pmproxy +do + save_configs_script >> "$PCP_LOG_DIR/configs.sh" "$PCP_SYSCONF_DIR/$daemon"\ + "$PCP_CONFIG_DIR/$daemon" /etc/$daemon +done +exit 0 + +%if !%{disable_microhttpd} +%preun webapi +if [ "$1" -eq 0 ] +then +%if !%{disable_systemd} + systemctl --no-reload disable pmwebd.service >/dev/null 2>&1 + systemctl stop pmwebd.service >/dev/null 2>&1 +%else + /sbin/service pmwebd stop >/dev/null 2>&1 + /sbin/chkconfig --del pmwebd >/dev/null 2>&1 +%endif +fi +%endif + +%preun manager +if [ "$1" -eq 0 ] +then +%if !%{disable_systemd} + systemctl --no-reload disable pmmgr.service >/dev/null 2>&1 + systemctl stop pmmgr.service >/dev/null 2>&1 +%else + /sbin/service pmmgr stop >/dev/null 2>&1 + /sbin/chkconfig --del pmmgr >/dev/null 2>&1 +%endif +fi + +%if !%{disable_rpm} +%preun pmda-rpm +%{pmda_remove "$1" "rpm"} +%endif #preun pmda-rpm + +%if !%{disable_papi} +%preun pmda-papi +%{pmda_remove "$1" "papi"} +%endif #preun pmda-papi + +%if !%{disable_systemd} +%preun pmda-systemd +%{pmda_remove "$1" "systemd"} +%endif #preun pmda-systemd + +%if !%{disable_infiniband} +%preun pmda-infiniband +%{pmda_remove "$1" "infiniband"} +%endif #preun pmda-infiniband + +%if !%{disable_perfevent} +%preun pmda-perfevent +%{pmda_remove "$1" "perfevent"} +%endif #preun pmda-perfevent + +%if !%{disable_json} +%preun pmda-json +%{pmda_remove "$1" "json"} +%endif #preun pmda-json + +%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"} + +%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-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-kvm +%{pmda_remove "$1" "kvm"} + +%preun pmda-lio +%{pmda_remove "$1" "lio"} + +%preun pmda-prometheus +%{pmda_remove "$1" "prometheus"} + +%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-vmware +%{pmda_remove "$1" "vmware"} + +%preun pmda-zimbra +%{pmda_remove "$1" "zimbra"} + +%preun pmda-dm +%{pmda_remove "$1" "dm"} + +%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"} +%endif # !%{disable_python[2,3]} + +%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-lmsensors +%{pmda_remove "$1" "lmsensors"} + +%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-summary +%{pmda_remove "$1" "summary"} + +%preun pmda-trace +%{pmda_remove "$1" "trace"} + +%preun pmda-weblog +%{pmda_remove "$1" "weblog"} + +%preun +if [ "$1" -eq 0 ] +then + # stop daemons before erasing the package + %if !%{disable_systemd} + %systemd_preun pmlogger.service + %systemd_preun pmie.service + %systemd_preun pmproxy.service + %systemd_preun pmcd.service + systemctl stop pmlogger.service >/dev/null 2>&1 + systemctl stop pmie.service >/dev/null 2>&1 + systemctl stop pmproxy.service >/dev/null 2>&1 + systemctl stop 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 + +%if !%{disable_microhttpd} +%post webapi +chown -R pcp:pcp %{_logsdir}/pmwebd 2>/dev/null +%if !%{disable_systemd} + systemctl condrestart pmwebd.service >/dev/null 2>&1 +%else + /sbin/chkconfig --add pmwebd >/dev/null 2>&1 + /sbin/service pmwebd condrestart +%endif +%endif + +%post manager +chown -R pcp:pcp %{_logsdir}/pmmgr 2>/dev/null +%if !%{disable_systemd} + systemctl condrestart pmmgr.service >/dev/null 2>&1 +%else + /sbin/chkconfig --add pmmgr >/dev/null 2>&1 + /sbin/service pmmgr condrestart +%endif + +%post collector +%if 0%{?rhel} +%if !%{disable_systemd} + systemctl restart pmcd >/dev/null 2>&1 + systemctl restart pmlogger >/dev/null 2>&1 + systemctl enable pmcd >/dev/null 2>&1 + systemctl enable 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 + +%post zeroconf +PCP_PMDAS_DIR=%{_pmdasdir} +PCP_SYSCONFIG_DIR=%{_sysconfdir}/sysconfig +# auto-install important PMDAs for RH Support +for PMDA in dm nfsclient ; do + touch "$PCP_PMDAS_DIR/$PMDA/.NeedInstall" +done +# increase default pmlogger recording frequency +sed -i 's/^\#\ PMLOGGER_INTERVAL.*/PMLOGGER_INTERVAL=10/g' "$PCP_SYSCONFIG_DIR/pmlogger" +# auto-enable these usually optional pmie rules +pmieconf -c enable dmthin +%if 0%{?rhel} +%if !%{disable_systemd} + systemctl restart pmcd >/dev/null 2>&1 + systemctl restart pmlogger >/dev/null 2>&1 + systemctl restart pmie >/dev/null 2>&1 + systemctl enable pmcd >/dev/null 2>&1 + systemctl enable pmlogger >/dev/null 2>&1 + systemctl enable 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 #zeroconf + +%if !%{disable_selinux} +%post selinux +%{selinux_handle_policy "$1" "pcpupstream.pp"} + +%triggerin selinux -- docker-selinux +%{selinux_handle_policy "$1" "pcpupstream-docker.pp"} + +%triggerin selinux -- container-selinux +%{selinux_handle_policy "$1" "pcpupstream-container.pp"} +%endif + +%post +PCP_LOG_DIR=%{_logsdir} +PCP_PMNS_DIR=%{_pmnsdir} +# restore saved configs, if any +test -s "$PCP_LOG_DIR/configs.sh" && source "$PCP_LOG_DIR/configs.sh" +rm -f $PCP_LOG_DIR/configs.sh + +chown -R pcp:pcp %{_logsdir}/pmcd 2>/dev/null +chown -R pcp:pcp %{_logsdir}/pmlogger 2>/dev/null +chown -R pcp:pcp %{_logsdir}/pmie 2>/dev/null +chown -R pcp:pcp %{_logsdir}/pmproxy 2>/dev/null +touch "$PCP_PMNS_DIR/.NeedRebuild" +chmod 644 "$PCP_PMNS_DIR/.NeedRebuild" +%if !%{disable_systemd} + %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 + systemctl condrestart pmproxy.service >/dev/null 2>&1 +%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 + +cd $PCP_PMNS_DIR && ./Rebuild -s && rm -f .NeedRebuild +cd + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + +%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 base.list +# +# Note: there are some headers (e.g. domain.h) and in a few cases some +# C source files that rpmlint complains about. These are not devel files, +# but rather they are (slightly obscure) PMDA config files. +# +%doc CHANGELOG COPYING INSTALL.md README.md VERSION.pcp pcp.lsm + +%dir %{_confdir} +%dir %{_pmdasdir} +%dir %{_datadir}/pcp +%dir %{_localstatedir}/lib/pcp +%dir %{_localstatedir}/lib/pcp/config +%dir %attr(0775,pcp,pcp) %{_tempsdir} +%dir %attr(0775,pcp,pcp) %{_tempsdir}/pmie +%dir %attr(0775,pcp,pcp) %{_tempsdir}/pmlogger +%dir %attr(0700,root,root) %{_tempsdir}/pmcd + +%dir %{_datadir}/pcp/lib +%{_datadir}/pcp/lib/ReplacePmnsSubtree +%{_datadir}/pcp/lib/bashproc.sh +%{_datadir}/pcp/lib/lockpmns +%{_datadir}/pcp/lib/pmdaproc.sh +%{_datadir}/pcp/lib/utilproc.sh +%{_datadir}/pcp/lib/rc-proc.sh +%{_datadir}/pcp/lib/rc-proc.sh.minimal +%{_datadir}/pcp/lib/unlockpmns + +%dir %attr(0775,pcp,pcp) %{_logsdir} +%attr(0775,pcp,pcp) %{_logsdir}/pmcd +%attr(0775,pcp,pcp) %{_logsdir}/pmlogger +%attr(0775,pcp,pcp) %{_logsdir}/pmie +%attr(0775,pcp,pcp) %{_logsdir}/pmproxy +%{_localstatedir}/lib/pcp/pmns +%{_initddir}/pcp +%{_initddir}/pmcd +%{_initddir}/pmlogger +%{_initddir}/pmie +%{_initddir}/pmproxy +%if !%{disable_systemd} +%{_unitdir}/pmcd.service +%{_unitdir}/pmlogger.service +%{_unitdir}/pmie.service +%{_unitdir}/pmproxy.service +%endif +%config(noreplace) %{_sysconfdir}/sasl2/pmcd.conf +%config(noreplace) %{_sysconfdir}/cron.d/pcp-pmlogger +%config(noreplace) %{_sysconfdir}/cron.d/pcp-pmie +%config(noreplace) %{_sysconfdir}/sysconfig/pmlogger +%config(noreplace) %{_sysconfdir}/sysconfig/pmproxy +%config(noreplace) %{_sysconfdir}/sysconfig/pmcd +%config %{_sysconfdir}/pcp.env +%dir %{_confdir}/pmcd +%config(noreplace) %{_confdir}/pmcd/pmcd.conf +%config(noreplace) %{_confdir}/pmcd/pmcd.options +%config(noreplace) %{_confdir}/pmcd/rc.local +%dir %{_confdir}/pmproxy +%config(noreplace) %{_confdir}/pmproxy/pmproxy.options +%dir %{_confdir}/pmie +%dir %{_confdir}/pmie/control.d +%config(noreplace) %{_confdir}/pmie/control +%config(noreplace) %{_confdir}/pmie/control.d/local +%dir %{_confdir}/pmlogger +%dir %{_confdir}/pmlogger/control.d +%config(noreplace) %{_confdir}/pmlogger/control +%config(noreplace) %{_confdir}/pmlogger/control.d/local +%dir %attr(0775,pcp,pcp) %{_confdir}/nssdb + +%ghost %{_localstatedir}/run/pcp +%{_localstatedir}/lib/pcp/config/pmafm +%dir %attr(0775,pcp,pcp) %{_localstatedir}/lib/pcp/config/pmie +%{_localstatedir}/lib/pcp/config/pmie +%{_localstatedir}/lib/pcp/config/pmieconf +%dir %attr(0775,pcp,pcp) %{_localstatedir}/lib/pcp/config/pmlogger +%{_localstatedir}/lib/pcp/config/pmlogger/* +%{_localstatedir}/lib/pcp/config/pmlogrewrite +%dir %attr(0775,pcp,pcp) %{_localstatedir}/lib/pcp/config/pmda + +%{_datadir}/bash-completion/completions/* +%{_datadir}/zsh/site-functions/_pcp + +%if !%{disable_sdt} +%{tapsetdir}/pmcd.stp +%endif + +%files monitor +#empty + +%files collector +#empty + +%files zeroconf +%{_localstatedir}/lib/pcp/config/pmlogconf/zeroconf + +#additional pmlogger config files + +%files conf +%dir %{_includedir}/pcp +%{_includedir}/pcp/builddefs +%{_includedir}/pcp/buildrules +%config %{_sysconfdir}/pcp.conf +%dir %{_localstatedir}/lib/pcp/config/derived +%config %{_localstatedir}/lib/pcp/config/derived/* + +%files libs +%{_libdir}/libpcp.so.3 +%{_libdir}/libpcp_gui.so.2 +%{_libdir}/libpcp_mmv.so.1 +%{_libdir}/libpcp_pmda.so.3 +%{_libdir}/libpcp_trace.so.2 +%{_libdir}/libpcp_import.so.1 +%{_libdir}/libpcp_web.so.1 + +%files libs-devel +%{_libdir}/libpcp.so +%{_libdir}/libpcp_gui.so +%{_libdir}/libpcp_mmv.so +%{_libdir}/libpcp_pmda.so +%{_libdir}/libpcp_trace.so +%{_libdir}/libpcp_import.so +%{_libdir}/libpcp_web.so +%{_libdir}/pkgconfig/libpcp.pc +%{_libdir}/pkgconfig/libpcp_pmda.pc +%{_libdir}/pkgconfig/libpcp_import.pc +%{_includedir}/pcp/*.h + +%files devel -f devel.list +%{_datadir}/pcp/examples + +# PMDAs that ship src and are not for production use +# straight out-of-the-box, for devel or QA use only. +%{_pmdasdir}/simple +%{_pmdasdir}/sample +%{_pmdasdir}/trivial +%{_pmdasdir}/txmon + +%files testsuite +%defattr(-,pcpqa,pcpqa) +%{_testsdir} + +%if !%{disable_microhttpd} +%files webapi +%{_initddir}/pmwebd +%if !%{disable_systemd} +%{_unitdir}/pmwebd.service +%endif +%{_libexecdir}/pcp/bin/pmwebd +%attr(0775,pcp,pcp) %{_logsdir}/pmwebd +%{_confdir}/pmwebd +%config(noreplace) %{_confdir}/pmwebd/pmwebd.options +# duplicate directories from pcp and pcp-webjs, but rpm copes with that. +%dir %{_datadir}/pcp +%dir %{_datadir}/pcp/webapps +%endif + +%files webjs +# duplicate directories from pcp and pcp-webapi, but rpm copes with that. +%dir %{_datadir}/pcp +%dir %{_datadir}/pcp/webapps +%{_datadir}/pcp/webapps/*.png +%{_datadir}/pcp/webapps/*.ico +%{_datadir}/pcp/webapps/*.html + +%files webapp-blinkenlights +%dir %{_datadir}/pcp +%dir %{_datadir}/pcp/webapps +%{_datadir}/pcp/webapps/blinkenlights + +%files webapp-grafana +%dir %{_datadir}/pcp +%dir %{_datadir}/pcp/webapps +%{_datadir}/pcp/webapps/grafana + +%files webapp-graphite +%dir %{_datadir}/pcp +%dir %{_datadir}/pcp/webapps +%{_datadir}/pcp/webapps/graphite + +%files webapp-vector +%dir %{_datadir}/pcp +%dir %{_datadir}/pcp/webapps +%{_datadir}/pcp/webapps/vector + +%files manager +%{_initddir}/pmmgr +%if !%{disable_systemd} +%{_unitdir}/pmmgr.service +%endif +%{_libexecdir}/pcp/bin/pmmgr +%attr(0775,pcp,pcp) %{_logsdir}/pmmgr +%config(missingok,noreplace) %{_confdir}/pmmgr +%config(noreplace) %{_confdir}/pmmgr/pmmgr.options + +%files import-sar2pcp +%{_bindir}/sar2pcp + +%files import-iostat2pcp +%{_bindir}/iostat2pcp + +%files import-mrtg2pcp +%{_bindir}/mrtg2pcp + +%files import-ganglia2pcp +%{_bindir}/ganglia2pcp + +%files import-collectl2pcp +%{_bindir}/collectl2pcp + +%if !%{disable_papi} +%files pmda-papi +%{_pmdasdir}/papi +%endif + +%if !%{disable_perfevent} +%files pmda-perfevent +%{_pmdasdir}/perfevent +%config(noreplace) %{_pmdasdir}/perfevent/perfevent.conf +%endif + +%if !%{disable_infiniband} +%files pmda-infiniband +%{_pmdasdir}/ib +%{_pmdasdir}/infiniband +%endif + +%files pmda-activemq +%{_pmdasdir}/activemq + +%files pmda-bonding +%{_pmdasdir}/bonding + +%files pmda-bind2 +%{_pmdasdir}/bind2 + +%files pmda-dbping +%{_pmdasdir}/dbping + +%files pmda-ds389log +%{_pmdasdir}/ds389log + +%files pmda-ds389 +%{_pmdasdir}/ds389 + +%files pmda-elasticsearch +%{_pmdasdir}/elasticsearch + +%files pmda-gpfs +%{_pmdasdir}/gpfs + +%files pmda-gpsd +%{_pmdasdir}/gpsd + +%files pmda-kvm +%{_pmdasdir}/kvm + +%files pmda-docker +%{_pmdasdir}/docker + +%files pmda-lio +%{_pmdasdir}/lio + +%files pmda-prometheus +%{_pmdasdir}/prometheus + +%files pmda-lustre +%{_pmdasdir}/lustre + +%files pmda-lustrecomm +%{_pmdasdir}/lustrecomm + +%files pmda-memcache +%{_pmdasdir}/memcache + +%files pmda-mysql +%{_pmdasdir}/mysql + +%files pmda-named +%{_pmdasdir}/named + +%files pmda-netfilter +%{_pmdasdir}/netfilter + +%files pmda-news +%{_pmdasdir}/news + +%files pmda-nginx +%{_pmdasdir}/nginx + +%files pmda-nfsclient +%{_pmdasdir}/nfsclient + +%if !%{disable_nutcracker} +%files pmda-nutcracker +%{_pmdasdir}/nutcracker +%endif + +%files pmda-oracle +%{_pmdasdir}/oracle + +%files pmda-pdns +%{_pmdasdir}/pdns + +%files pmda-postfix +%{_pmdasdir}/postfix + +%files pmda-postgresql +%{_pmdasdir}/postgresql + +%files pmda-redis +%{_pmdasdir}/redis + +%files pmda-rsyslog +%{_pmdasdir}/rsyslog + +%files pmda-samba +%{_pmdasdir}/samba + +%if !%{disable_snmp} +%files pmda-snmp +%{_pmdasdir}/snmp +%endif + +%files pmda-slurm +%{_pmdasdir}/slurm + +%files pmda-vmware +%{_pmdasdir}/vmware + +%files pmda-zimbra +%{_pmdasdir}/zimbra + +%files pmda-dm +%{_pmdasdir}/dm + +%if !%{disable_python2} || !%{disable_python3} +%files pmda-gluster +%{_pmdasdir}/gluster + +%files pmda-zswap +%{_pmdasdir}/zswap + +%files pmda-unbound +%{_pmdasdir}/unbound + +%files pmda-mic +%{_pmdasdir}/mic + +%files pmda-haproxy +%{_pmdasdir}/haproxy + +%files pmda-libvirt +%{_pmdasdir}/libvirt + +%if !%{disable_elasticsearch} +%files export-pcp2elasticsearch +%{_bindir}/pcp2elasticsearch +%endif + +%files export-pcp2graphite +%{_bindir}/pcp2graphite + +%files export-pcp2influxdb +%{_bindir}/pcp2influxdb + +%files export-pcp2json +%{_bindir}/pcp2json + +%if !%{disable_xlsx} +%files export-pcp2xlsx +%{_bindir}/pcp2xlsx +%endif + +%files export-pcp2xml +%{_bindir}/pcp2xml + +%files export-pcp2zabbix +%{_bindir}/pcp2zabbix +%endif # !%{disable_python2} || !%{disable_python3} + +%files export-zabbix-agent +%{_libdir}/zabbix + +%if !%{disable_json} +%files pmda-json +%{_pmdasdir}/json +%endif + +%files pmda-apache +%{_pmdasdir}/apache + +%files pmda-bash +%{_pmdasdir}/bash + +%files pmda-cifs +%{_pmdasdir}/cifs + +%files pmda-cisco +%{_pmdasdir}/cisco + +%files pmda-gfs2 +%{_pmdasdir}/gfs2 + +%files pmda-lmsensors +%{_pmdasdir}/lmsensors + +%files pmda-logger +%{_pmdasdir}/logger + +%files pmda-mailq +%{_pmdasdir}/mailq + +%files pmda-mounts +%{_pmdasdir}/mounts + +%files pmda-nvidia-gpu +%{_pmdasdir}/nvidia + +%files pmda-roomtemp +%{_pmdasdir}/roomtemp + +%if !%{disable_rpm} +%files pmda-rpm +%{_pmdasdir}/rpm +%endif + +%files pmda-sendmail +%{_pmdasdir}/sendmail + +%files pmda-shping +%{_pmdasdir}/shping + +%files pmda-summary +%{_pmdasdir}/summary + +%if !%{disable_systemd} +%files pmda-systemd +%{_pmdasdir}/systemd +%endif + +%files pmda-trace +%{_pmdasdir}/trace + +%files pmda-weblog +%{_pmdasdir}/weblog + +%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 + +%if !%{disable_python2} +%files -n python-pcp -f python-pcp.list.rpm +%endif + +%if !%{disable_python3} +%files -n python3-pcp -f python3-pcp.list.rpm +%endif + +%if !%{disable_qt} +%files gui -f pcp-gui.list + +%{_confdir}/pmsnap +%config(noreplace) %{_confdir}/pmsnap/control +%{_localstatedir}/lib/pcp/config/pmsnap +%{_localstatedir}/lib/pcp/config/pmchart +%{_localstatedir}/lib/pcp/config/pmafm/pcp-gui +%{_datadir}/applications/pmchart.desktop +%endif + +%files doc -f pcp-doc.list + +%if !%{disable_selinux} +%files selinux -f pcp-selinux.list +%endif + +%if !%{disable_python2} || !%{disable_python3} +%files system-tools -f pcp_system_tools.list +%dir %{_confdir}/pmrep +%config(noreplace) %{_confdir}/pmrep/pmrep.conf +%endif + +%changelog +* Mon Jan 29 2018 Lukas Berk - 3.12.2-5 +- Correction to spec file and selinux policy (BZ 1488116) +- Show all perfevent metrics in pcpatop (BZ 1525864) +- Multilib corrections (BZ 1537623) + +* Wed Nov 29 2017 Nathan Scott - 3.12.2-4 +- Correction to selinux.patch embedded spec file change + +* Wed Nov 29 2017 Nathan Scott - 3.12.2-3 +- Update Source2 for external grafana webapp (BZ 1516933) +- Remove an unhelpful log metadata diagnostic (BZ 1472153) + +* Tue Nov 28 2017 Lukas Berk - 3.12.2-2 +- Selinux policy updates (BZs 1517655,1517656,1480447,1505888,1515928,1517281,1517862) +- Multilib corrections (BZ 1513503) + +* Fri Oct 20 2017 Lukas Berk - 3.12.2-1 +- Selinux policy updates (BZs 1459165,1460131,1488116,1447585,1449671) +- PCP bash completions not working (BZ 1482605) +- pmdabash man page fix (BZ 1459907) + +* Wed Jun 14 2017 Nathan Scott - 3.11.8-7 +- Fix problems in the new pcp-zeroconf sub-package (BZ 1456609) + +* Mon May 8 2017 Lukas Berk - 3.11.8-5 +- Removed pmdalibvirt dep for collector on aarch64 (BZ 1432007) + +* Fri Apr 21 2017 Nathan Scott - 3.11.8-4 +- Enable collecting POWER9 NEST PMU perf metrics (BZ 1419490) +- SELinux policy updates (BZs 1381301,1432086,1433271,1443632) +- zeroconf package added (BZs 1211432, 1371950) + +* Thu Mar 02 2017 Nathan Scott - 3.11.8-3 +- Rebuild with the correct (previous) version of Vector. + +* Wed Mar 01 2017 Nathan Scott - 3.11.8-2 +- Drop pcp-pmda-nutcracker package, missing deps (BZ 1425880) +- Incorporate several fixes from Coverity scan review. + +* Mon Feb 20 2017 Dave Brolley - 3.11.8-1 +- Latest upstream PCP, dropping all earlier patches (BZ 1423020) + +* Fri Aug 26 2016 Lukas Berk - 3.11.3-4 +- pcp-pmda-ds389log uses dirsrv user instead of nobody + +* Fri Aug 05 2016 Nathan Scott - 3.11.3-3 +- Install the missing /etc/pcp/nssdb directory (BZ 1360206) +- pcp-pmda-ds389 requires perl-LDAP dependency (BZ 1357605) +- Switch pcp-pmda-ds389log to the dirsrv user (BZ 1357607) +- pcp-pmda-ds389log requires perl-Date-Manip (BZ 1354055) +- Remove multi-archive loglabel timezone check (BZ 1351223) + +* Thu Jul 07 2016 Nathan Scott - 3.11.3-2 +- Export filesys metrics with persistent DM naming (BZ 1349932) + +* Fri Jun 17 2016 Nathan Scott - 3.11.3-1 +- Latest upstream PCP, dropping all earlier patches (BZ 1284307) +- Minimal package dependencies for PMAPI applications (BZ 1298993) +- Resolve perl Net:SNMP pmdasnmp dependency problem (BZ 1332624) +- Improve time taken to detect pmcd startup failure (BZ 1336210) +- Fix cron service stopping disabled pmie/pmlogger (BZ 1336792) +- Fix instance domain handling in derived metrics (BZ 1337212) +- Include latest Oracle database PMDA enhancements (BZ 1340430) +- Workaround valgrind failure for pmmgr test case (BZ 1343319) + +* Mon May 02 2016 Nathan Scott - 3.11.2-1 +- Improve PMAPI python clients signal handling (BZ 1238550) +- Fix issues in postfix PMDA search for mail log (BZ 1252308) +- Fix local_sock() souble free error in perl API (BZ 1258860) +- Fix sigsegv in pcp-uptime(1) --archive option (BZ 1262721) +- Update to current stable PCP version (BZ 1284307) +- Fix pcp-compat dependency drawing in many packages (BZ 1293466) +- Support for per-processor softnet kernel metrics (BZ 1316085) +- Fix GFS2 PMDA Install script PMNS parsing error (BZ 1320591) +- Report Docker version 1.10+ container information (BZ 1327737) + +* Mon Aug 24 2015 Nathan Scott - 3.10.6-2 +- Fixes targetting several QE reported test failures (BZ 1241591) +- Remove tool-specific interval settings for pmlogconf (BZ 1243809) + +* Wed Aug 05 2015 Nathan Scott - 3.10.6-1 +- Export the softnet_stat kernel networking metrics (BZ 1190912) +- Latest upstream PCP, dropping all earlier patches (BZ 1200584) +- Re-enable the pcp-pmda-jsonpointer package build (BZ 1238134) +- Fix failing test cases and bugs from Red Hat QE (BZ 1241591) +- pcp2graphite support for exporting from archives (BZ 1242622) +- Remove percpu interrupt metrics from default set (BZ 1243809) +- pcp-collector meta-package enables pmcd+pmlogger (BZ 1249090) + +* Thu Jul 16 2015 Nathan Scott - 3.10.5-5 +- Disable pcp-pmda-json, waiting on missing dependency (BZ 1238134) + +* Wed Jul 08 2015 Dave Brolley - 3.10.5-4 +- Fix concurrency (locking) problem discovered by coverity (BZ 1237412) + +* Mon Jul 06 2015 Dave Brolley - 3.10.5-3 +- Update with missing package dependency for pmda-lustrecomm. +- Rebuild to pickup bintils fix (BZ 1238469) + +* Thu Jun 18 2015 Dave Brolley - 3.10.5-2 +- Update to latest PCP sources (BZ 1200584) +- Support for per-containtainer cgroup metrics (BZ 1121218) +- Allow pmlogger/pmie start when not chkconfig on (BZ 1186012) +- No pmlogger_daily messages when not chkconfig on (BZ 1208699) +- Fix pmdamounts potential stack corruption (BZ 1213833) +- Tackle numerous testsuite issues on aarch64 (BZ 1190680) +- Tackle numerous testsuite issues on ppc64le (BZ 1194244) +- Allow pmlogger to run in local context mode (BZ 1129539) +- Deprecate hinv.map.lvname for hinv.map.dmname (BZ 1109539) + +* Mon Nov 24 2014 Nathan Scott - 3.9.10-8 +- Respin with QA archive missing from last patch (BZ 1161515) + +* Mon Nov 24 2014 Nathan Scott - 3.9.10-7 +- Tackle bugs and test failures found by QE (BZ 1161515) +- Resolve pcp web packaging issues, regression (BZ 1163560) + +* Fri Oct 17 2014 Frank Ch. Eigler - 3.9.10-6 +- Fix BZ1152503 (pcp rebuild - qmake workaround) +- Fix BZ1152535 (systemd daemon-reload) + +* Thu Oct 16 2014 Nathan Scott - 3.9.10-5 +- Fix script locations for systemd services (BZ 1147400) + +* Fri Sep 05 2014 Frank Ch. Eigler - 3.9.10-4 +- Add pcpfans add-ons. +- Correct webapi subrpm license tag + +* Fri Sep 05 2014 Lukas Berk - 3.9.10-2 +- Add condition for disable_papi on arch and rhel version + +* Fri Sep 05 2014 Nathan Scott - 3.9.10-1 +- Convert PCP init scripts to systemd services (BZ 1044682) +- Improve hinv device mapper metric instances (BZ 1109539) +- Fix pmcollect dev instance domain handling (BZ 1097095) +- Remove bogus pmlogger_daily cron messages (BZ 1125700) +- Update to latest PCP sources (BZ 1107734). + +* Wed Feb 26 2014 Nathan Scott - 3.8.10-8 +- Update pmmgr to pcp 3.9.0+ level (BZ 1067547) + +* Tue Feb 25 2014 Nathan Scott - 3.8.10-7 +- Fix a handful of QE-found test-induced failures (BZ 987086) +- Multilib packaging support for libs and devel (BZ 1059642) + +* Tue Feb 18 2014 Nathan Scott - 3.8.10-6 +- Added missing qualified output for test qa/844 (BZ 1064311) +- Fix pmdalinux memory corruption issue on s390x (BZ 1064254) +- PMDA installation works without a running pmcd (BZ 1062443) +- Fix some more issues in pcpqa account creation (BZ 1025688) + +* Mon Feb 10 2014 Nathan Scott - 3.8.10-5 +- Resolve pmdammv induced pmcd segv during tests (BZ 1061330) +- Fix python-pcp time API wrapper implementation (BZ 1062467) + +* Wed Jan 29 2014 Nathan Scott - 3.8.10-4 +- Ensure the PMNS stdpmid files are installed (BZ 1059004) + +* Fri Jan 24 2014 Daniel Mach - 3.8.10-3 +- Mass rebuild 2014-01-24 + +* Wed Jan 22 2014 Nathan Scott - 3.8.10-2 +- Fix pmdalinux failure on unexpected ICMP types (BZ 1055826) +- Add man pages for all of the PMDAs missing out (BZ 1053094) + +* Wed Jan 15 2014 Nathan Scott - 3.8.10-1 +- Add symbol-versioning for PCP shared libraries (BZ 1037771) +- Fix pmcd/Avahi interaction with multiple ports (BZ 1035513) +- Confine set of exported symbols from DSO PMDAs (BZ 1025694) +- Ensure pcpqa user created by pcp-testsuite rpm (BZ 1025688) +- Remove empty pmlogger configuration directory (BZ 1025599) +- Resolve warning messages from pcp rpm scripts (BZ 1025587) +- Remove world-writeable private temp directory (BZ 1025583) +- Tackle remaining failing pcp-testsuite cases (BZ 987086) +- Update to latest PCP sources. + +* Fri Dec 27 2013 Daniel Mach - 3.8.6-3 +- Mass rebuild 2013-12-27 + +* Wed Nov 06 2013 Frank Ch. Eigler - 3.8.6-2 +- BZ1027236: adapt to droppage of nss export ciphers + +* 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. +- Correct pcp Infiniband package dependencies (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