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()