@cryptotaxi247 / netdata-1 / commits / ba0987f65

Bundle cmake cache. (#19509)

vkalintiris committed Jan 31, 2025 at 10:39 UTC ba0987f65f1631c42adc649787355a1c3038948e
6 files changed +62
CMakeLists.txt
+28
@@ -2998,6 +2998,9 @@ if (NOT NETDATA_USER)
2998 set(NETDATA_USER "netdata")
2999 endif()
3000
3001 +set(BUILD_INFO_CMAKE_CACHE_ARCHIVE_NAME "build-info-cmake-cache.gz")
3002 +set(BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "usr/share/netdata")
3003 +
3004 configure_file(packaging/cmake/config.cmake.h.in config.h)
3005
3006 #
@@ -3545,6 +3548,27 @@ if(ENABLE_DASHBOARD)
3548
3549 endif()
3550
3551 +#
3552 +# Ship CMakeCache.txt as an archive
3553 +#
3554 +
3555 +install(CODE "
3556 + execute_process(COMMAND gzip -c \"${CMAKE_BINARY_DIR}/CMakeCache.txt\"
3557 + OUTPUT_FILE \"${BUILD_INFO_CMAKE_CACHE_ARCHIVE_NAME}\"
3558 + WORKING_DIRECTORY \"${CMAKE_BINARY_DIR}\"
3559 + RESULT_VARIABLE result)
3560 + if(NOT result EQUAL 0)
3561 + message(WARNING \"Failed to compress CMakeCache.txt\")
3562 + endif()
3563 +
3564 + file(INSTALL \"${CMAKE_BINARY_DIR}/${BUILD_INFO_CMAKE_CACHE_ARCHIVE_NAME}\"
3565 + DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH}\")
3566 +")
3567 +
3568 +#
3569 +# vendor msys stuff on Windows
3570 +#
3571 +
3572 if(OS_WINDOWS)
3573 install(FILES /usr/bin/msys-protobuf-32.dll
3574 /usr/bin/msys-uv-1.dll
@@ -3557,4 +3581,8 @@ if(OS_WINDOWS)
3581 install(DIRECTORY /usr/ssl DESTINATION usr)
3582 endif()
3583
3584 +#
3585 +# Include packaging logic
3586 +#
3587 +
3588 include(Packaging)
netdata.spec.in
+2
@@ -522,6 +522,8 @@ rm -rf "${RPM_BUILD_ROOT}"
522 %{_presetdir}/50-%{name}.preset
523 %{_systemd_util_dir}/journald@%{name}.conf.d/%{name}.conf
524
525 +%{_datarootdir}/%{name}/build-info-cmake-cache.gz
526 +
527 %dir %{_libexecdir}/%{name}
528 %dir %{_libexecdir}/%{name}/plugins.d
529 %defattr(0750,root,netdata,0750)
packaging/cmake/config.cmake.h.in
+6
@@ -152,6 +152,7 @@
152 #cmakedefine NETDATA_SENTRY_ENVIRONMENT "@NETDATA_SENTRY_ENVIRONMENT@"
153 #cmakedefine NETDATA_SENTRY_DIST "@NETDATA_SENTRY_DIST@"
154 #cmakedefine NETDATA_SENTRY_DSN "@NETDATA_SENTRY_DSN@"
155 +
156 // enabled bundling
157
158 #cmakedefine ENABLE_BUNDLED_JSONC
@@ -161,6 +162,7 @@
162
163 // directory paths
164
165 +#define NETDATA_RUNTIME_PREFIX "@NETDATA_RUNTIME_PREFIX@"
166 #cmakedefine CACHE_DIR "@CACHE_DIR@"
167 #cmakedefine CONFIG_DIR "@CONFIG_DIR@"
168 #cmakedefine LIBCONFIG_DIR "@LIBCONFIG_DIR@"
@@ -172,6 +174,10 @@
174 // config command, user and version
175
176 #cmakedefine CONFIGURE_COMMAND "@CONFIGURE_COMMAND@"
177 +
178 +#cmakedefine BUILD_INFO_CMAKE_CACHE_ARCHIVE_NAME "@BUILD_INFO_CMAKE_CACHE_ARCHIVE_NAME@"
179 +#cmakedefine BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "@BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH@"
180 +
181 #cmakedefine NETDATA_USER "@NETDATA_USER@"
182
183 #define NETDATA_VERSION_MAJOR "@NETDATA_VERSION_MAJOR@"
src/daemon/buildinfo.c
+19
@@ -1648,3 +1648,22 @@ void analytics_build_info(BUFFER *b) {
1648 }
1649 }
1650
1651 +void print_build_info_cmake_cache(void) {
1652 + const char *path = NETDATA_RUNTIME_PREFIX "/"
1653 + BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "/"
1654 + BUILD_INFO_CMAKE_CACHE_ARCHIVE_NAME;
1655 +
1656 + gzFile f = gzopen(path, "rb");
1657 + if (!f) {
1658 + printf("Could not open build info cmake cache archive located at %s\n",
1659 + path);
1660 + return;
1661 + }
1662 +
1663 + char line[1024];
1664 + while (gzgets(f, line, sizeof(line))) {
1665 + printf("%s", line);
1666 + }
1667 +
1668 + gzclose(f);
1669 +}
src/daemon/buildinfo.h
+2
@@ -7,6 +7,8 @@ void print_build_info(void);
7
8 void print_build_info_json(void);
9
10 +void print_build_info_cmake_cache(void);
11 +
12 char *get_value_from_key(char *buffer, char *key);
13
14 void get_install_type(struct rrdhost_system_info *system_info);
src/daemon/main.c
+5
@@ -160,6 +160,7 @@ int help(int exitcode) {
160 " -W buildinfojson Print the version, the configure options,\n"
161 " a list of optional features, and whether they\n"
162 " are enabled or not, in JSON format.\n\n"
163 + " -W cmakecache Print the cmake cache used for building this agent\n"
164 " -W simple-pattern pattern string\n"
165 " Check if string matches pattern and exit.\n\n"
166 #ifdef OS_WINDOWS
@@ -709,6 +710,10 @@ int netdata_main(int argc, char **argv) {
710 print_build_info_json();
711 return 0;
712 }
713 + else if(strcmp(optarg, "cmakecache") == 0) {
714 + print_build_info_cmake_cache();
715 + return 0;
716 + }
717 else if(strcmp(optarg, "keepopenfds") == 0) {
718 // Internal dev option to skip closing inherited
719 // open FDs. Useful, when we want to run the agent