1*795d594fSAndroid Build Coastguard Worker#! /bin/bash 2*795d594fSAndroid Build Coastguard Worker# 3*795d594fSAndroid Build Coastguard Worker# Copyright (C) 2021 The Android Open Source Project 4*795d594fSAndroid Build Coastguard Worker# 5*795d594fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*795d594fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*795d594fSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*795d594fSAndroid Build Coastguard Worker# 9*795d594fSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*795d594fSAndroid Build Coastguard Worker# 11*795d594fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*795d594fSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*795d594fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*795d594fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*795d594fSAndroid Build Coastguard Worker# limitations under the License. 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker# Utilities for buildbot. This script is sourced by other buildbot-*.sh scripts. 18*795d594fSAndroid Build Coastguard Worker 19*795d594fSAndroid Build Coastguard Workerif [ -t 1 ]; then 20*795d594fSAndroid Build Coastguard Worker # Color sequences if terminal is a tty. 21*795d594fSAndroid Build Coastguard Worker 22*795d594fSAndroid Build Coastguard Worker red='\033[0;31m' 23*795d594fSAndroid Build Coastguard Worker green='\033[0;32m' 24*795d594fSAndroid Build Coastguard Worker yellow='\033[0;33m' 25*795d594fSAndroid Build Coastguard Worker blue='\033[0;34m' 26*795d594fSAndroid Build Coastguard Worker magenta='\033[0;35m' 27*795d594fSAndroid Build Coastguard Worker cyan='\033[0;36m' 28*795d594fSAndroid Build Coastguard Worker 29*795d594fSAndroid Build Coastguard Worker boldred='\033[1;31m' 30*795d594fSAndroid Build Coastguard Worker boldgreen='\033[1;32m' 31*795d594fSAndroid Build Coastguard Worker boldyellow='\033[1;33m' 32*795d594fSAndroid Build Coastguard Worker boldblue='\033[1;34m' 33*795d594fSAndroid Build Coastguard Worker boldmagenta='\033[1;95m' 34*795d594fSAndroid Build Coastguard Worker boldcyan='\033[1;36m' 35*795d594fSAndroid Build Coastguard Worker 36*795d594fSAndroid Build Coastguard Worker nc='\033[0m' 37*795d594fSAndroid Build Coastguard Workerfi 38*795d594fSAndroid Build Coastguard Worker 39*795d594fSAndroid Build Coastguard Workerfunction msginfo() { 40*795d594fSAndroid Build Coastguard Worker local heading="$1" 41*795d594fSAndroid Build Coastguard Worker shift 42*795d594fSAndroid Build Coastguard Worker local message="$*" 43*795d594fSAndroid Build Coastguard Worker echo -e "${green}${heading}${nc} ${message}" 44*795d594fSAndroid Build Coastguard Worker} 45*795d594fSAndroid Build Coastguard Worker 46*795d594fSAndroid Build Coastguard Workerfunction msgwarning() { 47*795d594fSAndroid Build Coastguard Worker local message="$*" 48*795d594fSAndroid Build Coastguard Worker echo -e "${boldmagenta}Warning: ${nc}${message}" 49*795d594fSAndroid Build Coastguard Worker} 50*795d594fSAndroid Build Coastguard Worker 51*795d594fSAndroid Build Coastguard Workerfunction msgerror() { 52*795d594fSAndroid Build Coastguard Worker local message="$*" 53*795d594fSAndroid Build Coastguard Worker echo -e "${boldred}Error: ${nc}${message}" 54*795d594fSAndroid Build Coastguard Worker} 55*795d594fSAndroid Build Coastguard Worker 56*795d594fSAndroid Build Coastguard Workerfunction msgfatal() { 57*795d594fSAndroid Build Coastguard Worker local message="$*" 58*795d594fSAndroid Build Coastguard Worker echo -e "${boldred}Fatal: ${nc}${message}" 59*795d594fSAndroid Build Coastguard Worker exit 1 60*795d594fSAndroid Build Coastguard Worker} 61*795d594fSAndroid Build Coastguard Worker 62*795d594fSAndroid Build Coastguard Workerfunction msgnote() { 63*795d594fSAndroid Build Coastguard Worker local message="$*" 64*795d594fSAndroid Build Coastguard Worker echo -e "${boldcyan}Note: ${nc}${message}" 65*795d594fSAndroid Build Coastguard Worker} 66*795d594fSAndroid Build Coastguard Worker 67*795d594fSAndroid Build Coastguard Workerexport TARGET_ARCH=$(build/soong/soong_ui.bash --dumpvar-mode TARGET_ARCH) 68*795d594fSAndroid Build Coastguard Worker 69*795d594fSAndroid Build Coastguard Worker# Do some checks and prepare environment for tests that run on Linux (not on Android). 70*795d594fSAndroid Build Coastguard Workerif [[ -n "$ART_TEST_ON_VM" ]]; then 71*795d594fSAndroid Build Coastguard Worker if [[ -z $ANDROID_BUILD_TOP ]]; then 72*795d594fSAndroid Build Coastguard Worker msgfatal "ANDROID_BUILD_TOP is not set" 73*795d594fSAndroid Build Coastguard Worker elif [[ -z "$ART_TEST_SSH_USER" ]]; then 74*795d594fSAndroid Build Coastguard Worker msgfatal "ART_TEST_SSH_USER not set" 75*795d594fSAndroid Build Coastguard Worker elif [[ -z "$ART_TEST_SSH_HOST" ]]; then 76*795d594fSAndroid Build Coastguard Worker msgfatal "ART_TEST_SSH_HOST not set" 77*795d594fSAndroid Build Coastguard Worker elif [[ -z "$ART_TEST_SSH_PORT" ]]; then 78*795d594fSAndroid Build Coastguard Worker msgfatal "ART_TEST_SSH_PORT not set" 79*795d594fSAndroid Build Coastguard Worker fi 80*795d594fSAndroid Build Coastguard Worker 81*795d594fSAndroid Build Coastguard Worker SSH_CONFIG=$ANDROID_BUILD_TOP/art/test/testrunner/ssh_config 82*795d594fSAndroid Build Coastguard Worker export ART_TEST_CHROOT_BASENAME="art-test-chroot" 83*795d594fSAndroid Build Coastguard Worker export ART_TEST_CHROOT="/home/$ART_TEST_SSH_USER/$ART_TEST_CHROOT_BASENAME" 84*795d594fSAndroid Build Coastguard Worker export ART_CHROOT_CMD="unshare --user --map-root-user chroot $ART_TEST_CHROOT_BASENAME" 85*795d594fSAndroid Build Coastguard Worker export ART_SSH_CMD="ssh -q -F $SSH_CONFIG -p $ART_TEST_SSH_PORT $ART_TEST_SSH_USER@$ART_TEST_SSH_HOST" 86*795d594fSAndroid Build Coastguard Worker export ART_SCP_CMD="scp -q -F $SSH_CONFIG -P $ART_TEST_SSH_PORT -p -r" 87*795d594fSAndroid Build Coastguard Worker export ART_RSYNC_CMD="rsync -az" 88*795d594fSAndroid Build Coastguard Worker export RSYNC_RSH="ssh -q -F $SSH_CONFIG -p $ART_TEST_SSH_PORT" # don't prefix with "ART_", rsync expects this name 89*795d594fSAndroid Build Coastguard Worker 90*795d594fSAndroid Build Coastguard Worker if [[ "$TARGET_ARCH" =~ ^(arm64|riscv64)$ ]]; then 91*795d594fSAndroid Build Coastguard Worker export ART_TEST_VM_IMG="ubuntu-23.10-server-cloudimg-$TARGET_ARCH.img" 92*795d594fSAndroid Build Coastguard Worker export ART_TEST_VM_DIR="$ANDROID_BUILD_TOP/vm/$TARGET_ARCH" 93*795d594fSAndroid Build Coastguard Worker export ART_TEST_VM="$ART_TEST_VM_DIR/$ART_TEST_VM_IMG" 94*795d594fSAndroid Build Coastguard Worker else 95*795d594fSAndroid Build Coastguard Worker msgfatal "unexpected TARGET_ARCH=$TARGET_ARCH; expected one of {arm64,riscv64}" 96*795d594fSAndroid Build Coastguard Worker fi 97*795d594fSAndroid Build Coastguard Workerfi 98