build/qemu-wrap
author Nick Alexander <nalexander@mozilla.com>
Tue, 01 Mar 2016 20:12:04 -0800
changeset 287833 d316d6160a5f23b6baabb17ad08872c43c59e37a
parent 113444 1a53df18c076a7388496b9d78cceb855ce793735
permissions -rwxr-xr-x
Bug 1252928 - Part 1: Use Jake Wharton's sdk-manager-plugin in Fennec's Gradle configuration. r=sebastian This is a version produced locally from https://github.com/JakeWharton/sdk-manager-plugin/commit/1d07987217120fffdc0ce1291d73e974310d7d92. I used |./gradlew install| and then copied the pieces out of ~/.m2/repository. Local builders should never download using this plugin, since |mach configure| ensures that all the relevant pieces can already be found. It's just useful in automation; and as an eventual replacement for chunks of |mach bootstrap|. MozReview-Commit-ID: 9JiFe0xLr99

#!/bin/bash
# this script creates a wrapper shell script for an executable.  The idea is the actual executable cannot be
# executed natively (it was cross compiled), but we want to run tests natively.  Running this script
# as part of the compilation process will move the non-native executable to a new location, and replace it
# with a script that will run it under qemu.
while [[ -n $1 ]]; do
    case $1 in
        --qemu) QEMU="$2"; shift 2;;
        --libdir) LIBDIR="$2"; shift 2;;
        --ld) LD="$2"; shift 2;;
        *) exe="$1"; shift;;
    esac
done
if [[ -z $LIBDIR ]]; then
    echo "You need to specify a directory for the cross libraries when you configure the shell"
    echo "You can do this with --with-cross-lib="
    exit 1
fi
LD=${LD:-$LIBDIR/ld-linux.so.3}
mv $exe $exe.target
# Just hardcode the path to the executable.  It'll be pretty obvious if it is doing the wrong thing.

echo $'#!/bin/bash\n' $QEMU -E LD_LIBRARY_PATH="${LIBDIR}" "$LD" "$(readlink -f "$exe.target")" '"$@"' >"$exe"
chmod +x $exe