From 74816870ce9ff5ec41d30455a7dcc3b5d327bf45 Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Tue, 29 Nov 2016 19:09:35 +0100 Subject: 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. --- verify-so.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100755 verify-so.sh (limited to 'verify-so.sh') 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) -- cgit v1.2.3