rules 12 KB

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