diff --git a/.gitignore b/.gitignore
index 0879f46..8e0e9cb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
-SOURCES/pcp-3.12.2.src.tar.gz
+SOURCES/pcp-4.1.0.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
+SOURCES/pcp-webapp-vector-1.2.2.tar.gz
diff --git a/.pcp.metadata b/.pcp.metadata
index 889a361..09679c7 100644
--- a/.pcp.metadata
+++ b/.pcp.metadata
@@ -1,5 +1,5 @@
-9d9ad460d7e521106195d039cf7c0c4113617330 SOURCES/pcp-3.12.2.src.tar.gz
+2a14c6ff648b78f6891cbc9a13f6e7b6e5c1c93b SOURCES/pcp-4.1.0.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
+29ebb6bf0c60307c3467b044b32ba874627a20e2 SOURCES/pcp-webapp-vector-1.2.2.tar.gz
diff --git a/SOURCES/logmeta.patch b/SOURCES/logmeta.patch
deleted file mode 100644
index c2c96b8..0000000
--- a/SOURCES/logmeta.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-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/redhat-bugzilla-1597975.patch b/SOURCES/redhat-bugzilla-1597975.patch
new file mode 100644
index 0000000..c4dd360
--- /dev/null
+++ b/SOURCES/redhat-bugzilla-1597975.patch
@@ -0,0 +1,83 @@
+From 6476a7e81eba04a729380b813d6555cdca2acb1a Mon Sep 17 00:00:00 2001
+From: Marko Myllynen <myllynen@redhat.com>
+Date: Thu, 5 Jul 2018 08:59:35 +0300
+Subject: [PATCH] pmdabcc: fix ext4dist/xfsdist for RHEL 7 kernel
+
+RHEL 7 kernel is unlike Fedora / upstream kernels, apply the
+corresponding change done in latest RHEL 7 bcc as well.
+---
+ src/pmdas/bcc/modules/fs/ext4dist.bpf    | 1 +
+ src/pmdas/bcc/modules/fs/ext4dist.python | 8 ++++----
+ src/pmdas/bcc/modules/fs/xfsdist.bpf     | 1 +
+ src/pmdas/bcc/modules/fs/xfsdist.python  | 8 ++++----
+ 4 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/src/pmdas/bcc/modules/fs/ext4dist.bpf b/src/pmdas/bcc/modules/fs/ext4dist.bpf
+index 4f41d62..dd57cf3 100644
+--- a/src/pmdas/bcc/modules/fs/ext4dist.bpf
++++ b/src/pmdas/bcc/modules/fs/ext4dist.bpf
+@@ -3,6 +3,7 @@
+ 
+ #include <uapi/linux/ptrace.h>
+ #include <linux/fs.h>
++#include <linux/aio.h>
+ #include <linux/sched.h>
+ 
+ #define OP_NAME_LEN 8
+diff --git a/src/pmdas/bcc/modules/fs/ext4dist.python b/src/pmdas/bcc/modules/fs/ext4dist.python
+index 610abd3..961a03c 100644
+--- a/src/pmdas/bcc/modules/fs/ext4dist.python
++++ b/src/pmdas/bcc/modules/fs/ext4dist.python
+@@ -91,12 +91,12 @@ class PCPBCCModule(PCPBCCBase):
+                 self.log("\n" + bpf_text)
+ 
+             self.bpf = BPF(text=bpf_text)
+-            self.bpf.attach_kprobe(event="generic_file_read_iter", fn_name="trace_read_entry")
+-            self.bpf.attach_kprobe(event="ext4_file_write_iter", fn_name="trace_entry")
++            self.bpf.attach_kprobe(event="generic_file_aio_read", fn_name="trace_read_entry")
++            self.bpf.attach_kprobe(event="ext4_file_write", fn_name="trace_entry")
+             self.bpf.attach_kprobe(event="ext4_file_open", fn_name="trace_entry")
+             self.bpf.attach_kprobe(event="ext4_sync_file", fn_name="trace_entry")
+-            self.bpf.attach_kretprobe(event="generic_file_read_iter", fn_name="trace_read_return")
+-            self.bpf.attach_kretprobe(event="ext4_file_write_iter", fn_name="trace_write_return")
++            self.bpf.attach_kretprobe(event="generic_file_aio_read", fn_name="trace_read_return")
++            self.bpf.attach_kretprobe(event="ext4_file_write", fn_name="trace_write_return")
+             self.bpf.attach_kretprobe(event="ext4_file_open", fn_name="trace_open_return")
+             self.bpf.attach_kretprobe(event="ext4_sync_file", fn_name="trace_fsync_return")
+             self.log("Compiled.")
+diff --git a/src/pmdas/bcc/modules/fs/xfsdist.bpf b/src/pmdas/bcc/modules/fs/xfsdist.bpf
+index 66aeae5..4c539f9 100644
+--- a/src/pmdas/bcc/modules/fs/xfsdist.bpf
++++ b/src/pmdas/bcc/modules/fs/xfsdist.bpf
+@@ -3,6 +3,7 @@
+ 
+ #include <uapi/linux/ptrace.h>
+ #include <linux/fs.h>
++#include <linux/aio.h>
+ #include <linux/sched.h>
+ 
+ #define OP_NAME_LEN 8
+diff --git a/src/pmdas/bcc/modules/fs/xfsdist.python b/src/pmdas/bcc/modules/fs/xfsdist.python
+index a1ebc62..d460983 100644
+--- a/src/pmdas/bcc/modules/fs/xfsdist.python
++++ b/src/pmdas/bcc/modules/fs/xfsdist.python
+@@ -73,12 +73,12 @@ class PCPBCCModule(PCPBCCBase):
+                 self.log("\n" + bpf_text)
+ 
+             self.bpf = BPF(text=bpf_text)
+-            self.bpf.attach_kprobe(event="xfs_file_read_iter", fn_name="trace_entry")
+-            self.bpf.attach_kprobe(event="xfs_file_write_iter", fn_name="trace_entry")
++            self.bpf.attach_kprobe(event="xfs_file_aio_read", fn_name="trace_entry")
++            self.bpf.attach_kprobe(event="xfs_file_aio_write", fn_name="trace_entry")
+             self.bpf.attach_kprobe(event="xfs_file_open", fn_name="trace_entry")
+             self.bpf.attach_kprobe(event="xfs_file_fsync", fn_name="trace_entry")
+-            self.bpf.attach_kretprobe(event="xfs_file_read_iter", fn_name="trace_read_return")
+-            self.bpf.attach_kretprobe(event="xfs_file_write_iter", fn_name="trace_write_return")
++            self.bpf.attach_kretprobe(event="xfs_file_aio_read", fn_name="trace_read_return")
++            self.bpf.attach_kretprobe(event="xfs_file_aio_write", fn_name="trace_write_return")
+             self.bpf.attach_kretprobe(event="xfs_file_open", fn_name="trace_open_return")
+             self.bpf.attach_kretprobe(event="xfs_file_fsync", fn_name="trace_fsync_return")
+             self.log("Compiled.")
+-- 
+1.8.3.1
+
diff --git a/SOURCES/redhat-bugzilla-1603596.patch b/SOURCES/redhat-bugzilla-1603596.patch
new file mode 100644
index 0000000..6975b21
--- /dev/null
+++ b/SOURCES/redhat-bugzilla-1603596.patch
@@ -0,0 +1,411 @@
+diff -Naurp pcp-4.1.0-orig/qa/1141 pcp-4.1.0/qa/1141
+--- pcp-4.1.0-orig/qa/1141	2017-12-18 09:31:30.000000000 +1100
++++ pcp-4.1.0/qa/1141	2018-09-05 08:46:05.578019776 +1000
+@@ -17,6 +17,8 @@ policy_name="pcpqaqaqaqa"
+ policy_file="$PCP_VAR_DIR/selinux/pcpupstream.pp"
+ which sedismod >/dev/null 2>&1 || _notrun "sedismod tool not installed (module disassembly)"
+ which semodule >/dev/null 2>&1 || _notrun "semodule tool not installed"
++$sudo semodule -l >/dev/null 2>&1
++[ $? -eq 0 ] || _notrun "semodule -l fails"
+ which seinfo >/dev/null 2>&1 || _notrun "seinfo tool not installed"
+ [ -f "$policy_file" ] || _notrun "upstream policy package not installed"
+ #if a matching module is already installed
+diff -Naurp pcp-4.1.0-orig/qa/917.out.in pcp-4.1.0/qa/917.out.in
+--- pcp-4.1.0-orig/qa/917.out.in	2018-05-09 07:50:53.000000000 +1000
++++ pcp-4.1.0/qa/917.out.in	2018-09-05 08:46:47.973426601 +1000
+@@ -16,11 +16,11 @@ decl 1:
+   allow [pcp_pmcd_t] [sysctl_net_t] : [dir] { search };
+   allow [pcp_pmcd_t] [sysctl_net_t] : [file] { getattr open read };
+   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] [debugfs_t] : [dir] { read search };
++  allow [pcp_pmcd_t] [debugfs_t] : [file] { append getattr ioctl open read write };
+   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] { getattr read open unlink };
+-  allow [pcp_pmcd_t] self : [capability] { kill sys_ptrace net_admin chown ipc_owner sys_resource };
++  allow [pcp_pmcd_t] self : [capability] { kill sys_ptrace net_admin chown ipc_lock ipc_owner sys_resource };
+   allow [pcp_pmcd_t] [initctl_t] : [fifo_file] { getattr };
+   allow [pcp_pmcd_t] [proc_kcore_t] : [file] { getattr };
+   allow [pcp_pmcd_t] self : [cap_userns] { sys_ptrace };
+@@ -36,8 +36,8 @@ decl 1:
+   allow [pcp_pmcd_t] [hostname_exec_t] : [file] { execute execute_no_trans getattr open read };
+   allow [pcp_pmcd_t] [tracefs_t] : [filesystem] { mount };
+   allow [pcp_pmcd_t] [tracefs_t] : [dir] { open read search };
+-  allow [pcp_pmcd_t] [tracefs_t] : [file] { append open read };
+-  allow [pcp_pmcd_t] [gconf_home_t] : [dir] { search };
++  allow [pcp_pmcd_t] [tracefs_t] : [file] { append getattr open read write };
++  allow [pcp_pmcd_t] [gconf_home_t] : [dir] { open read search getattr };
+   allow [pcp_pmcd_t] [virt_etc_t] : [dir] { search };
+   allow [pcp_pmcd_t] [virt_etc_t] : [file] { open read };
+   allow [pcp_pmcd_t] [virtd_t] : [unix_stream_socket] { connectto };
+@@ -55,6 +55,7 @@ decl 1:
+   allow [pcp_pmcd_t] [httpd_t] : [shm] { unix_read associate getattr };
+   allow [pcp_pmcd_t] [httpd_t] : [sem] { unix_read associate getattr };
+   allow [pcp_pmcd_t] [sysfs_t] : [dir] { write };
++  allow [pcp_pmcd_t] [modules_object_t] : [lnk_file] { read };
+   allow [pcp_pmcd_t] [hugetlbfs_t] : [dir] { open read };
+   allow [pcp_pmcd_t] [mdadm_exec_t] : [file] { execute execute_no_trans open read };
+   allow [pcp_pmcd_t] [proc_mdstat_t] : [file] { getattr open read };
+@@ -65,6 +66,12 @@ decl 1:
+   allow [pcp_pmcd_t] [glusterd_t] : [unix_stream_socket] { connectto };
+   allow [pcp_pmcd_t] [glusterd_var_lib_t] : [dir] { search };
+   allow [pcp_pmcd_t] [mozilla_plugin_t] : [sem] { unix_read };
++  allow [pcp_pmcd_t] self : [process] { execmem setrlimit };
++  allow [pcp_pmcd_t] [system_map_t] : [file] { ioctl open read };
++  allow [pcp_pmcd_t] [sysctl_irq_t] : [dir] { search };
++  allow [pcp_pmcd_t] [init_t] : [shm] { unix_read };
++  allow [pcp_pmcd_t] [gpsd_t] : [shm] { associate getattr };
++  allow [pcp_pmcd_t] [default_t] : [file] { 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 };
+@@ -74,10 +81,12 @@ decl 1:
+   allow [pcp_pmlogger_t] [unconfined_t] : [process] { signal };
+   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] [unconfined_t] : [unix_stream_socket] { connectto };
+   allow [pcp_pmlogger_t] [user_home_dir_t] : [dir] { search };
+   allow [pcp_pmlogger_t] [kernel_t] : [unix_dgram_socket] { sendto };
++  allow [pcp_pmlogger_t] [home_bin_t] : [dir] { search };
+   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] self : [capability] { kill dac_override sys_ptrace net_admin chown fowner };
+   allow [pcp_pmie_t] [init_t] : [unix_stream_socket] { connectto };
+   allow [pcp_pmie_t] [initrc_var_run_t] : [file] { lock open read };
+   allow [pcp_pmie_t] [init_t] : [system] { status };
+@@ -89,6 +98,7 @@ decl 1:
+   allow [pcp_pmie_t] [kmsg_device_t] : [chr_file] { open };
+   allow [pcp_pmie_t] [pcp_pmcd_t] : [process] { signal };
+   allow [pcp_pmie_t] [init_exec_t] : [file] { getattr };
++  allow [pcp_pmie_t] [user_home_dir_t] : [dir] { search };
+   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 };
+@@ -98,7 +108,7 @@ decl 1:
+   allow [pcp_pmcd_t] [modules_object_t] : [dir] { search };
+   allow [pcp_pmcd_t] [modules_object_t] : [file] { getattr open read };
+   allow [pcp_pmcd_t] [saslauthd_t] : [unix_stream_socket] { connectto };
+-  allow [pcp_pmproxy_t] self : [capability] { net_admin };
++  allow [pcp_pmproxy_t] self : [capability] { dac_override 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 };
+@@ -109,4 +119,5 @@ decl 1:
+   allow [pcp_pmcd_t] [fsadm_exec_t] : [file] { execute execute_no_trans getattr open read };
+   allow [pcp_pmcd_t] [fsadm_exec_t] : [file] { map };
+   allow [pcp_pmcd_t] self : [capability] { sys_rawio };
++  allow [pcp_pmcd_t] [redis_port_t] : [tcp_socket] { name_connect };
+ 
+diff -Naurp pcp-4.1.0-orig/src/pmlogger/pmlogger_check.sh pcp-4.1.0/src/pmlogger/pmlogger_check.sh
+--- pcp-4.1.0-orig/src/pmlogger/pmlogger_check.sh	2018-06-12 20:18:14.000000000 +1000
++++ pcp-4.1.0/src/pmlogger/pmlogger_check.sh	2018-09-05 08:47:39.165710353 +1000
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ #
+-# Copyright (c) 2013-2016 Red Hat.
++# Copyright (c) 2013-2016,2018 Red Hat.
+ # Copyright (c) 1995-2000,2003 Silicon Graphics, Inc.  All Rights Reserved.
+ # 
+ # This program is free software; you can redistribute it and/or modify it
+@@ -160,6 +160,13 @@ then
+     exit
+ fi
+ 
++_compress_now()
++{
++    # If $PCP_COMPRESSAFTER=0 in the control file(s), compress archives now.
++    # Invoked just before exit when this script has finished successfully.
++    $PCP_BINADM_DIR/pmlogger_daily -K $daily_args
++}
++
+ # after argument checking, everything must be logged to ensure no mail is
+ # accidentally sent from cron.  Close stdout and stderr, then open stdout
+ # as our logfile and redirect stderr there too.
+@@ -175,10 +182,13 @@ else
+     _save_prev_file "$PROGLOG"
+     # After argument checking, everything must be logged to ensure no mail is
+     # accidentally sent from cron.  Close stdout and stderr, then open stdout
+-    # as our logfile and redirect stderr there too.
++    # as our logfile and redirect stderr there too.  Create the log file with
++    # correct ownership first.
+     #
+-    # Exception is for -N where we want to see the output
++    # Exception ($SHOWME, above) is for -N where we want to see the output.
+     #
++    touch "$PROGLOG"
++    chown $PCP_USER:$PCP_GROUP "$PROGLOG" >/dev/null 2>&1
+     exec 1>"$PROGLOG" 2>&1
+ fi
+ 
+@@ -219,11 +229,19 @@ fi
+ 
+ if [ $STOP_PMLOGGER = true ]
+ then
+-    # if pmlogger has never been started, there's no work to do to stop it
+-    [ ! -d "$PCP_TMP_DIR/pmlogger" ] && exit
++    # if pmlogger hasn't been started, there's no work to do to stop it
++    # but we still want to compress existing logs, if any
++    if [ ! -d "$PCP_TMP_DIR/pmlogger" ]
++    then
++    	_compress_now
++	exit
++    fi
+     $QUIETLY || $PCP_BINADM_DIR/pmpost "stop pmlogger from $prog"
+ elif [ $START_PMLOGGER = false ]
+ then
++    # if we're not going to start pmlogger, there is no work to do other
++    # than compress existing logs, if any.
++    _compress_now
+     exit
+ fi
+ 
+@@ -964,10 +982,8 @@ then
+     fi
+ fi
+ 
+-# and if $PCP_COMPRESSAFTER=0 in the control file(s), compress archives now ...
+-#
+-$PCP_BINADM_DIR/pmlogger_daily -K $daily_args
+-
++# Prior to exiting we compress existing logs, if any. See pmlogger_daily -K
++_compress_now
+ 
+ [ -f $tmp/err ] && status=1
+ exit
+diff -Naurp pcp-4.1.0-orig/src/selinux/GNUlocaldefs pcp-4.1.0/src/selinux/GNUlocaldefs
+--- pcp-4.1.0-orig/src/selinux/GNUlocaldefs	2018-05-08 09:38:33.000000000 +1000
++++ pcp-4.1.0/src/selinux/GNUlocaldefs	2018-09-05 08:45:27.409553808 +1000
+@@ -44,6 +44,7 @@ endif
+ ifeq "$(PCP_SELINUX_CAP_USERNS_PTRACE)" "true"
+ PCP_CAPUSERNS_PTRACE="class cap_userns sys_ptrace\; \#pmdaproc"
+ PCP_CAPUSERNS_PTRACE_RULE="allow pcp_pmcd_t self:cap_userns sys_ptrace\;"
++PCP_CAPUSERNS_PTRACE_RULE_PMIE="allow pcp_pmie_t self:cap_userns sys_ptrace\;"
+ endif
+ 
+ ifeq "$(PCP_SELINUX_UNRESERVED_PORT)" "true"
+@@ -56,7 +57,7 @@ ifeq "$(PCP_SELINUX_TRACEFS)" "true"
+ PCP_TRACEFS="type tracefs_t\;"
+ 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 append }\;"
++PCP_TRACEFS_FILE_RULE="allow pcp_pmcd_t tracefs_t:file { getattr read open append write }\;"
+ endif
+ 
+ ifeq "$(PCP_SELINUX_SOCK_FILE_GETATTR)" "true"
+diff -Naurp pcp-4.1.0-orig/src/selinux/GNUmakefile pcp-4.1.0/src/selinux/GNUmakefile
+--- pcp-4.1.0-orig/src/selinux/GNUmakefile	2018-06-04 16:09:25.000000000 +1000
++++ pcp-4.1.0/src/selinux/GNUmakefile	2018-09-05 08:45:27.409553808 +1000
+@@ -51,6 +51,7 @@ $(IAM).te: $(IAM).te.in
+ 		-e 's;@PCP_SYSTEMCTL_EXEC_RULE@;'$(PCP_SYSTEMCTL_EXEC_RULE)';' \
+ 		-e 's;@PCP_CAPUSERNS_PTRACE@;'$(PCP_CAPUSERNS_PTRACE)';' \
+ 		-e 's;@PCP_CAPUSERNS_PTRACE_RULE@;'$(PCP_CAPUSERNS_PTRACE_RULE)';' \
++		-e 's;@PCP_CAPUSERNS_PTRACE_RULE_PMIE@;'$(PCP_CAPUSERNS_PTRACE_RULE_PMIE)';' \
+ 		-e 's;@PCP_UNRESERVED_PORT@;'$(PCP_UNRESERVED_PORT)';' \
+ 		-e 's;@PCP_UNRESERVED_PORT_RULE@;'$(PCP_UNRESERVED_PORT_RULE)';' \
+ 		-e 's;@PCP_UNRESERVED_PORT_RULE_PMMGR@;'$(PCP_UNRESERVED_PORT_RULE_PMMGR)';' \
+diff -Naurp pcp-4.1.0-orig/src/selinux/pcpupstream.te.in pcp-4.1.0/src/selinux/pcpupstream.te.in
+--- pcp-4.1.0-orig/src/selinux/pcpupstream.te.in	2018-05-09 07:50:53.000000000 +1000
++++ pcp-4.1.0/src/selinux/pcpupstream.te.in	2018-09-05 08:45:27.410553794 +1000
+@@ -29,13 +29,13 @@ require {
+ 	type configfs_t; # pcp-lio
+ 	type modules_conf_t; # pcp-lio
+ 	type saslauthd_t; # pcp-lio
+-	type modules_object_t; # pcp-lio
++	type modules_object_t; # pcp-lio, pcp.bcc
+ 	@PCP_NSFS_T@
+ 	type nfsd_fs_t; #RHBZ1515928
+ 	type pcp_pmie_exec_t; # pmdasummary
+ 	@PCP_SYSTEMCTL_UNIT_FILE_T@
+ 	@PCP_SYSTEMCTL_EXEC_T@
+-	type debugfs_t; # pmdalibvirt
++	type debugfs_t; # pmdalibvirt pmda.gfs2 pmda.bcc
+ 	type unconfined_t; #RHBZ1443632
+ 	type devlog_t; #RHBZ1449671
+ 	@PCP_UNRESERVED_PORT@
+@@ -53,6 +53,7 @@ require {
+ 	@PCP_MOCK_VAR_LIB@
+ 	type ldconfig_exec_t;
+ 	type httpd_t;
++	type redis_port_t;
+ 	type zabbix_port_t;
+ 	type sysfs_t; #RHBZ1545245
+ 	type hugetlbfs_t;
+@@ -68,12 +69,18 @@ require {
+         type kernel_t;
+         type mozilla_plugin_t;
+         type fsadm_exec_t;
++        type tracefs_t; # pmda.gfs2
++        type system_map_t; # pmda.bcc
++        type sysctl_irq_t; # pmda.bcc
++        type gpsd_t; #RHBZ1594991
++        type default_t;
++        type home_bin_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 };
+ 	class unix_stream_socket connectto;
+-	class capability { kill sys_ptrace net_admin chown sys_chroot ipc_owner sys_resource fowner sys_rawio fsetid };
++	class capability { kill dac_override sys_ptrace net_admin chown sys_chroot ipc_lock ipc_owner sys_resource fowner sys_rawio fsetid };
+ 	@PCP_CAPUSERNS_PTRACE@
+ 	class chr_file { open write };
+ 	class fifo_file { getattr read open unlink }; # qa/455
+@@ -117,19 +124,18 @@ allow pcp_pmcd_t svirt_sandbox_file_t:di
+ allow pcp_pmcd_t sysctl_net_t:dir search;
+ allow pcp_pmcd_t sysctl_net_t:file { getattr open read };
+ 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 debugfs_t:dir { read search };
++allow pcp_pmcd_t debugfs_t:file { append getattr ioctl open read write };
+ 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 { 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
+-allow pcp_pmcd_t self:capability { net_admin sys_ptrace ipc_owner chown kill sys_resource };
++allow pcp_pmcd_t self:capability { net_admin sys_ptrace ipc_lock ipc_owner chown kill sys_resource };
+ 
+ #type=AVC msg=audit(1491581538.561:10949): avc:  denied  { getattr } for  pid=9375 comm="pmdaproc" path="/run/systemd/initctl/fifo" dev="tmpfs" ino=13290 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:initctl_t:s0 tclass=fifo_file permissive=1
+ allow pcp_pmcd_t initctl_t:fifo_file getattr;
+ 
+-#type=AVC msg=audit(1491581538.561:10950): avc:  denied  { getattr } for  pid=9375 comm="pmdaproc" path="/proc/kcore" dev="proc" ino=4026532007 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:proc_kcore_t:s0 tclass=file permissive=1
+ 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
+@@ -183,7 +189,7 @@ allow pcp_pmcd_t hostname_exec_t:file {
+ #type=AVC msg=audit(1498845911.360:7647): avc:  denied  { open } for  pid=22090 comm="pmdaperfevent" path="/sys/kernel/debug/tracing/events/gfs2/gfs2_glock_state_change/id" dev="tracefs" ino=321619 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:tracefs_t:s0 tclass=file permissive=0
+ @PCP_TRACEFS_FILE_RULE@
+ 
+-allow pcp_pmcd_t gconf_home_t:dir search;
++allow pcp_pmcd_t gconf_home_t:dir { getattr open read search };
+ allow pcp_pmcd_t virt_etc_t:dir search;
+ allow pcp_pmcd_t virt_etc_t:file { read open };
+ allow pcp_pmcd_t virtd_t:unix_stream_socket connectto;
+@@ -222,7 +228,8 @@ allow pcp_pmcd_t httpd_t:sem { unix_read
+ #RHBZ1545245
+ allow pcp_pmcd_t sysfs_t:dir write;
+ 
+-#allow pcp_pmcd_t modules_object_t:lnk_file read;
++# pmda.bcc
++allow pcp_pmcd_t modules_object_t:lnk_file read;
+ 
+ allow pcp_pmcd_t hugetlbfs_t:dir { open read };
+ allow pcp_pmcd_t mdadm_exec_t:file { execute execute_no_trans open read };
+@@ -241,6 +248,21 @@ allow pcp_pmcd_t glusterd_var_lib_t:dir
+ #RHBZ1565158
+ allow pcp_pmcd_t mozilla_plugin_t:sem unix_read;
+ 
++#pmda.bcc
++allow pcp_pmcd_t self:process { execmem setrlimit };
++#type=AVC msg=audit(1530448398.992:231): avc:  denied  { read } for pid=16334 comm="python3" name="kallsyms" dev="proc" ino=4026532064 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:system_map_t:s0 tclass=file permissive=1
++allow pcp_pmcd_t system_map_t:file { ioctl open read };
++
++allow pcp_pmcd_t sysctl_irq_t:dir { search };
++
++#RHBZ1592901
++allow pcp_pmcd_t init_t:shm unix_read;
++
++#RHBZ1594991
++allow pcp_pmcd_t gpsd_t:shm { associate getattr };
++
++allow pcp_pmcd_t default_t:file getattr;
++
+ #============= pcp_pmlogger_t ==============
+ allow pcp_pmlogger_t kmsg_device_t:chr_file { open write };
+ allow pcp_pmlogger_t self:capability kill;
+@@ -257,7 +279,6 @@ allow pcp_pmlogger_t devlog_t:lnk_file r
+ allow pcp_pmlogger_t self:capability { sys_ptrace fowner fsetid };
+ 
+ ## type=AVC msg=audit(04/19/2017 16:57:40.120:11020) : avc:  denied  { signal } for  pid=28414 comm=pmsignal scontext=system_u:system_r:pcp_pmlogger_t:s0 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=process
+-
+ allow pcp_pmlogger_t unconfined_t:process signal;
+ 
+ #type=AVC msg=audit(1503321970.417:261): avc:  denied  { execute_no_trans } for  pid=6760 comm="pmlogger_check" path="/usr/bin/pmlogger" dev="dm-1" ino=1051023 scontext=system_u:system_r:pcp_pmlogger_t:s0 tcontext=system_u:object_r:pcp_pmlogger_exec_t:s0 tclass=file permissive=0
+@@ -266,17 +287,23 @@ allow pcp_pmlogger_t pcp_pmlogger_exec_t
+ #type=AVC msg=audit(1493690261.688:262): avc:  denied  { name_connect } for  pid=17604 comm="pmlc" dest=4330 scontext=system_u:system_r:pcp_pmlogger_t:s0 tcontext=system_u:object_r:dey_sapi_port_t:s0 tclass=tcp_socket
+ allow pcp_pmlogger_t dey_sapi_port_t:tcp_socket name_connect;
+ 
++#type=AVC msg=audit(1533291591.092:495620): avc:  denied  { connectto } for  pid=18025 comm="pmprobe" path="/run/pcp/pmcd.socket" scontext=system_u:system_r:pcp_pmlogger_t:s0 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=unix_stream_socket permissive=0
++allow pcp_pmlogger_t unconfined_t:unix_stream_socket connectto;
++
+ #RHBZ1488116
+ #type=AVC msg=audit(1504516526.487:431): avc:  denied  { search } for  pid=18056 comm="ps" name="testuser" dev="dm-0" ino=539096275 scontext=system_u:system_r:pcp_pmlogger_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
+ allow pcp_pmlogger_t user_home_dir_t:dir search;
+-
+ #RHBZ1547066
+ allow pcp_pmlogger_t kernel_t:unix_dgram_socket sendto;
++
++allow pcp_pmlogger_t home_bin_t:dir search;
++
++
+ #============= pcp_pmie_t ==============
+ 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 };
++allow pcp_pmie_t self:capability { chown fowner dac_override kill net_admin sys_ptrace };
+ 
+ #type=AVC msg=audit(04/05/2017 10:24:45.084:351) : avc: denied { connectto } for pid=8941 comm=systemctl path=/run/systemd/private scontext=system_u:system_r:pcp_pmie_t:s0 tcontext=system_u:system_r:init_t:s0 tclass=unix_stream_socket
+ allow pcp_pmie_t init_t:unix_stream_socket connectto;
+@@ -319,6 +346,9 @@ allow pcp_pmie_t pcp_pmcd_t:process sign
+ 
+ #RHBZ1547066
+ allow pcp_pmie_t init_exec_t:file getattr;
++
++@PCP_CAPUSERNS_PTRACE_RULE_PMIE@
++allow pcp_pmie_t user_home_dir_t:dir search;
+ #============= pmda-lio ==============
+ allow pcp_pmcd_t configfs_t:dir { open read search };
+ allow pcp_pmcd_t configfs_t:file { getattr open read };
+@@ -336,7 +366,7 @@ allow pcp_pmcd_t saslauthd_t:unix_stream
+ 
+ #============= pcp_pmproxy_t ==============
+ #type=AVC msg=audit(04/05/2017 09:54:13.548:281) : avc: denied { net_admin } for pid=6669 comm=pmproxy capability=net_admin scontext=system_u:system_r:pcp_pmproxy_t:s0 tcontext=system_u:system_r:pcp_pmproxy_t:s0 tclass=capability
+-allow pcp_pmproxy_t self:capability net_admin;
++allow pcp_pmproxy_t self:capability { net_admin dac_override };
+ 
+ #type=AVC msg=audit(04/05/2017 09:54:13.548:281) : avc: denied { read } for pid=6669 comm=pmproxy name=disable_ipv6 dev="proc" ino=9994 scontext=system_u:system_r:pcp_pmproxy_t:s0 tcontext=system_u:object_r:sysctl_net_t:s0 tclass=file
+ #type=AVC msg=audit(04/05/2017 10:24:45.771:356) : avc: denied { open } for pid=9669 comm=pmproxy path=/proc/sys/net/ipv6/conf/all/disable_ipv6 dev="proc" ino=9994 scontext=system_u:system_r:pcp_pmproxy_t:s0 tcontext=system_u:object_r:sysctl_net_t:s0 tclass=file
+@@ -373,3 +403,7 @@ allow pcp_pmmgr_t zabbix_port_t:tcp_sock
+ allow pcp_pmcd_t fsadm_exec_t:file { execute execute_no_trans getattr open read };
+ @PCP_FSADM_EXEC_MAP_RULE@
+ allow pcp_pmcd_t self:capability sys_rawio;
++
++#============= pmda-redis ==============
++#type=AVC msg=audit(1533183330.416:362367): avc:  denied  { name_connect } for  pid=15299 comm="pmdaredis" dest=6379 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:redis_port_t:s0 tclass=tcp_socket permissive=0
++allow pcp_pmcd_t redis_port_t:tcp_socket name_connect;
+diff -Naurp pcp-4.1.0-orig/src/selinux/README pcp-4.1.0/src/selinux/README
+--- pcp-4.1.0-orig/src/selinux/README	2017-11-29 14:33:29.000000000 +1100
++++ pcp-4.1.0/src/selinux/README	2018-09-05 08:45:27.410553794 +1000
+@@ -102,14 +102,16 @@ In general usage, the only portion we ca
+ 
+ SELinux manages a list of 'contexts' and how contexts are allowed to interact with each other.
+ 
+-For example, it makes sense that the 'pcp_pmlogger_t' context to be
+-able to read and write to pcp log files with a 'pcp_log_t' context.
+-However, it doesn't make sense for 'pcp_pmlogger_t' to write to apache
++For example, it makes sense for the 'pcp_pmlogger_t' context to be
++able to read and write to PCP log files with a 'pcp_log_t' context.
++However, it doesn't make sense for 'pcp_pmlogger_t' to write to Apache
+ log files, which have a 'httpd_log_t' context.
+ 
+-Where this can be of focus for PCP is various pmda's gathering metrics from domains.  And, using the example
+-with apache earlier, many of these files have different contexts.  We need to document these accesses and
+-why they're required, building our own policy package for inclusion in the running policy.
++Where this can be of focus for PCP is various PMDA's gathering metrics
++from domains.  And, using the example with Apache earlier, many of these
++files have different contexts.  We need to document these accesses and
++why they're required, building our own policy package for inclusion in
++the running policy.
+ 
+ == Testing ==
+ 
+@@ -143,4 +145,4 @@ http://equivocation.org/node/24
+ http://equivocation.org/node/27
+ http://equivocation.org/node/42
+ http://equivocation.org/node/51
+-http://equivocation.org/node/52
+\ No newline at end of file
++http://equivocation.org/node/52
diff --git a/SOURCES/rhbz1488116.patch b/SOURCES/rhbz1488116.patch
deleted file mode 100644
index bb69891..0000000
--- a/SOURCES/rhbz1488116.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-commit c79e4b8a8a365e0f7d2455f8f4e3288e07ce9bed
-Author: Lukas Berk <lberk@redhat.com>
-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 <lberk@redhat.com>
-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 <lberk@redhat.com>
-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
deleted file mode 100644
index 48e984c..0000000
--- a/SOURCES/rhbz1513503.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-commit dac8621e4d9b70cf5891ba00307dc1c4fdf9013a
-Author: Nathan Scott <nathans@redhat.com>
-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 <sys/ioctl.h>. */
- #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 <bits/wordsize.h> header file. */
- #undef HAVE_BITS_WORDSIZE_H
- 
-+/* Define to 1 if you have the <boost/flyweight.hpp> 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
deleted file mode 100644
index 60007f3..0000000
--- a/SOURCES/rhbz1525864.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-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
deleted file mode 100644
index b6e5f1a..0000000
--- a/SOURCES/rhbz1537623.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-commit 4117de7ca98a38b79d32398680e883b47d55fffa
-Author: Nathan Scott <nathans@redhat.com>
-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 <<End-of-File >$tmp.c
--#include <pcp/config.h>
-+#include <pcp/platform_defs.h>
- #if defined(HAVE_64BIT_LONG)
- KERNEL_ULONG=PM_TYPE_U64
- #else
diff --git a/SOURCES/selinux-pmstore.patch b/SOURCES/selinux-pmstore.patch
deleted file mode 100644
index 87b4568..0000000
--- a/SOURCES/selinux-pmstore.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-commit 8f75ee909cb751a1cc6b3988c5ba5476ca237de1
-Author: Lukas Berk <lberk@redhat.com>
-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
deleted file mode 100644
index b0c551e..0000000
--- a/SOURCES/selinux.patch
+++ /dev/null
@@ -1,411 +0,0 @@
-commit 60ae66d7478bd6c944442377274a3a365d0861bb
-Author: Lukas Berk <lberk@redhat.com>
-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
index e986729..c705559 100644
--- a/SPECS/pcp.spec
+++ b/SPECS/pcp.spec
@@ -1,27 +1,30 @@
 Name:    pcp
-Version: 3.12.2
-Release: 5%{?dist}
+Version: 4.1.0
+Release: 4%{?dist}
 Summary: System-level performance monitoring and performance management
 License: GPLv2+ and LGPLv2.1+ and CC-BY
-URL:     http://www.pcp.io
+URL:     https://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
+Source1: %{github}/pcp-webapp-vector/archive/1.2.2/pcp-webapp-vector-1.2.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
+# bcc/kernel compatibility (needed for the life of RHEL7)
+Patch1: redhat-bugzilla-1597975.patch
+# selinux rollup patch
+Patch2: redhat-bugzilla-1603596.patch
+
+%if 0%{?fedora} >= 26 || 0%{?rhel} > 7
+%global __python2 python2
+%else
+%global __python2 python
+%endif
 
 %if 0%{?fedora} || 0%{?rhel} > 5
 %global disable_selinux 0
@@ -49,9 +52,15 @@ Patch6: rhbz1537623.patch
 %endif
 
 %global disable_microhttpd 0
+%global disable_webapps 0
 %global disable_cairo 0
 
+%if 0%{?rhel} > 7
+%global disable_python2 1
+%else
 %global disable_python2 0
+%endif
+
 # Default for epel5 is python24, so use the (optional) python26 packages
 %if 0%{?rhel} == 5
 %global default_python 26
@@ -73,6 +82,17 @@ Patch6: rhbz1537623.patch
 %global perl_interpreter perl
 %endif
 
+# support for pmdabcc
+%if 0%{?fedora} >= 25 || 0%{?rhel} > 6
+%ifarch s390 s390x armv7hl aarch64 i686
+%global disable_bcc 1
+%else
+%global disable_bcc 0
+%endif
+%else
+%global disable_bcc 1
+%endif
+
 # support for pmdajson
 %if 0%{?rhel} == 0 || 0%{?rhel} > 6
 %if !%{disable_python2} || !%{disable_python3}
@@ -141,16 +161,14 @@ Patch6: rhbz1537623.patch
 %global disable_noarch 1
 %endif
 
-%if 0%{?fedora} >= 24
+%if 0%{?fedora} >= 24 || 0%{?rhel} > 7
 %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
+%if 0%{?fedora} >= 24
+%global disable_xlsx 0
 %else
 %global disable_xlsx 1
 %endif
@@ -158,19 +176,19 @@ Patch6: rhbz1537623.patch
 # 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: xz-devel
 BuildRequires: zlib-devel
 %if !%{disable_python2}
 %if 0%{?default_python} != 3
 BuildRequires: python%{?default_python}-devel
 %else
-BuildRequires: python-devel
+BuildRequires: %{__python2}-devel
 %endif
 %endif
 %if !%{disable_python3}
@@ -197,10 +215,13 @@ BuildRequires: systemtap-sdt-devel
 %if !%{disable_boost}
 BuildRequires: boost-devel
 %endif
-%if 0%{?rhel} == 0 || 0%{?rhel} > 5
-BuildRequires: perl-devel
+%if 0%{?rhel} == 0 || 0%{?rhel} > 7
+BuildRequires: perl-generators
 %endif
-BuildRequires: perl(ExtUtils::MakeMaker)
+BuildRequires: perl-devel perl(strict)
+BuildRequires: perl(ExtUtils::MakeMaker) perl(LWP::UserAgent) perl(JSON)
+BuildRequires: perl(strict) perl(ExtUtils::MakeMaker) perl(LWP::UserAgent) perl(JSON)
+BuildRequires: perl(LWP::UserAgent) perl(Time::HiRes) perl(Digest::MD5)
 BuildRequires: initscripts man
 %if !%{disable_systemd}
 BuildRequires: systemd-devel
@@ -215,19 +236,21 @@ BuildRequires: qt5-qtsvg-devel
 %endif
 %endif
 
-Requires: bash gawk sed grep fileutils findutils initscripts which
+Requires: bash gawk sed grep findutils initscripts which
 Requires: pcp-libs = %{version}-%{release}
 %if !%{disable_selinux}
 Requires: pcp-selinux = %{version}-%{release}
 %endif
+%if 0%{?fedora} < 27
+# F27 re-introduced split-out debuginfo packages
 Obsoletes: pcp-gui-debuginfo
+%endif
 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
 
@@ -280,6 +303,12 @@ Obsoletes: pcp-gui-debuginfo
 %global _with_perfevent --with-perfevent=yes
 %endif
 
+%if %{disable_bcc}
+%global _with_bcc --with-pmdabcc=no
+%else
+%global _with_bcc --with-pmdabcc=yes
+%endif
+
 %if %{disable_json}
 %global _with_json --with-pmdajson=no
 %else
@@ -298,44 +327,38 @@ Obsoletes: pcp-gui-debuginfo
 %global _with_snmp --with-pmdasnmp=yes
 %endif
 
+%if %{disable_webapps}
+%global _with_webapps --with-webapps=no
+%else
+%global _with_webapps --with-webapps=yes
+%endif
+
 %global pmda_remove() %{expand:
 if [ %1 -eq 0 ]
 then
-    if [ -f "%{_confdir}/pmcd/pmcd.conf" ] && [ -f "%{_pmdasdir}/%2/domain.h" ]
+    if [ -f "%{_confdir}/pmcd/pmcd.conf" -a -f "%{_pmdasdir}/%2/domain.h" ]
     then
 	(cd %{_pmdasdir}/%2/ && ./Remove >/dev/null 2>&1)
     fi
 fi
 }
 
+# force upgrade of PMDAs starting in "notready" state
+%global pmda_notready() %{expand:
+if grep -q ^%2 "%{_confdir}/pmcd/pmcd.conf" 2>/dev/null
+then
+    touch %{_pmdasdir}/%2/.NeedInstall
+fi
+}
+
 %global selinux_handle_policy() %{expand:
-if [ -e /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled
+if [ %1 -ge 1 ]
 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
+    %{_libexecdir}/pcp/bin/selinux-setup %{_selinuxdir} install %2
+elif [ %1 -eq 0 ]
+then
+    %{_libexecdir}/pcp/bin/selinux-setup %{_selinuxdir} remove %2
+fi
 }
 
 %description
@@ -353,7 +376,7 @@ applications to easily retrieve and process any subset of that data.
 License: LGPLv2.1+
 Group: System Environment/Libraries
 Summary: Performance Co-Pilot run-time configuration
-URL: http://www.pcp.io
+URL: https://pcp.io
 
 # http://fedoraproject.org/wiki/Packaging:Conflicts "Splitting Packages"
 Conflicts: pcp-libs < 3.9
@@ -368,7 +391,7 @@ Performance Co-Pilot (PCP) run-time configuration
 License: LGPLv2.1+
 Group: System Environment/Libraries
 Summary: Performance Co-Pilot run-time libraries
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-conf = %{version}-%{release}
 
 %description libs
@@ -381,7 +404,8 @@ Performance Co-Pilot (PCP) run-time libraries
 License: GPLv2+ and LGPLv2.1+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) development headers
-URL: http://www.pcp.io
+URL: https://pcp.io
+Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
 
 %description libs-devel
 Performance Co-Pilot (PCP) headers for development.
@@ -393,7 +417,7 @@ Performance Co-Pilot (PCP) headers for development.
 License: GPLv2+ and LGPLv2.1+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) development tools and documentation
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release}
 Requires: pcp-libs = %{version}-%{release}
 Requires: pcp-libs-devel = %{version}-%{release}
@@ -408,7 +432,7 @@ Performance Co-Pilot (PCP) documentation and tools for development.
 License: GPLv2+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) test suite
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release}
 Requires: pcp-libs = %{version}-%{release}
 Requires: pcp-libs-devel = %{version}-%{release}
@@ -425,7 +449,7 @@ Quality assurance test suite for Performance Co-Pilot (PCP).
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) manager daemon
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
 
 %description manager
@@ -444,8 +468,9 @@ scripts.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) web API service
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
+Requires: liberation-sans-fonts
 
 %description webapi
 Provides a daemon (pmwebd) that binds a large subset of the Performance
@@ -453,11 +478,12 @@ Co-Pilot (PCP) client API (PMAPI) to RESTful web applications using the
 HTTP (PMWEBAPI) protocol.
 %endif
 
+%if !%{disable_webapps}
 #
 # pcp-webjs and pcp-webapp packages
 #
 %package webjs
-License: ASL2.0 and MIT and CC-BY
+License: ASL 2.0 and MIT and CC-BY and GPLv3
 Group: Applications/Internet
 Conflicts: pcp-webjs < 3.11.9
 %if !%{disable_noarch}
@@ -466,14 +492,14 @@ BuildArch: noarch
 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
+URL: https://pcp.io
 
 %description webjs
 Javascript web application content for the Performance Co-Pilot (PCP)
 web service.
 
 %package webapp-vector
-License: ASL2.0
+License: ASL 2.0
 Group: Applications/Internet
 %if !%{disable_noarch}
 BuildArch: noarch
@@ -485,7 +511,7 @@ URL: https://github.com/Netflix/vector
 Vector web application for the Performance Co-Pilot (PCP).
 
 %package webapp-grafana
-License: ASL2.0
+License: ASL 2.0
 Group: Applications/Internet
 Conflicts: pcp-webjs < 3.10.4
 %if !%{disable_noarch}
@@ -505,7 +531,7 @@ Grafana can render time series dashboards at the browser via flot.js
 server via png (less interactive, faster).
 
 %package webapp-graphite
-License: ASL2.0
+License: ASL 2.0 and GPLv3
 Group: Applications/Internet
 Conflicts: pcp-webjs < 3.10.4
 %if !%{disable_noarch}
@@ -521,17 +547,18 @@ 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
+License: ASL 2.0
 Group: Applications/Internet
 %if !%{disable_noarch}
 BuildArch: noarch
 %endif
 Summary: Blinking lights web application for Performance Co-Pilot (PCP)
-URL: http://pcp.io
+URL: https://pcp.io
 
 %description webapp-blinkenlights
 Demo web application showing traffic lights that change colour based
 on the periodic evaluation of performance metric expressions.
+%endif
 
 #
 # perl-PCP-PMDA. This is the PCP agent perl binding.
@@ -540,7 +567,7 @@ on the periodic evaluation of performance metric expressions.
 License: GPLv2+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) Perl bindings and documentation
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 Requires: %{perl_interpreter}
 
@@ -558,7 +585,7 @@ an application, etc.
 License: GPLv2+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) Perl bindings for PCP Memory Mapped Values
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 Requires: %{perl_interpreter}
 
@@ -577,7 +604,7 @@ and analysis with pmchart, pmie, pmlogger and other PCP tools.
 License: GPLv2+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) Perl bindings for importing external data into PCP archives
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 Requires: %{perl_interpreter}
 
@@ -593,7 +620,7 @@ they can be replayed with standard PCP monitoring tools.
 License: GPLv2+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) Perl bindings for post-processing output of pmlogsummary
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 Requires: %{perl_interpreter}
 
@@ -612,10 +639,9 @@ exporting this data into third-party tools (e.g. spreadsheets).
 License: LGPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for importing sar data into PCP archive logs
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 Requires: perl-PCP-LogImport = %{version}-%{release}
-Requires: sysstat
 Requires: perl(XML::TokeParser)
 
 %description import-sar2pcp
@@ -629,10 +655,9 @@ into standard PCP archive logs for replay with any PCP monitoring tool.
 License: LGPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for importing iostat data into PCP archive logs
-URL: http://www.pcp.io
+URL: https://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
@@ -645,7 +670,7 @@ into standard PCP archive logs for replay with any PCP monitoring tool.
 License: LGPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for importing MTRG data into PCP archive logs
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 Requires: perl-PCP-LogImport = %{version}-%{release}
 
@@ -660,7 +685,7 @@ into standard PCP archive logs for replay with any PCP monitoring tool.
 License: LGPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for importing ganglia data into PCP archive logs
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 Requires: perl-PCP-LogImport = %{version}-%{release}
 
@@ -675,7 +700,7 @@ into standard PCP archive logs for replay with any PCP monitoring tool.
 License: LGPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for importing collectl log files into PCP archive logs
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 
 %description import-collectl2pcp
@@ -689,7 +714,7 @@ into standard PCP archive logs for replay with any PCP monitoring tool.
 License: GPLv2+
 Group: Applications/System
 Summary: Module for exporting PCP metrics to Zabbix agent
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 
 %description export-zabbix-agent
@@ -705,16 +730,16 @@ Zabbix via the Zabbix agent - see zbxpcp(3) for further details.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for exporting PCP metrics to ElasticSearch
-URL: http://www.pcp.io
+URL: https://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
+Requires: %{__python2}-pcp = %{version}-%{release}
+Requires: %{__python2}-elasticsearch
+BuildRequires: %{__python2}-elasticsearch
 %endif
 
 %description export-pcp2elasticsearch
@@ -729,12 +754,12 @@ See https://www.elastic.co/community for further details.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for exporting PCP metrics to Graphite
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs >= %{version}-%{release}
 %if !%{disable_python3}
 Requires: python3-pcp = %{version}-%{release}
 %else
-Requires: python-pcp = %{version}-%{release}
+Requires: %{__python2}-pcp = %{version}-%{release}
 %endif
 
 %description export-pcp2graphite
@@ -747,14 +772,14 @@ to graphite (http://graphite.readthedocs.org).
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for exporting PCP metrics to InfluxDB
-URL: http://www.pcp.io
+URL: https://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
+Requires: %{__python2}-pcp = %{version}-%{release}
+Requires: %{__python2}-requests
 %endif
 
 %description export-pcp2influxdb
@@ -768,12 +793,12 @@ to InfluxDB (https://influxdata.com/time-series-platform/influxdb).
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for exporting PCP metrics in JSON format
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs >= %{version}-%{release}
 %if !%{disable_python3}
 Requires: python3-pcp = %{version}-%{release}
 %else
-Requires: python-pcp = %{version}-%{release}
+Requires: %{__python2}-pcp = %{version}-%{release}
 %endif
 
 %description export-pcp2json
@@ -788,12 +813,16 @@ in JSON format.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for exporting PCP metrics to Excel
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs >= %{version}-%{release}
 %if !%{disable_python3}
 Requires: python3-pcp = %{version}-%{release}
+Requires: python3-openpyxl
+BuildRequires: python3-openpyxl
 %else
-Requires: python-pcp = %{version}-%{release}
+Requires: %{__python2}-pcp = %{version}-%{release}
+Requires: %{__python2}-openpyxl
+BuildRequires: %{__python2}-openpyxl
 %endif
 
 %description export-pcp2xlsx
@@ -807,12 +836,12 @@ in Excel spreadsheet format.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for exporting PCP metrics in XML format
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs >= %{version}-%{release}
 %if !%{disable_python3}
 Requires: python3-pcp = %{version}-%{release}
 %else
-Requires: python-pcp = %{version}-%{release}
+Requires: %{__python2}-pcp = %{version}-%{release}
 %endif
 
 %description export-pcp2xml
@@ -826,12 +855,12 @@ in XML format.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot tools for exporting PCP metrics to Zabbix
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs >= %{version}-%{release}
 %if !%{disable_python3}
 Requires: python3-pcp = %{version}-%{release}
 %else
-Requires: python-pcp = %{version}-%{release}
+Requires: %{__python2}-pcp = %{version}-%{release}
 %endif
 
 %description export-pcp2zabbix
@@ -847,7 +876,7 @@ to the Zabbix (https://www.zabbix.org/) monitoring software.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Performance API and hardware counters
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
 BuildRequires: papi-devel
 
@@ -864,7 +893,7 @@ collecting hardware counters statistics through PAPI (Performance API).
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for hardware counters
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
 Requires: libpfm >= 4
 BuildRequires: libpfm-devel >= 4
@@ -882,7 +911,7 @@ collecting hardware counters statistics through libpfm.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Infiniband HCAs and switches
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
 Requires: libibmad >= 1.3.7 libibumad >= 1.3.7
 BuildRequires: libibmad-devel >= 1.3.7 libibumad-devel >= 1.3.7
@@ -900,7 +929,7 @@ but can also be configured to monitor remote GUIDs such as IB switches.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for ActiveMQ
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl(LWP::UserAgent)
 
@@ -916,7 +945,7 @@ collecting metrics about the ActiveMQ message broker.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for BIND servers
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl(LWP::UserAgent)
 Requires: perl(XML::LibXML)
@@ -934,7 +963,7 @@ collecting metrics from BIND (Berkeley Internet Name Domain).
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Redis
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-redis
@@ -950,7 +979,7 @@ collecting metrics from Redis servers (redis.io).
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for NutCracker (TwemCache)
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl(YAML::XS::LibYAML)
 Requires: perl(JSON)
@@ -968,7 +997,7 @@ collecting metrics from NutCracker (TwemCache).
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Bonded network interfaces
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-bonding
@@ -983,7 +1012,7 @@ collecting metrics about bonded network interfaces.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Database response times and Availablility
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-dbping
@@ -998,7 +1027,7 @@ collecting metrics about the Database response times and Availablility.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for 389 Directory Servers
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl-LDAP
 
@@ -1014,7 +1043,7 @@ collecting metrics about a 389 Directory Server.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for 389 Directory Server Loggers
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl-Date-Manip
 
@@ -1030,7 +1059,7 @@ collecting metrics from a 389 Directory Server log.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Elasticsearch
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl(LWP::UserAgent)
 BuildRequires: perl(LWP::UserAgent)
@@ -1047,7 +1076,7 @@ collecting metrics about Elasticsearch.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for GPFS Filesystem
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-gpfs
@@ -1062,7 +1091,7 @@ collecting metrics about the GPFS filesystem.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for a GPS Daemon
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-gpsd
@@ -1077,7 +1106,7 @@ collecting metrics about a GPS Daemon.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for KVM
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-kvm
@@ -1092,7 +1121,8 @@ collecting metrics about the Kernel based Virtual Machine.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics from the Docker daemon
-URL: http://www.pcp.io
+URL: https://pcp.io
+Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
 
 %description pmda-docker
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1106,7 +1136,7 @@ collecting metrics using the Docker daemon REST API.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Lustre Filesytem
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-lustre
@@ -1121,7 +1151,7 @@ collecting metrics about the Lustre Filesystem.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Lustre Filesytem Comms
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release}
 Requires: pcp-libs = %{version}-%{release}
 
@@ -1137,7 +1167,7 @@ collecting metrics about the Lustre Filesystem Comms.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Memcached
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-memcache
@@ -1152,7 +1182,7 @@ collecting metrics about Memcached.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for MySQL
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl(DBI) perl(DBD::mysql)
 BuildRequires: perl(DBI) perl(DBD::mysql)
@@ -1169,7 +1199,7 @@ collecting metrics about the MySQL database.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Named
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-named
@@ -1183,7 +1213,7 @@ collecting metrics about the Named nameserver.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Netfilter framework
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-netfilter
@@ -1198,7 +1228,7 @@ collecting metrics about the Netfilter packet filtering framework.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Usenet News
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-news
@@ -1213,7 +1243,7 @@ collecting metrics about Usenet News.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Nginx Webserver
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl(LWP::UserAgent)
 BuildRequires: perl(LWP::UserAgent)
@@ -1230,7 +1260,7 @@ collecting metrics about the Nginx Webserver.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for NFS Clients
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-nfsclient
@@ -1245,7 +1275,7 @@ collecting metrics for NFS Clients.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Oracle database
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl(DBI)
 BuildRequires: perl(DBI)
@@ -1262,7 +1292,7 @@ collecting metrics about the Oracle database.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for PowerDNS
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-pdns
@@ -1277,7 +1307,7 @@ collecting metrics about the PowerDNS.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Postfix (MTA)
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 %if 0%{?fedora} > 16 || 0%{?rhel} > 5
 Requires: postfix-perl-scripts
@@ -1304,7 +1334,7 @@ collecting metrics about the Postfix (MTA).
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for PostgreSQL
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 Requires: perl(DBI) perl(DBD::Pg)
 BuildRequires: perl(DBI) perl(DBD::Pg)
@@ -1321,7 +1351,7 @@ collecting metrics about the PostgreSQL database.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Rsyslog
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-rsyslog
@@ -1336,7 +1366,7 @@ collecting metrics about Rsyslog.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Samba
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-samba
@@ -1351,7 +1381,7 @@ collecting metrics about Samba.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for NFS Clients
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-slurm
@@ -1367,7 +1397,7 @@ collecting metrics from the SLURM Workload Manager.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Simple Network Management Protocol
-URL: http://www.pcp.io
+URL: https://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
@@ -1387,7 +1417,7 @@ collecting metrics about SNMP.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for VMware
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-vmware
@@ -1402,7 +1432,7 @@ collecting metrics for VMware.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Zimbra
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: perl-PCP-PMDA = %{version}-%{release}
 
 %description pmda-zimbra
@@ -1417,7 +1447,7 @@ collecting metrics about Zimbra.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Device Mapper Cache and Thin Client
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-dm
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1425,6 +1455,29 @@ collecting metrics about the Device Mapper Cache and Thin Client.
 # end pcp-pmda-dm
 
 
+%if !%{disable_bcc}
+#
+# pcp-pmda-bcc
+#
+%package pmda-bcc
+License: ASL 2.0 and GPLv2+
+Group: Applications/System
+Summary: Performance Co-Pilot (PCP) metrics from eBPF/BCC modules
+URL: https://pcp.io
+%if 0%{?rhel} == 0 || 0%{?rhel} > 7
+Requires: python3-bcc
+%endif
+%if !%{disable_python3}
+Requires: python3-pcp
+%else
+Requires: %{__python2}-pcp
+%endif
+%description pmda-bcc
+This package contains the PCP Performance Metrics Domain Agent (PMDA) for
+extracting performance metrics from eBPF/BCC Python modules.
+# end pcp-pmda-bcc
+%endif
+
 %if !%{disable_python2} || !%{disable_python3}
 #
 # pcp-pmda-gluster
@@ -1433,11 +1486,11 @@ collecting metrics about the Device Mapper Cache and Thin Client.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Gluster filesystem
-URL: http://www.pcp.io
+URL: https://pcp.io
 %if !%{disable_python3}
 Requires: python3-pcp
 %else
-Requires: python-pcp
+Requires: %{__python2}-pcp
 %endif
 %description pmda-gluster
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1451,11 +1504,11 @@ collecting metrics about the gluster filesystem.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for compressed swap
-URL: http://www.pcp.io
+URL: https://pcp.io
 %if !%{disable_python3}
 Requires: python3-pcp
 %else
-Requires: python-pcp
+Requires: %{__python2}-pcp
 %endif
 %description pmda-zswap
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1469,11 +1522,11 @@ collecting metrics about compressed swap.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Unbound DNS Resolver
-URL: http://www.pcp.io
+URL: https://pcp.io
 %if !%{disable_python3}
 Requires: python3-pcp
 %else
-Requires: python-pcp
+Requires: %{__python2}-pcp
 %endif
 %description pmda-unbound
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1487,11 +1540,11 @@ collecting metrics about the Unbound DNS Resolver.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Intel MIC cards
-URL: http://www.pcp.io
+URL: https://pcp.io
 %if !%{disable_python3}
 Requires: python3-pcp
 %else
-Requires: python-pcp
+Requires: %{__python2}-pcp
 %endif
 %description pmda-mic
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1505,11 +1558,11 @@ collecting metrics about Intel MIC cards.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for HAProxy
-URL: http://www.pcp.io
+URL: https://pcp.io
 %if !%{disable_python3}
 Requires: python3-pcp
 %else
-Requires: python-pcp
+Requires: %{__python2}-pcp
 %endif
 %description pmda-haproxy
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1523,16 +1576,21 @@ extracting performance metrics from HAProxy over the HAProxy stats socket.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for virtual machines
-URL: http://www.pcp.io
+URL: https://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
+%if 0%{?rhel} == 0 || 0%{?fedora} >= 27
+Requires: %{__python2}-pcp
+Requires: %{__python2}-libvirt %{__python2}-lxml
+BuildRequires: %{__python2}-libvirt %{__python2}-lxml
+%endif
+%if 0%{?rhel} > 5
+Requires: %{__python2}-pcp
+Requires: libvirt-%{__python2} %{__python2}-lxml
+BuildRequires: libvirt-%{__python2} %{__python2}-lxml
 %endif
 %endif
 %description pmda-libvirt
@@ -1548,15 +1606,15 @@ and hypervisor machines.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the LIO subsystem
-URL: http://www.pcp.io
+URL: https://pcp.io
 %if !%{disable_python3}
 Requires: python3-pcp
 Requires: python3-rtslib
 BuildRequires: python3-rtslib
 %else
-Requires: python-pcp
-Requires: python-rtslib
-BuildRequires: python-rtslib
+Requires: %{__python2}-pcp
+Requires: %{__python2}-rtslib
+BuildRequires: %{__python2}-rtslib
 %endif
 %description pmda-lio
 This package provides a PMDA to gather performance metrics from the kernels
@@ -1573,16 +1631,16 @@ target.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics from Prometheus endpoints
-URL: http://www.pcp.io
+URL: https://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
+Requires: %{__python2}-pcp
+Requires: %{__python2}-requests
+BuildRequires: %{__python2}-requests
 %endif
 
 %description pmda-prometheus
@@ -1600,15 +1658,15 @@ extracting statistics from programs instrumented as Prometheus endpoints.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for JSON data
-URL: http://www.pcp.io
+URL: https://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
+Requires: %{__python2}-pcp
+Requires: %{__python2}-jsonpointer %{__python2}-six
+BuildRequires: %{__python2}-jsonpointer %{__python2}-six
 %endif
 %description pmda-json
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1624,7 +1682,7 @@ collecting metrics output in JSON.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Apache webserver
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-apache
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1638,7 +1696,7 @@ collecting metrics about the Apache webserver.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Bash shell
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-bash
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1652,7 +1710,7 @@ collecting metrics about the Bash shell.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the CIFS protocol
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-cifs
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1666,7 +1724,7 @@ collecting metrics about the Common Internet Filesytem.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Cisco routers
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-cisco
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1680,7 +1738,7 @@ collecting metrics about Cisco routers.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the GFS2 filesystem
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-gfs2
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1694,7 +1752,7 @@ collecting metrics about the Global Filesystem v2.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for hardware sensors
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-lmsensors
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1708,7 +1766,7 @@ collecting metrics about the Linux hardware monitoring sensors.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics from arbitrary log files
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-logger
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1723,7 +1781,7 @@ supports both sampled and event-style metrics.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the sendmail queue
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-mailq
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1737,7 +1795,7 @@ collecting metrics about email queues managed by sendmail.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for filesystem mounts
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-mounts
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1751,7 +1809,7 @@ collecting metrics about filesystem mounts.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the Nvidia GPU
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-nvidia-gpu
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1765,7 +1823,7 @@ collecting metrics about Nvidia GPUs.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the room temperature
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release}
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-roomtemp
@@ -1781,7 +1839,7 @@ collecting metrics about the room temperature.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for the RPM package manager
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release}
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-rpm
@@ -1798,7 +1856,7 @@ collecting metrics about the installed RPM packages.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for Sendmail
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release}
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-sendmail
@@ -1813,7 +1871,7 @@ collecting metrics about Sendmail traffic.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for shell command responses
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-shping
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1822,13 +1880,28 @@ arbitrary shell commands.
 # end pcp-pmda-shping
 
 #
+# pcp-pmda-smart
+#
+%package pmda-smart
+License: GPLv2+
+Group: Applications/System
+Summary: Performance Co-Pilot (PCP) metrics for S.M.A.R.T values
+URL: https://pcp.io
+Requires: pcp-libs = %{version}-%{release}
+%description pmda-smart
+This package contains the PCP Performance Metric Domain Agent (PMDA) for
+collecting metrics of disk S.M.A.R.T values making use of data from the
+smartmontools package.
+#end pcp-pmda-smart
+
+#
 # pcp-pmda-summary
 #
 %package pmda-summary
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) summary metrics from pmie
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release}
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-summary
@@ -1844,7 +1917,7 @@ collecting metrics about other installed pmdas.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics from the Systemd journal
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-systemd
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1859,7 +1932,7 @@ collecting metrics from the Systemd journal.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics for application tracing
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-trace
 This package contains the PCP Performance Metrics Domain Agent (PMDA) for
@@ -1873,7 +1946,7 @@ collecting metrics about trace performance data in applications.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) metrics from web server logs
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release}
 Requires: pcp-libs = %{version}-%{release}
 %description pmda-weblog
@@ -1887,7 +1960,7 @@ collecting metrics about web server logs.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) Collection meta Package
-URL: http://www.pcp.io
+URL: https://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
@@ -1895,11 +1968,14 @@ Requires: pcp-pmda-nginx pcp-pmda-nfsclient pcp-pmda-pdns pcp-pmda-postfix pcp-p
 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-nvidia-gpu pcp-pmda-roomtemp pcp-pmda-sendmail pcp-pmda-shping pcp-pmda-smart
 Requires: pcp-pmda-lustrecomm pcp-pmda-logger pcp-pmda-docker pcp-pmda-bind2
 %if !%{disable_nutcracker}
 Requires: pcp-pmda-nutcracker
 %endif
+%if !%{disable_bcc}
+Requires: pcp-pmda-bcc
+%endif
 %if !%{disable_python2} || !%{disable_python3}
 Requires: pcp-pmda-gluster pcp-pmda-zswap pcp-pmda-unbound pcp-pmda-mic
 Requires: pcp-pmda-libvirt pcp-pmda-lio pcp-pmda-prometheus pcp-pmda-haproxy
@@ -1926,7 +2002,7 @@ pmlogger services.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) Monitoring meta Package
-URL: http://www.pcp.io
+URL: https://pcp.io
 %if !%{disable_microhttpd}
 Requires: pcp-webapi
 %endif
@@ -1945,31 +2021,39 @@ includes a large number of packages for analysing PCP metrics in various ways.
 License: GPLv2+
 Group: Applications/System
 Summary: Performance Co-Pilot (PCP) Zeroconf Package
-URL: http://www.pcp.io
-Requires: pcp
+URL: https://pcp.io
+Requires: pcp pcp-doc pcp-system-tools
 Requires: pcp-pmda-dm pcp-pmda-nfsclient
+# to make pcp-zeroconf replace sysstat, uncomment the next line
+# Obsoletes: sysstat
 %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.
+A cron script also writes daily performance summary reports similar to
+those written by sysstat.
 
 %if !%{disable_python2}
 #
-# python-pcp. This is the PCP library bindings for python.
+# python2-pcp. This is the PCP library bindings for python.
 #
-%package -n python-pcp
+%package -n %{__python2}-pcp
 License: GPLv2+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) Python bindings and documentation
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
+%if 0%{?fedora} >= 26 || 0%{?rhel} > 7
+# on these platforms, python2-pcp replaces python-pcp
+Obsoletes: python-pcp
+%endif
 %if 0%{?rhel} == 5
 Requires: python%{default_python}
 %else
-Requires: python
+Requires: %{__python2}
 %endif
 
-%description -n python-pcp
+%description -n %{__python2}-pcp
 This python PCP module contains the language bindings for
 Performance Metric API (PMAPI) monitor tools and Performance
 Metric Domain Agent (PMDA) collector tools written in Python.
@@ -1983,7 +2067,7 @@ Metric Domain Agent (PMDA) collector tools written in Python.
 License: GPLv2+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) Python3 bindings and documentation
-URL: http://www.pcp.io
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
 Requires: python3
 
@@ -2001,18 +2085,17 @@ Metric Domain Agent (PMDA) collector tools written in Python3.
 License: GPLv2+
 Group: Development/Libraries
 Summary: Performance Co-Pilot (PCP) System and Monitoring Tools
-URL: http://www.pcp.io
+URL: https://pcp.io
 %if !%{disable_python3}
 Requires: python3-pcp = %{version}-%{release}
-%endif
-%if !%{disable_python2}
-Requires: python-pcp = %{version}-%{release}
+%else
+Requires: %{__python2}-pcp = %{version}-%{release}
 %endif
 Requires: pcp-libs = %{version}-%{release}
 
 %description system-tools
 This PCP module contains additional system monitoring tools written
-in python.
+in the Python language.
 %endif #end pcp-system-tools
 
 %if !%{disable_qt}
@@ -2023,8 +2106,9 @@ in python.
 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
+URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
+Requires: liberation-sans-fonts
 BuildRequires: hicolor-icon-theme
 
 %description gui
@@ -2044,7 +2128,7 @@ Group: Documentation
 BuildArch: noarch
 %endif
 Summary: Documentation and tutorial for the Performance Co-Pilot
-URL: http://www.pcp.io
+URL: https://pcp.io
 # http://fedoraproject.org/wiki/Packaging:Conflicts "Splitting Packages"
 # (all man pages migrated to pcp-doc during great package split of '15)
 Conflicts: pcp-pmda-pmda < 3.10.5
@@ -2069,7 +2153,7 @@ PCP utilities and daemons, and the PCP graphical tools.
 License: GPLv2+ and CC-BY
 Group: Applications/System
 Summary: Selinux policy package
-URL: http://www.pcp.io
+URL: https://pcp.io
 BuildRequires: selinux-policy-devel
 BuildRequires: selinux-policy-targeted
 %if 0%{?rhel} == 5
@@ -2091,22 +2175,14 @@ updated policy package.
 %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}
+%configure %{?_with_initd} %{?_with_doc} %{?_with_ib} %{?_with_papi} %{?_with_perfevent} %{?_with_bcc} %{?_with_json} %{?_with_snmp} %{?_with_nutcracker} %{?_with_webapps}
 make %{?_smp_mflags} default_pcp
 
 %install
@@ -2132,11 +2208,13 @@ rm -fr $RPM_BUILD_ROOT/%{_initddir}/pmwebd
 rm -fr $RPM_BUILD_ROOT/%{_unitdir}/pmwebd.service
 rm -f $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin/pmwebd
 %endif
+%if !%{disable_webapps}
 for app in vector grafana graphite blinkenlights; do
     pwd
     webapp=`find ../$app -mindepth 1 -maxdepth 1`
     mv $webapp $RPM_BUILD_ROOT/%{_datadir}/pcp/webapps/$app
 done
+%endif
 
 %if %{disable_infiniband}
 # remove pmdainfiniband on platforms lacking IB devel packages.
@@ -2169,9 +2247,12 @@ for f in $RPM_BUILD_ROOT/%{_initddir}/{pcp,pmcd,pmlogger,pmie,pmwebd,pmmgr,pmpro
 done
 
 %if 0%{?fedora} > 26
+if [ "$1" -eq 1 ]
+then
 PCP_SYSCONFIG_DIR=%{_sysconfdir}/sysconfig
 sed -i 's/^\#\ PMLOGGER_LOCAL.*/PMLOGGER_LOCAL=1/g' "$RPM_BUILD_ROOT/$PCP_SYSCONFIG_DIR/pmlogger"
 sed -i 's/^\#\ PMCD_LOCAL.*/PMCD_LOCAL=1/g' "$RPM_BUILD_ROOT/$PCP_SYSCONFIG_DIR/pmcd"
+fi
 %endif
 
 # list of PMDAs in the base pkg
@@ -2228,42 +2309,53 @@ ls -1 $RPM_BUILD_ROOT/%{_pmdasdir} |\
   grep -E -v '^roomtemp' |\
   grep -E -v '^sendmail' |\
   grep -E -v '^shping' |\
+  grep -E -v '^smart' |\
   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 '^bcc' |\
   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
+# 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 'pmiostat|pmcollectl|zabbix|zbxpcp|dstat' |\
   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.
+# pmcollectl and pmiostat are back-compat symlinks to their
+# pcp(1) sub-command variants so are also 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
+  egrep -e 'pmiostat|pmcollectl|pmrep|dstat' |\
+  sed -e 's#^#'%{_bindir}'\/#' >pcp-system-tools.list
+ls -1 $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin |\
+  egrep -e 'atop|collectl|dmcache|dstat|free|iostat|ipcs|lvmcache|mpstat' \
+        -e 'numastat|pidstat|shping|tapestat|uptime|verify' |\
+  sed -e 's#^#'%{_libexecdir}/pcp/bin'\/#' >>pcp-system-tools.list
+%endif
+# Separate the pcp-selinux package files.
+%if !%{disable_selinux}
+ls -1 $RPM_BUILD_ROOT/%{_selinuxdir} |\
+  sed -e 's#^#'%{_selinuxdir}'\/#' > pcp-selinux.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
+  grep -E 'selinux-setup' |\
+  sed -e 's#^#'%{_libexecdir}/pcp/bin'\/#' >> pcp-selinux.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' |\
+  grep -E -v 'atop|collectl|dmcache|dstat|free|iostat|mpstat|numastat' |\
+  grep -E -v 'shping|tapestat|uptime|verify|selinux-setup' |\
 %endif
   sed -e 's#^#'%{_libexecdir}/pcp/bin'\/#' >base_exec.list
 ls -1 $RPM_BUILD_ROOT/%{_booksdir} |\
@@ -2274,10 +2366,6 @@ 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
@@ -2533,6 +2621,11 @@ fi
 %preun pmda-dm
 %{pmda_remove "$1" "dm"}
 
+%if !%{disable_bcc}
+%preun pmda-bcc
+%{pmda_remove "$1" "bcc"}
+%endif
+
 %if !%{disable_python2} || !%{disable_python3}
 %preun pmda-gluster
 %{pmda_remove "$1" "gluster"}
@@ -2592,6 +2685,9 @@ fi
 %preun pmda-shping
 %{pmda_remove "$1" "shping"}
 
+%preun pmda-smart
+%{pmda_remove "$1" "smart"}
+
 %preun pmda-summary
 %{pmda_remove "$1" "summary"}
 
@@ -2697,15 +2793,23 @@ pmieconf -c enable dmthin
 
 %if !%{disable_selinux}
 %post selinux
-%{selinux_handle_policy "$1" "pcpupstream.pp"}
+%{selinux_handle_policy "$1" "pcpupstream"}
 
 %triggerin selinux -- docker-selinux
-%{selinux_handle_policy "$1" "pcpupstream-docker.pp"}
+%{selinux_handle_policy "$1" "pcpupstream-docker"}
 
 %triggerin selinux -- container-selinux
-%{selinux_handle_policy "$1" "pcpupstream-container.pp"}
+%{selinux_handle_policy "$1" "pcpupstream-container"}
 %endif
 
+%if !%{disable_bcc}
+%post pmda-bcc
+%{pmda_notready "$1" "bcc"}
+%endif
+
+%post pmda-prometheus
+%{pmda_notready "$1" "prometheus"}
+
 %post
 PCP_LOG_DIR=%{_logsdir}
 PCP_PMNS_DIR=%{_pmnsdir}
@@ -2715,6 +2819,7 @@ 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}/sa 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"
@@ -2807,6 +2912,7 @@ cd
 %config(noreplace) %{_sysconfdir}/sysconfig/pmproxy
 %config(noreplace) %{_sysconfdir}/sysconfig/pmcd
 %config %{_sysconfdir}/pcp.env
+%dir %{_confdir}/labels
 %dir %{_confdir}/pmcd
 %config(noreplace) %{_confdir}/pmcd/pmcd.conf
 %config(noreplace) %{_confdir}/pmcd/pmcd.options
@@ -2822,8 +2928,10 @@ cd
 %config(noreplace) %{_confdir}/pmlogger/control
 %config(noreplace) %{_confdir}/pmlogger/control.d/local
 %dir %attr(0775,pcp,pcp) %{_confdir}/nssdb
+%dir %{_confdir}/discover
+%config(noreplace) %{_confdir}/discover/pcp-kube-pods.conf
 
-%ghost %{_localstatedir}/run/pcp
+%ghost %dir %attr(0775,pcp,pcp) %{_localstatedir}/run/pcp
 %{_localstatedir}/lib/pcp/config/pmafm
 %dir %attr(0775,pcp,pcp) %{_localstatedir}/lib/pcp/config/pmie
 %{_localstatedir}/lib/pcp/config/pmie
@@ -2847,6 +2955,8 @@ cd
 #empty
 
 %files zeroconf
+%{_libexecdir}/pcp/bin/pmlogger_daily_report
+%config(noreplace) %{_sysconfdir}/cron.d/pcp-pmlogger-daily-report
 %{_localstatedir}/lib/pcp/config/pmlogconf/zeroconf
 
 #additional pmlogger config files
@@ -2905,13 +3015,14 @@ cd
 %attr(0775,pcp,pcp) %{_logsdir}/pmwebd
 %{_confdir}/pmwebd
 %config(noreplace) %{_confdir}/pmwebd/pmwebd.options
-# duplicate directories from pcp and pcp-webjs, but rpm copes with that.
+# duplicate pcp, pcp-webapi and pcp-webjs directories, but rpm copes with that.
 %dir %{_datadir}/pcp
 %dir %{_datadir}/pcp/webapps
 %endif
 
+%if !%{disable_webapps}
 %files webjs
-# duplicate directories from pcp and pcp-webapi, but rpm copes with that.
+# duplicate pcp, pcp-webapi and pcp-webjs directories, but rpm copes with that.
 %dir %{_datadir}/pcp
 %dir %{_datadir}/pcp/webapps
 %{_datadir}/pcp/webapps/*.png
@@ -2937,6 +3048,7 @@ cd
 %dir %{_datadir}/pcp
 %dir %{_datadir}/pcp/webapps
 %{_datadir}/pcp/webapps/vector
+%endif
 
 %files manager
 %{_initddir}/pmmgr
@@ -3089,6 +3201,11 @@ cd
 %files pmda-dm
 %{_pmdasdir}/dm
 
+%if !%{disable_bcc}
+%files pmda-bcc
+%{_pmdasdir}/bcc
+%endif
+
 %if !%{disable_python2} || !%{disable_python3}
 %files pmda-gluster
 %{_pmdasdir}/gluster
@@ -3136,6 +3253,7 @@ cd
 
 %files export-zabbix-agent
 %{_libdir}/zabbix
+%{_sysconfdir}/zabbix/zabbix_agentd.d/zbxpcp.conf
 
 %if !%{disable_json}
 %files pmda-json
@@ -3186,6 +3304,9 @@ cd
 %files pmda-shping
 %{_pmdasdir}/shping
 
+%files pmda-smart
+%{_pmdasdir}/smart
+
 %files pmda-summary
 %{_pmdasdir}/summary
 
@@ -3209,7 +3330,7 @@ cd
 %files -n perl-PCP-LogSummary -f perl-pcp-logsummary.list
 
 %if !%{disable_python2}
-%files -n python-pcp -f python-pcp.list.rpm
+%files -n %{__python2}-pcp -f python-pcp.list.rpm
 %endif
 
 %if !%{disable_python3}
@@ -3234,12 +3355,44 @@ cd
 %endif
 
 %if !%{disable_python2} || !%{disable_python3}
-%files system-tools -f pcp_system_tools.list
+%files system-tools -f pcp-system-tools.list
+%dir %{_confdir}/dstat
 %dir %{_confdir}/pmrep
-%config(noreplace) %{_confdir}/pmrep/pmrep.conf
+%config(noreplace) %{_confdir}/dstat/*
+%config(noreplace) %{_confdir}/pmrep/*
 %endif
 
 %changelog
+* Wed Sep 05 2018 Nathan Scott <nathans@redhat.com> - 4.1.0-4
+- BPF kernel compatibility fixes (BZ 1597975)
+- Several important selinux fixes (BZ 1603596)
+
+* Thu Aug 02 2018 Nathan Scott <nathans@redhat.com> - 4.1.0-3
+- Enable transparent decompression in the build.
+
+* Tue Jun 19 2018 Nathan Scott <nathans@redhat.com> - 4.1.0-2
+- Enable pcp-pmda-bcc sub-package in the build.
+
+* Fri Jun 15 2018 Nathan Scott <nathans@redhat.com> - 4.1.0-1
+- Resolve MMV instance domain mishandling issue (BZ 1586051)
+
+* Fri May 25 2018 Nathan Scott <nathans@redhat.com> - 4.0.2-4
+- Clear zero-length pmlogger configuration files (BZ 1581109)
+
+* Fri May 25 2018 Nathan Scott <nathans@redhat.com> - 4.0.2-3
+- Resolve rpm verification problem on /var/run/pcp (BZ 1533154)
+- Fix device mapper PMDA histogram metrics sigsegv (BZ 1569854)
+- Fix pmlogger_daily log rotation open port issue (BZ 1579881)
+
+* Thu May 17 2018 Nathan Scott <nathans@redhat.com> - 4.0.2-2
+- Resolve multilib issue in installed header files
+- Add whitespace into ASL 2.0 license lines
+
+* Fri May 11 2018 Nathan Scott <nathans@redhat.com> - 4.0.2-1
+- Ensure sans font dependency resolved for webapps (BZ 1568109)
+- Ensure sans font dependency resolved for pmchart (BZ 1546640)
+- Update to latest PCP sources (BZ 1565370).
+
 * Mon Jan 29 2018 Lukas Berk <lberk@redhat.com> - 3.12.2-5
 - Correction to spec file and selinux policy (BZ 1488116)
 - Show all perfevent metrics in pcpatop (BZ 1525864)
@@ -3296,131 +3449,198 @@ cd
 - Export filesys metrics with persistent DM naming (BZ 1349932)
 
 * Fri Jun 17 2016 Nathan Scott <nathans@redhat.com> - 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 <nathans@redhat.com> - 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 <nathans@redhat.com> - 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 <nathans@redhat.com> - 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 <nathans@redhat.com> - 3.10.5-5
-- Disable pcp-pmda-json, waiting on missing dependency (BZ 1238134)
-
-* Wed Jul 08 2015 Dave Brolley <brolley@redhat.com> - 3.10.5-4
-- Fix concurrency (locking) problem discovered by coverity (BZ 1237412)
-
-* Mon Jul 06 2015 Dave Brolley <brolley@redhat.com> - 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 <brolley@redhat.com> - 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 <nathans@redhat.com> - 3.9.10-8
-- Respin with QA archive missing from last patch (BZ 1161515)
-
-* Mon Nov 24 2014 Nathan Scott <nathans@redhat.com> - 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 <fche@redhat.com> - 3.9.10-6
-- Fix BZ1152503 (pcp rebuild - qmake workaround)
-- Fix BZ1152535 (systemd daemon-reload)
-
-* Thu Oct 16 2014 Nathan Scott <nathans@redhat.com> - 3.9.10-5
-- Fix script locations for systemd services (BZ 1147400)
-
-* Fri Sep 05 2014 Frank Ch. Eigler <fche@redhat.com> - 3.9.10-4
-- Add pcpfans add-ons.
-- Correct webapi subrpm license tag
-
-* Fri Sep 05 2014 Lukas Berk <lberk@redhat.com> - 3.9.10-2
-- Add condition for disable_papi on arch and rhel version
+- Fix memory leak in derived metrics error handling (BZ 1331973)
+- Correctly propogate indom in mixed derived metrics (BZ 1337212, BZ 1336130)
+- Disallow stopping pmie/pmlogger daemons from cron (BZ 1336792)
+- Fail fast for easily detected bad pmcd configuration (BZ 1336210)
+- Implement primary (local) pmie concept in rc pmie (BZ 1323851)
+- Update to latest PCP sources.
+
+* Mon May 16 2016 Jitka Plesnikova <jplesnik@redhat.com> - 3.11.2-2.1
+- Perl 5.24 rebuild
+
+* Fri Apr 29 2016 Lukas Berk <lberk@redhat.com> - 3.11.2-1
+- Negative nice values reported incorrectly (BZ 1328432)
+- Multithreaded clients with concurrent pmNewContext improvements (BZ 1325363)
+- PMCD agent auto-restart (BZ 1323521)
+- Segv in libpcp during discovery error processing (BZ 1319288)
+- Update to latest PCP sources.
+
+* Fri Mar 18 2016 Dave Brolley <brolley@redhat.com> - 3.11.1-1
+- Call Remove script when uninstalling individual PMDAs (BZ 1304722)
+- Restrict pmcd.services to checking known pcp services (BZ 1286361)
+- Support for multi-archive contexts, across all clients (BZ 1262723)
+- Remove the default shotgun approach to stopping daemons (BZ 1210976)
+- Add mechanism for automatic recovery from PMDA timeouts (BZ 1065803)
+- Update to latest PCP sources.
+
+* Fri Jan 29 2016 Mark Goodwin <mgoodwin@redhat.com> - 3.11.0-1
+- Significant speedups to elapsed time stopping pmcd (BZ 1292027)
+- Fix python derived metric exception handling issues (BZ 1299806)
+- incorrect interpolation across <mark> record in a merged archive (BZ 1296750)
+- pcp requires pcp-compat pulling in a lot of unneeded pcp-pmda-* packages (BZ 1293466)
+- Update to latest PCP sources.
+
+* Wed Dec 16 2015 Lukas Berk <lberk@redhat.com> - 3.10.9-1
+- Add -V/--version support to several more commands (BZ 1284411)
+- Resolve a pcp-iostat(1) transient device exception (BZ 1249572)
+- Provides pmdapipe, an output-capturing domain agent (BZ 1163413)
+- Python PMAPI pmSetMode allows None timeval parameter (BZ 1284417)
+- Python PMI pmiPutValue now supports singular metrics (BZ 1285371)
+- Fix python PMAPI pmRegisterDerived wrapper interface (BZ 1286733)
+- Fix pmstat SEGV when run with graphical time control (BZ 1287678)
+- Make pmNonOptionsFromList error message less cryptic (BZ 1287778)
+- Drop unimplemented pmdumptext options from usage, man page (BZ 1289909)
+- Stop creating configuration files in tmp_t locations (BZ 1256125)
+- Update to latest PCP sources.
+
+* Fri Oct 30 2015 Mark Goodwin <mgoodwin@redhat.com> - 3.10.8-1
+- Update pmlogger to log an immediate sample first (BZ 1269921)
+- Add pmOption host and archive setter python APIs (BZ 1270176)
+- Replace old pmatop(1) man page with pcp-atop(1) (BZ 1270761)
+- Update to latest PCP sources.
+
+* Wed Sep 16 2015 Nathan Scott <nathans@redhat.com> - 3.10.7-1
+- Resolved pmchart sigsegv opening view without context (BZ 1256708)
+- Fixed pmchart memory corruption restoring Saved Hosts (BZ 1257009)
+- Fix perl PMDA API double-free on socket error path (BZ 1258862)
+- Fix python API pmGetOption(3) alignment interface (BZ 1262722)
+- Added missing RPM dependencies to several PMDA sub-packages.
+- Update to latest stable Vector release for pcp-vector-webapp.
+- Update to latest PCP sources.
+
+* Sat Sep 05 2015 Kalev Lember <klember@redhat.com> - 3.10.6-2.1
+- Rebuilt for librpm soname bump
+
+* Thu Aug 06 2015 Lukas Berk <lberk@redhat.com> - 3.10.6-2
+- Fix SDT related build error (BZ 1250894)
+
+* Tue Aug 04 2015 Nathan Scott <nathans@redhat.com> - 3.10.6-1
+- Fix pcp2graphite write method invocation failure (BZ 1243123)
+- Reduce diagnostics in pmdaproc unknown state case (BZ 1224431)
+- Derived metrics via multiple files, directory expansion (BZ 1235556)
+- Update to latest PCP sources.
+
+* Mon Jun 15 2015 Mark Goodwin <mgoodwin@redhat.com> - 3.10.5-1
+- Provide and use non-exit(1)ing pmGetConfig(3) variant (BZ 1187588)
+- Resolve a pmdaproc.sh pmlogger restart regression (BZ 1229458)
+- Replacement of pmatop/pcp-atop(1) utility (BZ 1160811, BZ 1018575)
+- Reduced installation size for minimal applications (BZ 1182184)
+- Ensure pmlogger start scripts wait on pmcd startup (BZ 1185760)
+- Need to run pmcd at least once before pmval -L will work (BZ 185749)
+
+* Wed Apr 15 2015 Nathan Scott <nathans@redhat.com> - 3.10.4-1
+- Update to latest PCP, pcp-webjs and Vector sources.
+- Packaging improvements after re-review (BZ 1204467)
+- Start pmlogger/pmie independent of persistent state (BZ 1185755)
+- Fix cron error reports for disabled pmlogger service (BZ 1208699)
+- Incorporate Vector from Netflix (https://github.com/Netflix/vector)
+- Sub-packages for pcp-webjs allowing choice and reducing used space.
+
+* Wed Mar 04 2015 Dave Brolley <brolley@redhat.com> - 3.10.3-2
+- papi 5.4.1 rebuild
+
+* Mon Mar 02 2015 Dave Brolley <brolley@redhat.com> - 3.10.3-1
+- Update to latest PCP sources.
+- New sub-package for pcp-import-ganglia2pcp.
+- Python3 support, enabled by default in f22 onward (BZ 1194324)
+
+* Mon Feb 23 2015 Slavek Kabrda <bkabrda@redhat.com> - 3.10.2-3
+- Only use Python 3 in Fedora >= 23, more info at
+  https://bugzilla.redhat.com/show_bug.cgi?id=1194324#c4
+
+* Mon Feb 23 2015 Nathan Scott <nathans@redhat.com> - 3.10.2-2
+- Initial changes to support python3 as default (BZ 1194324)
+
+* Fri Jan 23 2015 Dave Brolley <brolley@redhat.com> - 3.10.2-1
+- Update to latest PCP sources.
+- Improve pmdaInit diagnostics for DSO helptext (BZ 1182949)
+- Tighten up PMDA termination on pmcd stop (BZ 1180109)
+- Correct units for cgroup memory metrics (BZ 1180351)
+- Add the pcp2graphite(1) export script (BZ 1163986)
+
+* Mon Dec 01 2014 Nathan Scott <nathans@redhat.com> - 3.10.1-1
+- New conditionally-built pcp-pmda-perfevent sub-package.
+- Update to latest PCP sources.
+
+* Tue Nov 18 2014 Dave Brolley <brolley@redhat.com> - 3.10.0-2
+- papi 5.4.0 rebuild
+
+* Fri Oct 31 2014 Nathan Scott <nathans@redhat.com> - 3.10.0-1
+- Create new sub-packages for pcp-webjs and python3-pcp.
+- Fix __pmDiscoverServicesWithOptions(1) codes (BZ 1139529)
+- Update to latest PCP sources.
 
 * Fri Sep 05 2014 Nathan Scott <nathans@redhat.com> - 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).
+- Convert PCP init scripts to systemd services (BZ 996438)
+- Fix pmlogsummary -S/-T time window reporting (BZ 1132476)
+- Resolve pmdumptext segfault with invalid host (BZ 1131779)
+- Fix signedness in some service discovery codes (BZ 1136166)
+- New conditionally-built pcp-pmda-papi sub-package.
+- Update to latest PCP sources.
+
+* Tue Aug 26 2014 Jitka Plesnikova <jplesnik@redhat.com> - 3.9.9-1.2
+- Perl 5.20 rebuild
+
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.9.9-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Wed Aug 13 2014 Nathan Scott <nathans@redhat.com> - 3.9.9-1
+- Update to latest PCP sources.
+
+* Wed Jul 16 2014 Mark Goodwin <mgoodwin@redhat.com> - 3.9.7-1
+- Update to latest PCP sources.
+
+* Wed Jun 18 2014 Dave Brolley <brolley@redhat.com> - 3.9.5-1
+- Daemon signal handlers no longer use unsafe APIs (BZ 847343)
+- Handle /var/run setups on a temporary filesystem (BZ 656659)
+- Resolve pmlogcheck sigsegv for some archives (BZ 1077432)
+- Ensure pcp-gui-{testsuite,debuginfo} packages get replaced.
+- Revive support for EPEL5 builds, post pcp-gui merge.
+- Update to latest PCP sources.
 
-* Wed Feb 26 2014 Nathan Scott <nathans@redhat.com> - 3.8.10-8
-- Update pmmgr to pcp 3.9.0+ level (BZ 1067547)
+* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.9.4-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
 
-* Tue Feb 25 2014 Nathan Scott <nathans@redhat.com> - 3.8.10-7
-- Fix a handful of QE-found test-induced failures (BZ 987086)
-- Multilib packaging support for libs and devel (BZ 1059642)
+* Thu May 15 2014 Nathan Scott <nathans@redhat.com> - 3.9.4-1
+- Merged pcp-gui and pcp-doc packages into core PCP.
+- Allow for conditional libmicrohttpd builds in spec file.
+- Adopt slow-start capability in systemd PMDA (BZ 1073658)
+- Resolve pmcollectl network/disk mis-reporting (BZ 1097095)
+- Update to latest PCP sources.
 
-* Tue Feb 18 2014 Nathan Scott <nathans@redhat.com> - 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)
+* Tue Apr 15 2014 Dave Brolley <brolley@redhat.com> - 3.9.2-1
+- Improve pmdarpm(1) concurrency complications (BZ 1044297)
+- Fix pmconfig(1) shell output string quoting (BZ 1085401)
+- Update to latest PCP sources.
 
-* Mon Feb 10 2014 Nathan Scott <nathans@redhat.com> - 3.8.10-5
-- Resolve pmdammv induced pmcd segv during tests (BZ 1061330)
-- Fix python-pcp time API wrapper implementation (BZ 1062467)
+* Wed Mar 19 2014 Nathan Scott <nathans@redhat.com> - 3.9.1-1
+- Update to latest PCP sources.
 
-* Wed Jan 29 2014 Nathan Scott <nathans@redhat.com> - 3.8.10-4
-- Ensure the PMNS stdpmid files are installed (BZ 1059004)
+* Thu Feb 20 2014 Nathan Scott <nathans@redhat.com> - 3.9.0-2
+- Workaround further PowerPC/tapset-related build fallout.
 
-* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 3.8.10-3
-- Mass rebuild 2014-01-24
+* Wed Feb 19 2014 Nathan Scott <nathans@redhat.com> - 3.9.0-1
+- Create new sub-packages for pcp-webapi and pcp-manager
+- Split configuration from pcp-libs into pcp-conf (multilib)
+- Fix pmdagluster to handle more volumes, fileops (BZ 1066544)
+- Update to latest PCP sources.
 
-* Wed Jan 22 2014 Nathan Scott <nathans@redhat.com> - 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 29 2014 Nathan Scott <nathans@redhat.com> - 3.8.12-1
+- Resolves SNMP procfs file ICMP line parse issue (BZ 1055818)
+- Update to latest PCP sources.
 
 * Wed Jan 15 2014 Nathan Scott <nathans@redhat.com> - 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 <dmach@redhat.com> - 3.8.6-3
-- Mass rebuild 2013-12-27
+* Thu Dec 12 2013 Nathan Scott <nathans@redhat.com> - 3.8.9-1
+- Reduce set of exported symbols from DSO PMDAs (BZ 1025694)
+- Symbol-versioning for PCP shared libraries (BZ 1037771)
+- Fix pmcd/Avahi interaction with multiple ports (BZ 1035513)
+- Update to latest PCP sources.
 
-* Wed Nov 06 2013 Frank Ch. Eigler <fche@redhat.com> - 3.8.6-2
-- BZ1027236: adapt to droppage of nss export ciphers
+* Sun Nov 03 2013 Nathan Scott <nathans@redhat.com> - 3.8.8-1
+- Update to latest PCP sources (simple build fixes only).
 
 * Fri Nov 01 2013 Nathan Scott <nathans@redhat.com> - 3.8.6-1
 - Update to latest PCP sources.
@@ -3429,7 +3649,7 @@ cd
 
 * Fri Oct 18 2013 Nathan Scott <nathans@redhat.com> - 3.8.5-1
 - Update to latest PCP sources.
-- Correct pcp Infiniband package dependencies (BZ 1016368)
+- Disable pcp-pmda-infiniband sub-package on RHEL5 (BZ 1016368)
 
 * Mon Sep 16 2013 Nathan Scott <nathans@redhat.com> - 3.8.4-2
 - Disable the pcp-pmda-infiniband sub-package on s390 platforms.