Code

Cleanup redhat specfile
authorRuben Kerkhof <ruben@tilaa.nl>
Sat, 17 Nov 2012 14:39:29 +0000 (15:39 +0100)
committerRuben Kerkhof <ruben@tilaa.nl>
Sun, 18 Nov 2012 09:10:38 +0000 (10:10 +0100)
Fixed a few rpmlint warnings
Updated (mostly) to Fedora Packaging Guidelines

contrib/redhat/collectd.spec

index 0a0e81b78c2620a47aaba0893b6bf72fb210a785..6f37f8fab2c9ed061b0fdbc4242f62f24dd35eff 100644 (file)
+%global _hardened_build 1
 
-Summary:       Statistics collection daemon for filling RRD files.
+Summary:       Statistics collection daemon for filling RRD files
 Name:          collectd
 Version:       5.1.0
-Release:       1%{?dist}
+Release:       2%{?dist}
+URL:           http://collectd.org
 Source:                http://collectd.org/files/%{name}-%{version}.tar.gz
-License:       GPL
+License:       GPLv2
 Group:         System Environment/Daemons
 BuildRoot:     %{_tmppath}/%{name}-%{version}-root
-BuildRequires: rrdtool-devel, libstatgrab-devel, libxml2-devel, libiptcdata-devel, libgcrypt-devel, kernel-headers
-# libcurl deps
-BuildRequires: curl-devel, libidn-devel, openssl-devel
-Requires:      libstatgrab, libgcrypt
-Packager:      RightScale <support@rightscale.com>
+BuildRequires: curl-devel, libgcrypt-devel, libxml2-devel, libstatgrab-devel
 Vendor:                collectd development team <collectd@verplant.org>
 
+Requires(post):                chkconfig
+Requires(preun):       chkconfig, initscripts
+Requires(postun):      initscripts
+
 %description
 collectd is a small daemon which collects system information periodically and
 provides mechanisms to monitor and store the values in a variety of ways. It
-is written in C for performance. Since the daemon doesn't need to startup
+is written in C for performance. Since the daemon doesn't need to start up
 every time it wants to update the values it's very fast and easy on the
 system. Also, the statistics are very fine grained since the files are updated
 every 10 seconds.
 
 %package amqp
-Summary:       amqp-module for collectd.
+Summary:       AMQP plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, librabbitmq
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: librabbitmq-devel
 %description amqp
 The AMQP plugin transmits or receives values collected by collectd via the
 Advanced Message Queuing Protocol (AMQP).
 
 %package apache
-Summary:       apache-plugin for collectd.
+Summary:       Apache plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, curl
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 %description apache
 This plugin collects data provided by Apache's `mod_status'.
 
 %package ascent
-Summary:       ascent-plugin for collectd.
+Summary:       Ascent plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, curl, libxml2
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 %description ascent
 The Ascent plugin reads and parses the statistics page of Ascent, a free and
 open-source server software for the game World of Warcraft by Blizzard
 Entertainment.
 
 %package bind
-Summary:       bind-plugin for collectd.
+Summary:       Bind plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, curl, libxml2
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 %description bind
 The BIND plugin retrieves this information that's encoded in XML and provided
 via HTTP and submits the values to collectd.
 
 %package curl
-Summary:       curl-plugin for collectd.
+Summary:       Curl plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, curl
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 %description curl
 The cURL plugin uses libcurl to read files and then parses them according to
 the configuration.
 
 %package curl_json
-Summary:       curl_json-plugin for collectd.
+Summary:       Curl_json plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, curl, yajl
+Requires:      %{name}%{?_isa} = %{version}-%{release}, curl, yajl
 Buildrequires: yajl-devel
 %description curl_json
 The cURL-JSON plugin queries JavaScript Object Notation (JSON) data using the
 cURL library and parses it according to the user's configuration.
 
 %package curl_xml
-Summary:       curl_xml-plugin for collectd.
+Summary:       Curl_xml plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, curl, libxml2
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 %description curl_xml
 The cURL-XML plugin reads files using libcurl and parses it as Extensible
 Markup Language (XML).
 
+%package dbi
+Summary:       DBI plugin for collectd
+Group:         System Environment/Daemons
+Requires:      %{name}%{?_isa} = %{version}-%{release}
+Buildrequires: libdbi-devel
+%description dbi
+The DBI plugin uses libdbi, a database abstraction library, to execute SQL
+statements on a database and read back the result.
+
 %package dns
-Summary:       dns-plugin for collectd.
+Summary:       DNS plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, libpcap
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 Buildrequires: libpcap-devel
 %description dns
 The DNS plugin has a similar functionality to dnstop: It uses libpcap to get a
 copy of all traffic from/to port UDP/53 (that's the DNS port), interprets the
 packets and collects statistics of your DNS traffic.
 
-%package dbi
-Summary:       dbi-plugin for collectd.
-Group:         System Environment/Daemons
-Requires:      collectd = %{version}, libdbi
-Buildrequires: libdbi-devel
-%description dbi
-The DBI plugin uses libdbi, a database abstraction library, to execute SQL
-statements on a database and read back the result.
-
 %package email
-Summary:       email-plugin for collectd.
+Summary:       Email plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, spamassassin
+Requires:      %{name}%{?_isa} = %{version}-%{release}, spamassassin
 %description email
 This plugin collects data provided by spamassassin.
 
 %package gmond
-Summary:       gmond-plugin for collectd.
+Summary:       Gmond plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, ganglia
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: ganglia-devel
 %description gmond
 The gmond plugin subscribes to a Multicast group to receive data from gmond,
 the client daemon of the Ganglia project.
 
 %package hddtemp
-Summary:       hddtemp-plugin for collectd.
+Summary:       Hddtemp plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, hddtemp
+Requires:      %{name}%{?_isa} = %{version}-%{release}, hddtemp
 %description hddtemp
 The HDDTemp plugin collects the temperature of hard disks. The temperatures are
 provided via SMART and queried by the external hddtemp daemon.
 
 %package ipmi
-Summary:       ipmi-plugin for collectd.
+Summary:       IPMI plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, OpenIPMI-libs
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: OpenIPMI-devel
 %description ipmi
 The IPMI plugin uses the OpenIPMI library to read hardware sensors from servers
 using the Intelligent Platform Management Interface (IPMI).
 
 %package iptables
-Summary:       iptables-plugin for collectd.
+Summary:       IPtables plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, iptables-devel
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: iptables-devel
 %description iptables
 The IP-Tables plugin can gather statistics from your ip_tables based packet
@@ -143,25 +145,26 @@ filter (aka. firewall) for both the IPv4 and the IPv6 protocol. It can collect
 the byte- and packet-counters of selected rules and submit them to collectd.
 
 %package java
-Summary:       java-module for collectd.
+Summary:       Java plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, libjvm.so
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: java-1.7.0-openjdk-devel
 %description java
 This plugin for collectd allows plugins to be written in Java and executed
 in an embedded JVM.
 
 %package libvirt
-Summary:       libvirt-module for collectd.
+Summary:       Libvirt plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, libvirt, libxml2
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: libvirt-devel
 %description libvirt
+This plugin collects information from virtualized guests.
 
 %package memcachec
-Summary:       memcachec-module for collectd.
+Summary:       Memcachec plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, libmemcached
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: libmemcached-devel
 %description memcachec
 The Memcachec plugin uses libmemcached to read statistics from a Memcached
@@ -169,275 +172,303 @@ instance. Note that another plugin, named `memcached', exists and does a
 similar job, without requiring the installation of libmemcached.
 
 %package mysql
-Summary:       mysql-module for collectd.
+Summary:       MySQL plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, mysql
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: mysql-devel
 %description mysql
-MySQL querying plugin. This plugins provides data of issued commands, called
+MySQL querying plugin. This plugin provides data of issued commands, called
 handlers and database traffic.
 
 %package nginx
-Summary:       nginx-plugin for collectd.
+Summary:       Nginx plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, curl
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 %description nginx
 This plugin gets data provided by nginx.
 
 %package notify_desktop
-Summary:       notify_desktop-module for collectd.
+Summary:       Notify_desktop plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, libnotify
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: libnotify-devel
 %description notify_desktop
 The Notify Desktop plugin uses libnotify to display notifications to the user
 via the desktop notification specification, i. e. on an X display.
 
 %package notify_email
-Summary:       notify_email-module for collectd.
+Summary:       Notify_email plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, libesmtp
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: libesmtp-devel
 %description notify_email
 The Notify Email plugin uses libESMTP to send notifications to a configured
-email address(es).
+email address.
 
 %package nut
-Summary:       nut-module for collectd.
+Summary:       Nut plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, nut-client
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: nut-devel
 %description nut
+This plugin for collectd provides Network UPS Tools support.
 
 %package perl
-Summary:       perl-plugin for collectd.
+Summary:       Perl plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, perl
+Requires:      %{name}%{?_isa} = %{version}-%{release}
+Requires:      perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
 BuildRequires: perl-ExtUtils-Embed
 %description perl
 The Perl plugin embeds a Perl interpreter into collectd and exposes the
 application programming interface (API) to Perl-scripts.
 
 %package pinba
-Summary:       pinba-plugin for collectd.
+Summary:       Pinba plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, protobuf-c
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: protobuf-c-devel
 %description pinba
 The Pinba plugin receives and dispatches timing values from Pinba, a profiling
 extension for PHP.
 
 %package ping
-Summary:       ping-plugin for collectd.
+Summary:       Ping plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, liboping
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: liboping-devel
 %description ping
 The Ping plugin measures network latency using ICMP “echo requests”, usually
 known as “ping”.
 
 %package postgresql
-Summary:       postgresql-plugin for collectd.
+Summary:       PostgreSQL plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, postgresql-libs
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: postgresql-devel
 %description postgresql
 The PostgreSQL plugin connects to and executes SQL statements on a PostgreSQL
 database.
 
 %package python
-Summary:       python-plugin for collectd.
+Summary:       Python plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, python
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: python-devel
 %description python
 The Python plugin embeds a Python interpreter into collectd and exposes the
 application programming interface (API) to Python-scripts.
 
 %package rrdtool
-Summary:       librrdtool-module for collectd.
+Summary:       RRDtool plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, rrdtool
+Requires:      %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: rrdtool-devel
 %description rrdtool
 The RRDtool plugin writes values to RRD-files using librrd.
 
 %package sensors
-Summary:       sensors-module for collectd.
+Summary:       Sensors plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, lm_sensors
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: lm_sensors-devel
 %description sensors
 This plugin for collectd provides querying of sensors supported by lm_sensors.
 
 %package snmp
-Summary:       snmp-module for collectd.
+Summary:       SNMP plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, net-snmp
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: net-snmp-devel
 %description snmp
 This plugin for collectd allows querying of network equipment using SNMP.
 
 %package varnish
-Summary:       varnish-module for collectd.
+Summary:       Varnish plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, varnish-libs
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 BuildRequires: varnish-libs-devel
 %description varnish
 The Varnish plugin collects information about Varnish, an HTTP accelerator.
 
 %package write_http
-Summary:       write_http-module for collectd.
+Summary:       Write-HTTP plugin for collectd
 Group:         System Environment/Daemons
-Requires:      collectd = %{version}, curl
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 %description write_http
-The Write HTTP plugin sends the values collected by collectd to a web-server
+The Write-HTTP plugin sends the values collected by collectd to a web-server
 using HTTP POST requests.
 
 %package contrib
-Summary:       contrib files for collectd.
+Summary:       Contrib files for collectd
 Group:         System Environment/Daemons
+Requires:      %{name}%{?_isa} = %{version}-%{release}
 %description contrib
 All the files found under contrib/ in the source tree are bundled in this
 package.
 
+%package -n libcollectdclient
+Summary:       Collectd client library
+%description -n libcollectdclient
+Collectd client library
+
+%package -n libcollectdclient-devel
+Summary:       Development files for libcollectdclient
+Requires:      pkgconfig
+Requires:      libcollectdclient%{?_isa} = %{version}-%{release}
+%description -n libcollectdclient-devel
+Development files for libcollectdclient
+
+
 %prep
-rm -rf $RPM_BUILD_ROOT
-%setup
+%setup -q
+
 
 %build
 export JAVA_HOME="/usr"
-./configure CFLAGS=-"DLT_LAZY_OR_NOW='RTLD_LAZY|RTLD_GLOBAL'" --prefix=%{_prefix} --sbindir=%{_sbindir} --mandir=%{_mandir} --libdir=%{_libdir} --sysconfdir=%{_sysconfdir} --localstatedir=%{_localstatedir}
-make
+%configure CFLAGS="%{optflags} -DLT_LAZY_OR_NOW='RTLD_LAZY|RTLD_GLOBAL'" \
+       --disable-static \
+       --disable-rrdcached \
+       --with-perl-bindings=INSTALLDIRS=vendor
+
+%{__make} %{?_smp_mflags}
+
 
 %install
-make install DESTDIR=$RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
-cp contrib/redhat/init.d-collectd $RPM_BUILD_ROOT/etc/rc.d/init.d/collectd
-mkdir -p $RPM_BUILD_ROOT/var/lib/collectd
+rm -rf %{buildroot}
+%{__make} install DESTDIR=%{buildroot}
+%{__install} -Dp -m 0755 contrib/redhat/init.d-collectd %{buildroot}%{_initrddir}/collectd
+%{__install} -Dp -m0644 src/collectd.conf %{buildroot}%{_sysconfdir}/collectd.conf
+%{__install} -d %{buildroot}%{sharedstatedir}/collectd/
+%{__install} -d %{buildroot}%{_sysconfdir}/collectd.d/
+
 ### Clean up docs
 find contrib/ -type f -exec %{__chmod} a-x {} \;
+# *.la files shouldn't be distributed.
+rm -f %{buildroot}/%{_libdir}/{collectd/,}*.la
+
+# Move the Perl examples to a separate directory.
+mkdir perl-examples
+find contrib -name '*.p[lm]' -exec mv {} perl-examples/ \;
+
+# Modify config for Red Hat based Distros
+sed -i 's:#BaseDir *"/usr/var/lib/collectd":BaseDir "%{_sharedstatedir}/collectd":' %{buildroot}%{_sysconfdir}/collectd.conf
+sed -i 's:#PIDFile *"/usr/var/run/collectd.pid":PIDFile "%{_localstatedir}/run/collectd.pid":' %{buildroot}%{_sysconfdir}/collectd.conf
+sed -i 's:#PluginDir *"/usr/lib/collectd":PluginDir "%{_libdir}/collectd":' %{buildroot}%{_sysconfdir}/collectd.conf
+
+# Remove Perl hidden .packlist files.
+find %{buildroot} -type f -name .packlist -delete
+# Remove Perl temporary file perllocal.pod
+find %{buildroot} -type f -name perllocal.pod -delete
 
-###Modify Config for Redhat Based Distros
-sed -i 's:#BaseDir     "/usr/var/lib/collectd":BaseDir     "/var/lib/collectd":' $RPM_BUILD_ROOT/etc/collectd.conf
-sed -i 's:#PIDFile     "/usr/var/run/collectd.pid":PIDFile     "/var/run/collectd.pid":' $RPM_BUILD_ROOT/etc/collectd.conf
-sed -i 's:#PluginDir   "/usr/lib/collectd":PluginDir   "%{_libdir}/collectd":' $RPM_BUILD_ROOT/etc/collectd.conf
-sed -i 's:#TypesDB     "/usr/share/collectd/types.db":TypesDB     "/usr/share/collectd/types.db":' $RPM_BUILD_ROOT/etc/collectd.conf
 
 %clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 
 %post
 /sbin/chkconfig --add collectd
-/sbin/chkconfig collectd on
 
 %preun
-if [ "$1" = 0 ]; then
-   /sbin/chkconfig collectd off
-   /etc/init.d/collectd stop
-   /sbin/chkconfig --del collectd
+if [ $1 -eq 0 ]; then
+       /sbin/service collectd stop &>/dev/null
+       /sbin/chkconfig --del collectd
 fi
-exit 0
 
 %postun
-if [ "$1" -ge 1 ]; then
-    /etc/init.d/collectd restart
+if [ $1 -ge 1 ]; then
+       /sbin/service collectd condrestart &>/dev/null || :
 fi
-exit 0
+
+%post -n libcollectdclient -p /sbin/ldconfig
+%postun -n libcollectdclient -p /sbin/ldconfig
+
 
 %files
-%defattr(-,root,root)
-%exclude %{_mandir}/man5/collectd-java*
-%exclude %{_mandir}/man5/collectd-perl*
-%exclude %{_mandir}/man5/collectd-python*
-%exclude %{_mandir}/man5/collectd-snmp*
-%doc AUTHORS COPYING ChangeLog INSTALL NEWS README
-%config %attr(0644,root,root) /etc/collectd.conf
-%attr(0755,root,root) /etc/rc.d/init.d/collectd
-%attr(0755,root,root) %{_sbindir}/collectd
-%attr(0755,root,root) %{_bindir}/collectd-nagios
-%attr(0755,root,root) %{_bindir}/collectdctl
-%attr(0755,root,root) %{_sbindir}/collectdmon
-%attr(0644,root,root) %{_mandir}/man1/*
-%attr(0644,root,root) %{_mandir}/man5/*
-
-# client
-%attr(0644,root,root) /usr/include/collectd/client.h
-%attr(0644,root,root) /usr/include/collectd/lcc_features.h
-
-%attr(0644,root,root) %{_libdir}/libcollectdclient.*
-%attr(0644,root,root) %{_libdir}/pkgconfig/libcollectdclient.pc
-
-# macro to grab binaries for a plugin, given a name
-%define plugin_macro() \
-%attr(0644,root,root) %{_libdir}/%{name}/%1.a \
-%attr(0644,root,root) %{_libdir}/%{name}/%1.so* \
-%attr(0644,root,root) %{_libdir}/%{name}/%1.la
+%doc AUTHORS COPYING ChangeLog README
+%config(noreplace) %{_sysconfdir}/collectd.conf
+%{_initrddir}/collectd
+%{_sbindir}/collectd
+%{_bindir}/collectd-nagios
+%{_bindir}/collectdctl
+%{_sbindir}/collectdmon
+%{_datadir}/collectd/
+%{_sharedstatedir}/collectd
+%{_mandir}/man1/collectd-nagios.1.gz
+%{_mandir}/man1/collectd.1.gz
+%{_mandir}/man1/collectdctl.1.gz
+%{_mandir}/man1/collectdmon.1.gz
+%{_mandir}/man5/collectd-email.5.gz
+%{_mandir}/man5/collectd-exec.5.gz
+%{_mandir}/man5/collectd-threshold.5.gz
+%{_mandir}/man5/collectd-unixsock.5.gz
+%{_mandir}/man5/collectd.conf.5.gz
+%{_mandir}/man5/types.db.5.gz
 
 # all plugins bundled with the main collectd package
-%plugin_macro apcups
-%plugin_macro battery
-%plugin_macro conntrack
-%plugin_macro contextswitch
-%plugin_macro cpufreq
-%plugin_macro cpu
-%plugin_macro csv
-%plugin_macro df
-%plugin_macro disk
-%plugin_macro ethstat
-%plugin_macro entropy
-%plugin_macro email
-%plugin_macro exec
-%plugin_macro filecount
-%plugin_macro fscache
-%plugin_macro interface
-%plugin_macro iptables
-%plugin_macro ipvs
-%plugin_macro irq
-%plugin_macro load
-%plugin_macro logfile
-%plugin_macro madwifi
-%plugin_macro match_empty_counter
-%plugin_macro match_hashed
-%plugin_macro match_regex
-%plugin_macro match_timediff
-%plugin_macro match_value
-%plugin_macro mbmon
-%plugin_macro md
-%plugin_macro memcached
-%plugin_macro memory
-%plugin_macro multimeter
-%plugin_macro network
-%plugin_macro nfs
-%plugin_macro ntpd
-%plugin_macro numa
-%plugin_macro openvpn
-%plugin_macro olsrd
-%plugin_macro powerdns
-%plugin_macro processes
-%plugin_macro protocols
-%plugin_macro serial
-%plugin_macro swap
-%plugin_macro syslog
-%plugin_macro table
-%plugin_macro tail
-%plugin_macro target_notification
-%plugin_macro target_replace
-%plugin_macro target_scale
-%plugin_macro target_set
-%plugin_macro target_v5upgrade
-%plugin_macro tcpconns
-%plugin_macro teamspeak2
-%plugin_macro ted
-%plugin_macro thermal
-%plugin_macro threshold
-%plugin_macro unixsock
-%plugin_macro uptime
-%plugin_macro users
-%plugin_macro uuid
-%plugin_macro vmem
-%plugin_macro vserver
-%plugin_macro wireless
-%plugin_macro write_graphite
+%{_libdir}/%{name}/apcups.so
+%{_libdir}/%{name}/battery.so
+%{_libdir}/%{name}/conntrack.so
+%{_libdir}/%{name}/contextswitch.so
+%{_libdir}/%{name}/cpufreq.so
+%{_libdir}/%{name}/cpu.so
+%{_libdir}/%{name}/csv.so
+%{_libdir}/%{name}/df.so
+%{_libdir}/%{name}/disk.so
+%{_libdir}/%{name}/ethstat.so
+%{_libdir}/%{name}/entropy.so
+%{_libdir}/%{name}/email.so
+%{_libdir}/%{name}/exec.so
+%{_libdir}/%{name}/filecount.so
+%{_libdir}/%{name}/fscache.so
+%{_libdir}/%{name}/interface.so
+%{_libdir}/%{name}/iptables.so
+%{_libdir}/%{name}/ipvs.so
+%{_libdir}/%{name}/irq.so
+%{_libdir}/%{name}/load.so
+%{_libdir}/%{name}/logfile.so
+%{_libdir}/%{name}/madwifi.so
+%{_libdir}/%{name}/match_empty_counter.so
+%{_libdir}/%{name}/match_hashed.so
+%{_libdir}/%{name}/match_regex.so
+%{_libdir}/%{name}/match_timediff.so
+%{_libdir}/%{name}/match_value.so
+%{_libdir}/%{name}/mbmon.so
+%{_libdir}/%{name}/md.so
+%{_libdir}/%{name}/memcached.so
+%{_libdir}/%{name}/memory.so
+%{_libdir}/%{name}/multimeter.so
+%{_libdir}/%{name}/network.so
+%{_libdir}/%{name}/nfs.so
+%{_libdir}/%{name}/ntpd.so
+%{_libdir}/%{name}/numa.so
+%{_libdir}/%{name}/openvpn.so
+%{_libdir}/%{name}/olsrd.so
+%{_libdir}/%{name}/powerdns.so
+%{_libdir}/%{name}/processes.so
+%{_libdir}/%{name}/protocols.so
+%{_libdir}/%{name}/serial.so
+%{_libdir}/%{name}/swap.so
+%{_libdir}/%{name}/syslog.so
+%{_libdir}/%{name}/table.so
+%{_libdir}/%{name}/tail.so
+%{_libdir}/%{name}/target_notification.so
+%{_libdir}/%{name}/target_replace.so
+%{_libdir}/%{name}/target_scale.so
+%{_libdir}/%{name}/target_set.so
+%{_libdir}/%{name}/target_v5upgrade.so
+%{_libdir}/%{name}/tcpconns.so
+%{_libdir}/%{name}/teamspeak2.so
+%{_libdir}/%{name}/ted.so
+%{_libdir}/%{name}/thermal.so
+%{_libdir}/%{name}/threshold.so
+%{_libdir}/%{name}/unixsock.so
+%{_libdir}/%{name}/uptime.so
+%{_libdir}/%{name}/users.so
+%{_libdir}/%{name}/uuid.so
+%{_libdir}/%{name}/vmem.so
+%{_libdir}/%{name}/vserver.so
+%{_libdir}/%{name}/wireless.so
+%{_libdir}/%{name}/write_graphite.so
 
 # All plugins not built because of dependencies on libraries not available in
 # RHEL or EPEL:
@@ -454,125 +485,136 @@ exit 0
 # plugin write_redis disabled, requires credis
 # plugin xmms disabled, requires xmms
 
-%attr(0644,root,root) %{_datadir}/%{name}/types.db
 
-%dir /var/lib/collectd
+%files -n libcollectdclient-devel
+%{_includedir}/collectd/client.h
+%{_includedir}/collectd/lcc_features.h
+%{_libdir}/libcollectdclient.so
+%{_libdir}/pkgconfig/libcollectdclient.pc
+
+%files -n libcollectdclient
+%{_libdir}/libcollectdclient.so.*
+
 
 %files amqp
-%plugin_macro amqp
+%{_libdir}/%{name}/amqp.so
 
 %files apache
-%plugin_macro apache
+%{_libdir}/%{name}/apache.so
 
 %files ascent
-%plugin_macro ascent
+%{_libdir}/%{name}/ascent.so
 
 %files bind
-%plugin_macro bind
+%{_libdir}/%{name}/bind.so
 
 %files curl
-%plugin_macro curl
+%{_libdir}/%{name}/curl.so
 
 %files curl_json
-%plugin_macro curl_json
+%{_libdir}/%{name}/curl_json.so
 
 %files curl_xml
-%plugin_macro curl_xml
+%{_libdir}/%{name}/curl_xml.so
 
 %files dns
-%plugin_macro dns
+%{_libdir}/%{name}/dns.so
 
 %files dbi
-%plugin_macro dbi
+%{_libdir}/%{name}/dbi.so
 
 %files email
-%plugin_macro email
+%{_libdir}/%{name}/email.so
 
 %files gmond
-%plugin_macro gmond
+%{_libdir}/%{name}/gmond.so
 
 %files hddtemp
-%plugin_macro hddtemp
+%{_libdir}/%{name}/hddtemp.so
 
 %files ipmi
-%plugin_macro ipmi
+%{_libdir}/%{name}/ipmi.so
 
 %files iptables
-%plugin_macro iptables
+%{_libdir}/%{name}/iptables.so
 
 %files java
-%attr(0644,root,root) /usr/share/man/man5/collectd-java.5.gz
-%attr(0644,root,root) /usr/share/collectd/java/collectd-api.jar
-%attr(0644,root,root) /usr/share/collectd/java/generic-jmx.jar
-%plugin_macro java
+%{_mandir}/man5/collectd-java.5.gz
+%{_datarootdir}/collectd/java/collectd-api.jar
+%{_datarootdir}/collectd/java/generic-jmx.jar
+%{_libdir}/%{name}/java.so
 
 %files libvirt
-%plugin_macro libvirt
+%{_libdir}/%{name}/libvirt.so
 
 %files memcachec
-%plugin_macro memcachec
+%{_libdir}/%{name}/memcachec.so
 
 %files mysql
-%plugin_macro mysql
+%{_libdir}/%{name}/mysql.so
 
 %files nginx
-%plugin_macro nginx
+%{_libdir}/%{name}/nginx.so
 
 %files notify_desktop
-%plugin_macro notify_desktop
+%{_libdir}/%{name}/notify_desktop.so
 
 %files notify_email
-%plugin_macro notify_email
+%{_libdir}/%{name}/notify_email.so
 
 %files nut
-%plugin_macro nut
+%{_libdir}/%{name}/nut.so
 
 %files perl
-%exclude %{_libdir}/perl5/perllocal.pod
-%attr(0644,root,root) %{_libdir}/perl5/auto/Collectd/.packlist
-%attr(0644,root,root) /usr/share/perl5/Collectd.pm
-%attr(0644,root,root) /usr/share/perl5/Collectd/Unixsock.pm
-%attr(0644,root,root) /usr/share/perl5/Collectd/Plugins/OpenVZ.pm
-%attr(0644,root,root) /usr/share/perl5/Collectd/Plugins/Monitorus.pm
-%attr(0644,root,root) /usr/share/man/man3/Collectd::Unixsock.3pm.gz
-%attr(0644,root,root) /usr/share/man/man5/collectd-perl.5.gz
-%plugin_macro perl
+%doc perl-examples/*
+%{perl_vendorlib}/Collectd.pm
+%{perl_vendorlib}/Collectd/
+%{_mandir}/man3/Collectd::Unixsock.3pm.gz
+%{_mandir}/man5/collectd-perl.5.gz
+%{_libdir}/%{name}/perl.so
 
 %files pinba
-%plugin_macro pinba
+%{_libdir}/%{name}/pinba.so
 
 %files ping
-%plugin_macro ping
+%{_libdir}/%{name}/ping.so
 
 %files postgresql
-/usr/share/collectd/postgresql_default.conf
-%plugin_macro postgresql
+%{_datarootdir}/collectd/postgresql_default.conf
+%{_libdir}/%{name}/postgresql.so
 
 %files python
-%attr(0644,root,root) /usr/share/man/man5/collectd-python.5.gz
-%plugin_macro python
+%{_mandir}/man5/collectd-python.5.gz
+%{_libdir}/%{name}/python.so
 
 %files rrdtool
-%plugin_macro rrdtool
+%{_libdir}/%{name}/rrdtool.so
 
 %files sensors
-%plugin_macro sensors
+%{_libdir}/%{name}/sensors.so
 
 %files snmp
-%attr(0644,root,root) /usr/share/man/man5/collectd-snmp.5.gz
-%plugin_macro snmp
+%{_mandir}/man5/collectd-snmp.5.gz
+%{_libdir}/%{name}/snmp.so
 
 %files varnish
-%plugin_macro varnish
+%{_libdir}/%{name}/varnish.so
 
 %files write_http
-%plugin_macro write_http
+%{_libdir}/%{name}/write_http.so
 
 %files contrib
 %doc contrib/
 
 %changelog
-* Fri Nov 16 2012 Marc Fournier <marc.fournier@camptocamp.com> 5.1.0
+* Sat Nov 17 2012 Ruben Kerkhof <ruben@tilaa.nl> 5.1.0-2
+- Move perl stuff to perl_vendorlib
+- Replace hardcoded paths with macros
+- Remove unneccesary Requires
+- Removed .a and .la files
+- Some other small cleanups
+
+* Fri Nov 16 2012 Marc Fournier <marc.fournier@camptocamp.com> 5.1.0-1
 - New upstream version
 - Changes to support 5.1.0
 - Enabled all buildable plugins based on libraries available on EL6 + EPEL
@@ -594,7 +636,6 @@ exit 0
   non-essential stuff.
 - Replaced BuildPrereq by BuildRequires
 
-%changelog
 * Tue Jan 03 2011 Monetate <jason.stelzer@monetate.com> 5.0.1
 - New upstream version
 - Changes to support 5.0.1
@@ -620,7 +661,7 @@ exit 0
 * Wed Jan 11 2007 Iain Lea <iain@bricbrac.de> 3.11.0-0
 - fixed spec file to build correctly on fedora core
 - added improved init.d script to work with chkconfig
-- added %post and %postun to call chkconfig automatically
+- added %%post and %%postun to call chkconfig automatically
 
 * Sun Jul 09 2006 Florian octo Forster <octo@verplant.org> 3.10.0-1
 - New upstream version