[Pkg-xen-devel] [PATCH 01/16] d/shuffle-binaries: Fix binary shuffling script for cross-building

Hans van Kranenburg hans at knorrie.org
Fri Jan 15 21:05:32 GMT 2021


On 7/17/20 8:37 AM, Elliott Mitchell wrote:
> `ldd` doesn't work with cross-builds, so use `file` to detect scripts
> and `strings | grep` for identifying linked libraries.  Even though
> debhelper depends on file, make the requirement explicit.
> 
> Heavily simplify script inner loop.  While the core of that inner loop
> was often executed only once, it is best to shrink inner loops.

Ok, fix for cross-build, and it IMO certainly makes the script more
readable.

Acked-by: Hans van Kranenburg <hans at knorrie.org>

> Signed-off-by: Elliott Mitchell <ehem+debian at m5p.com>
> ---
>  debian/control          |  1 +
>  debian/shuffle-binaries | 31 ++++++++++++++++---------------
>  2 files changed, 17 insertions(+), 15 deletions(-)
> 
> diff --git a/debian/control b/debian/control
> index 942bf6711c..1f88f1a40f 100644
> --- a/debian/control
> +++ b/debian/control
> @@ -8,6 +8,7 @@ Build-Depends:
>     debhelper (>= 10),
>     dh-exec,
>     dpkg-dev (>= 1.16.0~),
> +   file,
>     rdfind,
>     lsb-release,
>     flex, bison,
> diff --git a/debian/shuffle-binaries b/debian/shuffle-binaries
> index 8a823da10b..d7a832bbe0 100755
> --- a/debian/shuffle-binaries
> +++ b/debian/shuffle-binaries
> @@ -23,28 +23,29 @@ cd=/usr/lib/xen-common/bin
>  mkdir -p "$t/$vd"
>  
>  for binary in `find $t/usr/{bin,sbin} -type f`; do
> -	reason=''
> -	{ ldd "$binary" ||: ; } | { fgrep '=>' ||: ; } \
> -	| (
> -		while read lib dummy; do
> +	# filter for executables (ignore scripts)
> +	file "$binary" | grep -q -eELF.\\+version.\\+interpreter || continue
> +
> +	# ldd doesn't work for cross-building
> +	reason=$(
> +		strings "$binary" | grep -e^lib.\\+\\.so\\.\[.0-9\]\\+\$ | \
> +		while read lib; do
>  			lib=${lib%.so.*}
> -			if grep -F "usr/lib/*/$lib.so.*" $list >/dev/null; then
> -				reason+=" $lib"
> +			if grep -q -F "usr/lib/*/$lib.so.*" $list; then
> +				printf " %s" "$lib"
>  			fi
>  		done
> +	)
>  
> -		if [ "x$reason" = x ]; then
> -			exit 0
> -		fi
> +	# if no reason, then skip
> +	[ -n "$reason" ] || continue
>  
> -		echo "shuffling $binary $reason"
> +	echo "shuffling $binary$reason"
>  
> -		leaf=${binary##*}
> -		mv -v $binary $t/$vd/$leaf
> -		ln -vs $cd/xen-utils-wrapper $binary
> +	mv -v "$binary" "$t/$vd/"
> +	ln -vs "$cd/xen-utils-wrapper" "$binary"
>  
> -		touch debian/shuffle-binaries.stamp
> -	)
> +	touch "$0.stamp"
>  done
>  
>  if [ ! -e "$0.stamp" ]; then
> 




More information about the Pkg-xen-devel mailing list