Rewrite the public symbol check to verify the shared libraries, to check for more things, and to avoid duplication; fixes make check on ARM Taken from Debian: https://salsa.debian.org/multimedia-team/mpeg2dec/blob/master/debian/patches/61_global-symbol-test.patch --- mpeg2dec.orig/test/globals +++ mpeg2dec/test/globals @@ -1,4 +1,8 @@ #!/bin/sh +# TODO +# - fix checking of .a libs; problem is that "nm -g --defined-only" lists +# internal symbols; this can be solved by using objdump, but it's probably +# good enough to just run the tests on the shared lib if test x"$srcdir" != x""; then builddir="." # running from make check, but it does not define that @@ -14,22 +18,30 @@ builddir=`cd $builddir;pwd` error=0 -bad_globals=`nm -g --defined-only $builddir/../libmpeg2/*.o |\ - awk '{if ($3) print $3}' | grep -v '^_\?mpeg2_'` - -if test x"$bad_globals" != x""; then - echo BAD GLOBAL SYMBOLS: - for s in $bad_globals; do echo $s; done +# check_bad_public_symbols [...] +# +# checks public symbols in shared libs: +# - allow prefix_anything +# - reject _prefixanything +# - allow _anything +# - reject anything else +# +# NB: skips missing files +check_bad_public_symbols() { + symbols_prefix="$1" + shift + lib_files=`ls "$@" 2>/dev/null` + [ -z "$lib_files" ] && return + bad_globals=`nm -g --defined-only $lib_files | + awk '{if ($3) print $3}' | + sed -n "/^${symbols_prefix}_/ d; /^_${symbols_prefix}/ { p; d }; /^_/ d; p"` + [ -z "$bad_globals" ] && return error=1 -fi - -bad_globals=`nm -g --defined-only $builddir/../libmpeg2/convert/*.o |\ - awk '{if ($3) print $3}' | grep -v '^_\?mpeg2convert_'` + echo BAD GLOBAL SYMBOLS in $lib_files: + echo "$bad_globals" +} -if test x"$bad_globals" != x""; then - echo BAD GLOBAL SYMBOLS: - for s in $bad_globals; do echo $s; done - error=1 -fi +check_bad_public_symbols mpeg2 $builddir/../libmpeg2/.libs/libmpeg2.so +check_bad_public_symbols mpeg2convert $builddir/../libmpeg2/convert/.libs/libmpeg2convert.so exit $error /tests?id=cbf169608c223cdfb8bbd62f82129d5c674ef0a6'>tests/debug-link.scm
AgeCommit message (Expand)Author
2018-11-12tests: Add 'test-assertm' to (guix tests)....* guix/tests.scm (test-assertm): New macro. * tests/gexp.scm (test-assertm): Remove. * tests/profiles.scm (test-assertm): Remove. * tests/challenge.scm (%store, test-assertm): Remove. * tests/debug-link.scm (%store, test-assertm): Remove. * tests/size.scm (%store, test-assertm): Remove. Ludovic Courtès
2018-08-24grafts: Add (guix build debug-link) and use it....Fixes <https://bugs.gnu.org/19973>. Reported by Mark H Weaver <mhw@netris.org>. * guix/build/debug-link.scm: New file. * guix/build/graft.scm (%graft-hooks): New variable. (graft): Add #:hooks and honor it. * guix/grafts.scm (graft-derivation/shallow): Add (guix build debug-link) and (guix elf) to #:modules. * tests/debug-link.scm: New file. * Makefile.am (MODULES): Add guix/build/debug-link.scm. (SCM_TESTS): Add tests/debug-link.scm. Ludovic Courtès