diff options
Diffstat (limited to 'contrib/debian/rules')
-rwxr-xr-x | contrib/debian/rules | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/contrib/debian/rules b/contrib/debian/rules new file mode 100755 index 00000000..d0aa3539 --- /dev/null +++ b/contrib/debian/rules @@ -0,0 +1,252 @@ +#!/usr/bin/make -f + +# Find the arch we are building for, as this determines +# the location of plugins in /usr/lib +TOP = $(CURDIR)/debian/netdata +TEMPTOP = $(CURDIR)/debian/tmp + +BASE_CONFIG = system/netdata.conf + +SYSTEMD_VERSION = $(shell /bin/sh -c "systemd --version 2>&1 | head -n 1 | cut -f 2 -d ' '") + +ifeq ($(shell test $(SYSTEMD_VERSION) -ge 235 && echo "1"), 1) +SYSTEMD_UNIT = system/systemd/netdata.service.v235 +else +SYSTEMD_UNIT = system/systemd/netdata.service +endif + +ifeq ($(shell test ${DEB_TARGET_ARCH} != "amd64" && echo "1"), 1) +HAVE_EBPF = 0 +EBPF_CONFIG = --disable-ebpf +else +HAVE_EBPF = 1 +endif + +%: + dh $@ + +override_dh_installinit: + echo "SystemD Version: $(SYSTEMD_VERSION)" + echo "Using SystemD Unit: $(SYSTEMD_UNIT)" + cp -v $(SYSTEMD_UNIT) debian/netdata.service + + dh_systemd_enable + dh_installinit + +override_dh_auto_configure: + if [ $(HAVE_EBPF) -eq 1 ]; then \ + packaging/bundle-libbpf.sh . ${TOP}/usr/libexec/netdata/plugins.d; \ + packaging/bundle-ebpf-co-re.sh . ${TOP}/usr/libexec/netdata/plugins.d; \ + fi + autoreconf -ivf + dh_auto_configure -- --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib \ + --libexecdir=/usr/libexec --with-user=netdata --with-math --with-zlib --with-webdir=/var/lib/netdata/www \ + --disable-dependency-tracking $(EBPF_CONFIG) + +override_dh_install: + cp -v $(BASE_CONFIG) debian/netdata.conf + + dh_install + + # Set the CUPS plugin install rule + # + mkdir -p $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/cups.plugin \ + $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d/cups.plugin + + # Add free IPMI plugin install rules + # + mkdir -p $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/freeipmi.plugin \ + $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d/freeipmi.plugin + + # Add free IPMI plugin install rules + # + mkdir -p $(TOP)-plugin-nfacct/usr/libexec/netdata/plugins.d + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/nfacct.plugin \ + $(TOP)-plugin-nfacct/usr/libexec/netdata/plugins.d/nfacct.plugin + + # Add charts.d plugin install rules + # + mkdir -p $(TOP)-plugin-chartsd/usr/libexec/netdata/plugins.d/ + mkdir -p $(TOP)-plugin-chartsd/usr/lib/netdata/conf.d/ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/charts.d.plugin \ + $(TOP)-plugin-chartsd/usr/libexec/netdata/plugins.d/charts.d.plugin + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/charts.d.dryrun-helper.sh \ + $(TOP)-plugin-chartsd/usr/libexec/netdata/plugins.d/charts.d.dryrun-helper.sh + mv -f $(TEMPTOP)/usr/libexec/netdata/charts.d \ + $(TOP)-plugin-chartsd/usr/libexec/netdata/charts.d + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/charts.d.conf \ + $(TOP)-plugin-chartsd/usr/lib/netdata/conf.d/charts.d.conf + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/charts.d \ + $(TOP)-plugin-chartsd/usr/lib/netdata/conf.d/charts.d + + # Add ebpf plugin install rules + if [ $(HAVE_EBPF) -eq 1 ]; then \ + mkdir -p $(TOP)-plugin-ebpf/usr/libexec/netdata/plugins.d/; \ + mkdir -p $(TOP)-plugin-ebpf/usr/lib/netdata/conf.d/; \ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/ebpf.plugin $(TOP)-plugin-ebpf/usr/libexec/netdata/plugins.d/ebpf.plugin; \ + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/ebpf.d.conf $(TOP)-plugin-ebpf/usr/lib/netdata/conf.d/ebpf.d.conf; \ + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/ebpf.d $(TOP)-plugin-ebpf/usr/lib/netdata/conf.d/ebpf.d; \ + fi + + # Add python plugin install rules + mkdir -p $(TOP)-plugin-pythond/usr/libexec/netdata/plugins.d/ + mkdir -p $(TOP)-plugin-pythond/usr/lib/netdata/conf.d/ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/python.d.plugin \ + $(TOP)-plugin-pythond/usr/libexec/netdata/plugins.d/python.d.plugin + mv -f $(TEMPTOP)/usr/libexec/netdata/python.d \ + $(TOP)-plugin-pythond/usr/libexec/netdata/python.d + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/python.d.conf \ + $(TOP)-plugin-pythond/usr/lib/netdata/conf.d/python.d.conf + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/python.d \ + $(TOP)-plugin-pythond/usr/lib/netdata/conf.d/python.d + + # Add apps plugin install rules + mkdir -p $(TOP)-plugin-apps/usr/libexec/netdata/plugins.d/ + mkdir -p $(TOP)-plugin-apps/usr/lib/netdata/conf.d/ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/apps.plugin \ + $(TOP)-plugin-apps/usr/libexec/netdata/plugins.d/apps.plugin + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/apps_groups.conf \ + $(TOP)-plugin-apps/usr/lib/netdata/conf.d/apps_groups.conf + + # Add slabinfo plugin install rules + mkdir -p $(TOP)-plugin-slabinfo/usr/libexec/netdata/plugins.d/ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/slabinfo.plugin \ + $(TOP)-plugin-slabinfo/usr/libexec/netdata/plugins.d/slabinfo.plugin + + # Add perf plugin install rules + mkdir -p $(TOP)-plugin-perf/usr/libexec/netdata/plugins.d/ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/perf.plugin \ + $(TOP)-plugin-perf/usr/libexec/netdata/plugins.d/perf.plugin + + # Add debugfs plugin install rules + mkdir -p $(TOP)-plugin-debugfs/usr/libexec/netdata/plugins.d/ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/debugfs.plugin \ + $(TOP)-plugin-debugfs/usr/libexec/netdata/plugins.d/debugfs.plugin + + # Add systemd-journal plugin install rules + mkdir -p $(TOP)-plugin-systemd-journal/usr/libexec/netdata/plugins.d/ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/systemd-journal.plugin \ + $(TOP)-plugin-systemd-journal/usr/libexec/netdata/plugins.d/systemd-journal.plugin + + # Add logs-management plugin install rules + mkdir -p $(TOP)-plugin-logs-management/usr/libexec/netdata/plugins.d/ + mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/logs-management.plugin \ + $(TOP)-plugin-logs-management/usr/libexec/netdata/plugins.d/logs-management.plugin + mkdir -p $(TOP)-plugin-logs-management/usr/lib/netdata/conf.d/ + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/logsmanagement.d.conf \ + $(TOP)-plugin-logs-management/usr/lib/netdata/conf.d/logsmanagement.d.conf + mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/logsmanagement.d/ \ + $(TOP)-plugin-logs-management/usr/lib/netdata/conf.d/logsmanagement.d/ + + # Set the rest of the software in the main package + # + cp -rp $(TEMPTOP)/usr $(TOP) + cp -rp $(TEMPTOP)/var $(TOP) + cp -rp $(TEMPTOP)/etc $(TOP) + mkdir -p "$(TOP)/var/log/netdata" + mkdir -p "$(TOP)/var/cache/netdata" + mkdir -p "$(TOP)/var/run/netdata" + + # Copy the updater script + # + cp -v packaging/installer/netdata-updater.sh $(TOP)/usr/libexec/netdata/netdata-updater.sh + + # Move files that local user shouldn't be editing to /usr/share/netdata + # + mkdir -p "$(TOP)/usr/share/netdata/www" + for D in $$(find "$(TOP)/var/lib/netdata/www/" -maxdepth 1 -type d -printf '%f '); do \ + echo Relocating $$D; \ + mv "$(TOP)/var/lib/netdata/www/$$D" "$(TOP)/usr/share/netdata/www/$$D"; \ + ln -s "/usr/share/netdata/www/$$D" "$(TOP)/var/lib/netdata/www/$$D"; \ + done + + # Handle eBPF code + # + if [ $(HAVE_EBPF) -eq 1 ]; then \ + mkdir -p $(TOP)-ebpf-code-legacy/usr/libexec/netdata/plugins.d/; \ + packaging/bundle-ebpf.sh . ${TOP}-ebpf-code-legacy/usr/libexec/netdata/plugins.d/ force; \ + fi + + # Install go to it's own package directory + # + mkdir -p $(TOP)-plugin-go/usr/lib/netdata/conf.d + mkdir -p $(TOP)-plugin-go/usr/libexec/netdata/plugins.d + debian/install_go.sh $$(cat ${CURDIR}/packaging/go.d.version) \ + $(TOP)-plugin-go/usr/lib/netdata \ + $(TOP)-plugin-go/usr/libexec/netdata + +override_dh_installdocs: + dh_installdocs + + find . \ + -name README.md \ + -not -path './debian/*' \ + -not -path './contrib/*' \ + -exec cp \ + --parents \ + --target $(TOP)/usr/share/doc/netdata/ \ + {} \; + +override_dh_fixperms: + dh_fixperms + + # Updater script should be executable + # + chmod 0755 $(TOP)/usr/libexec/netdata/netdata-updater.sh + + # debugfs plugin + chmod 0750 $(TOP)-plugin-debugfs/usr/libexec/netdata/plugins.d/debugfs.plugin + + # apps.plugin should only be runnable by the netdata user. It will be + # given extra capabilities in the postinst script. + # + chmod 0750 $(TOP)-plugin-apps/usr/libexec/netdata/plugins.d/apps.plugin + + # slabinfo package + chmod 0750 $(TOP)-plugin-slabinfo/usr/libexec/netdata/plugins.d/slabinfo.plugin + + # perf package + chmod 0750 $(TOP)-plugin-perf/usr/libexec/netdata/plugins.d/perf.plugin + + # Go plugin package + chmod 0750 $(TOP)-plugin-go/usr/libexec/netdata/plugins.d/go.d.plugin + + # CUPS plugin package + chmod 0750 $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d/cups.plugin + + # freeIPMI plugin package + chmod 4750 $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d/freeipmi.plugin + + # NFACCT plugin package + chmod 4750 $(TOP)-plugin-nfacct/usr/libexec/netdata/plugins.d/nfacct.plugin + + # cgroup-network + chmod 4750 $(TOP)/usr/libexec/netdata/plugins.d/cgroup-network + + # local-listeners + chmod 4750 $(TOP)/usr/libexec/netdata/plugins.d/local-listeners + + # systemd-journal + chmod 4750 $(TOP)-plugin-systemd-journal/usr/libexec/netdata/plugins.d/systemd-journal.plugin + + # systemd-journal + chmod 4750 $(TOP)-plugin-logs-management/usr/libexec/netdata/plugins.d/logs-management.plugin + +override_dh_installlogrotate: + cp system/logrotate/netdata debian/netdata.logrotate + dh_installlogrotate + +override_dh_installdeb: + dh_installdeb + @echo "Recreating conffiles without auto-adding /etc files" + @cp $(CURDIR)/debian/conffiles $(CURDIR)/debian/netdata/DEBIAN/conffiles + +override_dh_clean: + dh_clean + + # Tidy up copied/generated files + # + [ -r $(CURDIR)/debian/netdata.logrotate ] && rm $(CURDIR)/debian/netdata.logrotate ; true + [ -r $(CURDIR)/debian/netdata.conffiles ] && rm $(CURDIR)/debian/netdata.conffiles ; true |