1*dd0948b3SAndroid Build Coastguard Worker#!/bin/bash 2*dd0948b3SAndroid Build Coastguard Worker# Copyright (C) 2022 The Android Open Source Project 3*dd0948b3SAndroid Build Coastguard Worker# 4*dd0948b3SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*dd0948b3SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*dd0948b3SAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*dd0948b3SAndroid Build Coastguard Worker# 8*dd0948b3SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*dd0948b3SAndroid Build Coastguard Worker# 10*dd0948b3SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*dd0948b3SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*dd0948b3SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*dd0948b3SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*dd0948b3SAndroid Build Coastguard Worker# limitations under the License. 15*dd0948b3SAndroid Build Coastguard Worker 16*dd0948b3SAndroid Build Coastguard Worker# Utils library script for the tradefed harnesses. Its functions can be used 17*dd0948b3SAndroid Build Coastguard Worker# once the script is sourced, for example by adding 18*dd0948b3SAndroid Build Coastguard Worker# source ${ANDROID_BUILD_TOP}/platform_testing/scripts/test-utils-script 19*dd0948b3SAndroid Build Coastguard Worker# in a script. 20*dd0948b3SAndroid Build Coastguard Worker# 21*dd0948b3SAndroid Build Coastguard Worker# It provides a collection of functions which can be called from the other 22*dd0948b3SAndroid Build Coastguard Worker# scripts. 23*dd0948b3SAndroid Build Coastguard Worker 24*dd0948b3SAndroid Build Coastguard WorkercheckFile() { 25*dd0948b3SAndroid Build Coastguard Worker if [ ! -f "$1" ]; then 26*dd0948b3SAndroid Build Coastguard Worker echo "Unable to locate $1" 27*dd0948b3SAndroid Build Coastguard Worker exit 28*dd0948b3SAndroid Build Coastguard Worker fi; 29*dd0948b3SAndroid Build Coastguard Worker} 30*dd0948b3SAndroid Build Coastguard Worker 31*dd0948b3SAndroid Build Coastguard WorkercheckPath() { 32*dd0948b3SAndroid Build Coastguard Worker if ! type -P $1 &> /dev/null; then 33*dd0948b3SAndroid Build Coastguard Worker echo "Unable to find $1 in path." 34*dd0948b3SAndroid Build Coastguard Worker exit 35*dd0948b3SAndroid Build Coastguard Worker fi; 36*dd0948b3SAndroid Build Coastguard Worker} 37*dd0948b3SAndroid Build Coastguard Worker 38*dd0948b3SAndroid Build Coastguard Worker# readlink does not work on MacOS so rely on our own realpath 39*dd0948b3SAndroid Build Coastguard Workerrealpath() { 40*dd0948b3SAndroid Build Coastguard Worker [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" 41*dd0948b3SAndroid Build Coastguard Worker} 42*dd0948b3SAndroid Build Coastguard Worker 43*dd0948b3SAndroid Build Coastguard WorkercheckJavaVersion() { 44*dd0948b3SAndroid Build Coastguard Worker # check java version 45*dd0948b3SAndroid Build Coastguard Worker local java_cmd=$1 46*dd0948b3SAndroid Build Coastguard Worker local java_version_string=$(${java_cmd} -version 2>&1 | grep -E "\<version\>") 47*dd0948b3SAndroid Build Coastguard Worker local JAVA_VERSION=$(echo "$java_version_string" | grep -E 'version [ "](1\.8|9|11|17|21).*[ "]') 48*dd0948b3SAndroid Build Coastguard Worker if [ "${JAVA_VERSION}" == "" ]; then 49*dd0948b3SAndroid Build Coastguard Worker >&2 echo "Wrong java version. Allowed versions: 1.8, 9, 11, 17, 21. Found $java_version_string" 50*dd0948b3SAndroid Build Coastguard Worker >&2 echo "Java command: $java_cmd" 51*dd0948b3SAndroid Build Coastguard Worker >&2 echo "PATH value:" 52*dd0948b3SAndroid Build Coastguard Worker >&2 echo "$PATH" 53*dd0948b3SAndroid Build Coastguard Worker if [ "${IGNORE_JAVA_VERSION_ERROR}" == "y" ]; then 54*dd0948b3SAndroid Build Coastguard Worker >&2 echo "Ignoring the wrong java version error as \$IGNORE_JAVA_VERSION_ERROR is set to 'y'" 55*dd0948b3SAndroid Build Coastguard Worker else 56*dd0948b3SAndroid Build Coastguard Worker >&2 echo "If you want to ignore this error, set \$IGNORE_JAVA_VERSION_ERROR to 'y'" 57*dd0948b3SAndroid Build Coastguard Worker exit 8 58*dd0948b3SAndroid Build Coastguard Worker fi 59*dd0948b3SAndroid Build Coastguard Worker fi 60*dd0948b3SAndroid Build Coastguard Worker} 61*dd0948b3SAndroid Build Coastguard Worker 62*dd0948b3SAndroid Build Coastguard WorkergetAddOpensFlag() { 63*dd0948b3SAndroid Build Coastguard Worker local java_cmd=$1 64*dd0948b3SAndroid Build Coastguard Worker local java_version_string=$(${java_cmd} -version 2>&1 | grep -E "\<version\>") 65*dd0948b3SAndroid Build Coastguard Worker # java versions below 1.8 are not supported, java versions above 1.8 need add-opens 66*dd0948b3SAndroid Build Coastguard Worker local JAVA_VERSION=$(echo "$java_version_string" | grep -E 'version [ "]1\.8.*[ "]') 67*dd0948b3SAndroid Build Coastguard Worker if [ "${JAVA_VERSION}" == "" ]; then 68*dd0948b3SAndroid Build Coastguard Worker echo "--add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.reflect.annotation=ALL-UNNAMED" 69*dd0948b3SAndroid Build Coastguard Worker fi 70*dd0948b3SAndroid Build Coastguard Worker} 71*dd0948b3SAndroid Build Coastguard Worker 72*dd0948b3SAndroid Build Coastguard WorkergetRemoteDbgFlag() { 73*dd0948b3SAndroid Build Coastguard Worker # check debug flag and set up remote debugging 74*dd0948b3SAndroid Build Coastguard Worker # depends on $TF_DEBUG and $TF_DEBUG_PORT 75*dd0948b3SAndroid Build Coastguard Worker if [ -n "${TF_DEBUG}" ]; then 76*dd0948b3SAndroid Build Coastguard Worker if [ -z "${TF_DEBUG_PORT}" ]; then 77*dd0948b3SAndroid Build Coastguard Worker TF_DEBUG_PORT=10088 78*dd0948b3SAndroid Build Coastguard Worker fi 79*dd0948b3SAndroid Build Coastguard Worker echo "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=${TF_DEBUG_PORT}" 80*dd0948b3SAndroid Build Coastguard Worker fi 81*dd0948b3SAndroid Build Coastguard Worker} 82*dd0948b3SAndroid Build Coastguard Worker 83*dd0948b3SAndroid Build Coastguard WorkerloadSharedLibraries() { 84*dd0948b3SAndroid Build Coastguard Worker # load any shared libraries for host-side executables 85*dd0948b3SAndroid Build Coastguard Worker local HOST=$1 86*dd0948b3SAndroid Build Coastguard Worker local LIB_DIR=$2 87*dd0948b3SAndroid Build Coastguard Worker if [ "$HOST" == "Linux" ]; then 88*dd0948b3SAndroid Build Coastguard Worker LD_LIBRARY_PATH=${LIB_DIR}:${LIB_DIR}64:${LD_LIBRARY_PATH} 89*dd0948b3SAndroid Build Coastguard Worker export LD_LIBRARY_PATH 90*dd0948b3SAndroid Build Coastguard Worker elif [ "$HOST" == "Darwin" ]; then 91*dd0948b3SAndroid Build Coastguard Worker DYLD_LIBRARY_PATH=${LIB_DIR}:${LIB_DIR}64:${DYLD_LIBRARY_PATH} 92*dd0948b3SAndroid Build Coastguard Worker export DYLD_LIBRARY_PATH 93*dd0948b3SAndroid Build Coastguard Worker fi 94*dd0948b3SAndroid Build Coastguard Worker} 95