[zorg] r306992 - [sanitizers] Parallel cmake execution for android targets
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 2 14:10:33 PDT 2017
Author: vitalybuka
Date: Sun Jul 2 14:10:33 2017
New Revision: 306992
URL: http://llvm.org/viewvc/llvm-project?rev=306992&view=rev
Log:
[sanitizers] Parallel cmake execution for android targets
Modified:
zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android.sh
zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android_functions.sh
Modified: zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android.sh
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android.sh?rev=306992&r1=306991&r2=306992&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android.sh (original)
+++ zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android.sh Sun Jul 2 14:10:33 2017
@@ -55,21 +55,24 @@ fi
CMAKE_COMMON_OPTIONS=-DLLVM_ENABLE_ASSERTIONS=ON
-build_android() {
- CPU=$1
- TRIPLE=$2
- NDK_ARCH=$3
- ABI=$4
- build_android_ndk $CPU $NDK_ARCH
- build_compiler_rt $CPU $TRIPLE
- build_llvm_symbolizer $CPU $TRIPLE
- test_android $CPU $ABI @@@STEP_FAILURE@@@
-}
+build_android_ndk aarch64 arm64
+build_android_ndk arm arm
+build_android_ndk i686 x86
-build_android aarch64 aarch64-linux-android arm64 arm64-v8a
+echo @@@BUILD_STEP run cmake@@@
+configure_android aarch64 aarch64-linux-android
+configure_android arm armv7-linux-androideabi
+configure_android i686 i686-linux-android
+build_android aarch64
+build_android arm
+build_android i686
+
+restart_adb_server
+
+test_android i686 x86
+test_android aarch64 arm64-v8a
# Testing armv7 instead of plain arm to work around
# https://code.google.com/p/android/issues/detail?id=68779
-build_android arm armv7-linux-androideabi arm armeabi-v7a
+test_android arm armeabi-v7a
-build_android i686 i686-linux-android x86 x86
Modified: zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android_functions.sh
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android_functions.sh?rev=306992&r1=306991&r2=306992&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android_functions.sh (original)
+++ zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_android_functions.sh Sun Jul 2 14:10:33 2017
@@ -36,19 +36,18 @@ function build_android_ndk {
fi
}
-function build_llvm_symbolizer { # ARCH triple
+function configure_android { # ARCH triple
local _arch=$1
local _triple=$2
- echo @@@BUILD_STEP build llvm-symbolizer android/$_arch@@@
-
- rm -rf llvm_build_android_$_arch
- mkdir llvm_build_android_$_arch
- cd llvm_build_android_$_arch
-
local ANDROID_TOOLCHAIN=$ROOT/android_ndk/standalone-$_arch
+ local ANDROID_LIBRARY_OUTPUT_DIR=$(ls -d $ROOT/llvm_build64/lib/clang/* | tail -1)
+ local ANDROID_EXEC_OUTPUT_DIR=$ROOT/llvm_build64/bin
local ANDROID_FLAGS="--target=$_triple --sysroot=$ANDROID_TOOLCHAIN/sysroot -B$ANDROID_TOOLCHAIN"
- cmake -GNinja \
+
+ rm -rf llvm_build_android_$_arch
+ mkdir -p llvm_build_android_$_arch
+ (cd llvm_build_android_$_arch && cmake -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_WERROR=OFF \
-DCMAKE_C_COMPILER=$ROOT/llvm_build64/bin/clang \
@@ -60,31 +59,14 @@ function build_llvm_symbolizer { # ARCH
-DLLVM_BUILD_RUNTIME=OFF \
-DLLVM_TABLEGEN=$ROOT/llvm_build64/bin/llvm-tblgen \
${CMAKE_COMMON_OPTIONS} \
- $LLVM || echo @@@STEP_FAILURE@@@
- ninja llvm-symbolizer || echo @@@STEP_FAILURE@@@
-
- cd ..
-}
-
-function build_compiler_rt { # ARCH triple
- local _arch=$1
- local _triple=$2
-
- echo @@@BUILD_STEP build compiler-rt android/$_arch@@@
-
- local ANDROID_TOOLCHAIN=$ROOT/android_ndk/standalone-$_arch
- local ANDROID_LIBRARY_OUTPUT_DIR=$(ls -d $ROOT/llvm_build64/lib/clang/* | tail -1)
- local ANDROID_EXEC_OUTPUT_DIR=$ROOT/llvm_build64/bin
- local ANDROID_FLAGS="--target=$_triple --sysroot=$ANDROID_TOOLCHAIN/sysroot -B$ANDROID_TOOLCHAIN"
-
+ $LLVM || echo @@@STEP_FAILURE@@@) &
+
# Always clobber android build tree.
# It has a hidden dependency on clang (through CXX) which is not known to
# the build system.
rm -rf compiler_rt_build_android_$_arch
mkdir compiler_rt_build_android_$_arch
- cd compiler_rt_build_android_$_arch
-
- cmake -GNinja -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
+ (cd compiler_rt_build_android_$_arch && cmake -GNinja -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_C_COMPILER=$ROOT/llvm_build64/bin/clang \
-DCMAKE_CXX_COMPILER=$ROOT/llvm_build64/bin/clang++ \
-DLLVM_CONFIG_PATH=$ROOT/llvm_build64/bin/llvm-config \
@@ -98,11 +80,15 @@ function build_compiler_rt { # ARCH trip
-DCOMPILER_RT_OUTPUT_DIR="$ANDROID_LIBRARY_OUTPUT_DIR" \
-DCOMPILER_RT_EXEC_OUTPUT_DIR="$ANDROID_EXEC_OUTPUT_DIR" \
${CMAKE_COMMON_OPTIONS} \
- $LLVM/projects/compiler-rt || echo @@@STEP_FAILURE@@@
- ninja asan AsanUnitTests SanitizerUnitTests || echo @@@STEP_FAILURE@@@
- ls "$ANDROID_LIBRARY_OUTPUT_DIR"
+ $LLVM/projects/compiler-rt || echo @@@STEP_FAILURE@@@) &
+}
- cd ..
+function build_android {
+ local _arch=$1
+ wait
+ echo @@@BUILD_STEP build android/$_arch@@@
+ ninja -C llvm_build_android_$_arch llvm-symbolizer || echo @@@STEP_FAILURE@@@
+ ninja -C compiler_rt_build_android_$_arch asan AsanUnitTests SanitizerUnitTests || echo @@@STEP_FAILURE@@@
}
# If a multiarch device has x86 as the first arch, remove everything else from
@@ -117,16 +103,20 @@ function patch_abilist { # IN OUT
eval $_out="'$_abilist'"
}
-function test_android { # ARCH ABI STEP_FAILURE
- local _arch=$1
- local _abi=$2
- local _step_failure=$3
+function restart_adb_server {
ADB=adb
- echo @@@BUILD_STEP find device for android/$_arch@@@
+ echo @@@BUILD_STEP restart adb server@@@
$ADB kill-server
sleep 2
$ADB start-server
sleep 2
+}
+
+function test_android {
+ local _arch=$1
+ local _abi=$2
+ ADB=adb
+ echo @@@BUILD_STEP find device for android/$_arch@@@
ANDROID_DEVICES=$(${ADB} devices | grep 'device$' | awk '{print $1}')
local FOUND=0
for SERIAL in $ANDROID_DEVICES; do
@@ -135,7 +125,7 @@ function test_android { # ARCH ABI STEP_
if [[ $ABILIST == *"$_abi"* ]]; then
BUILD_ID=$(${ADB} -s $SERIAL shell getprop ro.build.id | tr -d '\r')
BUILD_FLAVOR=$(${ADB} -s $SERIAL shell getprop ro.build.flavor | tr -d '\r')
- test_android_on_device "$_arch" "$SERIAL" "$BUILD_ID" "$BUILD_FLAVOR" "$_step_failure"
+ test_android_on_device "$_arch" "$SERIAL" "$BUILD_ID" "$BUILD_FLAVOR"
FOUND=1
fi
done
@@ -153,12 +143,11 @@ function run_command_on_device {
return $($ADB shell "cat $EXIT_CODE")
}
-function test_android_on_device { # ARCH SERIAL BUILD_ID BUILD_FLAVOR STEP_FAILURE
+function test_android_on_device {
local _arch=$1
local _serial=$2
local _build_id=$3
local _build_flavor=$4
- local _step_failure=$5 # @@@STEP_FAILURE@@@ or @@@STEP_WARNINGS@@@
DEVICE_DESCRIPTION=$_arch/$_build_flavor/$_build_id
@@ -187,16 +176,16 @@ function test_android_on_device { # ARCH
wait
echo @@@BUILD_STEP run asan lit tests [$DEVICE_DESCRIPTION]@@@
- (cd $COMPILER_RT_BUILD_DIR && ninja check-asan) || echo $_step_failure
+ (cd $COMPILER_RT_BUILD_DIR && ninja check-asan) || echo @@@STEP_FAILURE@@@
echo @@@BUILD_STEP run sanitizer_common tests [$DEVICE_DESCRIPTION]@@@
- run_command_on_device $DEVICE_ROOT/SanitizerTest || echo $_step_failure
+ run_command_on_device $DEVICE_ROOT/SanitizerTest || echo @@@STEP_FAILURE@@@
echo @@@BUILD_STEP run asan tests [$DEVICE_DESCRIPTION]@@@
NUM_SHARDS=7
for ((SHARD=0; SHARD < $NUM_SHARDS; SHARD++)); do
local ENV="GTEST_TOTAL_SHARDS=$NUM_SHARDS GTEST_SHARD_INDEX=$SHARD LD_LIBRARY_PATH=$DEVICE_ROOT"
- run_command_on_device "ASAN_OPTIONS=start_deactivated=1 $ENV $DEVICE_ROOT/AsanTest" || echo $_step_failure
- run_command_on_device "$ENV $DEVICE_ROOT/AsanNoinstTest" || echo $_step_failure
+ run_command_on_device "ASAN_OPTIONS=start_deactivated=1 $ENV $DEVICE_ROOT/AsanTest" || echo @@@STEP_FAILURE@@@
+ run_command_on_device "$ENV $DEVICE_ROOT/AsanNoinstTest" || echo @@@STEP_FAILURE@@@
done
}
More information about the llvm-commits
mailing list