hauke 0d94f228db collectd: Fix collectd / Luci statistics breakage due to r39119 / #15010
Collectd / Luci statistics module has been broken since r39119 (in December
2013). Buildbot has not built it succesfully since then.

Bug 15010 describes the issue:  https://dev.openwrt.org/ticket/15010
Changeset 39119:  https://dev.openwrt.org/changeset/39119

The build breakage only concerns one collectd plugin, netlink, which expects
iproute2 to be compiled with "fpic" option, which was removed by r39119 in
order to make iproute2 smaller.
http://buildbot.openwrt.org:8010/broken_packages/ar71xx/collectd/compile.txt

There are two alternative fixes:
- add fpic back to iproute2 compile options. But devs apparently
intentionally removed it to decrease size
- alternatively, disable netlink plugin in collectd by marking it broken

It is unfortunate that the whole collectd remains uncompiled in buildbot
snapshots due to that one minor plugin. Other bugs related to this (e.g.
#15077 and #14642) were closed three weeks ago as duplicates of #15010, but I
have seen no action regarding actually fixing the issue.

So, please find attached a patch marking the netlink plugin broken.
All other collectd modules do compile. I compile-tested them with ar71xx.

Signed-off-by: hannu.nyman@iki.fi


git-svn-id: svn://svn.openwrt.org/openwrt/packages@40645 3c298f89-4303-0410-b956-a3cf2f4a3e73
2014-05-01 19:12:00 +00:00

311 lines
9.4 KiB
Makefile

#
# Copyright (C) 2006-2014 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=collectd
PKG_VERSION:=4.10.8
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://collectd.org/files/
PKG_MD5SUM:=7a60495208b9383225493c6dd6abb2f0
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
COLLECTD_PLUGINS_DISABLED:= \
apple_sensors \
battery \
cpufreq \
curl_json \
entropy \
genericjmx \
gmond \
hddtemp \
ipmi \
ipvs \
java \
libvirt \
mbmon \
memcachec \
memcached \
monitorus \
multimeter \
netapp \
nfs \
notify_desktop \
notify_email \
openvz \
oracle \
perl \
pinba \
python \
routeros \
rrdcached \
serial \
swap \
tape \
tokyotyrant \
uuid \
vserver \
xmms \
zfs_arc \
COLLECTD_PLUGINS_SELECTED:= \
apache \
apcups \
ascent \
bind \
conntrack \
contextswitch \
cpu \
csv \
curl \
dbi \
df \
disk \
dns \
email \
exec \
filecount \
fscache \
interface \
iptables \
irq \
iwinfo \
load \
logfile \
madwifi \
memory \
modbus \
mysql \
netlink \
network \
nginx \
ntpd \
nut \
olsrd \
onewire \
openvpn \
ping \
postgresql \
powerdns \
processes \
protocols \
rrdtool \
sensors \
snmp \
syslog \
tail \
table \
ted \
tcpconns \
teamspeak2 \
thermal \
unixsock \
uptime \
users \
vmem \
wireless \
write_http \
PKG_CONFIG_DEPENDS:= \
$(patsubst %,CONFIG_PACKAGE_collectd-mod-%,$(subst _,-,$(COLLECTD_PLUGINS_SELECTED))) \
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/kernel.mk
define Package/collectd/Default
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Lightweight system statistics collection daemon
URL:=http://verplant.org/collectd/
endef
define Package/collectd
$(call Package/collectd/Default)
DEPENDS:= +libpthread +zlib +libltdl +libip4tc
MENU:=1
endef
define Package/collectd/description
collectd is a small daemon which collects system information periodically
and provides mechanismns to store the values in a variety of ways.
endef
ifneq ($(CONFIG_avr32),)
TARGET_CFLAGS += -fsigned-char
endif
# common configure args
CONFIGURE_ARGS+= \
--disable-debug \
--enable-daemon \
--enable-getifaddrs \
--with-nan-emulation \
--without-libgcrypt
CONFIGURE_VARS+= \
CFLAGS="$$$$CFLAGS $(FPIC)" \
LDFLAGS="$$$$LDFLAGS -lm -lz" \
KERNEL_DIR="$(LINUX_DIR)" \
CONFIGURE_PLUGIN= \
$(foreach m, $(1), \
$(if $(CONFIG_PACKAGE_collectd-mod-$(subst _,-,$(m))),--enable-$(m),--disable-$(m)) \
)
CONFIGURE_ARGS+= \
$(call CONFIGURE_PLUGIN,$(COLLECTD_PLUGINS_SELECTED)) \
$(call CONFIGURE_PLUGIN,$(COLLECTD_PLUGINS_DISABLED)) \
# exception: mod-ascent needs libxml2
ifneq ($(CONFIG_PACKAGE_collectd-mod-ascent),)
CONFIGURE_VARS+= \
CPPFLAGS="$$$$CPPFLAGS -I$(STAGING_DIR)/usr/include/libxml2"
endif
ifneq ($(CONFIG_BIG_ENDIAN),)
CONFIGURE_ARGS+= --with-fp-layout=endianflip
else
CONFIGURE_ARGS+= --with-fp-layout=nothing
endif
ifneq ($(CONFIG_PACKAGE_collectd-mod-postgresql),)
CONFIGURE_ARGS+= --with-libpq="$(STAGING_DIR)/usr/"
endif
ifneq ($(CONFIG_PACKAGE_collectd-mod-mysql),)
CONFIGURE_ARGS+= --with-libmysql="$(STAGING_DIR)/usr/"
endif
# exception: mod-netlink needs libnetlink from iproute
ifneq ($(CONFIG_PACKAGE_collectd-mod-netlink),)
CONFIGURE_ARGS+= --with-libnetlink="$(STAGING_DIR)/usr"
endif
# exception: mod-modbus needs libmodbus
ifneq ($(CONFIG_PACKAGE_collectd-mod-modbus),)
CONFIGURE_ARGS+= --with-libmodbus="$(STAGING_DIR)/usr"
endif
# exception: mod-onewire needs libow-capi
ifneq ($(CONFIG_PACKAGE_collectd-mod-onewire),)
CONFIGURE_ARGS+= --with-libowcapi="$(STAGING_DIR)/usr"
endif
# exception: mod-rrdtool needs rrdtool-1.0.x
ifneq ($(CONFIG_PACKAGE_collectd-mod-rrdtool),)
CONFIGURE_ARGS+= --with-librrd="$(STAGING_DIR)/usr/lib/rrdtool-1.0"
endif
define Package/collectd/conffiles
/etc/collectd.conf
endef
define Package/collectd/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/collectd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/share/collectd
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/collectd/types.db $(1)/usr/share/collectd/
$(INSTALL_DIR) $(1)/etc
$(INSTALL_CONF) ./files/collectd.conf $(1)/etc/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/collectd.init $(1)/etc/init.d/collectd
endef
# 1: plugin name
# 2: plugin title/description
# 3: files
# 4: extra dependency
define BuildPlugin
PKG_CONFIG_DEPENDS+= CONFIG_PACKAGE_collectd-mod-$(1)
define Package/collectd-mod-$(1)
$$(call Package/collectd/Default)
TITLE:=$(2) plugin
DEPENDS:= collectd $(4)
endef
define Package/collectd-mod-$(1)/install
$(INSTALL_DIR) $$(1)/usr/lib/collectd
for m in $(3); do \
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/collectd/$$$$$$$${m}.so \
$$(1)/usr/lib/collectd/ ; \
done
endef
$$(eval $$(call BuildPackage,collectd-mod-$(1)))
endef
$(eval $(call BuildPackage,collectd))
#$(eval $(call BuildPlugin,NAME,DESCRIPTION,FILES,DEPENDENCIES))
$(eval $(call BuildPlugin,apache,apache status input,apache,+PACKAGE_collectd-mod-apache:libcurl))
$(eval $(call BuildPlugin,apcups,apcups status input,apcups,))
$(eval $(call BuildPlugin,ascent,ascent status input,ascent,+PACKAGE_collectd-mod-ascent:libcurl +PACKAGE_collectd-mod-ascent:libxml2))
$(eval $(call BuildPlugin,bind,BIND server/zone input,bind,+PACKAGE_collectd-mod-bind:libcurl +PACKAGE_collectd-mod-bind:libxml2))
$(eval $(call BuildPlugin,conntrack,connection tracking table size input,conntrack,))
$(eval $(call BuildPlugin,contextswitch,context switch input,contextswitch,))
$(eval $(call BuildPlugin,cpu,CPU input,cpu,))
$(eval $(call BuildPlugin,csv,CSV output,csv,))
$(eval $(call BuildPlugin,curl,cURL input,curl,+PACKAGE_collectd-mod-curl:libcurl))
$(eval $(call BuildPlugin,dbi,relational database input,dbi,+PACKAGE_collectd-mod-dbi:libdbi))
$(eval $(call BuildPlugin,df,disk space input,df,))
$(eval $(call BuildPlugin,disk,disk usage/timing input,disk,))
$(eval $(call BuildPlugin,dns,DNS traffic input,dns,+PACKAGE_collectd-mod-dns:libpcap))
$(eval $(call BuildPlugin,email,email output,email,))
$(eval $(call BuildPlugin,exec,process exec input,exec,))
$(eval $(call BuildPlugin,filecount,file count input,filecount,))
$(eval $(call BuildPlugin,fscache,file-system based caching framework input,fscache,))
$(eval $(call BuildPlugin,interface,network interfaces input,interface,))
$(eval $(call BuildPlugin,iptables,iptables status input,iptables,+PACKAGE_collectd-mod-iptables:iptables +libiptc))
$(eval $(call BuildPlugin,irq,interrupt usage input,irq,))
$(eval $(call BuildPlugin,iwinfo,libiwinfo wireless statistics,iwinfo,+PACKAGE_collectd-mod-iwinfo:libiwinfo))
$(eval $(call BuildPlugin,load,system load input,load,))
$(eval $(call BuildPlugin,logfile,log files output,logfile,))
$(eval $(call BuildPlugin,madwifi,MadWifi status input,madwifi,))
$(eval $(call BuildPlugin,mysql,MySQL status input,mysql,+PACKAGE_collectd-mod-mysql:libmysqlclient-r))
$(eval $(call BuildPlugin,memory,physical memory usage input,memory,))
$(eval $(call BuildPlugin,modbus,read variables through libmodbus,modbus,+PACKAGE_collectd-mod-modbus:libmodbus @BROKEN))
$(eval $(call BuildPlugin,netlink,netlink input,netlink,+PACKAGE_collectd-mod-netlink:ip @BROKEN))
$(eval $(call BuildPlugin,network,network input/output,network))
$(eval $(call BuildPlugin,nginx,nginx status input,nginx,+PACKAGE_collectd-mod-nginx:libcurl))
$(eval $(call BuildPlugin,ntpd,NTP daemon status input,ntpd,))
$(eval $(call BuildPlugin,nut,UPS monitoring input,nut,+PACKAGE_collectd-mod-nut:nut))
$(eval $(call BuildPlugin,olsrd,OLSRd status input,olsrd,))
$(eval $(call BuildPlugin,onewire,onewire sensor input,onewire,+PACKAGE_collectd-mod-onewire:libow-capi @BROKEN))
$(eval $(call BuildPlugin,openvpn,OpenVPN traffic/compression input,openvpn,))
$(eval $(call BuildPlugin,ping,ping status input,ping,+PACKAGE_collectd-mod-ping:liboping))
$(eval $(call BuildPlugin,postgresql,PostgreSQL status input,postgresql,+PACKAGE_collectd-mod-postgresql:libpq))
$(eval $(call BuildPlugin,powerdns,PowerDNS server status input,powerdns,))
$(eval $(call BuildPlugin,processes,process status input,processes,))
$(eval $(call BuildPlugin,protocols,network protocols input,protocols,))
$(eval $(call BuildPlugin,rrdtool,RRDtool output,rrdtool,+PACKAGE_collectd-mod-rrdtool:librrd1))
$(eval $(call BuildPlugin,sensors,lm_sensors input,sensors,+PACKAGE_collectd-mod-sensors:libsensors @BROKEN))
$(eval $(call BuildPlugin,snmp,SNMP input,snmp,+PACKAGE_collectd-mod-snmp:libnetsnmp))
$(eval $(call BuildPlugin,syslog,syslog output,syslog,))
$(eval $(call BuildPlugin,tail,tail input,tail,))
$(eval $(call BuildPlugin,table,table-like structured file input,table,))
$(eval $(call BuildPlugin,teamspeak2,TeamSpeak2 input,teamspeak2,))
$(eval $(call BuildPlugin,ted,The Energy Detective input,ted,@((!TARGET_avr32)||BROKEN))) # fails on avr32 because of warnings treated as errors
$(eval $(call BuildPlugin,tcpconns,TCP connection tracking input,tcpconns,))
$(eval $(call BuildPlugin,thermal,system temperatures input,thermal,))
$(eval $(call BuildPlugin,unixsock,unix socket output,unixsock,))
$(eval $(call BuildPlugin,uptime,uptime status input,uptime,))
$(eval $(call BuildPlugin,users,user logged in status input,users,))
$(eval $(call BuildPlugin,vmem,virtual memory usage input,vmem,))
$(eval $(call BuildPlugin,wireless,wireless status input,wireless,))
$(eval $(call BuildPlugin,write-http,HTTP POST output,write_http,+PACKAGE_collectd-mod-write-http:libcurl))