diff options
author | Khem Raj <raj.khem@gmail.com> | 2019-01-30 22:50:11 -0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-02-02 11:06:00 +0000 |
commit | bbc4c8eb9b2ebde05b2cb1d01e693cda9083ae6d (patch) | |
tree | 1cddb8e3aa706890685ddbcb329b180ceaefc0b7 /meta/recipes-multimedia | |
parent | ba7731646ee1342d997310f9efe2629ac08401b3 (diff) | |
download | poky-bbc4c8eb9b2ebde05b2cb1d01e693cda9083ae6d.tar.gz |
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
(From OE-Core rev: 31e02216c94cc49f90052c82982dec0be7d3133b)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-multimedia')
-rw-r--r-- | meta/recipes-multimedia/mpeg2dec/files/61_global-symbol-test.patch | 70 | ||||
-rw-r--r-- | meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb | 1 |
2 files changed, 71 insertions, 0 deletions
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 @@ | |||
1 | Rewrite the public symbol check to verify the shared libraries, to check for | ||
2 | more things, and to avoid duplication; fixes make check on ARM | ||
3 | |||
4 | Taken From | ||
5 | https://sources.debian.org/src/mpeg2dec/0.5.1-8/debian/patches/61_global-symbol-test.patch/ | ||
6 | |||
7 | Upstream-Status: Pending | ||
8 | |||
9 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
10 | --- | ||
11 | test/globals | 42 +++++++++++++++++++++++++++--------------- | ||
12 | 1 file changed, 27 insertions(+), 15 deletions(-) | ||
13 | |||
14 | --- mpeg2dec.orig/test/globals | ||
15 | +++ mpeg2dec/test/globals | ||
16 | @@ -1,4 +1,8 @@ | ||
17 | #!/bin/sh | ||
18 | +# TODO | ||
19 | +# - fix checking of .a libs; problem is that "nm -g --defined-only" lists | ||
20 | +# internal symbols; this can be solved by using objdump, but it's probably | ||
21 | +# good enough to just run the tests on the shared lib | ||
22 | |||
23 | if test x"$srcdir" != x""; then | ||
24 | builddir="." # running from make check, but it does not define that | ||
25 | @@ -14,22 +18,30 @@ builddir=`cd $builddir;pwd` | ||
26 | |||
27 | error=0 | ||
28 | |||
29 | -bad_globals=`nm -g --defined-only $builddir/../libmpeg2/*.o |\ | ||
30 | - awk '{if ($3) print $3}' | grep -v '^_\?mpeg2_'` | ||
31 | - | ||
32 | -if test x"$bad_globals" != x""; then | ||
33 | - echo BAD GLOBAL SYMBOLS: | ||
34 | - for s in $bad_globals; do echo $s; done | ||
35 | +# check_bad_public_symbols <symbol prefix> <lib file> [<lib file>...] | ||
36 | +# | ||
37 | +# checks public symbols in shared libs: | ||
38 | +# - allow prefix_anything | ||
39 | +# - reject _prefixanything | ||
40 | +# - allow _anything | ||
41 | +# - reject anything else | ||
42 | +# | ||
43 | +# NB: skips missing files | ||
44 | +check_bad_public_symbols() { | ||
45 | + symbols_prefix="$1" | ||
46 | + shift | ||
47 | + lib_files=`ls "$@" 2>/dev/null` | ||
48 | + [ -z "$lib_files" ] && return | ||
49 | + bad_globals=`nm -g --defined-only $lib_files | | ||
50 | + awk '{if ($3) print $3}' | | ||
51 | + sed -n "/^${symbols_prefix}_/ d; /^_${symbols_prefix}/ { p; d }; /^_/ d; p"` | ||
52 | + [ -z "$bad_globals" ] && return | ||
53 | error=1 | ||
54 | -fi | ||
55 | - | ||
56 | -bad_globals=`nm -g --defined-only $builddir/../libmpeg2/convert/*.o |\ | ||
57 | - awk '{if ($3) print $3}' | grep -v '^_\?mpeg2convert_'` | ||
58 | + echo BAD GLOBAL SYMBOLS in $lib_files: | ||
59 | + echo "$bad_globals" | ||
60 | +} | ||
61 | |||
62 | -if test x"$bad_globals" != x""; then | ||
63 | - echo BAD GLOBAL SYMBOLS: | ||
64 | - for s in $bad_globals; do echo $s; done | ||
65 | - error=1 | ||
66 | -fi | ||
67 | +check_bad_public_symbols mpeg2 $builddir/../libmpeg2/.libs/libmpeg2.so | ||
68 | +check_bad_public_symbols mpeg2convert $builddir/../libmpeg2/convert/.libs/libmpeg2convert.so | ||
69 | |||
70 | 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 \ | |||
10 | file://altivec_h_needed.patch \ | 10 | file://altivec_h_needed.patch \ |
11 | file://0001-check-for-available-arm-optimizations.patch \ | 11 | file://0001-check-for-available-arm-optimizations.patch \ |
12 | file://0002-Set-visibility-of-global-symbols-used-in-ARM-specifi.patch \ | 12 | file://0002-Set-visibility-of-global-symbols-used-in-ARM-specifi.patch \ |
13 | file://61_global-symbol-test.patch \ | ||
13 | " | 14 | " |
14 | 15 | ||
15 | S = "${WORKDIR}/libmpeg2-${PV}" | 16 | S = "${WORKDIR}/libmpeg2-${PV}" |