diff --git a/.gitignore b/.gitignore
index 71e64d4..eede277 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/pcp-5.2.5.src.tar.gz
+SOURCES/pcp-5.3.0.src.tar.gz
diff --git a/.pcp.metadata b/.pcp.metadata
index 642e815..332c7b5 100644
--- a/.pcp.metadata
+++ b/.pcp.metadata
@@ -1 +1 @@
-d77455b09d679988fae82ead1fb3b4ec65726fa9 SOURCES/pcp-5.2.5.src.tar.gz
+4ce5b901a78f414cadeef32d0175d964983612fc SOURCES/pcp-5.3.0.src.tar.gz
diff --git a/SOURCES/redhat-bugzilla-1926756.patch b/SOURCES/redhat-bugzilla-1926756.patch
deleted file mode 100644
index 779923d..0000000
--- a/SOURCES/redhat-bugzilla-1926756.patch
+++ /dev/null
@@ -1,205 +0,0 @@
-commit d7679bd7cbb94692250a450bccf9f01cb982467f
-Author: Mark Goodwin <mgoodwin@redhat.com>
-Date:   Fri Feb 12 10:12:59 2021 +1100
-
-    selinux, qa: allow pmcd to use netlink_tcpdiag_socket for sockets PMDA
-    
-    Add SELinux rules allowing pmcd to create, setopt, bind, getattr and
-    nlmsg_read to netlink tcpdiag sockets. Needed by pmdasockets.
-    
-    Update qa/1622 and 917.
-    
-    Resolves: RHBZ#1926756
-
-diff --git a/qa/1622 b/qa/1622
-index 83f260d6d..f62b5f89a 100755
---- a/qa/1622
-+++ b/qa/1622
-@@ -216,6 +216,11 @@ type=AVC msg=audit(XXX.62): avc:  denied  { getattr open read } for  pid=YYYY co
- type=AVC msg=audit(XXX.63): avc:  denied  { connectto } for  pid=YYYY comm="pmdaX" name="/" dev="tracefs" ino=1 scontext=system_u:system_r:pcp_pmlogger_t:s0 tcontext=system_u:object_r:saslauthd_t:s0 tclass=unix_stream_socket permissive=0
- type=AVC msg=audit(XXX.66): avc:  denied  { sys_rawio } for  pid=YYYY comm="pmdaX" name="/" dev="tracefs" ino=1 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:pcp_pmcd_t:s0 tclass=capability permissive=0
- type=AVC msg=audit(XXX.67): avc:  denied  { module_request } for pid=YYYY comm="pmdalinux" kmod="netdev-tun0" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:kernel_t:s0 tclass=system permissive=0
-+type=AVC msg=audit(XXX.85): avc:  denied  { create } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+type=AVC msg=audit(XXX.86): avc:  denied  { setopt } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+type=AVC msg=audit(XXX.87): avc:  denied  { bind } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+type=AVC msg=audit(XXX.88): avc:  denied  { getattr } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+type=AVC msg=audit(XXX.89): avc:  denied  { nlmsg_read } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
- EOF
- 
- echo "Silence is golden ... all AVC's are allowed by active policy"
-diff --git a/qa/917.out.in b/qa/917.out.in
-index 69c3b2d12..ddec57f9c 100644
---- a/qa/917.out.in
-+++ b/qa/917.out.in
-@@ -125,6 +125,7 @@ Checking policies.
-   allow [pcp_pmcd_t] [drbd_exec_t] : [file] { execute execute_no_trans };
-   allow [pcp_pmcd_t] self : [netlink_generic_socket] { bind create getattr setopt write read };
-   allow [pcp_pmcd_t] [sbd_exec_t] : [file] { execute execute_no_trans };
-+  allow [pcp_pmcd_t] self : [netlink_tcpdiag_socket] { bind create getattr nlmsg_read setopt };
-   allow [pcp_pmcd_t] [etc_t] : [dir] { open read search getattr lock ioctl };
-   allow [pcp_pmcd_t] [shadow_t] : [file] { getattr ioctl lock open read };
-   allow [pcp_pmie_t] [etc_t] : [dir] { open read search getattr lock ioctl };
-diff --git a/src/selinux/GNUlocaldefs b/src/selinux/GNUlocaldefs
-index 30b67d907..cbfa34c14 100644
---- a/src/selinux/GNUlocaldefs
-+++ b/src/selinux/GNUlocaldefs
-@@ -118,5 +118,7 @@ endif
- 
- ifeq "$(PCP_SELINUX_NETLINK_GENERIC_SOCKET_CLASS)" "true"
- PCP_NETLINK_GENERIC_SOCKET_CLASS="class netlink_generic_socket { bind create getattr setopt write read };"
-+PCP_NETLINK_TCPDIAG_SOCKET_CLASS="class netlink_tcpdiag_socket { bind create getattr nlmsg_read setopt };"
- PCP_NETLINK_GENERIC_SOCKET_RULE="allow pcp_pmcd_t self:netlink_generic_socket { bind create getattr setopt write read };"
-+PCP_NETLINK_TCPDIAG_SOCKET_RULE="allow pcp_pmcd_t self:netlink_tcpdiag_socket { bind create getattr nlmsg_read setopt };"
- endif
-diff --git a/src/selinux/GNUmakefile b/src/selinux/GNUmakefile
-index e16859d7e..d04644fcb 100644
---- a/src/selinux/GNUmakefile
-+++ b/src/selinux/GNUmakefile
-@@ -80,6 +80,8 @@ $(IAM).te: $(IAM).te.in
- 		-e 's+@PCP_ICMP_SOCKET_RULE@+'$(PCP_ICMP_SOCKET_RULE)'+' \
- 		-e 's+@PCP_NETLINK_GENERIC_SOCKET_CLASS@+'$(PCP_NETLINK_GENERIC_SOCKET_CLASS)'+' \
- 		-e 's+@PCP_NETLINK_GENERIC_SOCKET_RULE@+'$(PCP_NETLINK_GENERIC_SOCKET_RULE)'+' \
-+		-e 's+@PCP_NETLINK_TCPDIAG_SOCKET_CLASS@+'$(PCP_NETLINK_TCPDIAG_SOCKET_CLASS)'+' \
-+		-e 's+@PCP_NETLINK_TCPDIAG_SOCKET_RULE@+'$(PCP_NETLINK_TCPDIAG_SOCKET_RULE)'+' \
- 		-e 's+@PCP_SELINUX_MACRO_RULE@+'$(PCP_SELINUX_MACRO_RULE)'+' \
- 		-e 's+@PACKAGE_VERSION@+'$(PACKAGE_VERSION)'+' \
- 
-diff --git a/src/selinux/pcpupstream.te.in b/src/selinux/pcpupstream.te.in
-index 36a043be1..d935aee36 100644
---- a/src/selinux/pcpupstream.te.in
-+++ b/src/selinux/pcpupstream.te.in
-@@ -90,6 +90,7 @@ require {
-         @PCP_BPF_CLASS@
- 	class system { module_request };
- 	@PCP_NETLINK_GENERIC_SOCKET_CLASS@
-+	@PCP_NETLINK_TCPDIAG_SOCKET_CLASS@
- }
- 
- #============= init_t ==============
-@@ -423,3 +424,11 @@ allow pcp_pmcd_t drbd_exec_t:file { execute execute_no_trans };
- # pmda-hacluster requirements for checking sbd
- # type=AVC msg=audit(XXX.81): avc:  denied  { execute_no_trans } for  pid=421434 comm="sh" path="/usr/sbin/sbd" dev="vda1" ino=1050019 scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:object_r:sbd_exec_t:s0 tclass=file permissive=1
- @PCP_SBD_EXEC_RULE@
-+
-+#=========== pmda-sockets ============
-+# type=AVC msg=audit(XXX.85): avc:  denied  { create } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+# type=AVC msg=audit(XXX.86): avc:  denied  { setopt } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+# type=AVC msg=audit(XXX.87): avc:  denied  { bind } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+# type=AVC msg=audit(XXX.88): avc:  denied  { getattr } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+# type=AVC msg=audit(XXX.89): avc:  denied  { nlmsg_read } for  pid=YYYY comm="ss" scontext=system_u:system_r:pcp_pmcd_t:s0 tcontext=system_u:system_r:pcp_pmcd_t:s0 tclass=netlink_tcpdiag_socket permissive=1
-+@PCP_NETLINK_TCPDIAG_SOCKET_RULE@
-
-commit a49772607d80b25b2ae4b8764be709bb27d7e16f
-Author: Mark Goodwin <mgoodwin@redhat.com>
-Date:   Fri Feb 12 10:09:23 2021 +1100
-
-    pmdasockets: minor changes to Install and Remove, add -U username
-    
-    Specify pmns_name in Install and Remove scripts since the pmda name
-    differs to the namespace. Add -U username for optional use when run
-    as a daemon.
-
-diff --git a/src/pmdas/linux_sockets/GNUmakefile b/src/pmdas/linux_sockets/GNUmakefile
-index 34897f2e9..a32987ef7 100644
---- a/src/pmdas/linux_sockets/GNUmakefile
-+++ b/src/pmdas/linux_sockets/GNUmakefile
-@@ -31,7 +31,7 @@ HFILES		= indom.h cluster.h ss_stats.h
- LLDLIBS		= $(PCP_PMDALIB)
- LCFLAGS		= $(INVISIBILITY)
- 
--SCRIPTS		= Install Remove
-+SCRIPTS		= Install Remove Upgrade
- VERSION_SCRIPT	= exports
- LDIRT		= domain.h $(VERSION_SCRIPT) $(IAM).log
- 
-diff --git a/src/pmdas/linux_sockets/Install b/src/pmdas/linux_sockets/Install
-index 4bc934c96..28d7c7f9e 100755
---- a/src/pmdas/linux_sockets/Install
-+++ b/src/pmdas/linux_sockets/Install
-@@ -1,4 +1,4 @@
--#! /bin/sh
-+#!/usr/bin/sh
- #
- # Copyright (c) 2021 Red Hat.
- # 
-@@ -25,6 +25,8 @@ dso_opt=true
- pipe_opt=false
- daemon_opt=false
- 
-+pmns_name=network.persocket	# differs to PMDA name
-+
- which ss >/dev/null 2>&1
- if [ $? -ne 0 ]
- then
-diff --git a/src/pmdas/linux_sockets/Remove b/src/pmdas/linux_sockets/Remove
-index 26edc85aa..3fee6a0e6 100755
---- a/src/pmdas/linux_sockets/Remove
-+++ b/src/pmdas/linux_sockets/Remove
-@@ -1,4 +1,4 @@
--#! /bin/sh
-+#!/usr/bin/sh
- #
- # Copyright (c) 2021 Red Hat.
- # 
-@@ -19,6 +19,7 @@
- . $PCP_SHARE_DIR/lib/pmdaproc.sh
- 
- iam=sockets
-+pmns_name=network.persocket	# differs to PMDA name
- 
- pmdaSetup
- pmdaRemove
-diff --git a/src/pmdas/linux_sockets/pmda.c b/src/pmdas/linux_sockets/pmda.c
-index 9bca5d9d0..fab4be290 100644
---- a/src/pmdas/linux_sockets/pmda.c
-+++ b/src/pmdas/linux_sockets/pmda.c
-@@ -23,6 +23,7 @@
- #include "ss_stats.h"
- 
- static int		_isDSO = 1; /* for local contexts */
-+static char		*username;
- 
- /* metrics supported in this PMDA - see metrictab.c */
- extern pmdaMetric metrictable[];
-@@ -200,6 +201,8 @@ sockets_init(pmdaInterface *dp)
- 		pmGetConfig("PCP_PMDAS_DIR"), sep, sep);
- 	pmdaDSO(dp, PMDA_INTERFACE_7, "SOCKETS DSO", helppath);
-     }
-+    else
-+	pmSetProcessIdentity(username);
- 
-     if (dp->status != 0)
- 	return;
-@@ -227,12 +230,13 @@ static pmLongOptions longopts[] = {
-     PMOPT_DEBUG,
-     PMDAOPT_DOMAIN,
-     PMDAOPT_LOGFILE,
-+    PMDAOPT_USERNAME,
-     PMOPT_HELP,
-     PMDA_OPTIONS_END
- };
- 
- static pmdaOptions opts = {
--    .short_options = "D:d:l:?",
-+    .short_options = "D:d:l:U:?",
-     .long_options = longopts,
- };
- 
-@@ -248,6 +252,7 @@ main(int argc, char **argv)
- 
-     _isDSO = 0;
-     pmSetProgname(argv[0]);
-+    pmGetUsername(&username);
-     pmsprintf(helppath, sizeof(helppath), "%s%c" "sockets" "%c" "help",
- 		pmGetConfig("PCP_PMDAS_DIR"), sep, sep);
-     pmdaDaemon(&dispatch, PMDA_INTERFACE_7, pmGetProgname(), SOCKETS, "sockets.log", helppath);
-@@ -257,6 +262,8 @@ main(int argc, char **argv)
- 	pmdaUsageMessage(&opts);
- 	exit(1);
-     }
-+    if (opts.username)
-+	username = opts.username;
- 
-     pmdaOpenLog(&dispatch);
-     sockets_init(&dispatch);
-
diff --git a/SOURCES/redhat-bugzilla-1930284.patch b/SOURCES/redhat-bugzilla-1930284.patch
deleted file mode 100644
index 4b08e71..0000000
--- a/SOURCES/redhat-bugzilla-1930284.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Revert upstream PCP commit e01ab96c813fa31e685ac864031d145f63162088
-
-diff -Naurp pcp-5.2.5.orig/src/pmie/pmie.service.in pcp-5.2.5/src/pmie/pmie.service.in
---- pcp-5.2.5.orig/src/pmie/pmie.service.in	2021-02-03 09:58:14.000000000 +1100
-+++ pcp-5.2.5/src/pmie/pmie.service.in	2021-02-19 10:52:20.786419561 +1100
-@@ -4,6 +4,7 @@ Documentation=man:pmie(1)
- After=network-online.target pmcd.service
- Before=pmie_check.timer pmie_daily.timer
- BindsTo=pmie_check.timer pmie_daily.timer
-+Wants=pmcd.service
- 
- [Service]
- Type=notify
-diff -Naurp pcp-5.2.5.orig/src/pmlogger/pmlogger.service.in pcp-5.2.5/src/pmlogger/pmlogger.service.in
---- pcp-5.2.5.orig/src/pmlogger/pmlogger.service.in	2021-02-03 09:58:14.000000000 +1100
-+++ pcp-5.2.5/src/pmlogger/pmlogger.service.in	2021-02-19 10:52:36.111160100 +1100
-@@ -4,6 +4,7 @@ Documentation=man:pmlogger(1)
- After=network-online.target pmcd.service
- Before=pmlogger_check.timer pmlogger_daily.timer pmlogger_daily-poll.timer
- BindsTo=pmlogger_check.timer pmlogger_daily.timer pmlogger_daily-poll.timer
-+Wants=pmcd.service
- 
- [Service]
- Type=notify
diff --git a/SOURCES/redhat-bugzilla-1950263.patch b/SOURCES/redhat-bugzilla-1950263.patch
new file mode 100644
index 0000000..649d8c4
--- /dev/null
+++ b/SOURCES/redhat-bugzilla-1950263.patch
@@ -0,0 +1,33 @@
+commit 6528e1b09ad948a8bf82e03ad2f10c1a296078af
+Author: Nathan Scott <nathans@redhat.com>
+Date:   Tue Apr 20 11:02:26 2021 +1000
+
+    qa: specify PCP libraries only on libpcp_web link lines
+    
+    Tweaks the changes from commit c9bd0cc4e9b so that testsuite
+    sources linking with libpcp_web don't pull in 3rd party libs
+    (which may not be installed) like uv, ssl, crypto.
+    
+    Resolves Red Hat BZ #1950263
+
+diff --git a/qa/src/GNUlocaldefs b/qa/src/GNUlocaldefs
+index 3b5873c25..13fc09831 100644
+--- a/qa/src/GNUlocaldefs
++++ b/qa/src/GNUlocaldefs
+@@ -538,13 +538,13 @@ check_pmiend_fdleak:	check_pmiend_fdleak.c
+ 
+ httpfetch:	httpfetch.c
+ 	rm -f $@
+-	$(CCF) $(CDEFS) -o $@ $@.c $(LDLIBS) $(PCP_WEBLIB)
++	$(CCF) $(CDEFS) -o $@ $@.c $(LDLIBS) -lpcp_pmda -lpcp_web -lpcp_mmv
+ json_test:	json_test.c
+ 	rm -f $@
+-	$(CCF) $(CDEFS) -o $@ $@.c $(LDLIBS) $(PCP_WEBLIB)
++	$(CCF) $(CDEFS) -o $@ $@.c $(LDLIBS) -lpcp_pmda -lpcp_web -lpcp_mmv
+ sha1int2ext:	sha1int2ext.o
+ 	rm -f $@
+-	$(CCF) $(CDEFS) -o $@ $@.c $(LDLIBS) $(PCP_WEBLIB)
++	$(CCF) $(CDEFS) -o $@ $@.c $(LDLIBS) -lpcp_pmda -lpcp_web -lpcp_mmv
+ 
+ # --- need libpcp_fault
+ #
diff --git a/SPECS/pcp.spec b/SPECS/pcp.spec
index 9692b78..6820e52 100644
--- a/SPECS/pcp.spec
+++ b/SPECS/pcp.spec
@@ -1,15 +1,14 @@
 Name:    pcp
-Version: 5.2.5
-Release: 4%{?dist}
+Version: 5.3.0
+Release: 2%{?dist}
 Summary: System-level performance monitoring and performance management
 License: GPLv2+ and LGPLv2+ and CC-BY
 URL:     https://pcp.io
 
-%global  bintray https://bintray.com/artifact/download
-Source0: %{bintray}/pcp/source/pcp-%{version}.src.tar.gz
+%global  artifactory https://performancecopilot.jfrog.io/artifactory
+Source0: %{artifactory}/pcp-source-release/pcp-%{version}.src.tar.gz
 
-Patch000: redhat-bugzilla-1926756.patch
-Patch001: redhat-bugzilla-1930284.patch
+Patch000: redhat-bugzilla-1950263.patch
 
 %if 0%{?fedora} >= 26 || 0%{?rhel} > 7
 %global __python2 python2
@@ -24,6 +23,8 @@ Patch001: redhat-bugzilla-1930284.patch
 %global _hostname_executable /bin/hostname
 %endif
 
+%global disable_perl 0
+
 %if 0%{?fedora} || 0%{?rhel} > 5
 %global disable_selinux 0
 %else
@@ -198,17 +199,27 @@ Conflicts: librapi < 0.16
 
 # KVM PMDA moved into pcp (no longer using Perl, default on)
 Obsoletes: pcp-pmda-kvm < 4.1.1
-Provides: pcp-pmda-kvm
+Provides: pcp-pmda-kvm = %{version}-%{release}
 
 # PCP REST APIs are now provided by pmproxy
 Obsoletes: pcp-webapi-debuginfo < 5.0.0
 Obsoletes: pcp-webapi < 5.0.0
-Provides: pcp-webapi
+Provides: pcp-webapi = %{version}-%{release}
 
 # PCP discovery service now provided by pmfind
 Obsoletes: pcp-manager-debuginfo < 5.2.0
 Obsoletes: pcp-manager < 5.2.0
 
+# Some older releases did not update or replace pcp-gui-debuginfo properly
+%if 0%{?fedora} < 27 && 0%{?rhel} <= 7 && "%{_vendor}" == "redhat"
+Obsoletes: pcp-gui-debuginfo < 4.1.1
+%endif
+
+Obsoletes: pcp-compat < 4.2.0
+Obsoletes: pcp-monitor < 4.2.0
+Obsoletes: pcp-collector < 4.2.0
+Obsoletes: pcp-pmda-nvidia < 3.10.5
+
 # https://fedoraproject.org/wiki/Packaging "C and C++"
 BuildRequires: make
 BuildRequires: gcc gcc-c++
@@ -259,7 +270,8 @@ BuildRequires: perl-generators
 %endif
 BuildRequires: perl-devel perl(strict)
 BuildRequires: perl(ExtUtils::MakeMaker) perl(LWP::UserAgent) perl(JSON)
-BuildRequires: perl(LWP::UserAgent) perl(Time::HiRes) perl(Digest::MD5)
+BuildRequires: perl(Time::HiRes) perl(Digest::MD5)
+BuildRequires: perl(XML::LibXML) perl(File::Slurp)
 BuildRequires: man %{_hostname_executable}
 %if !%{disable_systemd}
 BuildRequires: systemd-devel systemd-rpm-macros
@@ -280,16 +292,6 @@ Requires: pcp-libs = %{version}-%{release}
 Requires: pcp-selinux = %{version}-%{release}
 %endif
 
-# Some older releases did not update or replace pcp-gui-debuginfo properly
-%if 0%{?fedora} < 27 && 0%{?rhel} <= 7 && "%{_vendor}" == "redhat"
-Obsoletes: pcp-gui-debuginfo < 4.1.1
-%endif
-
-Obsoletes: pcp-compat < 4.2.0
-Obsoletes: pcp-monitor < 4.2.0
-Obsoletes: pcp-collector < 4.2.0
-Obsoletes: pcp-pmda-nvidia < 3.10.5
-
 Requires: pcp-libs = %{version}-%{release}
 
 %global _confdir        %{_sysconfdir}/pcp
@@ -1602,7 +1604,7 @@ extracting performance metrics from HAProxy over the HAProxy stats socket.
 #
 %package pmda-libvirt
 License: GPLv2+
-Summary: Performance Co-Pilot (PCP) metrics for virtual machines
+Summary: Performance Co-Pilot (PCP) metrics from virtual machines
 URL: https://pcp.io
 Requires: pcp = %{version}-%{release} pcp-libs = %{version}-%{release}
 %if !%{disable_python3}
@@ -2248,7 +2250,6 @@ updated policy package.
 %prep
 %setup -q
 %patch000 -p1
-%patch001 -p1
 
 %build
 # fix up build version
@@ -2267,26 +2268,26 @@ BACKDIR=`pwd`
 NO_CHOWN=true
 DIST_ROOT=$RPM_BUILD_ROOT
 DIST_TMPFILES=$BACKDIR/install.tmpfiles
-export NO_CHOWN DIST_ROOT DIST_TMPFILES
+DIST_MANIFEST=$BACKDIR/install.manifest
+export NO_CHOWN DIST_ROOT DIST_MANIFEST DIST_TMPFILES
+rm -f $DIST_MANIFEST $DIST_TMPFILES
 make install_pcp
 
-PCP_GUI='pmchart|pmconfirm|pmdumptext|pmmessage|pmquery|pmsnap|pmtime'
+### TODO: remove these by incorporating into the actual build
 
 # Fix stuff we do/don't want to ship
 rm -f $RPM_BUILD_ROOT/%{_libdir}/*.a
+sed -i -e '/\.a$/d' $DIST_MANIFEST
 
 # remove sheet2pcp until BZ 830923 and BZ 754678 are resolved.
 rm -f $RPM_BUILD_ROOT/%{_bindir}/sheet2pcp $RPM_BUILD_ROOT/%{_mandir}/man1/sheet2pcp.1*
+sed -i -e '/sheet2pcp/d' $DIST_MANIFEST
 
 # remove {config,platform}sz.h as these are not multilib friendly.
 rm -f $RPM_BUILD_ROOT/%{_includedir}/pcp/configsz.h
+sed -i -e '/configsz.h/d' $DIST_MANIFEST
 rm -f $RPM_BUILD_ROOT/%{_includedir}/pcp/platformsz.h
-
-%if %{disable_infiniband}
-# remove pmdainfiniband on platforms lacking IB devel packages.
-rm -f $RPM_BUILD_ROOT/%{_pmdasdir}/ib
-rm -fr $RPM_BUILD_ROOT/%{_pmdasdir}/infiniband
-%endif
+sed -i -e '/platformsz.h/d' $DIST_MANIFEST
 
 %if %{disable_mssql}
 # remove pmdamssql on platforms lacking MSODBC driver packages.
@@ -2295,32 +2296,10 @@ rm -fr $RPM_BUILD_ROOT/%{_pmdasexecdir}/mssql
 rm -fr $RPM_BUILD_ROOT/%{_confdir}/mssql
 %endif
 
-%if %{disable_sdt}
-rm -fr $RPM_BUILD_ROOT/%{_tapsetdir}
-%endif
-
-%if %{disable_selinux}
-rm -fr $RPM_BUILD_ROOT/%{_selinuxdir}
-%endif
-
-%if %{disable_qt}
-rm -fr $RPM_BUILD_ROOT/%{_pixmapdir}
-rm -fr $RPM_BUILD_ROOT/%{_hicolordir}
-rm -fr $RPM_BUILD_ROOT/%{_confdir}/pmsnap
-rm -fr $RPM_BUILD_ROOT/%{_localstatedir}/lib/pcp/config/pmsnap
-rm -fr $RPM_BUILD_ROOT/%{_localstatedir}/lib/pcp/config/pmchart
-rm -f $RPM_BUILD_ROOT/%{_localstatedir}/lib/pcp/config/pmafm/pcp-gui
-rm -f $RPM_BUILD_ROOT/%{_datadir}/applications/pmchart.desktop
-rm -f `find $RPM_BUILD_ROOT/%{_mandir}/man1 | grep -E "$PCP_GUI"`
-%else
-rm -rf $RPM_BUILD_ROOT/usr/share/doc/pcp-gui
+%if !%{disable_qt}
 desktop-file-validate $RPM_BUILD_ROOT/%{_datadir}/applications/pmchart.desktop
 %endif
 
-%if %{disable_xlsx}
-rm -f $RPM_BUILD_ROOT/%{_bashcompdir}/pcp2xlsx
-%endif
-
 %if 0%{?rhel} || 0%{?fedora}
 # Fedora and RHEL default local only access for pmcd and pmlogger
 sed -i -e '/^# .*_LOCAL=1/s/^# //' $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/{pmcd,pmlogger}
@@ -2332,119 +2311,320 @@ for f in $RPM_BUILD_ROOT/%{_initddir}/{pcp,pmcd,pmlogger,pmie,pmproxy}; do
     sed -i -e '/^# chkconfig/s/:.*$/: - 95 05/' -e '/^# Default-Start:/s/:.*$/:/' $f
 done
 
-# list of PMDAs in the base pcp package
-for pmda in jbd2 kvm linux mmv pipe pmcd proc root xfs zfs; do
-    for alt in %{_pmdasdir} %{_pmdasexecdir} %{_confdir}; do
-        [ -d $RPM_BUILD_ROOT/$alt/$pmda ] && echo $alt/$pmda >>base_pmdas.list
-    done
+### end TODO
+
+PCP_GUI='pmchart|pmconfirm|pmdumptext|pmmessage|pmquery|pmsnap|pmtime'
+
+PCP_CONF=$BACKDIR/src/include/pcp.conf
+export PCP_CONF
+. $BACKDIR/src/include/pcp.env
+CFGFILELIST=`ls -1 $BACKDIR/debian/pcp-conf.{install,dirs}`
+LIBFILELIST=`ls -1 $BACKDIR/debian/lib*.{install,dirs} | grep -F -v -- -dev.`
+DEVFILELIST=`ls -1 $BACKDIR/debian/lib*-dev.{install,dirs}`
+
+# Package split: pcp{-conf,-libs,-libs-devel,-testsuite,-import-*,-export-*}...
+# The above list is ordered by file selection; files for each package are
+# removed from a global set, then the base package catches all remaining.
+sed -e 's/^/\//' $CFGFILELIST >pcp-conf-files
+sed -e 's/^/\//' $LIBFILELIST >pcp-libs-files
+sed -e 's/^/\//' $DEVFILELIST >pcp-devel-files
+grep "\.h$" $DEVFILELIST | cut -f2 -d":" >pcp-libs-devel-files
+grep "\.pc$" $DEVFILELIST | cut -f2 -d":" >>pcp-libs-devel-files
+grep "\.so$" $DEVFILELIST | cut -f2 -d":" >>pcp-libs-devel-files
+grep "\.a$" $DEVFILELIST | cut -f2 -d":" >>pcp-libs-devel-files
+sed -i -e 's/^/\//' pcp-libs-devel-files
+sed -i '/.h$/d' pcp-devel-files
+sed -i '/.pc$/d' pcp-devel-files
+sed -i '/.so$/d' pcp-devel-files
+sed -i '/.a$/d' pcp-devel-files
+sed -i '/\/man\//d' pcp-devel-files
+sed -i '/\/include\//d' pcp-devel-files
+
+%ifarch x86_64 ppc64 ppc64le aarch64 s390x
+sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-libs-files
+sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-devel-files
+sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-libs-devel-files
+%endif
+%ifarch ia64
+%if "%{_vendor}" != "suse"
+sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-libs-files
+sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-devel-files
+sed -i -e 's/usr\/lib\//usr\/lib64\//' pcp-libs-devel-files
+%endif
+%endif
+
+# some special cases for devel
+awk '{print $NF}' $DIST_MANIFEST |\
+grep -E 'pcp\/(examples|demos)|(etc/pcp|pcp/pmdas)\/(sample|simple|trivial|txmon)|bin/(pmdbg|pmclient|pmerr|genpmda)' | grep -E -v tutorials >>pcp-devel-files
+
+# Patterns for files to be marked %%config(noreplace).
+# Note: /etc/pcp.{conf,env,sh} are %%config but not noreplace
+# and are treated specially below.
+cat >confpath.list <<EOF
+etc/sysconfig/
+etc/cron.d/
+etc/pcp/
+EOF
+
+# functions to manipulate the manifest of files - keeping
+# or culling given (or common) patterns from the stream.
+keep() {
+    grep -E $@ || return 0
+}
+cull() {
+    grep -E -v $@ || return 0
+}
+total_manifest() {
+    awk '{print $NF}' $DIST_MANIFEST
+}
+basic_manifest() {
+    total_manifest | cull '/pcp-doc/|/testsuite/|/man/|/examples/'
+}
+
+#
+# Files for the various subpackages.  We use these subpackages
+# to isolate the (somewhat exotic) dependencies for these tools.
+# Likewise, for the pcp-pmda and pcp-testsuite subpackages.
+#
+total_manifest | keep 'tutorials|/html/|pcp-doc|man.*\.[1-9].*' | cull 'out' >pcp-doc-files
+total_manifest | keep 'testsuite|etc/systemd/system' >pcp-testsuite-files
+
+basic_manifest | keep "$PCP_GUI|pcp-gui|applications|pixmaps|hicolor" | cull 'pmtime.h' >pcp-gui-files
+basic_manifest | keep 'selinux' | cull 'tmp|GNUselinuxdefs' >pcp-selinux-files
+basic_manifest | keep 'zeroconf|daily[-_]report|/sa$' >pcp-zeroconf-files
+basic_manifest | grep -E -e 'pmiostat|pmrep|dstat|pcp2csv' \
+   -e 'pcp-atop|pcp-dmcache|pcp-dstat|pcp-free|pcp-htop' \
+   -e 'pcp-ipcs|pcp-iostat|pcp-lvmcache|pcp-mpstat' \
+   -e 'pcp-numastat|pcp-pidstat|pcp-shping|pcp-tapestat' \
+   -e 'pcp-uptime|pcp-verify' | \
+   cull 'selinux|pmlogconf|pmieconf|pmrepconf' >pcp-system-tools-files
+
+basic_manifest | keep 'sar2pcp' >pcp-import-sar2pcp-files
+basic_manifest | keep 'iostat2pcp' >pcp-import-iostat2pcp-files
+basic_manifest | keep 'sheet2pcp' >pcp-import-sheet2pcp-files
+basic_manifest | keep 'mrtg2pcp' >pcp-import-mrtg2pcp-files
+basic_manifest | keep 'ganglia2pcp' >pcp-import-ganglia2pcp-files
+basic_manifest | keep 'collectl2pcp' >pcp-import-collectl2pcp-files
+basic_manifest | keep 'pcp2elasticsearch' >pcp-export-pcp2elasticsearch-files
+basic_manifest | keep 'pcp2influxdb' >pcp-export-pcp2influxdb-files
+basic_manifest | keep 'pcp2xlsx' >pcp-export-pcp2xlsx-files
+basic_manifest | keep 'pcp2graphite' >pcp-export-pcp2graphite-files
+basic_manifest | keep 'pcp2json' >pcp-export-pcp2json-files
+basic_manifest | keep 'pcp2spark' >pcp-export-pcp2spark-files
+basic_manifest | keep 'pcp2xml' >pcp-export-pcp2xml-files
+basic_manifest | keep 'pcp2zabbix' >pcp-export-pcp2zabbix-files
+basic_manifest | keep 'zabbix|zbxpcp' | cull pcp2zabbix >pcp-export-zabbix-agent-files
+basic_manifest | keep '(etc/pcp|pmdas)/activemq(/|$)' >pcp-pmda-activemq-files
+basic_manifest | keep '(etc/pcp|pmdas)/apache(/|$)' >pcp-pmda-apache-files
+basic_manifest | keep '(etc/pcp|pmdas)/bash(/|$)' >pcp-pmda-bash-files
+basic_manifest | keep '(etc/pcp|pmdas)/bcc(/|$)' >pcp-pmda-bcc-files
+basic_manifest | keep '(etc/pcp|pmdas)/bind2(/|$)' >pcp-pmda-bind2-files
+basic_manifest | keep '(etc/pcp|pmdas)/bonding(/|$)' >pcp-pmda-bonding-files
+basic_manifest | keep '(etc/pcp|pmdas)/bpftrace(/|$)' >pcp-pmda-bpftrace-files
+basic_manifest | keep '(etc/pcp|pmdas)/cifs(/|$)' >pcp-pmda-cifs-files
+basic_manifest | keep '(etc/pcp|pmdas)/cisco(/|$)' >pcp-pmda-cisco-files
+basic_manifest | keep '(etc/pcp|pmdas)/dbping(/|$)' >pcp-pmda-dbping-files
+basic_manifest | keep '(etc/pcp|pmdas|pmieconf)/dm(/|$)' >pcp-pmda-dm-files
+basic_manifest | keep '(etc/pcp|pmdas)/docker(/|$)' >pcp-pmda-docker-files
+basic_manifest | keep '(etc/pcp|pmdas)/ds389log(/|$)' >pcp-pmda-ds389log-files
+basic_manifest | keep '(etc/pcp|pmdas)/ds389(/|$)' >pcp-pmda-ds389-files
+basic_manifest | keep '(etc/pcp|pmdas)/elasticsearch(/|$)' >pcp-pmda-elasticsearch-files
+basic_manifest | keep '(etc/pcp|pmdas)/gfs2(/|$)' >pcp-pmda-gfs2-files
+basic_manifest | keep '(etc/pcp|pmdas)/gluster(/|$)' >pcp-pmda-gluster-files
+basic_manifest | keep '(etc/pcp|pmdas)/gpfs(/|$)' >pcp-pmda-gpfs-files
+basic_manifest | keep '(etc/pcp|pmdas)/gpsd(/|$)' >pcp-pmda-gpsd-files
+basic_manifest | keep '(etc/pcp|pmdas)/hacluster(/|$)' >pcp-pmda-hacluster-files
+basic_manifest | keep '(etc/pcp|pmdas)/haproxy(/|$)' >pcp-pmda-haproxy-files
+basic_manifest | keep '(etc/pcp|pmdas)/infiniband(/|$)' >pcp-pmda-infiniband-files
+basic_manifest | keep '(etc/pcp|pmdas)/json(/|$)' >pcp-pmda-json-files
+basic_manifest | keep '(etc/pcp|pmdas)/libvirt(/|$)' >pcp-pmda-libvirt-files
+basic_manifest | keep '(etc/pcp|pmdas)/lio(/|$)' >pcp-pmda-lio-files
+basic_manifest | keep '(etc/pcp|pmdas)/lmsensors(/|$)' >pcp-pmda-lmsensors-files
+basic_manifest | keep '(etc/pcp|pmdas)/logger(/|$)' >pcp-pmda-logger-files
+basic_manifest | keep '(etc/pcp|pmdas)/lustre(/|$)' >pcp-pmda-lustre-files
+basic_manifest | keep '(etc/pcp|pmdas)/lustrecomm(/|$)' >pcp-pmda-lustrecomm-files
+basic_manifest | keep '(etc/pcp|pmdas)/memcache(/|$)' >pcp-pmda-memcache-files
+basic_manifest | keep '(etc/pcp|pmdas)/mailq(/|$)' >pcp-pmda-mailq-files
+basic_manifest | keep '(etc/pcp|pmdas)/mic(/|$)' >pcp-pmda-mic-files
+basic_manifest | keep '(etc/pcp|pmdas)/mounts(/|$)' >pcp-pmda-mounts-files
+basic_manifest | keep '(etc/pcp|pmdas)/mssql(/|$)' >pcp-pmda-mssql-files
+basic_manifest | keep '(etc/pcp|pmdas)/mysql(/|$)' >pcp-pmda-mysql-files
+basic_manifest | keep '(etc/pcp|pmdas)/named(/|$)' >pcp-pmda-named-files
+basic_manifest | keep '(etc/pcp|pmdas)/netfilter(/|$)' >pcp-pmda-netfilter-files
+basic_manifest | keep '(etc/pcp|pmdas)/netcheck(/|$)' >pcp-pmda-netcheck-files
+basic_manifest | keep '(etc/pcp|pmdas)/news(/|$)' >pcp-pmda-news-files
+basic_manifest | keep '(etc/pcp|pmdas)/nfsclient(/|$)' >pcp-pmda-nfsclient-files
+basic_manifest | keep '(etc/pcp|pmdas)/nginx(/|$)' >pcp-pmda-nginx-files
+basic_manifest | keep '(etc/pcp|pmdas)/nutcracker(/|$)' >pcp-pmda-nutcracker-files
+basic_manifest | keep '(etc/pcp|pmdas)/nvidia(/|$)' >pcp-pmda-nvidia-files
+basic_manifest | keep '(etc/pcp|pmdas)/openmetrics(/|$)' >pcp-pmda-openmetrics-files
+basic_manifest | keep '(etc/pcp|pmdas)/openvswitch(/|$)' >pcp-pmda-openvswitch-files
+basic_manifest | keep '(etc/pcp|pmdas)/oracle(/|$)' >pcp-pmda-oracle-files
+basic_manifest | keep '(etc/pcp|pmdas)/pdns(/|$)' >pcp-pmda-pdns-files
+basic_manifest | keep '(etc/pcp|pmdas)/perfevent(/|$)' >pcp-pmda-perfevent-files
+basic_manifest | keep '(etc/pcp|pmdas)/podman(/|$)' >pcp-pmda-podman-files
+basic_manifest | keep '(etc/pcp|pmdas)/postfix(/|$)' >pcp-pmda-postfix-files
+basic_manifest | keep '(etc/pcp|pmdas)/postgresql(/|$)' >pcp-pmda-postgresql-files
+basic_manifest | keep '(etc/pcp|pmdas)/rabbitmq(/|$)' >pcp-pmda-rabbitmq-files
+basic_manifest | keep '(etc/pcp|pmdas)/redis(/|$)' >pcp-pmda-redis-files
+basic_manifest | keep '(etc/pcp|pmdas)/roomtemp(/|$)' >pcp-pmda-roomtemp-files
+basic_manifest | keep '(etc/pcp|pmdas)/rpm(/|$)' >pcp-pmda-rpm-files
+basic_manifest | keep '(etc/pcp|pmdas)/rsyslog(/|$)' >pcp-pmda-rsyslog-files
+basic_manifest | keep '(etc/pcp|pmdas)/samba(/|$)' >pcp-pmda-samba-files
+basic_manifest | keep '(etc/pcp|pmdas)/sendmail(/|$)' >pcp-pmda-sendmail-files
+basic_manifest | keep '(etc/pcp|pmdas)/shping(/|$)' >pcp-pmda-shping-files
+basic_manifest | keep '(etc/pcp|pmdas)/slurm(/|$)' >pcp-pmda-slurm-files
+basic_manifest | keep '(etc/pcp|pmdas)/smart(/|$)' >pcp-pmda-smart-files
+basic_manifest | keep '(etc/pcp|pmdas)/snmp(/|$)' >pcp-pmda-snmp-files
+basic_manifest | keep '(etc/pcp|pmdas)/sockets(/|$)' >pcp-pmda-sockets-files
+basic_manifest | keep '(etc/pcp|pmdas)/statsd(/|$)' >pcp-pmda-statsd-files
+basic_manifest | keep '(etc/pcp|pmdas)/summary(/|$)' >pcp-pmda-summary-files
+basic_manifest | keep '(etc/pcp|pmdas)/systemd(/|$)' >pcp-pmda-systemd-files
+basic_manifest | keep '(etc/pcp|pmdas)/trace(/|$)' >pcp-pmda-trace-files
+basic_manifest | keep '(etc/pcp|pmdas)/unbound(/|$)' >pcp-pmda-unbound-files
+basic_manifest | keep '(etc/pcp|pmdas)/weblog(/|$)' >pcp-pmda-weblog-files
+basic_manifest | keep '(etc/pcp|pmdas)/vmware(/|$)' >pcp-pmda-vmware-files
+basic_manifest | keep '(etc/pcp|pmdas)/zimbra(/|$)' >pcp-pmda-zimbra-files
+basic_manifest | keep '(etc/pcp|pmdas)/zswap(/|$)' >pcp-pmda-zswap-files
+
+rm -f packages.list
+for pmda_package in \
+    activemq apache \
+    bash bcc bind2 bonding bpftrace \
+    cifs cisco \
+    dbping docker dm ds389 ds389log \
+    elasticsearch \
+    gfs2 gluster gpfs gpsd \
+    hacluster haproxy \
+    infiniband \
+    json \
+    libvirt lio lmsensors logger lustre lustrecomm \
+    mailq memcache mic mounts mssql mysql \
+    named netcheck netfilter news nfsclient nginx \
+    nutcracker nvidia \
+    openmetrics openvswitch oracle \
+    pdns perfevent podman postfix postgresql \
+    rabbitmq redis roomtemp rpm rsyslog \
+    samba sendmail shping slurm smart snmp \
+    sockets statsd summary systemd \
+    unbound \
+    trace \
+    vmware \
+    weblog \
+    zimbra zswap ; \
+do \
+    pmda_packages="$pmda_packages pcp-pmda-$pmda_package"; \
 done
 
-# list of conf directories in base pcp package
-for conf in discover labels nssdb pmafm pmcd pmfind pmie pmieconf pmlogconf \
-    proc simple pipe linux pmlogger pmlogrewrite pmproxy pmsearch pmseries; do
-    for alt in %{_confdir} %{_localstatedir}/lib/pcp/config; do
-        replace=""; [ "$alt" = "%{_confdir}" ] && replace="%config(noreplace)"
-        [ -d $RPM_BUILD_ROOT/$alt/$conf ] && echo "$replace $alt/$conf" >>base_conf.list
-    done
+for import_package in \
+    collectl2pcp iostat2pcp ganglia2pcp mrtg2pcp sar2pcp sheet2pcp ; \
+do \
+    import_packages="$import_packages pcp-import-$import_package"; \
 done
 
-# all base binary files except those split out into sub-packages
-ls -1 $RPM_BUILD_ROOT/%{_bindir} |\
-  grep -E -v 'pmiostat|zabbix|zbxpcp|dstat|pmrep|pcp2csv' |\
-  grep -E -v 'pcp2spark|pcp2graphite|pcp2influxdb|pcp2zabbix' |\
-  grep -E -v 'pcp2elasticsearch|pcp2json|pcp2xlsx|pcp2xml' |\
-  grep -E -v 'pmdbg|pmclient|pmerr|genpmda' |\
-sed -e 's#^#'%{_bindir}'\/#' >base_bin.list
-
-# all base pmns files
-echo %{_pmnsdir} >>base_pmns.list
-echo %{_pmnsexecdir} >>base_pmns.list
-
-ls -1 $RPM_BUILD_ROOT/%{_bashcompdir} |\
-  grep -E -v 'pcp2spark|pcp2graphite|pcp2influxdb|pcp2zabbix' |\
-  grep -E -v 'pcp2elasticsearch|pcp2json|pcp2xlsx|pcp2xml' |\
-  grep -E -v 'pcp2csv|pmrep|pmdumptext' |\
-sed -e 's#^#'%{_bashcompdir}'\/#' >base_bashcomp.list
-
-# Separate the pcp-system-tools package files.
-# pmiostat is a back-compat symlink to its pcp(1) sub-command variant
-# so its also in pcp-system-tools.
-%if !%{disable_python2} || !%{disable_python3}
-ls -1 $RPM_BUILD_ROOT/%{_bindir} |\
-  grep -E -e 'pmiostat|pmrep|dstat|pcp2csv' |\
-  sed -e 's#^#'%{_bindir}'\/#' >pcp-system-tools.list
-ls -1 $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin |\
-  grep -E -e 'atop|dmcache|dstat|free|htop|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/%{_selinuxexecdir} |\
-  sed -e 's#^#'%{_selinuxexecdir}'\/#' >> pcp-selinux.list
-ls -1 $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin |\
-  grep -E 'selinux-setup' |\
-  sed -e 's#^#'%{_libexecdir}/pcp/bin'\/#' >> pcp-selinux.list
+for export_package in \
+    pcp2elasticsearch pcp2graphite pcp2influxdb pcp2json \
+    pcp2spark pcp2xlsx pcp2xml pcp2zabbix zabbix-agent ; \
+do \
+    export_packages="$export_packages pcp-export-$export_package"; \
+done
+
+for subpackage in \
+    pcp-conf pcp-gui pcp-doc pcp-libs pcp-devel pcp-libs-devel \
+    pcp-selinux pcp-system-tools pcp-testsuite pcp-zeroconf \
+    $pmda_packages $import_packages $export_packages ; \
+do \
+    echo $subpackage >> packages.list; \
+done
+
+rm -f *-files.rpm *-tmpfiles.rpm
+sort -u $DIST_MANIFEST | awk '
+function loadfiles(files) {
+    system ("touch " files"-files");
+    filelist=files"-files";
+    while (getline < filelist) {
+        if (length(pkg[$0]) > 0 && pkg[$0] != files)
+            print "Dup: ", $0, " package: ", pkg[$0], " and ", files;
+        if (length(pkg[$0]) == 0)
+            pkg[$0] = files;
+    }
+}
+BEGIN {
+    while (getline < "packages.list") loadfiles($0);
+    while (getline < "confpath.list") conf[nconf++]=$0;
+}
+{
+    if (pkg[$NF]) p=pkg[$NF];
+    else p="pcp";
+    f=p"-files.rpm";
+}
+$1 == "d" {
+            if (match ($5, "'$PCP_RUN_DIR'")) {
+                printf ("%%%%ghost ") >> f;
+            }
+            printf ("%%%%dir %%%%attr(%s,%s,%s) %s\n", $2, $3, $4, $5) >> f
+          }
+$1 == "f" && $6 ~ "etc/pcp\\.conf" { printf ("%%%%config ") >> f; }
+$1 == "f" && $6 ~ "etc/pcp\\.env"  { printf ("%%%%config ") >> f; }
+$1 == "f" && $6 ~ "etc/pcp\\.sh"   { printf ("%%%%config ") >> f; }
+$1 == "f" {
+            for (i=0; i < nconf; i++) {
+                if ($6 ~ conf[i]) {
+                    printf ("%%%%config(noreplace) ") >> f;
+                    break;
+                }
+            }
+            if (match ($6, "'$PCP_MAN_DIR'") || match ($6, "'$PCP_DOC_DIR'")) {
+                printf ("%%%%doc ") >> f;
+            }
+            printf ("%%%%attr(%s,%s,%s) %s\n", $2, $3, $4, $6) >> f
+          }
+$1 == "l" {
+%if !%{disable_systemd}
+            if (match ($3, "'$PCP_VAR_DIR'")) {
+                print $3 >> p"-tmpfiles";
+                if (length(tmpfiles[p]) == 0) {
+                    printf ("'$PCP_SYSTEMDTMPFILES_DIR'/%s.conf\n", p) >> f;
+                    tmpfiles[p] = p;
+                }
+            }
 %endif
+            print $3 >> f;
+          }'
 
-ls -1 $RPM_BUILD_ROOT/%{_libexecdir}/pcp/bin |\
-%if !%{disable_python2} || !%{disable_python3}
-  grep -E -v 'atop|dmcache|dstat|free|htop|iostat|ipcs|lvmcache|mpstat' |\
-  grep -E -v 'numastat|shping|tapestat|uptime|verify|selinux-setup' |\
-%endif
-  grep -E -v 'pmlogger_daily_report' |\
-  grep -E -v 'pmsnap' |\
-  sed -e 's#^#'%{_libexecdir}/pcp/bin'\/#' >base_exec.list
-echo %{_libexecdir}/pcp/lib >>base_exec.list
-
-ls -1 $RPM_BUILD_ROOT/%{_booksdir} |\
-  sed -e 's#^#'%{_booksdir}'\/#' > pcp-doc.list
-ls -1 $RPM_BUILD_ROOT/%{_mandir}/man1 |\
-  sed -e 's#^#'%{_mandir}'\/man1\/#' >>pcp-doc.list
-ls -1 $RPM_BUILD_ROOT/%{_mandir}/man5 |\
-  sed -e 's#^#'%{_mandir}'\/man5\/#' >>pcp-doc.list
-ls -1 $RPM_BUILD_ROOT/%{_datadir}/pcp/demos/tutorials |\
-  sed -e 's#^#'%{_datadir}/pcp/demos/tutorials'\/#' >>pcp-doc.list
+%if !%{disable_systemd}
+mkdir -p $DIST_ROOT/$PCP_SYSTEMDTMPFILES_DIR
+sort -u $DIST_TMPFILES | awk '
+function loadtmpfiles(files) {
+    system ("touch " files"-tmpfiles");
+    filelist=files"-tmpfiles";
+    while (getline < filelist) {
+        if (pkg[$0] && pkg[$0] != files)
+            print "Dup: ", $0, " package: ", pkg[$0], " and ", files;
+        pkg[$0] = files;
+    }
+}
+BEGIN {
+    while (getline < "packages.list") loadtmpfiles($0);
+}
+{
+    if (pkg[$2]) p=pkg[$2];
+    else p="pcp";
+    f=p".conf";
+    printf ("%s\n", $0) >> f;
+}'
 
-%if !%{disable_qt}
-ls -1 $RPM_BUILD_ROOT/%{_pixmapdir} |\
-  sed -e 's#^#'%{_pixmapdir}'\/#' > pcp-gui.list
-ls -1 $RPM_BUILD_ROOT/%{_hicolordir} |\
-  sed -e 's#^#'%{_hicolordir}'\/#' >> pcp-gui.list
-cat base_bin.list base_exec.list base_bashcomp.list |\
-  grep -E "$PCP_GUI" >> pcp-gui.list
-echo %{_confdir}/pmchart >>pcp-gui.list
-echo %{_libexecdir}/pcp/bin/pmsnap >>pcp-gui.list
-%endif
-
-ls -1 $RPM_BUILD_ROOT/%{_logconfdir}/ |\
-    sed -e 's#^#'%{_logconfdir}'\/#' |\
-    grep -E -v 'zeroconf' >pcp-logconf.list
-ls -1 $RPM_BUILD_ROOT/%{_ieconfdir}/ |\
-    sed -e 's#^#'%{_ieconfdir}'\/#' |\
-    grep -E -v 'zeroconf' >pcp-ieconf.list
-
-# generate full base package file list
-cat base_pmdas.list base_conf.list base_bin.list base_exec.list base_bashcomp.list \
-    pcp-logconf.list pcp-ieconf.list base_pmns.list |\
-  grep -E -v 'pmdaib|pmsnap|2pcp|pmdas/systemd|zeroconf' |\
-  grep -E -v "$PCP_GUI|pixmaps|hicolor|pcp-doc|tutorials|selinux" |\
-  grep -E -v %{_logsdir} > base.list
-
-# all devel pcp package files except those split out into sub packages
-ls -1 $RPM_BUILD_ROOT/%{_mandir}/man3 |\
-sed -e 's#^#'%{_mandir}'\/man3\/#' | grep -v '3pm' >>pcp-doc.list
-ls -1 $RPM_BUILD_ROOT/%{_datadir}/pcp/demos |\
-sed -e 's#^#'%{_datadir}'\/pcp\/demos\/#' | grep -E -v tutorials >> devel.list
-ls -1 $RPM_BUILD_ROOT/%{_bindir} |\
-grep -E 'pmdbg|pmclient|pmerr|genpmda' |\
-sed -e 's#^#'%{_bindir}'\/#' >>devel.list
-for pmda in sample simple trivial txmon; do
-    echo %{_libexecdir}/pcp/pmdas/$pmda >>devel.list
+%if %{disable_mssql}
+# TODO: integrate better into the PCP build (via autoconf)
+# so that this and other mssql artifacts are not generated.
+rm -f pcp-pmda-mssql.conf
+%endif
+
+for tmpfile in *.conf ; \
+do \
+    mv $tmpfile $DIST_ROOT/$PCP_SYSTEMDTMPFILES_DIR/$tmpfile; \
 done
-echo %{_confdir}/simple/simple.conf >>devel.list
+%endif
 
 %pre testsuite
 test -d %{_testsdir} || mkdir -p -m 755 %{_testsdir}
@@ -2810,11 +2990,6 @@ pmieconf -c enable dmthin
 %post
 PCP_PMNS_DIR=%{_pmnsdir}
 PCP_LOG_DIR=%{_logsdir}
-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
 %{install_file "$PCP_PMNS_DIR" .NeedRebuild}
 %{install_file "$PCP_LOG_DIR/pmlogger" .NeedRewrite}
 %if !%{disable_systemd}
@@ -2855,592 +3030,258 @@ chown -R pcp:pcp %{_logsdir}/pmproxy 2>/dev/null
 %{selinux_handle_policy "$1" "pcpupstream-container"}
 %endif
 
-%files -f base.list
-#
-# Note: there are some headers (e.g. domain.h) and in a few cases some
-# C source files that rpmlint complains about. These are not devel files,
-# but rather they are (slightly obscure) PMDA config files.
-#
+%files -f pcp-files.rpm
 %doc CHANGELOG COPYING INSTALL.md README.md VERSION.pcp pcp.lsm
+%ghost %dir %attr(0775,pcp,pcp) %{_localstatedir}/run/pcp
 
-%dir %{_confdir}
-%dir %{_pmdasdir}
-%dir %{_datadir}/pcp
-%dir %{_libexecdir}/pcp
-%dir %{_libexecdir}/pcp/bin
-%dir %{_localstatedir}/lib/pcp
-%dir %{_localstatedir}/lib/pcp/config
-%dir %attr(0775,pcp,pcp) %{_tempsdir}
-%dir %attr(0775,pcp,pcp) %{_tempsdir}/bash
-%dir %attr(0775,pcp,pcp) %{_tempsdir}/json
-%dir %attr(0775,pcp,pcp) %{_tempsdir}/mmv
-%dir %attr(0775,pcp,pcp) %{_tempsdir}/pmie
-%dir %attr(0775,pcp,pcp) %{_tempsdir}/pmlogger
-%dir %attr(0775,pcp,pcp) %{_tempsdir}/pmproxy
-%dir %attr(0700,root,root) %{_tempsdir}/pmcd
-
-%dir %{_datadir}/pcp/lib
-%{_datadir}/pcp/lib/ReplacePmnsSubtree
-%{_datadir}/pcp/lib/bashproc.sh
-%{_datadir}/pcp/lib/lockpmns
-%{_datadir}/pcp/lib/pmdaproc.sh
-%{_datadir}/pcp/lib/utilproc.sh
-%{_datadir}/pcp/lib/rc-proc.sh
-%{_datadir}/pcp/lib/rc-proc.sh.minimal
-%{_datadir}/pcp/lib/unlockpmns
-
-%dir %attr(0775,pcp,pcp) %{_logsdir}
-%attr(0775,pcp,pcp) %{_logsdir}/pmcd
-%attr(0775,pcp,pcp) %{_logsdir}/pmlogger
-%attr(0775,pcp,pcp) %{_logsdir}/pmie
-%attr(0775,pcp,pcp) %{_logsdir}/pmproxy
-%attr(0775,pcp,pcp) %{_logsdir}/pmfind
-%{_localstatedir}/lib/pcp/pmns
-%{_initddir}/pcp
-%{_initddir}/pmcd
-%{_initddir}/pmlogger
-%{_initddir}/pmie
-%{_initddir}/pmproxy
-%if !%{disable_systemd}
-%{_unitdir}/pmcd.service
-%{_unitdir}/pmproxy.service
-%{_unitdir}/pmlogger.service
-%{_unitdir}/pmfind.service
-%{_unitdir}/pmie.service
-# services and timers replacing the old cron scripts
-%{_unitdir}/pmlogger_check.service
-%{_unitdir}/pmlogger_check.timer
-%{_unitdir}/pmlogger_daily.service
-%{_unitdir}/pmlogger_daily.timer
-%{_unitdir}/pmlogger_daily-poll.service
-%{_unitdir}/pmlogger_daily-poll.timer
-%{_unitdir}/pmie_check.timer
-%{_unitdir}/pmie_check.service
-%{_unitdir}/pmie_check.timer
-%{_unitdir}/pmie_daily.service
-%{_unitdir}/pmie_daily.timer
-%{_unitdir}/pmfind.timer
-%config(noreplace) %{_sysconfdir}/sysconfig/pmie_timers
-%config(noreplace) %{_sysconfdir}/sysconfig/pmlogger_timers
-%else
-# cron scripts
-%config(noreplace) %{_sysconfdir}/cron.d/pcp-pmlogger
-%config(noreplace) %{_sysconfdir}/cron.d/pcp-pmfind
-%config(noreplace) %{_sysconfdir}/cron.d/pcp-pmie
-%endif
-%config(noreplace) %{_sysconfdir}/sasl2/pmcd.conf
-%config(noreplace) %{_sysconfdir}/sysconfig/pmlogger
-%config(noreplace) %{_sysconfdir}/sysconfig/pmproxy
-%config(noreplace) %{_sysconfdir}/sysconfig/pmfind
-%config(noreplace) %{_sysconfdir}/sysconfig/pmcd
-%config %{_sysconfdir}/pcp.env
-%dir %{_confdir}/labels
-%dir %{_confdir}/labels/optional
-%config(noreplace) %{_confdir}/labels.conf
-%config(noreplace) %{_confdir}/linux/interfaces.conf
-%dir %{_confdir}/pipe.conf.d
-%dir %{_confdir}/pmcd
-%config(noreplace) %{_confdir}/pmcd/pmcd.conf
-%config(noreplace) %{_confdir}/pmcd/pmcd.options
-%config(noreplace) %{_confdir}/pmcd/rc.local
-%dir %{_confdir}/pmproxy
-%config(noreplace) %{_confdir}/pmproxy/pmproxy.options
-%config(noreplace) %{_confdir}/pmproxy/pmproxy.conf
-%dir %{_confdir}/pmie
-%dir %{_confdir}/pmie/control.d
-%config(noreplace) %{_confdir}/pmie/control
-%config(noreplace) %{_confdir}/pmie/control.d/local
-%dir %{_confdir}/pmlogger
-%dir %{_confdir}/pmlogger/control.d
-%config(noreplace) %{_confdir}/pmlogger/control
-%config(noreplace) %{_confdir}/pmlogger/control.d/local
-%dir %attr(0775,pcp,pcp) %{_confdir}/nssdb
-%dir %{_confdir}/discover
-%config(noreplace) %{_confdir}/discover/pcp-kube-pods.conf
-%if !%{disable_libuv}
-%dir %{_confdir}/pmseries
-%config(noreplace) %{_confdir}/pmseries/pmseries.conf
-%endif
+%files conf -f pcp-conf-files.rpm
 
-%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/pmieconf
-%dir %attr(0775,pcp,pcp) %{_localstatedir}/lib/pcp/config/pmlogger
-%{_localstatedir}/lib/pcp/config/pmlogger/*
-%{_localstatedir}/lib/pcp/config/pmlogrewrite
-%dir %attr(0775,pcp,pcp) %{_localstatedir}/lib/pcp/config/pmda
-
-%{_datadir}/zsh/site-functions/_pcp
-%if !%{disable_sdt}
-%{_tapsetdir}/pmcd.stp
-%endif
+%files libs -f pcp-libs-files.rpm
 
-%files zeroconf
-%{_libexecdir}/pcp/bin/pmlogger_daily_report
-%if !%{disable_systemd}
-# systemd services for pmlogger_daily_report to replace the cron script
-%{_unitdir}/pmlogger_daily_report.service
-%{_unitdir}/pmlogger_daily_report.timer
-%{_unitdir}/pmlogger_daily_report-poll.service
-%{_unitdir}/pmlogger_daily_report-poll.timer
-%else
-%config(noreplace) %{_sysconfdir}/cron.d/pcp-pmlogger-daily-report
-%endif
-%config(noreplace) %{_ieconfdir}/zeroconf
-%config(noreplace) %{_logconfdir}/zeroconf
-%config(noreplace) %{_confdir}/pmlogconf/zeroconf
-%config(noreplace) %{_confdir}/pmieconf/zeroconf
-%dir %attr(0775,pcp,pcp) %{_logsdir}/sa
-
-#additional pmlogger config files
-
-%files conf
-%dir %{_includedir}/pcp
-%{_includedir}/pcp/builddefs
-%{_includedir}/pcp/buildrules
-%config %{_sysconfdir}/pcp.conf
-%dir %{_confdir}/derived
-%config %{_confdir}/derived/*
-%dir %{_localstatedir}/lib/pcp/config/derived
-%config %{_localstatedir}/lib/pcp/config/derived/*
-
-%files libs
-%{_libdir}/libpcp.so.3
-%{_libdir}/libpcp_gui.so.2
-%{_libdir}/libpcp_mmv.so.1
-%{_libdir}/libpcp_pmda.so.3
-%{_libdir}/libpcp_trace.so.2
-%{_libdir}/libpcp_import.so.1
-%{_libdir}/libpcp_web.so.1
-
-%files libs-devel
-%{_libdir}/libpcp.so
-%{_libdir}/libpcp_gui.so
-%{_libdir}/libpcp_mmv.so
-%{_libdir}/libpcp_pmda.so
-%{_libdir}/libpcp_trace.so
-%{_libdir}/libpcp_import.so
-%{_libdir}/libpcp_web.so
-%{_libdir}/pkgconfig/libpcp.pc
-%{_libdir}/pkgconfig/libpcp_pmda.pc
-%{_libdir}/pkgconfig/libpcp_import.pc
-%{_includedir}/pcp/*.h
-
-%files devel -f devel.list
-%{_datadir}/pcp/examples
-%dir %{_datadir}/pcp/demos
-
-# PMDAs that ship src and are not for production use
-# straight out-of-the-box, for devel or QA use only.
-%{_pmdasdir}/simple
-%config(noreplace) %{_confdir}/simple
-%{_pmdasdir}/sample
-%{_pmdasdir}/trivial
-%{_pmdasdir}/txmon
-
-%files testsuite
-%defattr(-,pcpqa,pcpqa)
-%{_testsdir}
+%files libs-devel -f pcp-libs-devel-files.rpm
 
-%files import-sar2pcp
-%{_bindir}/sar2pcp
+%files devel -f pcp-devel-files.rpm
 
-%files import-iostat2pcp
-%{_bindir}/iostat2pcp
+%files doc -f pcp-doc-files.rpm
 
-%files import-mrtg2pcp
-%{_bindir}/mrtg2pcp
+%if !%{disable_selinux}
+%files selinux -f pcp-selinux-files.rpm
+%endif
 
-%files import-ganglia2pcp
-%{_bindir}/ganglia2pcp
+%if !%{disable_qt}
+%files gui -f pcp-gui-files.rpm
+%endif
+
+%files testsuite -f pcp-testsuite-files.rpm
+%defattr(-,pcpqa,pcpqa)
 
-%files import-collectl2pcp
-%{_bindir}/collectl2pcp
+%if !%{disable_infiniband}
+%files pmda-infiniband -f pcp-pmda-infiniband-files.rpm
+%endif
 
 %if !%{disable_podman}
-%files pmda-podman
-%{_pmdasdir}/podman
-%{_pmdasexecdir}/podman
+%files pmda-podman -f pcp-pmda-podman-files.rpm
 %endif
 
 %if !%{disable_statsd}
-%files pmda-statsd
-%{_pmdasdir}/statsd
-%{_pmdasexecdir}/statsd
-%{_confdir}/statsd
-%config(noreplace) %{_pmdasdir}/statsd/pmdastatsd.ini
+%files pmda-statsd -f pcp-pmda-statsd-files.rpm
 %endif
 
 %if !%{disable_perfevent}
-%files pmda-perfevent
-%{_pmdasdir}/perfevent
-%{_pmdasexecdir}/perfevent
-%{_confdir}/perfevent
-%config(noreplace) %{_pmdasdir}/perfevent/perfevent.conf
+%files pmda-perfevent -f pcp-pmda-perfevent-files.rpm
 %endif
 
-%if !%{disable_infiniband}
-%files pmda-infiniband
-%{_pmdasdir}/infiniband
-%{_pmdasexecdir}/infiniband
+%if !%{disable_perl}
+%files pmda-activemq -f pcp-pmda-activemq-files.rpm
 %endif
 
-%files pmda-activemq
-%{_pmdasdir}/activemq
-%{_pmdasexecdir}/activemq
-
-%files pmda-bonding
-%{_pmdasdir}/bonding
-%{_pmdasexecdir}/bonding
-
-%files pmda-bind2
-%{_pmdasdir}/bind2
-%{_pmdasexecdir}/bind2
-%{_confdir}/bind2
-
-%files pmda-dbping
-%{_pmdasdir}/dbping
-%{_pmdasexecdir}/dbping
+%if !%{disable_perl}
+%files pmda-bind2 -f pcp-pmda-bind2-files.rpm
+%endif
 
-%files pmda-ds389log
-%{_pmdasdir}/ds389log
-%{_pmdasexecdir}/ds389log
+%if !%{disable_nutcracker}
+%files pmda-nutcracker -f pcp-pmda-nutcracker-files.rpm
+%endif
 
-%files pmda-ds389
-%{_pmdasdir}/ds389
-%{_pmdasexecdir}/ds389
+%if !%{disable_python2} || !%{disable_python3}
+%files pmda-elasticsearch -f pcp-pmda-elasticsearch-files.rpm
+%endif
 
-%files pmda-elasticsearch
-%{_pmdasdir}/elasticsearch
-%{_pmdasexecdir}/elasticsearch
-%{_confdir}/elasticsearch
+%if !%{disable_perl}
+%files pmda-redis -f pcp-pmda-redis-files.rpm
 
-%files pmda-openvswitch
-%{_pmdasdir}/openvswitch
-%{_pmdasexecdir}/openvswitch
+%files pmda-bonding -f pcp-pmda-bonding-files.rpm
 
-%files pmda-rabbitmq
-%{_pmdasdir}/rabbitmq
-%{_pmdasexecdir}/rabbitmq
-%{_confdir}/rabbitmq
+%files pmda-dbping -f pcp-pmda-dbping-files.rpm
 
-%files pmda-gpfs
-%{_pmdasdir}/gpfs
-%{_pmdasexecdir}/gpfs
+%files pmda-ds389log -f pcp-pmda-ds389log-files.rpm
 
-%files pmda-gpsd
-%{_pmdasdir}/gpsd
-%{_pmdasexecdir}/gpsd
+%files pmda-ds389 -f pcp-pmda-ds389-files.rpm
 
-%files pmda-docker
-%{_pmdasdir}/docker
-%{_pmdasexecdir}/docker
+%files pmda-gpfs -f pcp-pmda-gpfs-files.rpm
 
-%files pmda-lio
-%{_pmdasdir}/lio
-%{_pmdasexecdir}/lio
+%files pmda-gpsd -f pcp-pmda-gpsd-files.rpm
 
-%files pmda-openmetrics
-%{_pmdasdir}/openmetrics
-%{_pmdasexecdir}/openmetrics
-%config(noreplace) %{_confdir}/openmetrics
+%files pmda-lustre -f pcp-pmda-lustre-files.rpm
 
-%files pmda-lustre
-%{_pmdasdir}/lustre
-%{_pmdasexecdir}/lustre
-%config(noreplace) %{_confdir}/lustre
+%files pmda-memcache -f pcp-pmda-memcache-files.rpm
 
-%files pmda-lustrecomm
-%{_pmdasdir}/lustrecomm
-%{_pmdasexecdir}/lustrecomm
+%files pmda-named -f pcp-pmda-named-files.rpm
 
-%files pmda-memcache
-%{_pmdasdir}/memcache
-%{_pmdasexecdir}/memcache
+%files pmda-netfilter -f pcp-pmda-netfilter-files.rpm
 
-%files pmda-mysql
-%{_pmdasdir}/mysql
-%{_pmdasexecdir}/mysql
+%files pmda-news -f pcp-pmda-news-files.rpm
 
-%files pmda-named
-%{_pmdasdir}/named
-%{_pmdasexecdir}/named
+%files pmda-pdns -f pcp-pmda-pdns-files.rpm
 
-%files pmda-netfilter
-%{_pmdasdir}/netfilter
-%{_pmdasexecdir}/netfilter
+%files pmda-rsyslog -f pcp-pmda-rsyslog-files.rpm
 
-%files pmda-news
-%{_pmdasdir}/news
-%{_pmdasexecdir}/news
+%files pmda-samba -f pcp-pmda-samba-files.rpm
 
-%files pmda-nginx
-%{_pmdasdir}/nginx
-%{_pmdasexecdir}/nginx
-%config(noreplace) %{_confdir}/nginx
+%files pmda-slurm -f pcp-pmda-slurm-files.rpm
 
-%files pmda-nfsclient
-%{_pmdasdir}/nfsclient
-%{_pmdasexecdir}/nfsclient
+%files pmda-vmware -f pcp-pmda-vmware-files.rpm
 
-%if !%{disable_nutcracker}
-%files pmda-nutcracker
-%{_pmdasdir}/nutcracker
-%{_pmdasexecdir}/nutcracker
-%config(noreplace) %{_confdir}/nutcracker
+%files pmda-zimbra -f pcp-pmda-zimbra-files.rpm
 %endif
 
-%files pmda-oracle
-%{_pmdasdir}/oracle
-%{_pmdasexecdir}/oracle
-%config(noreplace) %{_confdir}/oracle
-
-%files pmda-pdns
-%{_pmdasdir}/pdns
-%{_pmdasexecdir}/pdns
-
-%files pmda-postfix
-%{_pmdasdir}/postfix
-%{_pmdasexecdir}/postfix
+%files pmda-docker -f pcp-pmda-docker-files.rpm
 
-%files pmda-postgresql
-%{_pmdasdir}/postgresql
-%{_pmdasexecdir}/postgresql
-%dir %{_confdir}/postgresql
-%config(noreplace) %{_confdir}/postgresql/pmdapostgresql.conf
+%files pmda-lustrecomm -f pcp-pmda-lustrecomm-files.rpm
 
-%files pmda-redis
-%{_pmdasdir}/redis
-%{_pmdasexecdir}/redis
-%{_confdir}/redis
-
-%files pmda-rsyslog
-%{_pmdasdir}/rsyslog
-%{_pmdasexecdir}/rsyslog
+%if !%{disable_perl}
+%files pmda-mysql -f pcp-pmda-mysql-files.rpm
+%endif
 
-%files pmda-samba
-%{_pmdasdir}/samba
-%{_pmdasexecdir}/samba
+%files pmda-nginx -f pcp-pmda-nginx-files.rpm
 
-%if !%{disable_snmp}
-%files pmda-snmp
-%{_pmdasdir}/snmp
-%{_pmdasexecdir}/snmp
-%{_confdir}/snmp
+%if !%{disable_perl}
+%files pmda-postfix -f pcp-pmda-postfix-files.rpm
 %endif
 
-%files pmda-slurm
-%{_pmdasdir}/slurm
-%{_pmdasexecdir}/slurm
+%if !%{disable_python2} || !%{disable_python3}
+%files pmda-postgresql -f pcp-pmda-postgresql-files.rpm
+%endif
 
-%files pmda-vmware
-%{_pmdasdir}/vmware
-%{_pmdasexecdir}/vmware
+%if !%{disable_perl}
+%files pmda-oracle -f pcp-pmda-oracle-files.rpm
+%endif
 
-%files pmda-zimbra
-%{_pmdasdir}/zimbra
-%{_pmdasexecdir}/zimbra
+%if !%{disable_perl}
+%files pmda-snmp -f pcp-pmda-snmp-files.rpm
+%endif
 
-%files pmda-dm
-%{_pmdasdir}/dm
-%{_pmdasexecdir}/dm
-%{_ieconfdir}/dm
-%dir %{_confdir}/pmieconf/dm
-%config(noreplace) %{_confdir}/pmieconf/dm
+%files pmda-dm -f pcp-pmda-dm-files.rpm
 
 %if !%{disable_bcc}
-%files pmda-bcc
-%{_pmdasdir}/bcc
-%{_pmdasexecdir}/bcc
-%{_confdir}/bcc
+%files pmda-bcc -f pcp-pmda-bcc-files.rpm
 %endif
 
 %if !%{disable_bpftrace}
-%files pmda-bpftrace
-%{_pmdasdir}/bpftrace
-%{_pmdasexecdir}/bpftrace
-%config(noreplace) %{_confdir}/bpftrace
+%files pmda-bpftrace -f pcp-pmda-bpftrace-files.rpm
 %endif
 
 %if !%{disable_python2} || !%{disable_python3}
-%files pmda-gluster
-%{_pmdasdir}/gluster
-%{_pmdasexecdir}/gluster
+%files pmda-gluster -f pcp-pmda-gluster-files.rpm
 
-%files pmda-zswap
-%{_pmdasdir}/zswap
-%{_pmdasexecdir}/zswap
+%files pmda-zswap -f pcp-pmda-zswap-files.rpm
 
-%files pmda-unbound
-%{_pmdasdir}/unbound
-%{_pmdasexecdir}/unbound
+%files pmda-unbound -f pcp-pmda-unbound-files.rpm
 
-%files pmda-mic
-%{_pmdasdir}/mic
-%{_pmdasexecdir}/mic
+%files pmda-mic -f pcp-pmda-mic-files.rpm
 
-%files pmda-haproxy
-%{_pmdasdir}/haproxy
-%{_pmdasexecdir}/haproxy
-%{_confdir}/haproxy
+%files pmda-haproxy -f pcp-pmda-haproxy-files.rpm
 
-%files pmda-libvirt
-%{_pmdasdir}/libvirt
-%{_pmdasexecdir}/libvirt
-%{_confdir}/libvirt
+%files pmda-lmsensors -f pcp-pmda-lmsensors-files.rpm
 
-%files export-pcp2elasticsearch
-%{_bindir}/pcp2elasticsearch
-%{_bashcompdir}/pcp2elasticsearch
+%if !%{disable_mssql}
+%files pmda-mssql -f pcp-pmda-mssql-files.rpm
+%endif
 
-%files export-pcp2graphite
-%{_bindir}/pcp2graphite
-%{_bashcompdir}/pcp2graphite
+%files pmda-netcheck -f pcp-pmda-netcheck-files.rpm
 
-%files export-pcp2influxdb
-%{_bindir}/pcp2influxdb
-%{_bashcompdir}/pcp2influxdb
+%files pmda-nfsclient -f pcp-pmda-nfsclient-files.rpm
 
-%files export-pcp2json
-%{_bindir}/pcp2json
-%{_bashcompdir}/pcp2json
+%files pmda-openvswitch -f pcp-pmda-openvswitch-files.rpm
 
-%files export-pcp2spark
-%{_bindir}/pcp2spark
-%{_bashcompdir}/pcp2spark
+%files pmda-rabbitmq -f pcp-pmda-rabbitmq-files.rpm
 
-%if !%{disable_xlsx}
-%files export-pcp2xlsx
-%{_bindir}/pcp2xlsx
-%{_bashcompdir}/pcp2xlsx
-%endif
+%files export-pcp2graphite -f pcp-export-pcp2graphite-files.rpm
 
-%files export-pcp2xml
-%{_bindir}/pcp2xml
-%{_bashcompdir}/pcp2xml
+%files export-pcp2json -f pcp-export-pcp2json-files.rpm
 
-%files export-pcp2zabbix
-%{_bindir}/pcp2zabbix
-%{_bashcompdir}/pcp2zabbix
+%files export-pcp2spark -f pcp-export-pcp2spark-files.rpm
 
-%files pmda-lmsensors
-%{_pmdasdir}/lmsensors
-%{_pmdasexecdir}/lmsensors
+%files export-pcp2xml -f pcp-export-pcp2xml-files.rpm
 
-%files pmda-netcheck
-%{_pmdasdir}/netcheck
-%{_pmdasexecdir}/netcheck
-%{_confdir}/netcheck
+%files export-pcp2zabbix -f pcp-export-pcp2zabbix-files.rpm
+%endif
 
+%if !%{disable_python2} || !%{disable_python3}
+%files export-pcp2elasticsearch -f pcp-export-pcp2elasticsearch-files.rpm
 %endif
 
-%files export-zabbix-agent
-%{_libdir}/zabbix
-%dir %{_sysconfdir}/zabbix/zabbix_agentd.d
-%config(noreplace) %{_sysconfdir}/zabbix/zabbix_agentd.d/zbxpcp.conf
+%if !%{disable_python2} || !%{disable_python3}
+%files export-pcp2influxdb -f pcp-export-pcp2influxdb-files.rpm
+%endif
 
-%if !%{disable_mssql}
-%files pmda-mssql
-%{_pmdasdir}/mssql
-%{_pmdasexecdir}/mssql
-%config(noreplace) %{_confdir}/mssql
+%if !%{disable_xlsx}
+%files export-pcp2xlsx -f pcp-export-pcp2xlsx-files.rpm
 %endif
 
+%files export-zabbix-agent -f pcp-export-zabbix-agent-files.rpm
+
 %if !%{disable_json}
-%files pmda-json
-%{_pmdasdir}/json
-%{_pmdasexecdir}/json
-%config(noreplace) %{_confdir}/json
+%files pmda-json -f pcp-pmda-json-files.rpm
+%endif
+
+%if !%{disable_python2} || !%{disable_python3}
+%files pmda-libvirt -f pcp-pmda-libvirt-files.rpm
+
+%files pmda-lio -f pcp-pmda-lio-files.rpm
+
+%files pmda-openmetrics -f pcp-pmda-openmetrics-files.rpm
 %endif
 
-%files pmda-apache
-%{_pmdasdir}/apache
-%{_pmdasexecdir}/apache
+%files pmda-apache -f pcp-pmda-apache-files.rpm
 
-%files pmda-bash
-%{_pmdasdir}/bash
-%{_pmdasexecdir}/bash
+%files pmda-bash -f pcp-pmda-bash-files.rpm
 
-%files pmda-cifs
-%{_pmdasdir}/cifs
-%{_pmdasexecdir}/cifs
+%files pmda-cifs -f pcp-pmda-cifs-files.rpm
 
-%files pmda-cisco
-%{_pmdasdir}/cisco
-%{_pmdasexecdir}/cisco
+%files pmda-cisco -f pcp-pmda-cisco-files.rpm
 
-%files pmda-gfs2
-%{_pmdasdir}/gfs2
-%{_pmdasexecdir}/gfs2
+%files pmda-gfs2 -f pcp-pmda-gfs2-files.rpm
 
-%files pmda-logger
-%{_pmdasdir}/logger
-%{_pmdasexecdir}/logger
+%files pmda-logger -f pcp-pmda-logger-files.rpm
 
-%files pmda-mailq
-%{_pmdasdir}/mailq
-%{_pmdasexecdir}/mailq
+%files pmda-mailq -f pcp-pmda-mailq-files.rpm
 
-%files pmda-mounts
-%{_pmdasdir}/mounts
-%{_pmdasexecdir}/mounts
-%config(noreplace) %{_confdir}/mounts
+%files pmda-mounts -f pcp-pmda-mounts-files.rpm
 
-%files pmda-nvidia-gpu
-%{_pmdasdir}/nvidia
-%{_pmdasexecdir}/nvidia
+%files pmda-nvidia-gpu -f pcp-pmda-nvidia-files.rpm
 
-%files pmda-roomtemp
-%{_pmdasdir}/roomtemp
-%{_pmdasexecdir}/roomtemp
+%files pmda-roomtemp -f pcp-pmda-roomtemp-files.rpm
 
 %if !%{disable_rpm}
-%files pmda-rpm
-%{_pmdasdir}/rpm
-%{_pmdasexecdir}/rpm
+%files pmda-rpm -f pcp-pmda-rpm-files.rpm
 %endif
+%files pmda-sendmail -f pcp-pmda-sendmail-files.rpm
 
-%files pmda-sendmail
-%{_pmdasdir}/sendmail
-%{_pmdasexecdir}/sendmail
+%files pmda-shping -f pcp-pmda-shping-files.rpm
 
-%files pmda-shping
-%{_pmdasdir}/shping
-%{_pmdasexecdir}/shping
-%config(noreplace) %{_confdir}/shping
+%files pmda-smart -f pcp-pmda-smart-files.rpm
 
-%files pmda-smart
-%{_pmdasdir}/smart
-%{_pmdasexecdir}/smart
+%files pmda-sockets -f pcp-pmda-sockets-files.rpm
 
-%files pmda-sockets
-%{_pmdasdir}/sockets
-%{_pmdasexecdir}/sockets
+%files pmda-hacluster -f pcp-pmda-hacluster-files.rpm
 
-%files pmda-hacluster
-%{_pmdasdir}/hacluster
-%{_pmdasexecdir}/hacluster
-
-%files pmda-summary
-%{_pmdasdir}/summary
-%{_pmdasexecdir}/summary
-%config(noreplace) %{_confdir}/summary
+%files pmda-summary -f pcp-pmda-summary-files.rpm
 
 %if !%{disable_systemd}
-%files pmda-systemd
-%{_pmdasdir}/systemd
-%{_pmdasexecdir}/systemd
+%files pmda-systemd -f pcp-pmda-systemd-files.rpm
 %endif
 
-%files pmda-trace
-%{_pmdasdir}/trace
-%{_pmdasexecdir}/trace
+%files pmda-trace -f pcp-pmda-trace-files.rpm
+
+%files pmda-weblog -f pcp-pmda-weblog-files.rpm
 
-%files pmda-weblog
-%{_pmdasdir}/weblog
-%{_pmdasexecdir}/weblog
+%if !%{disable_perl}
+%files import-sar2pcp -f pcp-import-sar2pcp-files.rpm
 
+%files import-iostat2pcp -f pcp-import-iostat2pcp-files.rpm
+
+#TODO:
+#%%files import-sheet2pcp -f pcp-import-sheet2pcp-files.rpm
+
+%files import-mrtg2pcp -f pcp-import-mrtg2pcp-files.rpm
+
+%files import-ganglia2pcp -f pcp-import-ganglia2pcp-files.rpm
+%endif
+
+%files import-collectl2pcp -f pcp-import-collectl2pcp-files.rpm
+
+%if !%{disable_perl}
 %files -n perl-PCP-PMDA -f perl-pcp-pmda.list
 
 %files -n perl-PCP-MMV -f perl-pcp-mmv.list
@@ -3448,6 +3289,7 @@ chown -R pcp:pcp %{_logsdir}/pmproxy 2>/dev/null
 %files -n perl-PCP-LogImport -f perl-pcp-logimport.list
 
 %files -n perl-PCP-LogSummary -f perl-pcp-logsummary.list
+%endif
 
 %if !%{disable_python2}
 %files -n %{__python2}-pcp -f python-pcp.list.rpm
@@ -3457,39 +3299,21 @@ chown -R pcp:pcp %{_logsdir}/pmproxy 2>/dev/null
 %files -n python3-pcp -f python3-pcp.list.rpm
 %endif
 
-%if !%{disable_qt}
-%files gui -f pcp-gui.list
-
-%{_confdir}/pmsnap
-%config(noreplace) %{_confdir}/pmsnap/control
-%{_localstatedir}/lib/pcp/config/pmsnap
-%{_localstatedir}/lib/pcp/config/pmchart
-%{_localstatedir}/lib/pcp/config/pmafm/pcp-gui
-%{_datadir}/applications/pmchart.desktop
-%dir %{_pixmapdir}
-%{_bashcompdir}/pmdumptext
+%if !%{disable_python2} || !%{disable_python3}
+%files system-tools -f pcp-system-tools-files.rpm
 %endif
 
-%files doc -f pcp-doc.list
-%dir %{_booksdir}
-%dir %{_datadir}/pcp/demos/tutorials
+%files zeroconf -f pcp-zeroconf-files.rpm
 
-%if !%{disable_selinux}
-%files selinux -f pcp-selinux.list
-%dir %{_selinuxdir}
-%dir %{_selinuxexecdir}
-%endif
+%changelog
+* Tue Apr 20 2021 Nathan Scott <nathans@redhat.com> - 5.3.0-2
+- Resolve pcp-testsuite linkage problems (BZ 1950263)
 
-%if !%{disable_python2} || !%{disable_python3}
-%files system-tools -f pcp-system-tools.list
-%dir %{_confdir}/dstat
-%dir %{_confdir}/pmrep
-%config(noreplace) %{_confdir}/dstat/*
-%config(noreplace) %{_confdir}/pmrep/*
-%{_bashcompdir}/pmrep
-%endif
+* Fri Apr 16 2021 Nathan Scott <nathans@redhat.com> - 5.3.0-1
+- Allow pcp-atop to filter processes on state (BZ 1807046)
+- Rebase to a more recent upstream version of PCP (BZ 1922040)
+- PCP scalability and memory footprint improvements (BZ 1942292)
 
-%changelog
 * Fri Feb 19 2021 Nathan Scott <nathans@redhat.com> - 5.2.5-4
 - Revert removal of pmcd unit dependencies (BZs 1929556, 1930284)