blob: 319e1a76b06584df0f6575a504c6eb0794a479d0 [file] [log] [blame]
Shubham Ajmera65adb8b2017-02-06 16:04:25 +00001# Copyright 2017, The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import os
Igor Murashkinfecb4ef2017-02-09 10:42:23 -080016import re
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000017import tempfile
18import subprocess
19
Igor Murashkin88c68092018-03-07 17:02:51 -080020# begin import $ANDROID_BUILD_TOP/art/tools/build/var_cache.py
21_THIS_DIR = os.path.dirname(os.path.realpath(__file__))
22_TOP = os.path.join(_THIS_DIR, "../../..")
23_VAR_CACHE_DIR = os.path.join(_TOP, "art/tools/build/")
24
25import sys
26sys.path.append(_VAR_CACHE_DIR)
27import var_cache
28# end import var_cache.py
29
Igor Murashkin6b61c802017-04-03 14:33:22 -070030_env = dict(os.environ)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000031
Igor Murashkin6b61c802017-04-03 14:33:22 -070032def _getEnvBoolean(var, default):
33 val = _env.get(var)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000034 if val:
35 if val == "True" or val == "true":
36 return True
37 if val == "False" or val == "false":
38 return False
39 return default
40
Igor Murashkin6b61c802017-04-03 14:33:22 -070041def _get_build_var(var_name):
Igor Murashkin88c68092018-03-07 17:02:51 -080042 return var_cache.get_build_var(var_name)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000043
Colin Crosse0ef0a82017-07-27 21:29:18 +000044def _get_build_var_boolean(var, default):
45 val = _get_build_var(var)
46 if val:
47 if val == "True" or val == "true":
48 return True
49 if val == "False" or val == "false":
50 return False
51 return default
52
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000053def get_env(key):
Igor Murashkin6b61c802017-04-03 14:33:22 -070054 return _env.get(key)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000055
Igor Murashkin6b61c802017-04-03 14:33:22 -070056def _get_android_build_top():
57 path_to_top = _env.get('ANDROID_BUILD_TOP')
58 if not path_to_top:
59 # nothing set. try to guess it based on the relative path of this env.py file.
60 this_file_path = os.path.realpath(__file__)
61 path_to_top = os.path.join(os.path.dirname(this_file_path), '../../../')
62 path_to_top = os.path.realpath(path_to_top)
63
64 if not os.path.exists(os.path.join(path_to_top, 'build/envsetup.sh')):
65 raise AssertionError("env.py must be located inside an android source tree")
66
67 return path_to_top
68
69ANDROID_BUILD_TOP = _get_android_build_top()
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000070
71# Directory used for temporary test files on the host.
72ART_HOST_TEST_DIR = tempfile.mkdtemp(prefix = 'test-art-')
73
David Srbeckyca15b8d2021-04-23 12:25:08 +010074# Directory used to store files build by the run-test script.
75ART_TEST_RUN_TEST_BUILD_PATH = _env.get('ART_TEST_RUN_TEST_BUILD_PATH')
76
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000077# Keep going after encountering a test failure?
Igor Murashkin6b61c802017-04-03 14:33:22 -070078ART_TEST_KEEP_GOING = _getEnvBoolean('ART_TEST_KEEP_GOING', True)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000079
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000080# Do you want failed tests to have their artifacts cleaned up?
Igor Murashkin6b61c802017-04-03 14:33:22 -070081ART_TEST_RUN_TEST_ALWAYS_CLEAN = _getEnvBoolean('ART_TEST_RUN_TEST_ALWAYS_CLEAN', True)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000082
Igor Murashkin6b61c802017-04-03 14:33:22 -070083ART_TEST_BISECTION = _getEnvBoolean('ART_TEST_BISECTION', False)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000084
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000085# Do you want run-tests with the host/target's second arch?
Igor Murashkin6b61c802017-04-03 14:33:22 -070086ART_TEST_RUN_TEST_2ND_ARCH = _getEnvBoolean('ART_TEST_RUN_TEST_2ND_ARCH', True)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000087
Igor Murashkin6b61c802017-04-03 14:33:22 -070088HOST_2ND_ARCH_PREFIX = _get_build_var('HOST_2ND_ARCH_PREFIX')
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000089
Roland Levillain76cfe612017-10-30 13:14:28 +000090ART_TEST_CHROOT = _env.get('ART_TEST_CHROOT')
Igor Murashkin6b61c802017-04-03 14:33:22 -070091ART_TEST_ANDROID_ROOT = _env.get('ART_TEST_ANDROID_ROOT')
Martin Stjernholme58624f2019-09-20 15:53:40 +010092ART_TEST_ANDROID_ART_ROOT = _env.get('ART_TEST_ANDROID_ART_ROOT')
Victor Chang64611242019-07-05 16:32:41 +010093ART_TEST_ANDROID_I18N_ROOT = _env.get('ART_TEST_ANDROID_I18N_ROOT')
Neil Fuller26a5dd62019-03-13 15:16:35 +000094ART_TEST_ANDROID_TZDATA_ROOT = _env.get('ART_TEST_ANDROID_TZDATA_ROOT')
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000095
Igor Murashkin6b61c802017-04-03 14:33:22 -070096ART_TEST_WITH_STRACE = _getEnvBoolean('ART_TEST_DEBUG_GC', False)
Shubham Ajmera65adb8b2017-02-06 16:04:25 +000097
Igor Murashkin6b61c802017-04-03 14:33:22 -070098EXTRA_DISABLED_TESTS = set(_env.get("ART_TEST_RUN_TEST_SKIP", "").split())
Alex Lightbc319b22017-02-17 14:21:33 -080099
Igor Murashkin6b61c802017-04-03 14:33:22 -0700100ART_TEST_RUN_TEST_BUILD = _getEnvBoolean('ART_TEST_RUN_TEST_BUILD', False)
Alex Light9b6b13e2017-02-22 11:46:50 -0800101
Igor Murashkin6b61c802017-04-03 14:33:22 -0700102TARGET_2ND_ARCH = _get_build_var('TARGET_2ND_ARCH')
103TARGET_ARCH = _get_build_var('TARGET_ARCH')
104
105# Note: ART_2ND_PHONY_TEST_TARGET_SUFFIX is 2ND_ART_PHONY_TEST_TARGET_SUFFIX in .mk files
106# Note: ART_2ND_PHONY_TEST_HOST_SUFFIX is 2ND_ART_PHONY_HOST_TARGET_SUFFIX in .mk files
107# Python does not let us have variable names starting with a digit, so it has differ.
Alex Light8f2c6d42017-04-10 16:27:35 -0700108
Shubham Ajmera65adb8b2017-02-06 16:04:25 +0000109if TARGET_2ND_ARCH:
110 if "64" in TARGET_ARCH:
111 ART_PHONY_TEST_TARGET_SUFFIX = "64"
Igor Murashkin6b61c802017-04-03 14:33:22 -0700112 ART_2ND_PHONY_TEST_TARGET_SUFFIX = "32"
Shubham Ajmera65adb8b2017-02-06 16:04:25 +0000113 else:
114 ART_PHONY_TEST_TARGET_SUFFIX = "32"
Igor Murashkin6b61c802017-04-03 14:33:22 -0700115 ART_2ND_PHONY_TEST_TARGET_SUFFIX = ""
Shubham Ajmera65adb8b2017-02-06 16:04:25 +0000116else:
117 if "64" in TARGET_ARCH:
118 ART_PHONY_TEST_TARGET_SUFFIX = "64"
Igor Murashkin6b61c802017-04-03 14:33:22 -0700119 ART_2ND_PHONY_TEST_TARGET_SUFFIX = ""
Shubham Ajmera65adb8b2017-02-06 16:04:25 +0000120 else:
121 ART_PHONY_TEST_TARGET_SUFFIX = "32"
Igor Murashkin6b61c802017-04-03 14:33:22 -0700122 ART_2ND_PHONY_TEST_TARGET_SUFFIX = ""
Shubham Ajmera65adb8b2017-02-06 16:04:25 +0000123
Igor Murashkin6b61c802017-04-03 14:33:22 -0700124HOST_PREFER_32_BIT = _get_build_var('HOST_PREFER_32_BIT')
Shubham Ajmera65adb8b2017-02-06 16:04:25 +0000125if HOST_PREFER_32_BIT == "true":
126 ART_PHONY_TEST_HOST_SUFFIX = "32"
Igor Murashkin6b61c802017-04-03 14:33:22 -0700127 ART_2ND_PHONY_TEST_HOST_SUFFIX = ""
Shubham Ajmera65adb8b2017-02-06 16:04:25 +0000128else:
129 ART_PHONY_TEST_HOST_SUFFIX = "64"
Igor Murashkin6b61c802017-04-03 14:33:22 -0700130 ART_2ND_PHONY_TEST_HOST_SUFFIX = "32"
Shubham Ajmera65adb8b2017-02-06 16:04:25 +0000131
Alex Light699c2552017-02-08 10:09:31 -0800132HOST_OUT_EXECUTABLES = os.path.join(ANDROID_BUILD_TOP,
Igor Murashkin6b61c802017-04-03 14:33:22 -0700133 _get_build_var("HOST_OUT_EXECUTABLES"))
Igor Murashkin7dc46cf2017-07-19 13:48:31 -0700134
Orion Hodson4a1cac42018-05-23 16:23:27 +0100135# Set up default values for $DX, $SMALI, etc to the $HOST_OUT_EXECUTABLES/$name path.
136for tool in ['dx', 'smali', 'jasmin', 'd8']:
Alan Leungd5cbc562018-03-15 14:02:46 -0700137 os.environ.setdefault(tool.upper(), HOST_OUT_EXECUTABLES + '/' + tool)
Shubham Ajmerac33c0872017-07-20 18:41:52 -0700138
139ANDROID_JAVA_TOOLCHAIN = os.path.join(ANDROID_BUILD_TOP,
140 _get_build_var('ANDROID_JAVA_TOOLCHAIN'))
141
142# include platform prebuilt java, javac, etc in $PATH.
143os.environ['PATH'] = ANDROID_JAVA_TOOLCHAIN + ':' + os.environ['PATH']
Colin Cross9cb13a62018-06-07 13:02:02 -0700144
Dan Willemsen49a01872018-10-21 19:46:04 +0000145DIST_DIR = _get_build_var('DIST_DIR')
Colin Cross9cb13a62018-06-07 13:02:02 -0700146SOONG_OUT_DIR = _get_build_var('SOONG_OUT_DIR')
Artem Serov381d35c2021-02-10 21:27:00 +0000147
148ART_TEST_RUN_ON_ARM_FVP = _getEnvBoolean('ART_TEST_RUN_ON_ARM_FVP', False)