@cryptotaxi247 / netdata-1 / commits / 7a6d0c923

Fall back to querying libc.so.6 if ldd can’t detect libc implementation. (#17657)

* Fall back to querying libc.so.6 if ldd can’t detect libc implementation. Needed for correct configuration on systems that hide the libc implementation info in `ldd` output, like Gentoo. * Fix typo.

Austin S. Hemmelgarn committed May 17, 2024 at 06:59 UTC 7a6d0c9234844e5f661049db1239a9ddb04ab510
1 file changed +38 -2
packaging/cmake/Modules/NetdataUtil.cmake
+38 -2
@@ -74,7 +74,7 @@ endfunction()
74 # Sets the specified variable to the name of the libc or "unknown"
75 function(netdata_identify_libc _libc_name)
76 if(NOT DEFINED _ND_DETECTED_LIBC)
77 - message(CHECK_START "Detecting libc implementation")
77 + message(CHECK_START "Detecting libc implementation using ldd")
78
79 execute_process(COMMAND ldd --version
80 COMMAND grep -q -i -E "glibc|gnu libc"
@@ -101,9 +101,45 @@ function(netdata_identify_libc _libc_name)
101 return()
102 endif()
103
104 + message(CHECK_FAIL "unknown")
105 +
106 + message(CHECK_START "Looking for libc.so.6")
107 + find_program(LIBC_PATH libc.so.6
108 + PATHS /lib /lib64 /usr/lib /usr/lib64
109 + NO_DEFAULT_PATH
110 + NO_PACKAGE_ROOT_PATH
111 + NO_CMAKE_PATH
112 + NO_CMAKE_ENVIRONMENT_PATH
113 + NO_SYSTEM_ENVIRONMENT_PATH
114 + NO_CMAKE_SYSTEM_PATH
115 + NO_CMAKE_INSTALL_PREFIX
116 + NO_CMAKE_FIND_ROOT_PATH)
117 +
118 + if(NOT "${LIBC_PATH}" EQUAL "LIBC_PATH-NOTFOUND")
119 + message(CHECK_PASS "found")
120 + message(CHECK_START "Detecting libc implementation using libc.so.6")
121 +
122 + execute_process(COMMAND "${LIBC_PATH}"
123 + COMMAND head -n 1
124 + COMMAND grep -q -i -E "gnu libc|gnu c library"
125 + RESULT_VARIABLE LIBC_RESULT
126 + OUTPUT_VARIABLE LIBC_OUTPUT
127 + ERROR_VARIABLE LIBC_ERROR)
128 +
129 + if(NOT LIBC_RESULT)
130 + set(${_libc_name} glibc PARENT_SCOPE)
131 + set(_ND_DETECTED_LIBC glibc CACHE INTERNAL "")
132 + message(CHECK_PASS "glibc")
133 + return()
134 + else()
135 + message(CHECK_FAIL "unknown")
136 + endif()
137 + else()
138 + message(CHECK_FAIL "not found")
139 + endif()
140 +
141 set(${_libc_name} unknown PARENT_SCOPE)
142 set(_ND_DETECTED_LIBC unknown CACHE INTERNAL "")
106 - message(CHECK_FAIL "unknown")
143 else()
144 set(${_libc_name} ${_ND_DETECTED_LIBC} PARENT_SCOPE)
145 endif()