# TODO: # - TONS of unpackaged files # - PLDify init scripts # - build pmview (BR: openinventor?) # - /var/lib/pcp looks like mess, configs/variable data/scripts/ELFs (successively resolved upstream) # NOTE: user/group must be in -libs because of /var/run/pcp, needed for Make.stdpmid in post # - package zabbix agent # - package zsh completions # # Conditional build: %bcond_without qt # Qt 5.x based GUI %bcond_without systemtap # systemtap/dtrace support Summary: Performance Co-Pilot - system level performance monitoring and management Summary(pl.UTF-8): Performance Co-Pilot - monitorowanie i zarządzanie wydajnością na poziomie systemu Name: pcp Version: 5.3.6 Release: 5 License: LGPL v2.1 (libraries), GPL v2 (the rest) Group: Applications/System Source0: https://github.com/performancecopilot/pcp/archive/%{version}/%{name}-%{version}.tar.gz # Source0-md5: c753c01cad55719e67fc62b7a20bc0ef Patch0: build-man.patch Patch1: %{name}-opt.patch Patch2: %{name}-nspr.patch Patch3: %{name}-saslconfdir.patch Patch5: python-install.patch Patch6: install-icons.patch URL: http://pcp.io/ BuildRequires: autoconf >= 2.60 BuildRequires: avahi-devel BuildRequires: bison BuildRequires: cyrus-sasl-devel >= 2 BuildRequires: flex %ifarch i386 BuildRequires: libatomic-devel %endif BuildRequires: libibmad-devel BuildRequires: libibumad-devel BuildRequires: libmicrohttpd-devel >= 0.9.10 BuildRequires: libuv-devel >= 1 BuildRequires: nspr-devel >= 4 BuildRequires: nss-devel >= 3 BuildRequires: openssl-devel BuildRequires: perl-DBD-Pg BuildRequires: perl-DBD-mysql BuildRequires: perl-ExtUtils-MakeMaker BuildRequires: perl-File-Slurp BuildRequires: perl-JSON BuildRequires: perl-Net-SNMP BuildRequires: perl-XML-LibXML BuildRequires: perl-base BuildRequires: perl-libwww BuildRequires: perl-tools-pod BuildRequires: pkgconfig BuildRequires: python-devel >= 2.0 BuildRequires: python3-devel >= 1:3.2 BuildRequires: python3-psycopg2 BuildRequires: readline-devel BuildRequires: rpm-devel BuildRequires: rpm-perlprov BuildRequires: rpm-pythonprov BuildRequires: rpmbuild(macros) >= 1.219 BuildRequires: systemd-devel %{?with_systemtap:BuildRequires: systemtap-sdt-devel} %if %{with qt} BuildRequires: Qt5Concurrent-devel BuildRequires: Qt5Core-devel BuildRequires: Qt5Gui-devel BuildRequires: Qt5Network-devel BuildRequires: Qt5PrintSupport-devel BuildRequires: Qt5Svg-devel BuildRequires: qt5-build BuildRequires: qt5-qmake %endif Requires: %{name}-libs = %{version}-%{release} Requires: libmicrohttpd >= 0.9.10 Requires: perl-pcp = %{version}-%{release} Requires: python-pcp = %{version}-%{release} Requires(post): /usr/bin/gawk Suggests: crondaemon BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description Performance Co-Pilot (PCP) is a framework and services to support system-level performance monitoring and performance management. The Performance Co-Pilot provides a unifying abstraction for all of the interesting performance data in a system, and allows client applications to easily retrieve and process any subset of that data. %description -l pl.UTF-8 PCP (Performance Co-Pilot) to szkielet i usługi mające na celu obsługę monitorowania wydajności i zarządzania wydajnością. PCP udostępnia ujednoliconą abstrakcję dla wszystkich interesujących danych związanych z wydajnością w systemie i pozwala aplikacjom klienckim łatwo odczytywać i przetwarzać dowolny podzbiór tych danych. %package gui Summary: Performance Co-Pilot GUI tools Summary(pl.UTF-8): Performance Co-Pilot - narzędzia GUI Group: X11/Applications Requires: %{name} = %{version}-%{release} %description gui pmchart is designed to produce stripcharts from Performance Co-Pilot (PCP) performance metrics fetched from live sources (one or more pmcd hosts) and also historical sources (one or more PCP archives). pmtime is a graphical time controller utility that coordinates time updates and VCR-like playback for other utilities like pmchart and pmval. %description gui -l pl.UTF-8 pmchart służy do tworzenia wykresów z danych o wydajności pakietu PCP (Performance Co-Pilot) pobranych z żywych źródeł (jednego lub większej liczby hostów pmcd) oraz źródeł historycznych (jednego lub większej liczby archiwów PCP). pmtime to graficzne narzędzie do kontroli czasu, koordynujące aktualizację czasu oraz odtwarzanie w stylu VCR dla innych narzędzi, takich jak pmchart czy pmval. %package libs Summary: PCP libraries Summary(pl.UTF-8): Biblioteki PCP Group: Libraries Requires(post,postun): /sbin/ldconfig Requires(pre): /bin/id Requires(pre): /usr/bin/getgid Requires(pre): /usr/sbin/groupadd Requires(pre): /usr/sbin/useradd Requires(postun): /usr/sbin/groupdel Requires(postun): /usr/sbin/userdel Provides: group(pcp) Provides: user(pcp) %description libs PCP libraries. %description libs -l pl.UTF-8 Biblioteki PCP. %package devel Summary: Header files for PCP libraries Summary(pl.UTF-8): Pliki nagłówkowe bibliotek PCP Group: Development/Libraries Requires: %{name}-libs = %{version}-%{release} %description devel Header files for PCP libraries. %description devel -l pl.UTF-8 Pliki nagłówkowe bibliotek PCP. %package static Summary: Static PCP libraries Summary(pl.UTF-8): Statyczne biblioteki PCP Group: Development/Libraries Requires: %{name}-devel = %{version}-%{release} %description static Static PCP libraries. %description static -l pl.UTF-8 Statyczne biblioteki PCP. %package -n perl-pcp Summary: Perl interface to PCP libraries Summary(pl.UTF-8): Perlowy interfejs do bibliotek PCP Group: Development/Languages/Perl Requires: %{name}-libs = %{version}-%{release} %description -n perl-pcp Perl interface to PCP libraries. %description -n perl-pcp -l pl.UTF-8 Perlowy interfejs do bibliotek PCP. %package -n python-pcp Summary: Python 2 interface to PCP libraries Summary(pl.UTF-8): Interfejs Pythona 2 do bibliotek PCP Group: Development/Languages/Python Requires: %{name}-libs = %{version}-%{release} %description -n python-pcp Python 2 interface to PCP libraries. %description -n python-pcp -l pl.UTF-8 Interfejs Pythona 2 do bibliotek PCP. %package -n python3-pcp Summary: Python 3 interface to PCP libraries Summary(pl.UTF-8): Interfejs Pythona 3 do bibliotek PCP Group: Development/Languages/Python Requires: %{name}-libs = %{version}-%{release} %description -n python3-pcp Python 3 interface to PCP libraries. %description -n python3-pcp -l pl.UTF-8 Interfejs Pythona 3 do bibliotek PCP. %package -n bash-completion-pcp Summary: bash-completion for PCP utilities Summary(pl.UTF-8): Bashowe uzupełnianie nazw dla narzędzi PCP Group: Applications/Shells Requires: bash-completion BuildArch: noarch %description -n bash-completion-pcp bash-completion for PCP utilities. %description -n bash-completion-pcp -l pl.UTF-8 Bashowe uzupełnianie nazw dla narzędzi PCP. %package -n systemtap-pcp Summary: systemtap/dtrace probes for PCP Summary(pl.UTF-8): Sondy systemtap/dtrace dla PCP Group: Development/Tools Requires: %{name} = %{version}-%{release} Requires: systemtap-client %description -n systemtap-pcp systemtap/dtrace probes for PCP. %description -n systemtap-pcp -l pl.UTF-8 Sondy systemtap/dtrace dla PCP. %prep %setup -q %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch5 -p1 %patch6 -p1 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+perl(\s|$),#!%{__perl}\1,' \ src/ganglia2pcp/ganglia2pcp \ src/iostat2pcp/iostat2pcp \ src/mrtg2pcp/mrtg2pcp \ src/perl/LogSummary/extract.pl \ src/perl/MMV/server.pl \ src/pmdas/oracle/connect.pl \ src/pmdas/redis/pmdaredis.pl \ src/pmdas/simple/pmdasimple.perl \ src/sar2pcp/sar2pcp \ src/sheet2pcp/sheet2pcp \ src/pmdas/perfevent/perfevent-makerewrite.pl find \( -name '*.py' -o -name '*.python' \) -print0 | xargs -0 \ %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+pmpython(\s|$),#!%{_bindir}/pmpython\1,' %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+pmpython(\s|$),#!%{_bindir}/pmpython\1,' \ src/pmdas/haproxy/connect \ src/pmdas/json/generate_ceph_metadata \ src/pmdas/libvirt/connect \ src/pmdas/netcheck/pyprep %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+bash(\s|$),#!/bin/bash\1,' \ src/pmdas/bash/test-child.sh \ src/pmdas/bash/test-trace.sh %build QTDIR=%{_libdir}/qt5; export QTDIR %{__autoconf} %configure \ --with%{!?with_qt:out}-qt \ --with%{!?with_systemtap:out}-static-probes \ --with-python_prefix=%{_prefix} \ --with-rcdir=/etc/rc.d/init.d # ensure not *zipping man pages on install %{__sed} -i -e '/^HAVE_.*ED_MANPAGES/s,true,false,' src/include/builddefs %{__make} %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT%{_sysconfdir} %{__make} install \ DIST_ROOT=$RPM_BUILD_ROOT \ BASHDIR=/etc/bash_completion.d/pcp \ INSTALL='$(INSTALL_SH)' \ HAVE_BZIP2ED_MANPAGES=false \ HAVE_GZIPPED_MANPAGES=false \ HAVE_LZMAED_MANPAGES=false \ HAVE_XZED_MANPAGES=false install -p src/pmns/stdpmid $RPM_BUILD_ROOT/var/lib/pcp/pmns install -d $RPM_BUILD_ROOT%{systemdtmpfilesdir} cat >$RPM_BUILD_ROOT%{systemdtmpfilesdir}/pcp.conf <