wayland-egl: Make symbol test fail on failure

The previous rewrite of the wayland-egl ABI checker introduced checks
for removed symbols as well as added symbols, but broke some failure
conditions. Add an explict return-code variable set in failure paths,
rather than chaining or conditions.

If we cannot find the binary or nm, we regard this as an error
condition, rather than test failure.

v2: Don't test if we can execute $NM.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reported-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Fixes: 21b1f22eb0 ("wayland-egl: enhance the symbol test")
Cc: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
Daniel Stone 2018-03-19 15:13:14 +00:00 committed by Derek Foreman
parent 2031bcf5da
commit 3de11b8d79

View file

@ -1,11 +1,17 @@
#!/bin/sh #!/bin/sh
set -eu set -eu
RET=0
LIB=${WAYLAND_EGL_LIB} LIB=${WAYLAND_EGL_LIB}
if [ ! -f "$LIB" ]; then if ! test -f "$LIB"; then
echo "The test binary \"$LIB\" does no exist" echo "Test binary \"$LIB\" does not exist"
exit 1 exit 99
fi
if ! test -n "$NM"; then
echo "nm environment variable not set"
exit 99
fi fi
AVAIL_FUNCS="$($NM -D --format=bsd --defined-only $LIB | awk '{print $3}')" AVAIL_FUNCS="$($NM -D --format=bsd --defined-only $LIB | awk '{print $3}')"
@ -32,7 +38,11 @@ NEW_ABI=$(echo "$AVAIL_FUNCS" | while read func; do
echo $func echo $func
done) done)
test ! -n "$NEW_ABI" || echo "New ABI detected - If intentional, update the test."; echo "$NEW_ABI" if test -n "$NEW_ABI"; then
echo "New ABI detected - If intentional, update the test."
echo "$NEW_ABI"
RET=1
fi
REMOVED_ABI=$(echo "$REQ_FUNCS" | while read func; do REMOVED_ABI=$(echo "$REQ_FUNCS" | while read func; do
echo "$AVAIL_FUNCS" | grep -q "^$func$" && continue echo "$AVAIL_FUNCS" | grep -q "^$func$" && continue
@ -40,5 +50,10 @@ REMOVED_ABI=$(echo "$REQ_FUNCS" | while read func; do
echo $func echo $func
done) done)
test ! -n "$REMOVED_ABI" || echo "ABI break detected - Required symbol(s) no longer exported!"; echo "$REMOVED_ABI" if test -n "$REMOVED_ABI"; then
test ! -n "$NEW_ABI" || test ! -n "$REMOVED_ABI" echo "ABI break detected - Required symbol(s) no longer exported!"
echo "$REMOVED_ABI"
RET=1
fi
exit $RET