[Pkg-xen-devel] [PATCH 06/19] d/shuffle-binaries: Fix binary shuffling script for cross-building
Hans van Kranenburg
hans at knorrie.org
Fri Dec 4 21:04:35 GMT 2020
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.
>
> 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..90007f6a02 100644
> --- a/debian/control
> +++ b/debian/control
> @@ -6,6 +6,7 @@ Section: admin
> Standards-Version: 4.5.0
> Build-Depends:
> debhelper (>= 10),
> + file,
> dh-exec,
> dpkg-dev (>= 1.16.0~),
> rdfind,
> diff --git a/debian/shuffle-binaries b/debian/shuffle-binaries
> index 37176d26e7..03b4bc4794 100755
> --- a/debian/shuffle-binaries
> +++ b/debian/shuffle-binaries
> @@ -24,28 +24,29 @@ mkdir -p "$t/$vd"
>
> find "$t"/usr/*bin -type f | while read binary; 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
>
Ok, this one does not apply:
~/build/xen/debian-xen k (knorrie/sid) 0-$ git am -3
20201204-2028-ehem/06\ d_shuffle-binaries\:\ Fix\ binary\ shuffling\
script\ for\ cross-building\ -\ Elliott\ Mitchell\
\<ehem+debian at m5p.com\>\ -\ 2020-07-17\ 0837.eml
Applying: d/shuffle-binaries: Fix binary shuffling script for cross-building
error: sha1 information is lacking or useless (debian/shuffle-binaries).
error: could not build fake ancestor
Patch failed at 0001 d/shuffle-binaries: Fix binary shuffling script for
cross-building
hint: Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
When I use git am --show-current-patch I get a big pile of crap because
you're not using git send-email.
I don't know what to do with this now.
Hans
More information about the Pkg-xen-devel
mailing list