test: install libgcc_s.so.1 explicitly if available

Since the library is dlopen()ed by libpthread and required during
pthread_exit()/pthread_cancel(), let's install it explicitly if available to
avoid unexpected fails in tests. This also consolidates all related
workarounds for this library across the test scripts.
This commit is contained in:
Frantisek Sumsal 2022-08-02 13:54:57 +02:00
parent 859614439a
commit 5f347d3160
2 changed files with 8 additions and 11 deletions

View File

@ -20,11 +20,6 @@ test_append_files() {
install_dmevent install_dmevent
generate_module_dependencies generate_module_dependencies
inst_binary tpm2_pcrextend inst_binary tpm2_pcrextend
# On Ubuntu, cryptsetup does not link against libgcc_s.so.1
if get_bool "$LOOKS_LIKE_DEBIAN"; then
inst_library "/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/libgcc_s.so.1"
fi
} }
TEST_70_TPM_DEVICE="tpm-tis" TEST_70_TPM_DEVICE="tpm-tis"

View File

@ -967,12 +967,6 @@ install_multipath() {
# Install the library itself and create necessary symlinks # Install the library itself and create necessary symlinks
inst_library "$file" inst_library "$file"
done < <(find /lib*/multipath -type f) done < <(find /lib*/multipath -type f)
if get_bool "$LOOKS_LIKE_ARCH"; then
# On Arch the multipath libraries are not linked against libgcc_s.so.1,
# but it's still required at runtime
inst_library "/lib64/libgcc_s.so.1"
fi
} }
install_lvm() { install_lvm() {
@ -1227,6 +1221,14 @@ install_missing_libraries() {
LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$(get_ldpath "$i")" inst_libs "$i" LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$(get_ldpath "$i")" inst_libs "$i"
done done
# Install libgcc_s.so if available, since it's dlopen()ed by libpthread
# and might cause unexpected failures during pthread_exit()/pthread_cancel()
# if not present
# See: https://github.com/systemd/systemd/pull/23858
while read -r libgcc_s; do
[[ -e "$libgcc_s" ]] && inst_library "$libgcc_s"
done < <(ldconfig -p | awk '/\/libgcc_s.so.1$/ { print $4 }')
local lib path local lib path
# A number of dependencies is now optional via dlopen, so the install # A number of dependencies is now optional via dlopen, so the install
# script will not pick them up, since it looks at linkage. # script will not pick them up, since it looks at linkage.