rules 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. #!/usr/bin/make -f
  2. # Find the arch we are building for, as this determines
  3. # the location of plugins in /usr/lib
  4. TOP = $(CURDIR)/debian/netdata
  5. TEMPTOP = $(CURDIR)/debian/tmp
  6. BUILDDIR = $(CURDIR)/debian/build
  7. BASE_CONFIG = system/netdata.conf
  8. SYSTEMD_VERSION = $(shell /bin/sh -c "systemd --version 2>&1 | head -n 1 | cut -f 2 -d ' '")
  9. ifeq ($(shell test $(SYSTEMD_VERSION) -ge 235 && echo "1"), 1)
  10. SYSTEMD_UNIT = $(BUILDDIR)/system/systemd/netdata.service.v235
  11. else
  12. SYSTEMD_UNIT = $(BUILDDIR)/system/systemd/netdata.service
  13. endif
  14. ifeq ($(shell test ${DEB_TARGET_ARCH} != "amd64" && echo "1"), 1)
  15. HAVE_EBPF = 0
  16. EBPF_CONFIG = -DENABLE_PLUGIN_EBPF=Off
  17. else
  18. HAVE_EBPF = 1
  19. EBPF_CONFIG = -DENABLE_PLUGIN_EBPF=On
  20. endif
  21. ifeq ($(shell test ${DEB_TARGET_ARCH} != "amd64" && echo "1"), 1)
  22. ifeq ($(shell test ${DEB_TARGET_ARCH} != "arm64" && echo "1"), 1)
  23. HAVE_XENSTAT = 0
  24. XENSTAT_CONFIG = -DENABLE_PLUGIN_XENSTAT=Off
  25. else
  26. HAVE_XENSTAT = 1
  27. XENSTAT_CONFIG = -DENABLE_PLUGIN_XENSTAT=On
  28. endif
  29. else
  30. HAVE_XENSTAT = 1
  31. XENSTAT_CONFIG = -DENABLE_PLUGIN_XENSTAT=On
  32. endif
  33. %:
  34. dh $@ --builddirectory=$(BUILDDIR)
  35. override_dh_installinit:
  36. echo "SystemD Version: $(SYSTEMD_VERSION)"
  37. echo "Using SystemD Unit: $(SYSTEMD_UNIT)"
  38. cp -v $(SYSTEMD_UNIT) debian/netdata.service
  39. dh_systemd_enable
  40. dh_installinit
  41. override_dh_auto_configure:
  42. if [ $(HAVE_EBPF) -eq 1 ]; then \
  43. packaging/bundle-libbpf.sh . ${TOP}/usr/libexec/netdata/plugins.d; \
  44. packaging/bundle-ebpf-co-re.sh . ${TOP}/usr/libexec/netdata/plugins.d; \
  45. fi
  46. dh_auto_configure -- -G Ninja \
  47. -DCMAKE_INSTALL_PREFIX=/ \
  48. -DWEB_DIR=/var/lib/netdata/www \
  49. -DENABLE_ACLK=On \
  50. -DENABLE_CLOUD=On \
  51. -DENABLE_DBENGINE=On \
  52. -DENABLE_H2O=On \
  53. -DENABLE_ML=On \
  54. -DENABLE_PLUGIN_APPS=On \
  55. -DENABLE_PLUGIN_CGROUP_NETWORK=On \
  56. -DENABLE_PLUGIN_DEBUGFS=On \
  57. $(EBPF_CONFIG) \
  58. -DENABLE_PLUGIN_FREEIPMI=On \
  59. -DENABLE_PLUGIN_LOCAL_LISTENERS=On \
  60. -DENABLE_PLUGIN_NFACCT=On \
  61. -DENABLE_PLUGIN_PERF=On \
  62. -DENABLE_PLUGIN_SLABINFO=On \
  63. -DENABLE_PLUGIN_SYSTEMD_JOURNAL=On \
  64. -DENABLE_PLUGIN_LOGS_MANAGEMENT=On \
  65. $(XENSTAT_CONFIG) \
  66. -DENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE=On \
  67. -DENABLE_EXPORTER_MONGODB=On \
  68. -DENABLE_BUNDLED_PROTOBUF=Off \
  69. -DENABLE_BUNDLED_JSONC=Off \
  70. -DENABLE_BUNDLED_YAML=Off
  71. override_dh_auto_test:
  72. true
  73. override_dh_install:
  74. cp -v $(BASE_CONFIG) debian/netdata.conf
  75. dh_install
  76. # Set the CUPS plugin install rule
  77. #
  78. mkdir -p $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d
  79. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/cups.plugin \
  80. $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d/cups.plugin
  81. # Add free IPMI plugin install rules
  82. #
  83. mkdir -p $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d
  84. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/freeipmi.plugin \
  85. $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d/freeipmi.plugin
  86. # Add free IPMI plugin install rules
  87. #
  88. mkdir -p $(TOP)-plugin-nfacct/usr/libexec/netdata/plugins.d
  89. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/nfacct.plugin \
  90. $(TOP)-plugin-nfacct/usr/libexec/netdata/plugins.d/nfacct.plugin
  91. # Add charts.d plugin install rules
  92. #
  93. mkdir -p $(TOP)-plugin-chartsd/usr/libexec/netdata/plugins.d/
  94. mkdir -p $(TOP)-plugin-chartsd/usr/lib/netdata/conf.d/
  95. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/charts.d.plugin \
  96. $(TOP)-plugin-chartsd/usr/libexec/netdata/plugins.d/charts.d.plugin
  97. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/charts.d.dryrun-helper.sh \
  98. $(TOP)-plugin-chartsd/usr/libexec/netdata/plugins.d/charts.d.dryrun-helper.sh
  99. mv -f $(TEMPTOP)/usr/libexec/netdata/charts.d \
  100. $(TOP)-plugin-chartsd/usr/libexec/netdata/charts.d
  101. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/charts.d.conf \
  102. $(TOP)-plugin-chartsd/usr/lib/netdata/conf.d/charts.d.conf
  103. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/charts.d \
  104. $(TOP)-plugin-chartsd/usr/lib/netdata/conf.d/charts.d
  105. # Add ebpf plugin install rules
  106. if [ $(HAVE_EBPF) -eq 1 ]; then \
  107. mkdir -p $(TOP)-plugin-ebpf/usr/libexec/netdata/plugins.d/; \
  108. mkdir -p $(TOP)-plugin-ebpf/usr/lib/netdata/conf.d/; \
  109. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/ebpf.plugin $(TOP)-plugin-ebpf/usr/libexec/netdata/plugins.d/ebpf.plugin; \
  110. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/ebpf.d.conf $(TOP)-plugin-ebpf/usr/lib/netdata/conf.d/ebpf.d.conf; \
  111. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/ebpf.d $(TOP)-plugin-ebpf/usr/lib/netdata/conf.d/ebpf.d; \
  112. fi
  113. # Add python plugin install rules
  114. mkdir -p $(TOP)-plugin-pythond/usr/libexec/netdata/plugins.d/
  115. mkdir -p $(TOP)-plugin-pythond/usr/lib/netdata/conf.d/
  116. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/python.d.plugin \
  117. $(TOP)-plugin-pythond/usr/libexec/netdata/plugins.d/python.d.plugin
  118. mv -f $(TEMPTOP)/usr/libexec/netdata/python.d \
  119. $(TOP)-plugin-pythond/usr/libexec/netdata/python.d
  120. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/python.d.conf \
  121. $(TOP)-plugin-pythond/usr/lib/netdata/conf.d/python.d.conf
  122. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/python.d \
  123. $(TOP)-plugin-pythond/usr/lib/netdata/conf.d/python.d
  124. # Add apps plugin install rules
  125. mkdir -p $(TOP)-plugin-apps/usr/libexec/netdata/plugins.d/
  126. mkdir -p $(TOP)-plugin-apps/usr/lib/netdata/conf.d/
  127. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/apps.plugin \
  128. $(TOP)-plugin-apps/usr/libexec/netdata/plugins.d/apps.plugin
  129. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/apps_groups.conf \
  130. $(TOP)-plugin-apps/usr/lib/netdata/conf.d/apps_groups.conf
  131. # Add slabinfo plugin install rules
  132. mkdir -p $(TOP)-plugin-slabinfo/usr/libexec/netdata/plugins.d/
  133. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/slabinfo.plugin \
  134. $(TOP)-plugin-slabinfo/usr/libexec/netdata/plugins.d/slabinfo.plugin
  135. # Add perf plugin install rules
  136. mkdir -p $(TOP)-plugin-perf/usr/libexec/netdata/plugins.d/
  137. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/perf.plugin \
  138. $(TOP)-plugin-perf/usr/libexec/netdata/plugins.d/perf.plugin
  139. # Add debugfs plugin install rules
  140. mkdir -p $(TOP)-plugin-debugfs/usr/libexec/netdata/plugins.d/
  141. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/debugfs.plugin \
  142. $(TOP)-plugin-debugfs/usr/libexec/netdata/plugins.d/debugfs.plugin
  143. # Add systemd-journal plugin install rules
  144. mkdir -p $(TOP)-plugin-systemd-journal/usr/libexec/netdata/plugins.d/
  145. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/systemd-journal.plugin \
  146. $(TOP)-plugin-systemd-journal/usr/libexec/netdata/plugins.d/systemd-journal.plugin
  147. # Add logs-management plugin install rules
  148. mkdir -p $(TOP)-plugin-logs-management/usr/libexec/netdata/plugins.d/
  149. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/logs-management.plugin \
  150. $(TOP)-plugin-logs-management/usr/libexec/netdata/plugins.d/logs-management.plugin
  151. mkdir -p $(TOP)-plugin-logs-management/usr/lib/netdata/conf.d/
  152. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/logsmanagement.d.conf \
  153. $(TOP)-plugin-logs-management/usr/lib/netdata/conf.d/logsmanagement.d.conf
  154. mv -f $(TEMPTOP)/usr/lib/netdata/conf.d/logsmanagement.d/ \
  155. $(TOP)-plugin-logs-management/usr/lib/netdata/conf.d/logsmanagement.d/
  156. # Add xenstat plugin install rules
  157. if [ $(HAVE_XENSTAT) -eq 1 ]; then \
  158. mkdir -p $(TOP)-plugin-xenstat/usr/libexec/netdata/plugins.d/ ; \
  159. mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/xenstat.plugin \
  160. $(TOP)-plugin-xenstat/usr/libexec/netdata/plugins.d/xenstat.plugin; \
  161. fi
  162. # Set the rest of the software in the main package
  163. #
  164. cp -rp $(TEMPTOP)/usr $(TOP)
  165. cp -rp $(TEMPTOP)/var $(TOP)
  166. cp -rp $(TEMPTOP)/etc $(TOP)
  167. mkdir -p "$(TOP)/var/log/netdata"
  168. mkdir -p "$(TOP)/var/cache/netdata"
  169. mkdir -p "$(TOP)/var/run/netdata"
  170. # Copy the updater script
  171. #
  172. cp -v packaging/installer/netdata-updater.sh $(TOP)/usr/libexec/netdata/netdata-updater.sh
  173. # Move files that local user shouldn't be editing to /usr/share/netdata
  174. #
  175. mkdir -p "$(TOP)/usr/share/netdata/www"
  176. for D in $$(find "$(TOP)/var/lib/netdata/www/" -maxdepth 1 -type d -printf '%f '); do \
  177. echo Relocating $$D; \
  178. mv "$(TOP)/var/lib/netdata/www/$$D" "$(TOP)/usr/share/netdata/www/$$D"; \
  179. ln -s "/usr/share/netdata/www/$$D" "$(TOP)/var/lib/netdata/www/$$D"; \
  180. done
  181. # Handle eBPF code
  182. #
  183. if [ $(HAVE_EBPF) -eq 1 ]; then \
  184. mkdir -p $(TOP)-ebpf-code-legacy/usr/libexec/netdata/plugins.d/; \
  185. packaging/bundle-ebpf.sh . ${TOP}-ebpf-code-legacy/usr/libexec/netdata/plugins.d/ force; \
  186. fi
  187. # Install go to it's own package directory
  188. #
  189. mkdir -p $(TOP)-plugin-go/usr/lib/netdata/conf.d
  190. mkdir -p $(TOP)-plugin-go/usr/libexec/netdata/plugins.d
  191. debian/install_go.sh $$(cat ${CURDIR}/packaging/go.d.version) \
  192. $(TOP)-plugin-go/usr/lib/netdata \
  193. $(TOP)-plugin-go/usr/libexec/netdata
  194. override_dh_installdocs:
  195. dh_installdocs
  196. find . \
  197. -name README.md \
  198. -not -path './debian/*' \
  199. -not -path './contrib/*' \
  200. -exec cp \
  201. --parents \
  202. --target $(TOP)/usr/share/doc/netdata/ \
  203. {} \;
  204. override_dh_fixperms:
  205. dh_fixperms
  206. # Updater script should be executable
  207. #
  208. chmod 0755 $(TOP)/usr/libexec/netdata/netdata-updater.sh
  209. # debugfs plugin
  210. chmod 0750 $(TOP)-plugin-debugfs/usr/libexec/netdata/plugins.d/debugfs.plugin
  211. # apps.plugin should only be runnable by the netdata user. It will be
  212. # given extra capabilities in the postinst script.
  213. #
  214. chmod 0750 $(TOP)-plugin-apps/usr/libexec/netdata/plugins.d/apps.plugin
  215. # slabinfo package
  216. chmod 0750 $(TOP)-plugin-slabinfo/usr/libexec/netdata/plugins.d/slabinfo.plugin
  217. # perf package
  218. chmod 0750 $(TOP)-plugin-perf/usr/libexec/netdata/plugins.d/perf.plugin
  219. # Go plugin package
  220. chmod 0750 $(TOP)-plugin-go/usr/libexec/netdata/plugins.d/go.d.plugin
  221. # CUPS plugin package
  222. chmod 0750 $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d/cups.plugin
  223. # freeIPMI plugin package
  224. chmod 4750 $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d/freeipmi.plugin
  225. # NFACCT plugin package
  226. chmod 4750 $(TOP)-plugin-nfacct/usr/libexec/netdata/plugins.d/nfacct.plugin
  227. # cgroup-network
  228. chmod 4750 $(TOP)/usr/libexec/netdata/plugins.d/cgroup-network
  229. # local-listeners
  230. chmod 4750 $(TOP)/usr/libexec/netdata/plugins.d/local-listeners
  231. # systemd-journal
  232. chmod 4750 $(TOP)-plugin-systemd-journal/usr/libexec/netdata/plugins.d/systemd-journal.plugin
  233. # xenstat
  234. if [ $(HAVE_XENSTAT) -eq 1 ]; then \
  235. chmod 4750 $(TOP)-plugin-xenstat/usr/libexec/netdata/plugins.d/xenstat.plugin; \
  236. fi
  237. # logs-management
  238. chmod 4750 $(TOP)-plugin-logs-management/usr/libexec/netdata/plugins.d/logs-management.plugin
  239. override_dh_installlogrotate:
  240. cp $(BUILDDIR)/system/logrotate/netdata debian/netdata.logrotate
  241. dh_installlogrotate
  242. override_dh_installdeb:
  243. dh_installdeb
  244. @echo "Recreating conffiles without auto-adding /etc files"
  245. @cp $(CURDIR)/debian/conffiles $(CURDIR)/debian/netdata/DEBIAN/conffiles
  246. override_dh_clean:
  247. dh_clean
  248. # Tidy up copied/generated files
  249. #
  250. [ -r $(CURDIR)/debian/netdata.logrotate ] && rm $(CURDIR)/debian/netdata.logrotate ; true
  251. [ -r $(CURDIR)/debian/netdata.conffiles ] && rm $(CURDIR)/debian/netdata.conffiles ; true