[Pkg-xen-devel] [PATCH 06/19] d/shuffle-binaries: Fix binary shuffling script for cross-building
Elliott Mitchell
ehem+debian at m5p.com
Wed Dec 2 19:49:58 GMT 2020
`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
--
--
(\___(\___(\______ --=> 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