Skip to content

Commit 7e2732c

Browse files
committed
Readd tweaked hack to remove GLIBC_PRIVATE symbols
1 parent 8bf7c5e commit 7e2732c

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

Diff for: azure-pipelines.yml

+6-7
Original file line numberDiff line numberDiff line change
@@ -152,19 +152,18 @@ jobs:
152152
export CC=gcc-10 ; export CXX=g++-10; export CUDAHOSTCXX=$CXX; export CUDACXX=/usr/local/cuda/bin/nvcc;
153153
LIBGOMP=/usr/lib/gcc/x86_64-linux-gnu/10;
154154
/usr/local/bin/cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DHAVE_TESTS=1 -DENABLE_WERROR=1 -DHAVE_AVX2=1 \
155+
-DOpenMP_C_FLAGS="-fopenmp -I${LIBGOMP}" -DOpenMP_C_LIB_NAMES=gomp -DOpenMP_CXX_FLAGS="-fopenmp -I${LIBGOMP}" -DOpenMP_CXX_LIB_NAMES=gomp -DOpenMP_gomp_LIBRARY=${LIBGOMP}/libgomp.a \
155156
-DFORCE_STATIC_DEPS=1 -DENABLE_CUDA=1 -DCMAKE_CUDA_ARCHITECTURES="75-real;80-real;86-real;89-real;90" ..
156-
cmake --build . -j$(nproc --all)
157+
cmake --build . -j$(nproc --all) -v
157158
# fail if GLIBC_PRIVATE or too new GLIBC is present
159+
readelf -Ws src/mmseqs
160+
readelf -V src/mmseqs
158161
if readelf -Ws src/mmseqs | grep -q GLIBC_PRIVATE; then
159-
readelf -Ws src/mmseqs
160-
readelf -V src/mmseqs
161-
# exit 1
162+
exit 1
162163
fi
163164
LIBC_V=$(readelf -V src/mmseqs | awk '$3 ~ /^GLIBC_/ { print $3 }' | sort -V | tail -n1)
164165
if [[ "$LIBC_V" > "GLIBC_2.29" ]]; then
165-
readelf -Ws src/mmseqs
166-
readelf -V src/mmseqs
167-
# exit 1
166+
exit 1
168167
fi
169168
displayName: Build MMseqs2
170169
- task: PublishPipelineArtifact@0

Diff for: src/CMakeLists.txt

+15-1
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,21 @@ endif ()
247247
if (ENABLE_CUDA)
248248
find_package(CUDAToolkit REQUIRED)
249249
target_compile_definitions(mmseqs-framework PUBLIC -DHAVE_CUDA=1)
250-
target_link_libraries(mmseqs-framework marv CUDA::cudart_static)
250+
target_link_libraries(mmseqs-framework marv)
251+
if (FORCE_STATIC_DEPS)
252+
# link to rt explicitly so it doesn't get statically compiled and adds GLIBC_PRIVATE symbols
253+
target_link_libraries(mmseqs-framework rt)
254+
# remove librt.a which introduces GLIBC_PRIVATE symbols
255+
get_property(linked_libraries TARGET CUDA::cudart_static_deps PROPERTY INTERFACE_LINK_LIBRARIES)
256+
set(FILTERED_LIBRARIES "")
257+
foreach (LIB ${linked_libraries})
258+
if (NOT LIB MATCHES ".*librt\\.a$")
259+
list(APPEND FILTERED_LIBRARIES ${LIB})
260+
endif ()
261+
endforeach ()
262+
set_target_properties(CUDA::cudart_static_deps PROPERTIES INTERFACE_LINK_LIBRARIES "${FILTERED_LIBRARIES}")
263+
endif ()
264+
target_link_libraries(mmseqs-framework CUDA::cudart_static)
251265
endif ()
252266

253267
if (NOT FRAMEWORK_ONLY)

0 commit comments

Comments
 (0)