From 31e02216c94cc49f90052c82982dec0be7d3133b Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 30 Jan 2019 22:50:11 -0800 Subject: mpeg2dec: Fix global symbol tests Rewrite the public symbol check to verify the shared libraries, to check for more things, and to avoid duplication; fixes make check on ARM Signed-off-by: Khem Raj Signed-off-by: Richard Purdie --- .../mpeg2dec/files/61_global-symbol-test.patch | 70 ++++++++++++++++++++++ meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb | 1 + 2 files changed, 71 insertions(+) create mode 100644 meta/recipes-multimedia/mpeg2dec/files/61_global-symbol-test.patch (limited to 'meta/recipes-multimedia/mpeg2dec') diff --git a/meta/recipes-multimedia/mpeg2dec/files/61_global-symbol-test.patch b/meta/recipes-multimedia/mpeg2dec/files/61_global-symbol-test.patch new file mode 100644 index 0000000000..00b667d336 --- /dev/null +++ b/meta/recipes-multimedia/mpeg2dec/files/61_global-symbol-test.patch @@ -0,0 +1,70 @@ +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 +https://sources.debian.org/src/mpeg2dec/0.5.1-8/debian/patches/61_global-symbol-test.patch/ + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +--- + test/globals | 42 +++++++++++++++++++++++++++--------------- + 1 file changed, 27 insertions(+), 15 deletions(-) + +--- 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 diff --git a/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb b/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb index 7711c2dc10..6b59d4f681 100644 --- a/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb +++ b/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb @@ -10,6 +10,7 @@ SRC_URI = "http://libmpeg2.sourceforge.net/files/libmpeg2-${PV}.tar.gz \ file://altivec_h_needed.patch \ file://0001-check-for-available-arm-optimizations.patch \ file://0002-Set-visibility-of-global-symbols-used-in-ARM-specifi.patch \ + file://61_global-symbol-test.patch \ " S = "${WORKDIR}/libmpeg2-${PV}" -- cgit 1.2.3-korg