run-on-host fixes

* Fix the path to bionic-benchmarks-glibc

 * Add symlinks for the toybox symlink commands. Each symlink bypasses the
   intermediate symlink in ${OUT}/system/bin and points to the final
   toybox binary. Suppress a bunch of warnings by skipping symlinks for
   non-existent files.

   The new spawn benchmarks try to run /system/bin/true. (They also try to
   run /vendor/bin/true and print an error.)

 * Quote "$@"

 * Use soong_ui.bash --dumpvars-mode to set a bunch of variables, rather
   than get_build_var, which invokes Soong once per variable. This reduces
   the "build/run-on-host.sh" runtime from 4s to 1.3s.

 * build/run-on-host.sh isn't executable and is only useful when it's
   sourced into another shell, so remove its shebang to reduce confusion.

Bug: none
Test: \
  . build/envsetup.sh
  lunch aosp_x86_64-userdebug
  . bionic/build/run-on-host.sh
  prepare MODULES-IN-bionic MODULES-IN-external-toybox
  /system/bin/true

Change-Id: I59e9a6aca77d35b16bdf51759c5fc7e725bfc67c
This commit is contained in:
Ryan Prichard 2019-09-20 15:42:48 -07:00
parent 14d5c12ed6
commit 3cfb89d451
2 changed files with 32 additions and 20 deletions

View file

@ -8,7 +8,7 @@ if [ "$1" = glibc ]; then
cd ${ANDROID_BUILD_TOP}
export ANDROID_DATA=${TARGET_OUT_DATA}
export ANDROID_ROOT=${TARGET_OUT}
${HOST_OUT}/nativetest64/bionic-benchmarks-glibc/bionic-benchmarks-glibc $@
${HOST_OUT}/benchmarktest64/bionic-benchmarks-glibc/bionic-benchmarks-glibc "$@"
)
exit 0
elif [ "$1" != 32 -a "$1" != 64 ]; then
@ -25,7 +25,7 @@ if [ ${HOST_OS}-${HOST_ARCH} = linux-x86 -o ${HOST_OS}-${HOST_ARCH} = linux-x86_
cd ${ANDROID_BUILD_TOP}
export ANDROID_DATA=${TARGET_OUT_DATA}
export ANDROID_ROOT=${TARGET_OUT}
${BENCHMARKS}/bionic-benchmarks/bionic-benchmarks $@
${BENCHMARKS}/bionic-benchmarks/bionic-benchmarks "$@"
)
else
echo "$0 not supported on TARGET_ARCH=$TARGET_ARCH"

View file

@ -1,18 +1,21 @@
#!/bin/bash -e
# source this script in bash
source ${ANDROID_BUILD_TOP}/build/envsetup.sh
TARGET_ARCH=$(get_build_var TARGET_ARCH)
TARGET_OUT=$(get_build_var TARGET_OUT)
TARGET_OUT_EXECUTABLES=$(get_build_var TARGET_OUT_EXECUTABLES)
TARGET_OUT_DATA=$(get_build_var TARGET_OUT_DATA)
HOST_OS=$(get_build_var HOST_OS)
HOST_ARCH=$(get_build_var HOST_ARCH)
HOST_OUT=$(get_build_var HOST_OUT)
# See envsetup.sh for an example of using --dumpvars-mode to set shell variables.
eval "$(cd ${ANDROID_BUILD_TOP}; build/soong/soong_ui.bash --dumpvars-mode --vars="\
TARGET_ARCH \
TARGET_OUT \
TARGET_OUT_EXECUTABLES \
TARGET_OUT_DATA \
HOST_OS \
HOST_ARCH \
HOST_OUT \
")"
function prepare()
{
BITS=$1
local BITS=$1
shift
BENCHMARKS=${TARGET_OUT_DATA}/benchmarktest
@ -23,27 +26,36 @@ function prepare()
fi
if [ ${TARGET_ARCH} = x86 -o ${TARGET_ARCH} = x86_64 ]; then
m -j MODULES-IN-bionic MODULES-IN-external-icu MODULES-IN-external-mksh ${TARGET_OUT}/etc/hosts $@
m -j MODULES-IN-bionic MODULES-IN-external-icu MODULES-IN-external-mksh ${TARGET_OUT}/etc/hosts "$@"
if [ ! -d /system ]; then
echo "Attempting to create /system";
sudo mkdir -p -m 0777 /system;
mkdir -p -m 0777 /system/bin;
mkdir -p -m 0777 /system/lib;
mkdir -p -m 0777 /system/lib64;
echo "Attempting to create /system"
sudo mkdir -p -m 0777 /system
mkdir -p -m 0777 /system/bin
mkdir -p -m 0777 /system/lib
mkdir -p -m 0777 /system/lib64
fi
(
function make_link() {
dir=$1
tgt=$2
name=`basename ${tgt}`
src=$dir/$name
if [ -e $tgt ]; then
ln -sfT `realpath ${tgt}` $src
fi
}
cd ${ANDROID_BUILD_TOP}
mkdir -p ${TARGET_OUT_DATA}/local/tmp
for i in ${TARGET_OUT}/bin/bootstrap/* ${TARGET_OUT}/bin/*; do
ln -fs `realpath ${i}` /system/bin/
make_link /system/bin ${i}
done
ln -fs `realpath ${TARGET_OUT}/etc` /system/
for i in ${TARGET_OUT}/lib/bootstrap/* ${TARGET_OUT}/lib/*; do
ln -fs `realpath ${i}` /system/lib/
make_link /system/lib ${i}
done
for i in ${TARGET_OUT}/lib64/bootstrap/* ${TARGET_OUT}/lib64/*; do
ln -fs `realpath ${i}` /system/lib64/
make_link /system/lib64 ${i}
done
)
fi