[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