mirror of
https://github.com/CringeStudios/element-desktop.git
synced 2025-01-18 23:44:59 +01:00
Add glibc check to Linux build (#1669)
This commit is contained in:
parent
c89872f2dc
commit
74729d1a28
3
.github/workflows/build_linux.yaml
vendored
3
.github/workflows/build_linux.yaml
vendored
@ -137,6 +137,9 @@ jobs:
|
|||||||
else
|
else
|
||||||
assert_contains_string "$LIBS" "libsqlcipher.so.0"
|
assert_contains_string "$LIBS" "libsqlcipher.so.0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
./scripts/glibc-check.sh dist/linux-*unpacked/element-desktop*
|
||||||
|
./scripts/glibc-check.sh dist/linux-*unpacked/resources/app.asar.unpacked/node_modules/matrix-seshat/index.node
|
||||||
env:
|
env:
|
||||||
ARCH: ${{ steps.config.outputs.arch }}
|
ARCH: ${{ steps.config.outputs.arch }}
|
||||||
|
|
||||||
|
57
scripts/glibc-check.sh
Executable file
57
scripts/glibc-check.sh
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Source https://gist.github.com/vladimyr/9a03481154cd3048a486bdf71e5e1535/57e57a6ace6fb2c8bba948bce726df7a96c3f99f
|
||||||
|
# This scripts lets you check which minimum GLIBC version an executable requires.
|
||||||
|
# Simply run './glibc-check.sh path/to/your/binary'
|
||||||
|
MAX_VER="${MAX_VER:-2.28}"
|
||||||
|
|
||||||
|
BINARY="$1"
|
||||||
|
|
||||||
|
# Version comparison function in bash
|
||||||
|
vercomp() {
|
||||||
|
if [[ $1 == "$2" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
local i ver1 ver2
|
||||||
|
IFS="." read -ra ver1 <<<"$1"
|
||||||
|
IFS="." read -ra ver2 <<<"$2"
|
||||||
|
# fill empty fields in ver1 with zeros
|
||||||
|
for ((i = ${#ver1[@]}; i < ${#ver2[@]}; i++)); do
|
||||||
|
ver1[i]=0
|
||||||
|
done
|
||||||
|
for ((i = 0; i < ${#ver1[@]}; i++)); do
|
||||||
|
if [[ -z ${ver2[i]} ]]; then
|
||||||
|
# fill empty fields in ver2 with zeros
|
||||||
|
ver2[i]=0
|
||||||
|
fi
|
||||||
|
if ((10#${ver1[i]} > 10#${ver2[i]})); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if ((10#${ver1[i]} < 10#${ver2[i]})); then
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
IFS="
|
||||||
|
"
|
||||||
|
VERS=$(objdump -T "$BINARY" | grep GLIBC | sed 's/.*GLIBC_\([.0-9]*\).*/\1/g' | sort -u)
|
||||||
|
|
||||||
|
for VER in $VERS; do
|
||||||
|
vercomp "$VER" "$MAX_VER"
|
||||||
|
COMP=$?
|
||||||
|
if [[ $COMP -eq 1 ]]; then
|
||||||
|
echo "Error! ${BINARY} requests GLIBC ${VER}, which is higher than target ${MAX_VER}"
|
||||||
|
echo "Affected symbols:"
|
||||||
|
objdump -T "$BINARY" | grep -F "GLIBC_${VER}"
|
||||||
|
echo "Looking for symbols in libraries..."
|
||||||
|
for LIBRARY in $(ldd "$BINARY" | cut -d ' ' -f 3); do
|
||||||
|
echo "$LIBRARY"
|
||||||
|
objdump -T "$LIBRARY" | grep -F "GLIBC_${VER}"
|
||||||
|
done
|
||||||
|
exit 27
|
||||||
|
else
|
||||||
|
echo "Found version ${VER}"
|
||||||
|
fi
|
||||||
|
done
|
Loading…
Reference in New Issue
Block a user