xref: /aosp_15_r20/art/tools/buildbot-utils.sh (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
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