Просмотр исходного кода

Use CPack to generate Debian packages (#17475)

* CPack

* Add script to build all artifacts.

* Add infrastructure to run package builds via CPack in CI.

* Fix typos in distro config.

* Fix permissions on package-build script.

* Control files for netdata package

* pre/post inst files for debugfs.

* Fix directory name handling for package build.

* pre/post inst scripts for cups

* pre/post inst scripts for xenstat

* pre/post inst scripts for slabinfo

* pre/post inst scripts for apps

* pre/post inst scripts for network-viewer

* pre/post inst script for nfacct

* pre/post inst scripts for freeipmi

* pre/post inst scripts for logs-management

* pre/post inst perf

* pre/post inst scripts for systemd-journal

* pre/post init scripts for go.d

* pre/post inst scripts for ebpf

* pre/post init files for charts.d & python.d

* Skip eBPF in packaging.

* Fix most of the package names

* Add copyright

* etc/default/netdata

* Bump

* Enable all packages except for ebpf.

* Add log2journal to netdata component.

* Produce pretty-much the same RFS.

- No README.md docs
- /var/run/netdat missing on CPack's side
- No ebpf
- No changelogs

* Enable ebpf plugin

* Fix runtime path

* Build debug symbol packages

* Update package directory

* Fix eBPF and Xenstat conditionals.

* Fixes for package build process.

* Package version for cpack

* Add ebpf-code-legacy package

* Update extraction logic

* Fix control info for netdata package

* Fix control file for chartsd plugin package

* Fix typos in package build script.

* Update dependencies

* Add python3

* Fix verbose option to cpack

* Add whitespace in package description field.

* SKip adding files that might break rpm packages

* Final fixups to package handling.

* Fix architecture matching for package build options.

* Fix dependency handling.

* Remove top-level scripts

---------

Co-authored-by: Austin S. Hemmelgarn <austin@netdata.cloud>
vkalintiris 10 месяцев назад
Родитель
Сommit
5973417027

+ 10 - 0
.github/data/distros.yml

@@ -24,6 +24,7 @@ default_sentry: &default_sentry # Default configuration for Sentry usage
   armhfp: false
   arm64: false
   aarch64: false
+default_builder_rev: &def_builder_rev v1
 include:
   - &alpine
     distro: alpine
@@ -80,6 +81,7 @@ include:
     packages: &amzn_packages
       type: rpm
       repo_distro: amazonlinux/2
+      builder_rev: *def_builder_rev
       arches:
         - x86_64
         - aarch64
@@ -104,6 +106,7 @@ include:
     packages:
       type: rpm
       repo_distro: el/7
+      builder_rev: *def_builder_rev
       alt_links:
         - el/7Server
         - el/7Client
@@ -126,6 +129,7 @@ include:
     packages: &cs_packages
       type: rpm
       repo_distro: el/c9s
+      builder_rev: *def_builder_rev
       arches:
         - x86_64
         - aarch64
@@ -155,6 +159,7 @@ include:
     packages: &debian_packages
       type: deb
       repo_distro: debian/bookworm
+      builder_rev: v2
       arches:
         - i386
         - amd64
@@ -192,6 +197,7 @@ include:
     packages: &fedora_packages
       type: rpm
       repo_distro: fedora/40
+      builder_rev: *def_builder_rev
       arches:
         - x86_64
         - aarch64
@@ -225,6 +231,7 @@ include:
     packages: &opensuse_packages
       type: rpm
       repo_distro: opensuse/15.5
+      builder_rev: *def_builder_rev
       arches:
         - x86_64
         - aarch64
@@ -243,6 +250,7 @@ include:
     packages: &oracle_packages
       type: rpm
       repo_distro: ol/8
+      builder_rev: *def_builder_rev
       arches:
         - x86_64
         - aarch64
@@ -266,6 +274,7 @@ include:
     packages: &rocky_packages
       type: rpm
       repo_distro: el/9
+      builder_rev: *def_builder_rev
       alt_links:
         - el/9Server
         - el/9Client
@@ -301,6 +310,7 @@ include:
     packages: &ubuntu_packages
       type: deb
       repo_distro: ubuntu/noble
+      builder_rev: v2
       arches:
         - amd64
         - armhf

+ 1 - 0
.github/scripts/gen-matrix-packaging.py

@@ -27,6 +27,7 @@ for i, v in enumerate(data['include']):
                     'repo_distro': data['include'][i]['packages']['repo_distro'],
                     'format': data['include'][i]['packages']['type'],
                     'base_image': data['include'][i]['base_image'] if 'base_image' in data['include'][i] else ':'.join([data['include'][i]['distro'], data['include'][i]['version']]),
+                    'builder_rev': data['include'][i]['packages']['builder_rev'],
                     'platform': data['platform_map'][arch],
                     'bundle_sentry': data['include'][i]['bundle_sentry'][arch],
                     'arch': arch

+ 2 - 2
.github/workflows/packaging.yml

@@ -249,7 +249,7 @@ jobs:
           timeout_seconds: 900
           command: |
             docker pull --platform ${{ matrix.platform }} ${{ matrix.base_image }}
-            docker pull --platform ${{ matrix.platform }} netdata/package-builders:${{ matrix.distro }}${{ matrix.version }}-v1
+            docker pull --platform ${{ matrix.platform }} netdata/package-builders:${{ matrix.distro }}${{ matrix.version }}-${{ matrix.builder_rev }}
       - name: Build Packages
         id: build
         if: needs.file-check.outputs.run == 'true'
@@ -259,7 +259,7 @@ jobs:
                     -e ENABLE_SENTRY=${{ matrix.bundle_sentry }} -e RELEASE_PIPELINE=${{ env.RELEASE_PIPELINE }} \
                     -e BUILD_DESTINATION=${{ matrix.distro }}${{ matrix.version }}_${{ matrix.arch }} -e UPLOAD_SENTRY=${{ env.UPLOAD_SENTRY }} \
                     -e SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_CLI_TOKEN }} -e NETDATA_SENTRY_DSN=${{ secrets.SENTRY_DSN }} \
-                     --platform=${{ matrix.platform }} -v "$PWD":/netdata netdata/package-builders:${{ matrix.distro }}${{ matrix.version }}-v1
+                     --platform=${{ matrix.platform }} -v "$PWD":/netdata netdata/package-builders:${{ matrix.distro }}${{ matrix.version }}-${{ matrix.builder_rev }}
       - name: Save Packages
         id: artifacts
         if: needs.file-check.outputs.run == 'true'

+ 313 - 111
CMakeLists.txt

@@ -55,7 +55,6 @@ set(NETDATA_VERSION ${FIELD_MAJOR}.${FIELD_MINOR}.${FIELD_PATCH}.${FIELD_TWEAK})
 
 project(netdata
         VERSION ${NETDATA_VERSION}
-        DESCRIPTION "Netdata real-time monitoring"
         HOMEPAGE_URL "https://www.netdata.cloud"
         LANGUAGES C CXX)
 list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/packaging/cmake/Modules")
@@ -65,6 +64,7 @@ find_package(PkgConfig REQUIRED)
 
 set(CMAKE_C_STANDARD 11)
 set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "netdata")
 
 option(USE_CXX_11 "Use C++11 instead of C++14 (should only be used on legacy systems that cannot support C++14, may disable some features)" False)
 mark_as_advanced(USE_CXX_11)
@@ -150,6 +150,9 @@ mark_as_advanced(ENABLE_H2O)
 option(ENABLE_SENTRY "Build with Sentry Native crash reporting" False)
 mark_as_advanced(ENABLE_SENTRY)
 
+option(BUILD_FOR_PACKAGING "Include component files for native packages" False)
+mark_as_advanced(BUILD_FOR_PACKAGING)
+
 cmake_dependent_option(FORCE_LEGACY_LIBBPF "Force usage of libbpf 0.0.9 instead of the latest version." False "ENABLE_PLUGIN_LIBBPF" False)
 mark_as_advanced(FORCE_LEGACY_LIBBPF)
 
@@ -1685,8 +1688,15 @@ if(ENABLE_PLUGIN_DEBUGFS)
     target_compile_options(debugfs.plugin PRIVATE ${CAP_CFLAGS_OTHER})
 
     install(TARGETS debugfs.plugin
-            COMPONENT debugfs_plugin
+            COMPONENT plugin-debugfs
             DESTINATION usr/libexec/netdata/plugins.d)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-debugfs
+                DESTINATION usr/share/doc/netdata-plugin-debugfs)
+    endif()
 endif()
 
 if(ENABLE_PLUGIN_APPS)
@@ -1716,11 +1726,19 @@ if(ENABLE_PLUGIN_APPS)
     target_compile_options(apps.plugin PRIVATE ${CAP_CFLAGS_OTHER})
 
     install(TARGETS apps.plugin
-            COMPONENT apps_plugin
+            COMPONENT plugin-apps
             DESTINATION usr/libexec/netdata/plugins.d)
+
     install(FILES src/collectors/apps.plugin/apps_groups.conf
-            COMPONENT apps_plugin
+            COMPONENT plugin-apps
             DESTINATION usr/lib/netdata/conf.d)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-apps
+                DESTINATION usr/share/doc/netdata-plugin-apps)
+    endif()
 endif()
 
 if(CAP_FOUND)
@@ -1738,8 +1756,15 @@ if(ENABLE_PLUGIN_FREEIPMI)
     target_compile_options(freeipmi.plugin PRIVATE ${IPMI_CFLAGS_OTHER})
 
     install(TARGETS freeipmi.plugin
-            COMPONENT freeipmi_plugin
+            COMPONENT plugin-freeipmi
             DESTINATION usr/libexec/netdata/plugins.d)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-freeipmi
+                DESTINATION usr/share/doc/netdata-plugin-freeipmi)
+    endif()
 endif()
 
 if(ENABLE_PLUGIN_NFACCT)
@@ -1757,8 +1782,15 @@ if(ENABLE_PLUGIN_NFACCT)
     target_compile_options(nfacct.plugin PRIVATE ${MNL_CFLAGS_OTHER} ${NFACCT_CFLAGS_OTHER})
 
     install(TARGETS nfacct.plugin
-            COMPONENT nfacct_plugin
+            COMPONENT plugin-nfacct
             DESTINATION usr/libexec/netdata/plugins.d)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-nfacct
+                DESTINATION usr/share/doc/netdata-plugin-nfacct)
+    endif()
 endif()
 
 if(ENABLE_PLUGIN_XENSTAT)
@@ -1773,8 +1805,15 @@ if(ENABLE_PLUGIN_XENSTAT)
     target_compile_options(xenstat.plugin PRIVATE ${XENLIGHT_CFLAGS_OTHER} ${XENSTAT_CFLAGS_OTHER})
 
     install(TARGETS xenstat.plugin
-            COMPONENT xenstat_plugin
+            COMPONENT plugin-xenstat
             DESTINATION usr/libexec/netdata/plugins.d)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-xenstat
+                DESTINATION usr/share/doc/netdata-plugin-xenstat)
+    endif()
 endif()
 
 if(ENABLE_PLUGIN_PERF)
@@ -1784,8 +1823,15 @@ if(ENABLE_PLUGIN_PERF)
     target_link_libraries(perf.plugin libnetdata)
 
     install(TARGETS perf.plugin
-            COMPONENT perf_plugin
+            COMPONENT plugin-perf
             DESTINATION usr/libexec/netdata/plugins.d)
+
+    if(BUILD_FOR_PACKAGING)
+         install(FILES
+                 packaging/cmake/control/copyright
+                 COMPONENT plugin-perf
+                 DESTINATION usr/share/doc/netdata-plugin-perf)
+    endif()
 endif()
 
 if(ENABLE_PLUGIN_SLABINFO)
@@ -1795,8 +1841,15 @@ if(ENABLE_PLUGIN_SLABINFO)
     target_link_libraries(slabinfo.plugin libnetdata)
 
     install(TARGETS slabinfo.plugin
-            COMPONENT slabinfo_plugin
+            COMPONENT plugin-slabinfo
             DESTINATION usr/libexec/netdata/plugins.d)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-slabinfo
+                DESTINATION usr/share/doc/netdata-plugin-slabinfo)
+    endif()
 endif()
 
 if(ENABLE_PLUGIN_LOGS_MANAGEMENT)
@@ -1812,14 +1865,31 @@ if(ENABLE_PLUGIN_LOGS_MANAGEMENT)
     target_link_libraries(logs-management.plugin libnetdata)
 
     install(TARGETS logs-management.plugin
-            COMPONENT logs_management_plugin
+            COMPONENT plugin-logs-management
             DESTINATION usr/libexec/netdata/plugins.d)
 
     install(DIRECTORY src/logsmanagement/stock_conf/logsmanagement.d
-            COMPONENT logs_management_plugin
+            COMPONENT plugin-logs-management
             DESTINATION usr/lib/netdata/conf.d)
 
-    install(DIRECTORY DESTINATION etc/netdata/logsmanagement.d)
+    install(DIRECTORY
+            COMPONENT plugin-logs-management
+            DESTINATION etc/netdata/logsmanagement.d)
+
+    configure_file(src/logsmanagement/stock_conf/logsmanagement.d.conf.in
+                   src/logsmanagement/stock_conf/logsmanagement.d.conf
+                   @ONLY)
+
+    install(FILES ${CMAKE_BINARY_DIR}/src/logsmanagement/stock_conf/logsmanagement.d.conf
+            COMPONENT plugin-logs-management
+            DESTINATION usr/lib/netdata/conf.d)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-logs-management
+                DESTINATION usr/share/doc/netdata-plugin-logs-management)
+    endif()
 endif()
 
 if(ENABLE_PLUGIN_CUPS)
@@ -1850,8 +1920,15 @@ if(ENABLE_PLUGIN_CUPS)
         target_compile_options(cups.plugin PRIVATE ${CUPS_CFLAGS_OTHER})
 
         install(TARGETS cups.plugin
-                COMPONENT cups_plugin
+                COMPONENT plugin-cups
                 DESTINATION usr/libexec/netdata/plugins.d)
+
+        if(BUILD_FOR_PACKAGING)
+                install(FILES
+                        packaging/cmake/control/copyright
+                        COMPONENT plugin-cups
+                        DESTINATION usr/share/doc/netdata-plugin-cups)
+        endif()
     endif()
 endif()
 
@@ -1860,7 +1937,7 @@ set(NDSUDO_FILES src/collectors/plugins.d/ndsudo.c)
 add_executable(ndsudo ${NDSUDO_FILES})
 
 install(TARGETS ndsudo
-        COMPONENT ndsudo
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 if(ENABLE_PLUGIN_CGROUP_NETWORK)
@@ -1870,7 +1947,7 @@ if(ENABLE_PLUGIN_CGROUP_NETWORK)
     target_link_libraries(cgroup-network libnetdata)
 
     install(TARGETS cgroup-network
-            COMPONENT cgroup_network_plugin
+            COMPONENT netdata
             DESTINATION usr/libexec/netdata/plugins.d)
 endif()
 
@@ -1883,8 +1960,15 @@ if(ENABLE_PLUGIN_SYSTEMD_JOURNAL)
         target_link_libraries(systemd-journal.plugin libnetdata)
 
         install(TARGETS systemd-journal.plugin
-                COMPONENT systemd_journal_plugin
+                COMPONENT plugin-systemd-journal
                 DESTINATION usr/libexec/netdata/plugins.d)
+
+        if(BUILD_FOR_PACKAGING)
+                install(FILES
+                        packaging/cmake/control/copyright
+                        COMPONENT plugin-systemd-journal
+                        DESTINATION usr/share/doc/netdata-plugin-systemd-journal)
+        endif()
 endif()
 
 if(ENABLE_PLUGIN_EBPF)
@@ -1939,9 +2023,42 @@ if(ENABLE_PLUGIN_EBPF)
     netdata_add_ebpf_co_re_to_target(ebpf.plugin)
 
     install(TARGETS ebpf.plugin
-            COMPONENT ebpf_plugin
+            COMPONENT plugin-ebpf
             DESTINATION usr/libexec/netdata/plugins.d)
 
+    install(FILES
+            src/collectors/ebpf.plugin/ebpf.d.conf
+            COMPONENT plugin-ebpf
+            DESTINATION usr/lib/netdata/conf.d)
+
+    install(FILES
+            src/collectors/ebpf.plugin/ebpf.d/cachestat.conf
+            src/collectors/ebpf.plugin/ebpf.d/dcstat.conf
+            src/collectors/ebpf.plugin/ebpf.d/disk.conf
+            src/collectors/ebpf.plugin/ebpf.d/ebpf_kernel_reject_list.txt
+            src/collectors/ebpf.plugin/ebpf.d/fd.conf
+            src/collectors/ebpf.plugin/ebpf.d/filesystem.conf
+            src/collectors/ebpf.plugin/ebpf.d/hardirq.conf
+            src/collectors/ebpf.plugin/ebpf.d/mdflush.conf
+            src/collectors/ebpf.plugin/ebpf.d/mount.conf
+            src/collectors/ebpf.plugin/ebpf.d/network.conf
+            src/collectors/ebpf.plugin/ebpf.d/oomkill.conf
+            src/collectors/ebpf.plugin/ebpf.d/process.conf
+            src/collectors/ebpf.plugin/ebpf.d/shm.conf
+            src/collectors/ebpf.plugin/ebpf.d/softirq.conf
+            src/collectors/ebpf.plugin/ebpf.d/swap.conf
+            src/collectors/ebpf.plugin/ebpf.d/sync.conf
+            src/collectors/ebpf.plugin/ebpf.d/vfs.conf
+            COMPONENT plugin-ebpf
+            DESTINATION usr/lib/netdata/conf.d/ebpf.d)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-ebpf
+                DESTINATION usr/share/doc/netdata-plugin-ebpf)
+    endif()
+
     if(ENABLE_LEGACY_EBPF_PROGRAMS)
         netdata_install_legacy_ebpf_code()
     endif()
@@ -1963,7 +2080,7 @@ if(ENABLE_PLUGIN_LOCAL_LISTENERS)
                               "$<$<BOOL:${MNL_FOUND}>:${MNL_LIBRARIES}>")
 
         install(TARGETS local-listeners
-                COMPONENT local_listeners
+                COMPONENT netdata
                 DESTINATION usr/libexec/netdata/plugins.d)
 endif()
 
@@ -1983,10 +2100,16 @@ if(ENABLE_PLUGIN_NETWORK_VIEWER)
         target_link_libraries(network-viewer.plugin libnetdata
                               "$<$<BOOL:${MNL_FOUND}>:${MNL_LIBRARIES}>")
 
-
         install(TARGETS network-viewer.plugin
-                COMPONENT network_viewer_plugin
+                COMPONENT plugin-network-viewer
                 DESTINATION usr/libexec/netdata/plugins.d)
+
+        if(BUILD_FOR_PACKAGING)
+                install(FILES
+                        packaging/cmake/control/copyright
+                        COMPONENT plugin-network-viewer
+                        DESTINATION usr/share/doc/netdata-plugin-network-viewer)
+        endif()
 endif()
 
 #
@@ -2082,7 +2205,7 @@ add_executable(systemd-cat-native ${SYSTEMD_CAT_NATIVE_FILES})
 target_link_libraries(systemd-cat-native libnetdata)
 
 install(TARGETS systemd-cat-native
-        COMPONENT systemd-cat-native
+        COMPONENT netdata
         DESTINATION usr/sbin)
 
 #
@@ -2117,11 +2240,11 @@ if(PCRE2_FOUND)
         netdata_add_libyaml_to_target(log2journal)
 
         install(TARGETS log2journal
-                COMPONENT log2journal
+                COMPONENT netdata
                 DESTINATION usr/sbin)
 
         install(DIRECTORY src/collectors/log2journal/log2journal.d
-                COMPONENT log2journal
+                COMPONENT netdata
                 DESTINATION usr/lib/netdata/conf.d)
 endif()
 
@@ -2140,7 +2263,7 @@ add_executable(netdatacli ${NETDATACLI_FILES})
 target_link_libraries(netdatacli libnetdata)
 
 install(TARGETS netdatacli
-        COMPONENT netdatacli
+        COMPONENT netdata
         DESTINATION usr/sbin)
 
 #
@@ -2151,7 +2274,7 @@ if(ENABLE_PLUGIN_GO)
     add_go_target(go-plugin go.d.plugin src/go/collectors/go.d.plugin cmd/godplugin)
 
     install(PROGRAMS ${CMAKE_BINARY_DIR}/go.d.plugin
-            COMPONENT go.d.plugin
+            COMPONENT plugin-go
             DESTINATION usr/libexec/netdata/plugins.d)
 endif()
 
@@ -2192,26 +2315,24 @@ configure_file(packaging/cmake/config.cmake.h.in config.h)
 # install
 #
 
-install(TARGETS netdata DESTINATION usr/sbin)
-
-install(DIRECTORY DESTINATION var/cache/netdata)
-install(DIRECTORY DESTINATION var/log/netdata)
-install(DIRECTORY DESTINATION var/lib/netdata/registry)
-install(DIRECTORY DESTINATION var/lib/netdata/cloud.d)
-install(DIRECTORY DESTINATION var/run)
-install(DIRECTORY DESTINATION etc/netdata)
-install(DIRECTORY DESTINATION etc/netdata/charts.d)
-install(DIRECTORY DESTINATION etc/netdata/custom-plugins.d)
-install(DIRECTORY DESTINATION etc/netdata/ebpf.d)
-install(DIRECTORY DESTINATION etc/netdata/go.d)
-install(DIRECTORY DESTINATION etc/netdata/health.d)
-install(DIRECTORY DESTINATION etc/netdata/python.d)
-install(DIRECTORY DESTINATION etc/netdata/ssl)
-install(DIRECTORY DESTINATION etc/netdata/statsd.d)
-install(DIRECTORY DESTINATION usr/lib/netdata/conf.d)
-install(DIRECTORY DESTINATION usr/lib/netdata/conf.d/schema.d)
-install(DIRECTORY DESTINATION usr/libexec/netdata/plugins.d)
-install(DIRECTORY DESTINATION ${WEB_DEST})
+install(TARGETS netdata COMPONENT netdata DESTINATION usr/sbin)
+
+install(DIRECTORY COMPONENT netdata DESTINATION var/cache/netdata)
+install(DIRECTORY COMPONENT netdata DESTINATION var/log/netdata)
+install(DIRECTORY COMPONENT netdata DESTINATION var/lib/netdata/registry)
+install(DIRECTORY COMPONENT netdata DESTINATION var/lib/netdata/cloud.d)
+install(DIRECTORY COMPONENT netdata DESTINATION var/run/netdata)
+install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata)
+install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/custom-plugins.d)
+install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/go.d)
+install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/health.d)
+install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/python.d)
+install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/ssl)
+install(DIRECTORY COMPONENT netdata DESTINATION etc/netdata/statsd.d)
+install(DIRECTORY COMPONENT netdata DESTINATION usr/lib/netdata/conf.d)
+install(DIRECTORY COMPONENT netdata DESTINATION usr/lib/netdata/conf.d/schema.d)
+install(DIRECTORY COMPONENT netdata DESTINATION usr/libexec/netdata/plugins.d)
+install(DIRECTORY COMPONENT netdata DESTINATION ${WEB_DEST})
 
 set(libsysdir_POST "${CMAKE_INSTALL_PREFIX}/usr/lib/netdata/system")
 set(pkglibexecdir_POST "${CMAKE_INSTALL_PREFIX}/usr/libexec/netdata")
@@ -2240,6 +2361,7 @@ endif()
 configure_file(src/claim/netdata-claim.sh.in src/claim/netdata-claim.sh @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/src/claim/netdata-claim.sh
+        COMPONENT netdata
         DESTINATION usr/sbin)
 
 #
@@ -2250,13 +2372,14 @@ configure_file(src/collectors/cgroups.plugin/cgroup-network-helper.sh.in
                src/collectors/cgroups.plugin/cgroup-network-helper.sh @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/src/collectors/cgroups.plugin/cgroup-network-helper.sh
-        COMPONENT cgroup_network_plugin
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 configure_file(src/collectors/cgroups.plugin/cgroup-name.sh.in
                src/collectors/cgroups.plugin/cgroup-name.sh @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/src/collectors/cgroups.plugin/cgroup-name.sh
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 #
@@ -2266,6 +2389,7 @@ install(FILES
         src/collectors/statsd.plugin/asterisk.conf
         src/collectors/statsd.plugin/example.conf
         src/collectors/statsd.plugin/k6.conf
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/conf.d/statsd.d)
 
 #
@@ -2273,6 +2397,7 @@ install(FILES
 #
 install(FILES
         src/exporting/exporting.conf
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/conf.d)
 
 #
@@ -2280,6 +2405,7 @@ install(FILES
 #
 install(FILES
         src/collectors/ioping.plugin/ioping.conf
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/conf.d)
 
 #
@@ -2287,6 +2413,7 @@ install(FILES
 #
 install(FILES
         src/streaming/stream.conf
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/conf.d)
 
 #
@@ -2295,6 +2422,7 @@ install(FILES
 install(FILES
         src/web/api/netdata-swagger.json
         src/web/api/netdata-swagger.yaml
+        COMPONENT netdata
         DESTINATION ${WEB_DEST})
 
 #
@@ -2304,110 +2432,173 @@ install(FILES
 configure_file(system/install-service.sh.in system/install-service.sh @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/system/install-service.sh
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata)
 
 configure_file(system/cron/netdata-updater-daily.in system/cron/netdata-updater-daily @ONLY)
 install(FILES
         ${CMAKE_BINARY_DIR}/system/cron/netdata-updater-daily
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/cron)
 
 configure_file(system/launchd/netdata.plist.in system/launchd/netdata.plist @ONLY)
 install(FILES
         ${CMAKE_BINARY_DIR}/system/launchd/netdata.plist
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/launchd)
 
 configure_file(system/freebsd/rc.d/netdata.in system/freebsd/rc.d/netdata @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/system/freebsd/rc.d/netdata
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/freebsd/rc.d)
 
 configure_file(system/initd/init.d/netdata.in system/initd/init.d/netdata @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/system/initd/init.d/netdata
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/initd/init.d)
 
 configure_file(system/logrotate/netdata.in system/logrotate/netdata @ONLY)
 install(FILES
         ${CMAKE_BINARY_DIR}/system/logrotate/netdata
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/logrotate)
+install(FILES
+        ${CMAKE_BINARY_DIR}/system/logrotate/netdata
+        COMPONENT netdata
+        DESTINATION etc/logrotate.d)
 
 configure_file(system/lsb/init.d/netdata.in system/lsb/init.d/netdata @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/system/lsb/init.d/netdata
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/lsb/init.d)
 
 configure_file(system/openrc/conf.d/netdata.in system/openrc/conf.d/netdata @ONLY)
 install(FILES
         ${CMAKE_BINARY_DIR}/system/openrc/conf.d/netdata
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/openrc/conf.d)
 
 configure_file(system/openrc/init.d/netdata.in system/openrc/init.d/netdata @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/system/openrc/init.d/netdata
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/openrc/init.d)
 
 configure_file(system/runit/run.in system/runit/run @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/system/runit/run
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/runit)
 
 configure_file(system/dinit/netdata.in system/dinit/netdata @ONLY)
 install(FILES
         ${CMAKE_BINARY_DIR}/system/dinit/netdata
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/dinit)
 
 configure_file(system/systemd/netdata.service.in system/systemd/netdata.service @ONLY)
 install(FILES
         ${CMAKE_BINARY_DIR}/system/systemd/netdata.service
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/systemd)
 
+if(BUILD_FOR_PACKAGING)
+        install(FILES
+                ${CMAKE_BINARY_DIR}/system/systemd/netdata.service
+                COMPONENT netdata
+                DESTINATION lib/systemd/system)
+endif()
+
 configure_file(system/systemd/netdata.service.v235.in system/systemd/netdata.service.v235 @ONLY)
 install(FILES
         ${CMAKE_BINARY_DIR}/system/systemd/netdata.service.v235
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/systemd)
 
 configure_file(system/systemd/netdata-updater.service.in system/systemd/netdata-updater.service @ONLY)
 install(FILES
         ${CMAKE_BINARY_DIR}/system/systemd/netdata-updater.service
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/systemd)
 
 install(FILES
         system/systemd/netdata-updater.timer
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/systemd)
+
 install(FILES
         system/systemd/50-netdata.preset
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/system/systemd)
 
 install(FILES
         system/vnodes/vnodes.conf
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/conf.d/vnodes)
 
 install(FILES
         system/.install-type
+        COMPONENT netdata
         DESTINATION etc/netdata)
+
 install(FILES
         system/netdata-updater.conf
+        COMPONENT netdata
         DESTINATION etc/netdata)
 
 install(PROGRAMS
         system/edit-config
+        COMPONENT netdata
+        DESTINATION etc/netdata)
+
+install(FILES
+        system/netdata.conf
+        COMPONENT netdata
         DESTINATION etc/netdata)
 
+#
+# misc files
+#
+if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/netdata/etc/default/netdata
+                COMPONENT netdata
+                DESTINATION etc/default)
+endif()
+
+if(BUILD_FOR_PACKAGING)
+install(PROGRAMS
+        packaging/cmake/control/netdata/etc/init.d/netdata
+        COMPONENT netdata
+        DESTINATION etc/init.d)
+endif()
+
+install(PROGRAMS
+        packaging/installer/netdata-updater.sh
+        COMPONENT netdata
+        DESTINATION usr/libexec/netdata)
+
 #
 # TODO: check the following files for correct substitutions
 #
 configure_file(src/daemon/anonymous-statistics.sh.in src/daemon/anonymous-statistics.sh @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/src/daemon/anonymous-statistics.sh
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 configure_file(src/daemon/get-kubernetes-labels.sh.in src/daemon/get-kubernetes-labels.sh @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/src/daemon/get-kubernetes-labels.sh
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 install(PROGRAMS
         src/daemon/system-info.sh
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 #
@@ -2417,21 +2608,25 @@ install(PROGRAMS
 file(GLOB_RECURSE HEALTH_CONF_FILES "src/health/health.d/*.conf")
 install(FILES
         ${HEALTH_CONF_FILES}
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/conf.d/health.d)
 
 configure_file(src/health/notifications/alarm-notify.sh.in src/health/notifications/alarm-notify.sh @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/src/health/notifications/alarm-notify.sh
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 install(PROGRAMS
         src/health/notifications/alarm-email.sh
         src/health/notifications/alarm-test.sh
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 install(FILES
         src/health/notifications/health_alarm_notify.conf
         src/health/notifications/health_email_recipients.conf
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/conf.d)
 #
 # test/ files
@@ -2454,45 +2649,43 @@ install(FILES
         DESTINATION usr/libexec/netdata/plugins.d)
 
 #
-# charts.d files
+# charts.d plugin
 #
 
+install(DIRECTORY COMPONENT plugin-chartsd DESTINATION etc/netdata/charts.d)
+
 configure_file(src/collectors/charts.d.plugin/charts.d.plugin.in src/collectors/charts.d.plugin/charts.d.plugin @ONLY)
 install(PROGRAMS
         ${CMAKE_BINARY_DIR}/src/collectors/charts.d.plugin/charts.d.plugin
+        COMPONENT plugin-chartsd
         DESTINATION usr/libexec/netdata/plugins.d)
 
-install(FILES
+install(PROGRAMS
         src/collectors/charts.d.plugin/charts.d.dryrun-helper.sh
+        COMPONENT plugin-chartsd
+        DESTINATION usr/libexec/netdata/plugins.d)
+
+# loopsleepms is used by the tc.plugin -> ship it in the netdata component
+install(FILES
         src/collectors/charts.d.plugin/loopsleepms.sh.inc
+        COMPONENT netdata
         DESTINATION usr/libexec/netdata/plugins.d)
 
 install(FILES
         src/collectors/charts.d.plugin/charts.d.conf
+        COMPONENT plugin-chartsd
         DESTINATION usr/lib/netdata/conf.d)
 
-#
-# tc-qos-helper
-#
-
-configure_file(src/collectors/tc.plugin/tc-qos-helper.sh.in src/collectors/tc.plugin/tc-qos-helper.sh @ONLY)
 install(PROGRAMS
-        ${CMAKE_BINARY_DIR}/src/collectors/tc.plugin/tc-qos-helper.sh
-        DESTINATION usr/libexec/netdata/plugins.d)
-
-# scripts
-
-install(FILES
         src/collectors/charts.d.plugin/ap/ap.chart.sh
         src/collectors/charts.d.plugin/apcupsd/apcupsd.chart.sh
         src/collectors/charts.d.plugin/example/example.chart.sh
         src/collectors/charts.d.plugin/libreswan/libreswan.chart.sh
         src/collectors/charts.d.plugin/opensips/opensips.chart.sh
         src/collectors/charts.d.plugin/sensors/sensors.chart.sh
+        COMPONENT plugin-chartsd
         DESTINATION usr/libexec/netdata/charts.d)
 
-# confs
-
 install(FILES
         src/collectors/charts.d.plugin/ap/ap.conf
         src/collectors/charts.d.plugin/apcupsd/apcupsd.conf
@@ -2500,59 +2693,50 @@ install(FILES
         src/collectors/charts.d.plugin/libreswan/libreswan.conf
         src/collectors/charts.d.plugin/opensips/opensips.conf
         src/collectors/charts.d.plugin/sensors/sensors.conf
+        COMPONENT plugin-chartsd
         DESTINATION usr/lib/netdata/conf.d/charts.d)
 
+if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-chartsd
+                DESTINATION usr/share/doc/netdata-plugin-chartsd)
+endif()
+
+#
+# tc-qos-helper
+#
+
+configure_file(src/collectors/tc.plugin/tc-qos-helper.sh.in src/collectors/tc.plugin/tc-qos-helper.sh @ONLY)
+install(PROGRAMS
+        ${CMAKE_BINARY_DIR}/src/collectors/tc.plugin/tc-qos-helper.sh
+        COMPONENT netdata
+        DESTINATION usr/libexec/netdata/plugins.d)
+
+# confs
 install(FILES
         src/collectors/systemd-journal.plugin/schema.d/systemd-journal:monitored-directories.json
         src/health/schema.d/health:alert:prototype.json
+        COMPONENT netdata
         DESTINATION usr/lib/netdata/conf.d/schema.d)
 
 #
-# ebpf files
-#
-
-if(ENABLE_PLUGIN_EBPF)
-        install(FILES
-                src/collectors/ebpf.plugin/ebpf.d.conf
-                DESTINATION usr/lib/netdata/conf.d)
-
-        install(FILES
-                src/collectors/ebpf.plugin/ebpf.d/cachestat.conf
-                src/collectors/ebpf.plugin/ebpf.d/dcstat.conf
-                src/collectors/ebpf.plugin/ebpf.d/disk.conf
-                src/collectors/ebpf.plugin/ebpf.d/ebpf_kernel_reject_list.txt
-                src/collectors/ebpf.plugin/ebpf.d/fd.conf
-                src/collectors/ebpf.plugin/ebpf.d/filesystem.conf
-                src/collectors/ebpf.plugin/ebpf.d/hardirq.conf
-                src/collectors/ebpf.plugin/ebpf.d/mdflush.conf
-                src/collectors/ebpf.plugin/ebpf.d/mount.conf
-                src/collectors/ebpf.plugin/ebpf.d/network.conf
-                src/collectors/ebpf.plugin/ebpf.d/oomkill.conf
-                src/collectors/ebpf.plugin/ebpf.d/process.conf
-                src/collectors/ebpf.plugin/ebpf.d/shm.conf
-                src/collectors/ebpf.plugin/ebpf.d/softirq.conf
-                src/collectors/ebpf.plugin/ebpf.d/swap.conf
-                src/collectors/ebpf.plugin/ebpf.d/sync.conf
-                src/collectors/ebpf.plugin/ebpf.d/vfs.conf
-                DESTINATION usr/lib/netdata/conf.d/ebpf.d)
-endif()
-
-#
-# python.d files
+# python.d plugin
 #
 
 configure_file(src/collectors/python.d.plugin/python.d.plugin.in src/collectors/python.d.plugin/python.d.plugin @ONLY)
 install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/python.d.plugin/python.d.plugin
+        COMPONENT plugin-pythond
         DESTINATION usr/libexec/netdata/plugins.d)
 
 install(DIRECTORY src/collectors/python.d.plugin/python_modules
+        COMPONENT plugin-pythond
         DESTINATION usr/libexec/netdata/python.d)
 
 install(FILES src/collectors/python.d.plugin/python.d.conf
+        COMPONENT plugin-pythond
         DESTINATION usr/lib/netdata/conf.d)
 
-# conf files
-
 install(FILES
         src/collectors/python.d.plugin/alarms/alarms.conf
         src/collectors/python.d.plugin/am2320/am2320.conf
@@ -2595,10 +2779,9 @@ install(FILES
         src/collectors/python.d.plugin/varnish/varnish.conf
         src/collectors/python.d.plugin/w1sensor/w1sensor.conf
         src/collectors/python.d.plugin/zscores/zscores.conf
+        COMPONENT plugin-pythond
         DESTINATION usr/lib/netdata/conf.d/python.d)
 
-# scripts
-
 install(FILES
         src/collectors/python.d.plugin/alarms/alarms.chart.py
         src/collectors/python.d.plugin/am2320/am2320.chart.py
@@ -2641,45 +2824,55 @@ install(FILES
         src/collectors/python.d.plugin/varnish/varnish.chart.py
         src/collectors/python.d.plugin/w1sensor/w1sensor.chart.py
         src/collectors/python.d.plugin/zscores/zscores.chart.py
+        COMPONENT plugin-pythond
         DESTINATION usr/libexec/netdata/python.d)
 
-# FIXME: don't install this unconditionally
-configure_file(src/collectors/ioping.plugin/ioping.plugin.in src/collectors/ioping.plugin/ioping.plugin @ONLY)
-install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/ioping.plugin/ioping.plugin DESTINATION usr/libexec/netdata/plugins.d)
+if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-pythond
+                DESTINATION usr/share/doc/netdata-plugin-pythond)
+endif()
 
 #
-# logs management
+# ioping.plugin
 #
-if (ENABLE_PLUGIN_LOGS_MANAGEMENT)
-        configure_file(src/logsmanagement/stock_conf/logsmanagement.d.conf.in src/logsmanagement/stock_conf/logsmanagement.d.conf @ONLY)
-        install(FILES ${CMAKE_BINARY_DIR}/src/logsmanagement/stock_conf/logsmanagement.d.conf
-                COMPONENT logs_management_plugin
-                DESTINATION usr/lib/netdata/conf.d)
-endif()
+
+configure_file(src/collectors/ioping.plugin/ioping.plugin.in src/collectors/ioping.plugin/ioping.plugin @ONLY)
+install(PROGRAMS ${CMAKE_BINARY_DIR}/src/collectors/ioping.plugin/ioping.plugin
+        COMPONENT netdata
+        DESTINATION usr/libexec/netdata/plugins.d)
 
 #
 # go.d.plugin
 #
 if(ENABLE_PLUGIN_GO)
     install(FILES src/go/collectors/go.d.plugin/config/go.d.conf
-            COMPONENT go.d.plugin
+            COMPONENT plugin-go
             DESTINATION usr/lib/netdata/conf.d)
 
     install(DIRECTORY
-            COMPONENT go.d.plugin
+            COMPONENT plugin-go
             DESTINATION usr/lib/netdata/conf.d/go.d)
     file(GLOB GO_CONF_FILES src/go/collectors/go.d.plugin/config/go.d/*.conf)
     install(FILES ${GO_CONF_FILES}
-            COMPONENT go.d.plugin
+            COMPONENT plugin-go
             DESTINATION usr/lib/netdata/conf.d/go.d)
 
     install(DIRECTORY
-            COMPONENT go.d.plugin
+            COMPONENT plugin-go
             DESTINATION usr/lib/netdata/conf.d/go.d/sd)
     file(GLOB GO_SD_CONF_FILES src/go/collectors/go.d.plugin/config/go.d/sd/*.conf)
     install(FILES ${GO_SD_CONF_FILES}
-            COMPONENT go.d.plugin
+            COMPONENT plugin-go
             DESTINATION usr/lib/netdata/conf.d/go.d/sd)
+
+    if(BUILD_FOR_PACKAGING)
+        install(FILES
+                packaging/cmake/control/copyright
+                COMPONENT plugin-go
+                DESTINATION usr/share/doc/netdata-plugin-go)
+    endif()
 endif()
 
 #
@@ -2704,6 +2897,7 @@ configure_file(${CMAKE_BINARY_DIR}/dashboard.js.in
 
 install(FILES
         ${CMAKE_BINARY_DIR}/dashboard.js
+        COMPONENT netdata
         DESTINATION ${WEB_DEST})
 
 install(FILES
@@ -2717,26 +2911,34 @@ install(FILES
         src/web/gui/registry-hello.html
         src/web/gui/switch.html
         src/web/gui/ilove.html
+        COMPONENT netdata
         DESTINATION ${WEB_DEST})
 
 install(FILES
         src/web/gui/old/index.html
+        COMPONENT netdata
         DESTINATION ${WEB_DEST}/old)
 
 install(FILES
         src/web/gui/static/img/netdata-logomark.svg
+        COMPONENT netdata
         DESTINATION ${WEB_DEST}/static/img)
 
 install(FILES
         src/web/gui/css/morris-0.5.1.css
         src/web/gui/css/c3-0.4.18.min.css
+        COMPONENT netdata
         DESTINATION ${WEB_DEST}/css)
 
 install(FILES
         src/web/gui/.well-known/dnt/cookies
+        COMPONENT netdata
         DESTINATION ${WEB_DEST}/.well-known/dnt)
 
 # v0 dashboard
 install(FILES
         src/web/gui/v0/index.html
+        COMPONENT netdata
         DESTINATION ${WEB_DEST}/v0)
+
+include(Packaging)

+ 81 - 0
packaging/build-package.sh

@@ -0,0 +1,81 @@
+#!/bin/sh
+#
+# Invoked by the package builder images to actually build native packages.
+
+set -e
+
+PKG_TYPE="${1}"
+BUILD_DIR="${2}"
+SCRIPT_SOURCE="$(
+    self=${0}
+    while [ -L "${self}" ]
+    do
+        cd "${self%/*}" || exit 1
+        self=$(readlink "${self}")
+    done
+    cd "${self%/*}" || exit 1
+    echo "$(pwd -P)/${self##*/}"
+)"
+SOURCE_DIR="$(dirname "$(dirname "${SCRIPT_SOURCE}")")"
+
+CMAKE_ARGS="-S ${SOURCE_DIR} -B ${BUILD_DIR} -G Ninja"
+
+add_cmake_option() {
+    CMAKE_ARGS="${CMAKE_ARGS} -D${1}=${2}"
+}
+
+add_cmake_option CMAKE_BUILD_TYPE RelWithDebInfo
+add_cmake_option CMAKE_INSTALL_PREFIX /
+add_cmake_option ENABLE_ACLK On
+add_cmake_option ENABLE_CLOUD On
+add_cmake_option ENABLE_DBENGINE On
+add_cmake_option ENABLE_H2O On
+add_cmake_option ENABLE_ML On
+
+add_cmake_option ENABLE_PLUGIN_APPS On
+add_cmake_option ENABLE_PLUGIN_CGROUP_NETWORK On
+add_cmake_option ENABLE_PLUGIN_DEBUGFS On
+add_cmake_option ENABLE_PLUGIN_FREEIPMI On
+add_cmake_option ENABLE_PLUGIN_GO On
+add_cmake_option ENABLE_PLUGIN_LOCAL_LISTENERS On
+add_cmake_option ENABLE_PLUGIN_LOGS_MANAGEMENT On
+add_cmake_option ENABLE_PLUGIN_NFACCT On
+add_cmake_option ENABLE_PLUGIN_PERF On
+add_cmake_option ENABLE_PLUGIN_SLABINFO On
+add_cmake_option ENABLE_PLUGIN_SYSTEMD_JOURNAL On
+
+add_cmake_option ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE On
+add_cmake_option ENABLE_EXPORTER_MONGODB On
+
+add_cmake_option ENABLE_BUNDLED_PROTOBUF Off
+add_cmake_option ENABLE_BUNDLED_JSONC Off
+add_cmake_option ENABLE_BUNDLED_YAML Off
+
+add_cmake_option BUILD_FOR_PACKAGING On
+
+case "${PKG_TYPE}" in
+    DEB)
+        case "$(dpkg-architecture -q DEB_TARGET_ARCH)" in
+            amd64)
+                add_cmake_option ENABLE_PLUGIN_XENSTAT On
+                add_cmake_option ENABLE_PLUGIN_EBPF On
+                ;;
+            arm64)
+                add_cmake_option ENABLE_PLUGIN_XENSTAT On
+                add_cmake_option ENABLE_PLUGIN_EBPF Off
+                ;;
+            *)
+                add_cmake_option ENABLE_PLUGIN_XENSTAT Off
+                add_cmake_option ENABLE_PLUGIN_EBPF Off
+                ;;
+        esac
+        ;;
+    RPM) ;;
+    *) echo "Unrecognized package type ${PKG_TYPE}." ; exit 1 ;;
+esac
+
+# shellcheck disable=SC2086
+cmake ${CMAKE_ARGS}
+cmake --build "${BUILD_DIR}" --parallel "$(nproc)"
+cd "${BUILD_DIR}" || exit 1
+cpack -V -G "${PKG_TYPE}"

+ 511 - 0
packaging/cmake/Modules/Packaging.cmake

@@ -0,0 +1,511 @@
+#
+# CPack options
+#
+
+set(CPACK_THREADS 0)
+
+set(CPACK_STRIP_FILES NO)
+set(CPACK_DEBIAN_DEBUGINFO_PACKAGE NO)
+
+set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS YES)
+
+if(FIELD_DESCR STREQUAL "N/A")
+		set(CPACK_PACKAGE_VERSION ${FIELD_MAJOR}.${FIELD_MINOR}.${FIELD_PATCH})
+else()
+		set(CPACK_PACKAGE_VERSION ${FIELD_MAJOR}.${FIELD_MINOR}.${FIELD_PATCH}-${FIELD_TWEAK}-${FIELD_DESCR})
+endif()
+
+set(CPACK_PACKAGING_INSTALL_PREFIX "/")
+
+set(CPACK_PACKAGE_VENDOR "Netdata Inc.")
+
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
+set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
+
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "netdata")
+set(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/packages")
+
+# to silence lintian
+set(CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
+		OWNER_READ OWNER_WRITE OWNER_EXECUTE
+	  GROUP_READ GROUP_EXECUTE
+		WORLD_READ WORLD_EXECUTE)
+
+#
+# Debian options
+#
+
+set(CPACK_DEB_COMPONENT_INSTALL YES)
+set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS YES)
+set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
+
+set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Netdata Builder <bot@netdata.cloud>")
+
+#
+# netdata
+#
+
+set(CPACK_COMPONENT_NETDATA_DESCRIPTION
+	  "real-time charts for system monitoring
+ Netdata is a daemon that collects data in realtime (per second)
+ and presents a web site to view and analyze them. The presentation
+ is also real-time and full of interactive charts that precisely
+ render all collected values.")
+
+set(CPACK_DEBIAN_NETDATA_PACKAGE_NAME "netdata")
+set(CPACK_DEBIAN_NETDATA_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_NETDATA_PACKAGE_PREDEPENDS
+		"adduser, dpkg (>= 1.17.14), libcap2-bin (>=1:2.0), lsb-base (>= 3.1-23.2)")
+set(CPACK_DEBIAN_NETDATA_PACKAGE_SUGGESTS
+		"netdata-plugin-cups (= ${CPACK_PACKAGE_VERSION}), netdata-plugin-freeipmi (= ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_NETDATA_PACKAGE_RECOMMENDS
+		"netdata-plugin-systemd-journal (= ${CPACK_PACKAGE_VERSION}), \
+netdata-plugin-logs-management (= ${CPACK_PACKAGE_VERSION}), \
+netdata-plugin-network-viewer (= ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_NETDATA_PACKAGE_CONFLICTS
+		"netdata-core, netdata-plugins-bash, netdata-plugins-python, netdata-web")
+
+list(APPEND _main_deps "netdata-plugin-chartsd (= ${CPACK_PACKAGE_VERSION})")
+list(APPEND _main_deps "netdata-plugin-pythond (= ${CPACK_PACKAGE_VERSION})")
+
+if(ENABLE_PLUGIN_APPS)
+        list(APPEND _main_deps "netdata-plguin-apps (= ${CPACK_PACKAGE_VERSION})")
+endif()
+
+if(ENABLE_PLUGIN_GO)
+        list(APPEND _main_deps "netdata-plugin-go (= ${CPACK_PACKAGE_VERSION})")
+endif()
+
+if(ENABLE_PLUGIN_DEBUGFS)
+        list(APPEND _main_deps "netdata-plugin-debugfs (= ${CPACK_PACKAGE_VERSION})")
+endif()
+
+if(ENABLE_PLUGIN_NFACCT)
+        list(APPEND _main_deps "netdata-plugin-nfacct (= ${CPACK_PACKAGE_VERSION})")
+endif()
+
+if(ENABLE_PLUGIN_SLABINFO)
+        list(APPEND _main_deps "netdata-plugin-slabinfo (= ${CPACK_PACKAGE_VERSION})")
+endif()
+
+if(ENABLE_PLUGIN_PERF)
+        list(APPEND _main_deps "netdata-plugin-perf (= ${CPACK_PACKAGE_VERSION})")
+endif()
+
+if(ENABLE_PLUGIN_EBPF)
+        list(APPEND _main_deps "netdata-plugin-ebpf (= ${CPACK_PACKAGE_VERSION})")
+endif()
+
+list(JOIN "${_main_deps}" ", " CPACK_DEBIAN_NETDATA_PACKAGE_DEPENDS)
+
+set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/netdata/conffiles;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/netdata/preinst"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/netdata/postinst"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/netdata/postrm")
+
+set(CPACK_DEBIAN_NETDATA_DEBUGINFO_PACKAGE On)
+
+#
+# apps.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-APPS_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-APPS_DESCRIPTION
+		"The per-application metrics collector plugin for the Netdata Agent
+ This plugin allows the Netdata Agent to collect per-application and
+ per-user metrics without using cgroups.")
+
+set(CPACK_DEBIAN_PLUGIN-APPS_PACKAGE_NAME "netdata-plugin-apps")
+set(CPACK_DEBIAN_PLUGIN-APPS_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-APPS_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-APPS_PACKAGE_PREDEPENDS "libcap2-bin, adduser")
+
+set(CPACK_DEBIAN_PLUGIN-APPS_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/apps/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/apps/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-APPS_DEBUGINFO_PACKAGE On)
+
+#
+# charts.d.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-CHARTSD_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-CHARTSD_DESCRIPTION
+		"The charts.d metrics collection plugin for the Netdata Agent
+ This plugin adds a selection of additional collectors written in shell
+ script to the Netdata Agent. It includes collectors for APCUPSD,
+ LibreSWAN, OpenSIPS, and Wireless access point statistics.")
+
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_PACKAGE_NAME "netdata-plugin-chartsd")
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_PACKAGE_PREDEPENDS "adduser")
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_PACKAGE_RECOMMENDS "bash")
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_PACKAGE_ARCHITECTURE "all")
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_PACKAGE_SUGGESTS "apcupsd, iw, sudo")
+
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/charts.d/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/charts.d/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-CHARTSD_DEBUGINFO_PACKAGE Off)
+
+#
+# cups.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-CUPS_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-CUPS_DESCRIPTION
+	  "The CUPS metrics collection plugin for the Netdata Agent
+ This plugin allows the Netdata Agent to collect metrics from the Common UNIX Printing System.")
+
+set(CPACK_DEBIAN_PLUGIN-CUPS_PACKAGE_NAME "netdata-plugin-cups")
+set(CPACK_DEBIAN_PLUGIN-CUPS_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-CUPS_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-CUPS_PACKAGE_DEPENDS "cups")
+set(CPACK_DEBIAN_PLUGIN-CUPS_PACKAGE_PREDEPENDS "adduser")
+set(CPACK_DEBIAN_PLUGIN-CUPS_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/cups/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/cups/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-CUPS_DEBUGINFO_PACKAGE On)
+
+#
+# debugfs.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-DEBUGFS_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-DEBUGFS_DESCRIPTION
+		"The debugfs metrics collector for the Netdata Agent
+ This plugin allows the Netdata Agent to collect Linux kernel metrics
+ exposed through debugfs.")
+
+set(CPACK_DEBIAN_PLUGIN-DEBUGFS_PACKAGE_NAME "netdata-plugin-debugfs")
+set(CPACK_DEBIAN_PLUGIN-DEBUGFS_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-DEBUGFS_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-DEBUGFS_PACKAGE_PREDEPENDS "libcap2-bin, adduser")
+set(CPACK_DEBIAN_PLUGIN-DEBUGFS_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/debugfs/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/debugfs/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-DEBUGFS_DEBUGINFO_PACKAGE On)
+
+#
+# ebpf.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-EBPF_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-EBPF_DESCRIPTION
+		"The eBPF metrics collection plugin for the Netdata Agent
+ This plugin allows the Netdata Agent to use eBPF code to collect more
+ detailed kernel-level metrics for the system.")
+
+set(CPACK_DEBIAN_PLUGIN-EBPF_PACKAGE_NAME "netdata-plugin-ebpf")
+set(CPACK_DEBIAN_PLUGIN-EBPF_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-EBPF_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-EBPF_PACKAGE_PREDEPENDS "adduser")
+set(CPACK_DEBIAN_PLUGIN-EBPF_PACKAGE_RECOMMENDS "netdata-plugin-apps (= ${CPACK_PACKAGE_VERSION}), netdata-ebpf-code-legacy (= ${CPACK_PACKAGE_VERSION})")
+
+set(CPACK_DEBIAN_PLUGIN-EBPF_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/ebpf.d/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/ebpf.d/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-EBPF_DEBUGINFO_PACKAGE On)
+
+#
+# ebpf-code-legacy
+#
+
+set(CPACK_COMPONENT_EBPF-CODE-LEGACY_DEPENDS "netdata")
+set(CPACK_COMPONENT_EBPF-CODE-LEGACY_DESCRIPTION
+		"Compiled eBPF legacy code for the Netdata eBPF plugin
+ This package provides the pre-compiled eBPF legacy code for use by
+ the Netdata eBPF plugin.  This code is only needed when using the eBPF
+ plugin with kernel that do not include BTF support (mostly kernel
+ versions lower than 5.10).")
+
+set(CPACK_DEBIAN_EBPF-CODE-LEGACY_PACKAGE_NAME "netdata-ebpf-code-legacy")
+set(CPACK_DEBIAN_EBPF-CODE-LEGACY_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_EBPF-CODE-LEGACY_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_EBPF-CODE-LEGACY_PACKAGE_PREDEPENDS "adduser")
+set(CPACK_DEBIAN_EBPF-CODE-LEGACY_PACKAGE_RECOMMENDS  "netdata-plugin-ebpf (= ${CPACK_PACKAGE_VERSION})")
+
+set(CPACK_DEBIAN_EBPF-CODE-LEGACY_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/ebpf-code-legacy/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/ebpf-code-legacy/postinst")
+
+set(CPACK_DEBIAN_EBPF-CODE-LEGACY_DEBUGINFO_PACKAGE Off)
+
+#
+# freeipmi.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-FREEIPMI_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-FREEIPMI_DESCRIPTION
+		"The FreeIPMI metrics collection plugin for the Netdata Agent
+ This plugin allows the Netdata Agent to collect metrics from hardware
+ using FreeIPMI.")
+
+set(CPACK_DEBIAN_PLUGIN-FREEIPMI_PACKAGE_NAME "netdata-plugin-freeipmi")
+set(CPACK_DEBIAN_PLUGIN-FREEIPMI_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-FREEIPMI_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-FREEIPMI_PACKAGE_DEPENDS "freeipmi")
+set(CPACK_DEBIAN_PLUGIN-FREEIPMI_PACKAGE_PREDEPENDS "adduser")
+
+set(CPACK_DEBIAN_PLUGIN-FREEIPMI_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/freeipmi/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/freeipmi/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-FREEIPMI_DEBUGINFO_PACKAGE On)
+
+#
+# go.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-GO_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-GO_DESCRIPTION
+		"The go.d metrics collection plugin for the Netdata Agent
+ This plugin adds a selection of additional collectors written in Go to
+ the Netdata Agent. A significant percentage of the application specific
+ collectors provided by Netdata are part of this plugin, so most users
+ will want it installed.")
+
+set(CPACK_DEBIAN_PLUGIN-GO_PACKAGE_NAME "netdata-plugin-go")
+set(CPACK_DEBIAN_PLUGIN-GO_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-GO_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-GO_PACKAGE_PREDEPENDS "libcap2-bin, adduser")
+set(CPACK_DEBIAN_PLUGIN-GO_PACKAGE_SUGGESTS "nvme-cli, sudo")
+
+set(CPACK_DEBIAN_PLUGIN-GO_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/go.d/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/go.d/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-GO_DEBUGINFO_PACKAGE Off)
+
+#
+# logs-management.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-LOGS-MANAGEMENT_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-LOGS-MANAGEMENT_DESCRIPTION
+		"The logs-management plugin for the Netdata Agent
+ This plugin allows the Netdata Agent to collect logs from the system
+ and parse them to extract metrics.")
+
+set(CPACK_DEBIAN_PLUGIN-LOGS-MANAGEMENT_PACKAGE_NAME "netdata-plugin-logs-management")
+set(CPACK_DEBIAN_PLUGIN-LOGS-MANAGEMENT_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-LOGS-MANAGEMENT_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-LOGS-MANAGEMENT_PACKAGE_PREDEPENDS "libcap2-bin, adduser")
+
+set(CPACK_DEBIAN_PLUGIN-LOGS-MANAGEMENT_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/logs-management/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/logs-management/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-LOGS-MANAGEMENT_DEBUGINFO_PACKAGE On)
+
+#
+# network-viewer.plugin
+#
+
+# TODO: recommends netdata-plugin-ebpf
+set(CPACK_COMPONENT_PLUGIN-NETWORK-VIEWER_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-NETWORK-VIEWER_DESCRIPTION
+		"The network viewer plugin for the Netdata Agent
+ This plugin allows the Netdata Agent to provide network connection
+ mapping functionality for use in Netdata Cloud.")
+
+set(CPACK_DEBIAN_PLUGIN-NETWORK_VIEWER_PACKAGE_NAME "netdata-plugin-network-viewer")
+set(CPACK_DEBIAN_PLUGIN-NETWORK-VIEWER_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-NETWORK-VIEWER_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-NETWORK-VIEWER_PACKAGE_PREDEPENDS "libcap2-bin, adduser")
+set(CPACK_DEBIAN_PLUGIN-NETWORK-VIEWER_PACKAGE_RECOMMENDS "netdata-plugin-ebpf (= ${CPACK_PACKAGE_VERSION})")
+
+set(CPACK_DEBIAN_PLUGIN-NETWORK-VIEWER_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/network-viewer/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/network-viewer/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-NETWORK-VIEWER_DEBUGINFO_PACKAGE On)
+
+#
+# nfacct.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-NFACCT_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-NFACCT_DESCRIPTION
+		"The NFACCT metrics collection plugin for the Netdata Agent
+ This plugin allows the Netdata Agent to collect metrics from the firewall
+ using NFACCT objects.")
+
+set(CPACK_DEBIAN_PLUGIN-NFACCT_PACKAGE_NAME "netdata-plugin-nfacct")
+set(CPACK_DEBIAN_PLUGIN-NFACCT_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-NFACCT_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-NFACCT_PACKAGE_PREDEPENDS "adduser")
+
+set(CPACK_DEBIAN_PLUGIN-NFACCT_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/nfacct/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/nfacct/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-NFACCT_DEBUGINFO_PACKAGE On)
+
+#
+# perf.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-PERF_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-PERF_DESCRIPTION
+		"The perf metrics collector for the Netdata Agent
+ This plugin allows the Netdata to collect metrics from the Linux perf
+ subsystem.")
+
+set(CPACK_DEBIAN_PLUGIN-PERF_PACKAGE_NAME "netdata-plugin-perf")
+set(CPACK_DEBIAN_PLUGIN-PERF_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-PERF_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-PERF_PACKAGE_PREDEPENDS "libcap2-bin, adduser")
+
+set(CPACK_DEBIAN_PLUGIN-PERF_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/perf/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/perf/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-PERF_DEBUGINFO_PACKAGE On)
+
+#
+# pythond.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-PYTHOND_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-PYTHOND_DESCRIPTION
+		"The python.d metrics collection plugin for the Netdata Agent
+ Many of the collectors provided by this package are also available
+ in netdata-plugin-god. In msot cases, you probably want to use those
+ versions instead of the Python versions.")
+
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_PACKAGE_NAME "netdata-plugin-pythond")
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_PACKAGE_PREDEPENDS "adduser")
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_PACKAGE_SUGGESTS "sudo")
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_PACHAGE_RECOMMENDS "python3")
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_PACKAGE_ARCHITECTURE "all")
+
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/python.d/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/python.d/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-PYTHOND_DEBUGINFO_PACKAGE Off)
+
+#
+# slabinfo.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-SLABINFO_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-SLABINFO_DESCRIPTION
+		"The slabinfo metrics collector for the Netdata Agent
+ This plugin allows the Netdata Agent to collect perfromance and
+ utilization metrics for the Linux kernel’s SLAB allocator.")
+
+set(CPACK_DEBIAN_PLUGIN-SLABINFO_PACKAGE_NAME "netdata-plugin-slabinfo")
+set(CPACK_DEBIAN_PLUGIN-SLABINFO_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-SLABINFO_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-SLABINFO_PACKAGE_PREDEPENDS "libcap2-bin, adduser")
+
+set(CPACK_DEBIAN_PLUGIN-SLABINFO_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/slabinfo/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/slabinfo/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-SLABINFO_DEBUGINFO_PACKAGE On)
+
+#
+# systemd-journal.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-SYSTEMD-JOURNAL_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-SYSTEMD-JOURNAL_DESCRIPTION
+		"The systemd-journal collector for the Netdata Agent
+ This plugin allows the Netdata Agent to present logs from the systemd
+ journal on Netdata Cloud or the local Agent dashboard.")
+
+set(CPACK_DEBIAN_PLUGIN-SYSTEMD-JOURNAL_PACKAGE_NAME "netdata-plugin-systemd-journal")
+set(CPACK_DEBIAN_PLUGIN-SYSTEMD-JOURNAL_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-SYSTEMD-JOURNAL_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-SYSTEMD-JOURNAL_PACKAGE_PREDEPENDS "libcap2-bin, adduser")
+
+set(CPACK_DEBIAN_PLUGIN-SYSTEMD-JOURNAL_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/systemd-journal/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/systemd-journal/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-SYSTEMD_JOURNAL_DEBUGINFO_PACKAGE On)
+
+#
+# xenstat.plugin
+#
+
+set(CPACK_COMPONENT_PLUGIN-XENSTAT_DEPENDS "netdata")
+set(CPACK_COMPONENT_PLUGIN-XENSTAT_DESCRIPTION
+		"The xenstat plugin for the Netdata Agent
+ This plugin allows the Netdata Agent to collect metrics from the Xen
+ Hypervisor.")
+
+set(CPACK_DEBIAN_PLUGIN-XENSTAT_PACKAGE_NAME "netdata-plugin-xenstat")
+set(CPACK_DEBIAN_PLUGIN-XENSTAT_PACKAGE_SECTION "net")
+set(CPACK_DEBIAN_PLUGIN-XENSTAT_PACKAGE_CONFLICTS "netdata (<< ${CPACK_PACKAGE_VERSION})")
+set(CPACK_DEBIAN_PLUGIN-XENSTAT_PACKAGE_PREDEPENDS "adduser")
+
+set(CPACK_DEBIAN_PLUGIN-XENSTAT_PACKAGE_CONTROL_EXTRA
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/xenstat/preinst;"
+	  "${CMAKE_SOURCE_DIR}/packaging/cmake/control/xenstat/postinst")
+
+set(CPACK_DEBIAN_PLUGIN-XENSTAT_DEBUGINFO_PACKAGE On)
+
+#
+# CPack components
+#
+
+list(APPEND CPACK_COMPONENTS_ALL "netdata")
+if(ENABLE_PLUGIN_APPS)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-apps")
+endif()
+list(APPEND CPACK_COMPONENTS_ALL "plugin-chartsd")
+if(ENABLE_PLUGIN_CUPS)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-cups")
+endif()
+if(ENABLE_PLUGIN_DEBUGFS)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-debugfs")
+endif()
+if(ENABLE_PLUGIN_EBPF)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-ebpf")
+endif()
+if(ENABLE_EBPF_LEGACY_PROGRAMS)
+        list(APPEND CPACK_COMPONENTS_ALL "ebpf-code-legacy")
+endif()
+if(ENABLE_PLUGIN_FREEIPMI)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-freeipmi")
+endif()
+if(ENABLE_PLUGIN_GO)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-go")
+endif()
+if(ENABLE_PLUGIN_LOGS_MANAGEMENT)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-logs-management")
+endif()
+if(ENABLE_PLUGIN_NETWORK_VIEWER)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-network-viewer")
+endif()
+if(ENABLE_PLUGIN_NFACCT)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-nfacct")
+endif()
+if(ENABLE_PLUGIN_PERF)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-perf")
+endif()
+list(APPEND CPACK_COMPONENTS_ALL "plugin-pythond")
+if(ENABLE_PLUGIN_SLABINFO)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-slabinfo")
+endif()
+if(ENABLE_PLUGIN_SYSTEMD_JOURNAL)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-systemd-journal")
+endif()
+if(ENABLE_PLUGIN_XENSTAT)
+        list(APPEND CPACK_COMPONENTS_ALL "plugin-xenstat")
+endif()
+
+include(CPack)

+ 15 - 0
packaging/cmake/control/apps/postinst

@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+  configure|reconfigure)
+    chown root:netdata /usr/libexec/netdata/plugins.d/apps.plugin
+    chmod 0750 /usr/libexec/netdata/plugins.d/apps.plugin
+    if ! setcap "cap_dac_read_search=eip cap_sys_ptrace=eip" /usr/libexec/netdata/plugins.d/apps.plugin; then
+        chmod -f 4750 /usr/libexec/netdata/plugins.d/apps.plugin
+    fi
+    ;;
+esac
+
+exit 0

+ 11 - 0
packaging/cmake/control/apps/preinst

@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+  install)
+    if ! getent group netdata > /dev/null; then
+      addgroup --quiet --system netdata
+    fi
+    ;;
+esac

+ 11 - 0
packaging/cmake/control/charts.d/postinst

@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+  configure|reconfigure)
+    grep /usr/libexec/netdata /var/lib/dpkg/info/netdata-plugin-chartsd.list | xargs -n 30 chown root:netdata
+    ;;
+esac
+
+exit 0

+ 11 - 0
packaging/cmake/control/charts.d/preinst

@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+  install)
+    if ! getent group netdata > /dev/null; then
+      addgroup --quiet --system netdata
+    fi
+    ;;
+esac

Некоторые файлы не были показаны из-за большого количества измененных файлов