* gnu/packages/patches/libmpeg2-arm-private-symbols.patch, gnu/packages/patches/libmpeg2-global-symbol-test.patch: New files. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/video.scm (libmpeg2)[source](patches): New field.
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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 <symbol prefix> <lib file> [<lib file>...]
 | |
| +#
 | |
| +# 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
 |