summaryrefslogtreecommitdiff
path: root/verify-so.sh
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2016-11-29 19:09:35 +0100
committerGitHub <noreply@github.com>2016-11-29 19:09:35 +0100
commit74816870ce9ff5ec41d30455a7dcc3b5d327bf45 (patch)
treefc148a063f34c8bfc70e15d24a5e4abba272f78d /verify-so.sh
parente67851210d1c03d730a3bc97a87e8a6713bbf772 (diff)
downloadcoreclr-74816870ce9ff5ec41d30455a7dcc3b5d327bf45.tar.gz
coreclr-74816870ce9ff5ec41d30455a7dcc3b5d327bf45.tar.bz2
coreclr-74816870ce9ff5ec41d30455a7dcc3b5d327bf45.zip
Fix shared library dependencies verification on some platforms (#8349)
The existing way of verifying shared library dependencies, used for System.Globalization.Native.so, doesn't work on platforms that don't have ldd or where ldd doesn't support the `-r` option. This change makes the check happen on non-Alpine Linux only for now. It also refactors the way the check is performed. Instead of doing it post build in the build.sh, it is now performed as a postbuild phase of the System.Globalization.Native target and it is also generalized so that we can easily add such verification to other build targets. The new verify-so.sh script is also used in corefx.
Diffstat (limited to 'verify-so.sh')
-rwxr-xr-xverify-so.sh20
1 files changed, 20 insertions, 0 deletions
diff --git a/verify-so.sh b/verify-so.sh
new file mode 100755
index 0000000000..3907cf1db0
--- /dev/null
+++ b/verify-so.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+# $1 contains full path to the .so to verify
+# $2 contains message to print when the verification fails
+
+OSName=$(uname -s)
+case $OSName in
+ Linux)
+ source /etc/os-release
+ # TODO: add support for verification on Alpine Linux
+ if [ "$ID" != "alpine" ]; then
+ ldd -r $1 | awk 'BEGIN {count=0} /undefined symbol:/ { if (count==0) {print "Undefined symbol(s) found:"} print " " $3; count++ } END {if (count>0) exit(1)}'
+ if [ $? != 0 ]; then
+ echo "$2"
+ exit 1
+ fi
+ fi
+ ;;
+esac
+
+# TODO: add support for verification on non-Linux Unixes (except of OSX)