[Pkg-xen-devel] [PATCH 01/16] d/shuffle-binaries: Fix binary shuffling script for cross-building
Hans van Kranenburg
hans at knorrie.org
Sat Jan 16 20:25:03 GMT 2021
On 1/15/21 10:05 PM, Hans van Kranenburg wrote:
> 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>
I also updated the comments in the file, which are invalid after this
change.
>
>> 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