[Pkg-xen-devel] [PATCH 03/12] debian/rules: Fix binary shuffling script for cross-building
Elliott Mitchell
ehem+debian at m5p.com
Fri Jul 17 07:37:42 BST 2020
`ldd` doesn't work with cross-builds, so use `file` to detect scripts
and `strings | grep` for identifying linked libraries.
Script almost conforms to POSIX shell standard, so adjust to conform and
switch to /bin/sh. Simplify pipe structure, do more work in parent
shell.
Signed-off-by: Elliott Mitchell <ehem+debian at m5p.com>
---
debian/shuffle-binaries | 45 +++++++++++++++++++++++------------------
1 file changed, 25 insertions(+), 20 deletions(-)
diff --git a/debian/shuffle-binaries b/debian/shuffle-binaries
index cff6de5428..de98e6d799 100755
--- a/debian/shuffle-binaries
+++ b/debian/shuffle-binaries
@@ -1,6 +1,5 @@
-#!/bin/bash
+#!/bin/sh
set -e
-set -o pipefail
version=$1; shift
@@ -20,31 +19,37 @@ t=debian/tmp
vd=/usr/lib/xen-$version/bin
cd=/usr/lib/xen-common/bin
-mkdir -p $t/$vd
+mkdir -p "$t/$vd"
-for binary in `find $t/usr/{bin,sbin} -type f`; do
- reason=''
- { ldd "$binary" ||: ; } | { fgrep '=>' ||: ; } \
- | (
- while read lib dummy; do
+find "$t"/usr/*bin -type f | while read exec; do
+
+ # filter out scripts
+ file "$exec" | grep -q -eELF.\\+version.\\+interpreter || continue
+
+ # ldd doesn't work for cross-building
+ reason=$(
+ strings "$exec" | 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 $exec$reason"
- leaf=${binary##*}
- mv -v $binary $t/$vd/$leaf
- ln -vs $cd/xen-utils-wrapper $binary
+ leaf=${exec##*}
+ mv -v $exec $t/$vd/$leaf
+ ln -vs $cd/xen-utils-wrapper $exec
- touch debian/shuffle-binaries.stamp
- )
+ touch "$0.stamp"
done
-ls debian/shuffle-binaries.stamp
+if [ ! -e "$0.stamp" ]; then
+ echo "Failed to shuffle binaries!" 1>&2
+ exit 1
+fi
--
(\___(\___(\______ --=> 8-) EHM <=-- ______/)___/)___/)
\BS ( | ehem+sigmsg at m5p.com PGP 87145445 | ) /
\_CS\ | _____ -O #include <stddisclaimer.h> O- _____ | / _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445
More information about the Pkg-xen-devel
mailing list