1*6dbdd20aSAndroid Build Coastguard Worker#!/usr/bin/env python3 2*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2019 The Android Open Source Project 3*6dbdd20aSAndroid Build Coastguard Worker# 4*6dbdd20aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*6dbdd20aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*6dbdd20aSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*6dbdd20aSAndroid Build Coastguard Worker# 8*6dbdd20aSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*6dbdd20aSAndroid Build Coastguard Worker# 10*6dbdd20aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*6dbdd20aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*6dbdd20aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*6dbdd20aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*6dbdd20aSAndroid Build Coastguard Worker# limitations under the License. 15*6dbdd20aSAndroid Build Coastguard Worker'''Project-wide configuration 16*6dbdd20aSAndroid Build Coastguard Worker 17*6dbdd20aSAndroid Build Coastguard WorkerThis file is either imported from other python scripts or executed to generate 18*6dbdd20aSAndroid Build Coastguard Workermakefile dumps of the variables. This is so all vars can live in one place. 19*6dbdd20aSAndroid Build Coastguard Worker''' 20*6dbdd20aSAndroid Build Coastguard Worker 21*6dbdd20aSAndroid Build Coastguard Workerimport os 22*6dbdd20aSAndroid Build Coastguard Workerimport sys 23*6dbdd20aSAndroid Build Coastguard Worker 24*6dbdd20aSAndroid Build Coastguard Worker# Gerrit config 25*6dbdd20aSAndroid Build Coastguard WorkerGERRIT_HOST = 'android-review.googlesource.com' 26*6dbdd20aSAndroid Build Coastguard WorkerGERRIT_PROJECT = 'platform/external/perfetto' 27*6dbdd20aSAndroid Build Coastguard WorkerGERRIT_REVIEW_URL = ('https://android-review.googlesource.com/c/' + 28*6dbdd20aSAndroid Build Coastguard Worker GERRIT_PROJECT) 29*6dbdd20aSAndroid Build Coastguard WorkerREPO_URL = 'https://android.googlesource.com/' + GERRIT_PROJECT 30*6dbdd20aSAndroid Build Coastguard WorkerGERRIT_VOTING_ENABLED = True 31*6dbdd20aSAndroid Build Coastguard WorkerLOGLEVEL = 'info' 32*6dbdd20aSAndroid Build Coastguard Worker 33*6dbdd20aSAndroid Build Coastguard Worker# Cloud config (GCE = Google Compute Engine, GAE = Google App Engine) 34*6dbdd20aSAndroid Build Coastguard WorkerPROJECT = 'perfetto-ci' 35*6dbdd20aSAndroid Build Coastguard Worker 36*6dbdd20aSAndroid Build Coastguard WorkerGAE_VERSION = 'prod' 37*6dbdd20aSAndroid Build Coastguard WorkerDB_ROOT = 'https://%s.firebaseio.com' % PROJECT 38*6dbdd20aSAndroid Build Coastguard WorkerDB = DB_ROOT + '/ci' 39*6dbdd20aSAndroid Build Coastguard WorkerSANDBOX_IMG = 'us-docker.pkg.dev/%s/containers/sandbox' % PROJECT 40*6dbdd20aSAndroid Build Coastguard WorkerWORKER_IMG = 'us-docker.pkg.dev/%s/containers/worker' % PROJECT 41*6dbdd20aSAndroid Build Coastguard WorkerCI_SITE = 'https://ci.perfetto.dev' 42*6dbdd20aSAndroid Build Coastguard WorkerGCS_ARTIFACTS = 'perfetto-ci-artifacts' 43*6dbdd20aSAndroid Build Coastguard Worker 44*6dbdd20aSAndroid Build Coastguard WorkerJOB_TIMEOUT_SEC = 45 * 60 # 45 min 45*6dbdd20aSAndroid Build Coastguard WorkerCL_TIMEOUT_SEC = 60 * 60 * 3 # 3 hours 46*6dbdd20aSAndroid Build Coastguard WorkerLOGS_TTL_DAYS = 15 47*6dbdd20aSAndroid Build Coastguard WorkerTRUSTED_EMAILS = '^.*@google.com$' 48*6dbdd20aSAndroid Build Coastguard Worker 49*6dbdd20aSAndroid Build Coastguard WorkerGCE_REGIONS = 'us-west1' 50*6dbdd20aSAndroid Build Coastguard WorkerGCE_VM_NAME = 'ci-worker' 51*6dbdd20aSAndroid Build Coastguard WorkerGCE_VM_TYPE = 'c2d-standard-32' 52*6dbdd20aSAndroid Build Coastguard WorkerGCE_TEMPLATE = 'ci-worker-template' 53*6dbdd20aSAndroid Build Coastguard WorkerGCE_GROUP_NAME = 'ci' 54*6dbdd20aSAndroid Build Coastguard WorkerMAX_VMS_PER_REGION = 8 55*6dbdd20aSAndroid Build Coastguard WorkerNUM_WORKERS_PER_VM = 4 56*6dbdd20aSAndroid Build Coastguard Worker 57*6dbdd20aSAndroid Build Coastguard WorkerGCE_SCOPES = [ 58*6dbdd20aSAndroid Build Coastguard Worker 'https://www.googleapis.com/auth/cloud-platform', 59*6dbdd20aSAndroid Build Coastguard Worker 'https://www.googleapis.com/auth/devstorage.read_write', 60*6dbdd20aSAndroid Build Coastguard Worker 'https://www.googleapis.com/auth/firebase.database', 61*6dbdd20aSAndroid Build Coastguard Worker 'https://www.googleapis.com/auth/logging.write', 62*6dbdd20aSAndroid Build Coastguard Worker 'https://www.googleapis.com/auth/monitoring.write', 63*6dbdd20aSAndroid Build Coastguard Worker 'https://www.googleapis.com/auth/trace.append', 64*6dbdd20aSAndroid Build Coastguard Worker 'https://www.googleapis.com/auth/userinfo.email', 65*6dbdd20aSAndroid Build Coastguard Worker] 66*6dbdd20aSAndroid Build Coastguard Worker 67*6dbdd20aSAndroid Build Coastguard Worker# Only variables starting with PERFETTO_ are propagated into the sandbox. 68*6dbdd20aSAndroid Build Coastguard WorkerJOB_CONFIGS = { 69*6dbdd20aSAndroid Build Coastguard Worker 'linux-clang-x86_64-debug': { 70*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 'is_debug=true is_hermetic_clang=false ' 71*6dbdd20aSAndroid Build Coastguard Worker 'non_hermetic_clang_stdlib="libc++" ' 72*6dbdd20aSAndroid Build Coastguard Worker 'enable_perfetto_merged_protos_check=true', 73*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/linux_tests.sh', 74*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '', 75*6dbdd20aSAndroid Build Coastguard Worker }, 76*6dbdd20aSAndroid Build Coastguard Worker 'linux-clang-x86_64-tsan': { 77*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 'is_debug=false is_tsan=true', 78*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/linux_tests.sh', 79*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '', 80*6dbdd20aSAndroid Build Coastguard Worker }, 81*6dbdd20aSAndroid Build Coastguard Worker 'linux-clang-x86_64-msan': { 82*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 'is_debug=false is_msan=true', 83*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/linux_tests.sh', 84*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '', 85*6dbdd20aSAndroid Build Coastguard Worker }, 86*6dbdd20aSAndroid Build Coastguard Worker 'linux-clang-x86_64-asan_lsan': { 87*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 'is_debug=false is_asan=true is_lsan=true', 88*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/linux_tests.sh', 89*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '', 90*6dbdd20aSAndroid Build Coastguard Worker }, 91*6dbdd20aSAndroid Build Coastguard Worker 'linux-clang-x86-release': { 92*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 'is_debug=false target_cpu="x86"', 93*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/linux_tests.sh', 94*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '', 95*6dbdd20aSAndroid Build Coastguard Worker }, 96*6dbdd20aSAndroid Build Coastguard Worker 'linux-gcc8-x86_64-release': { 97*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 98*6dbdd20aSAndroid Build Coastguard Worker 'is_debug=false is_clang=false enable_perfetto_grpc=true ' 99*6dbdd20aSAndroid Build Coastguard Worker 'cc="gcc-8" cxx="g++-8"', 100*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/linux_tests.sh', 101*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '--grpc', 102*6dbdd20aSAndroid Build Coastguard Worker }, 103*6dbdd20aSAndroid Build Coastguard Worker 'android-clang-arm-release': { 104*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 105*6dbdd20aSAndroid Build Coastguard Worker 'is_debug=false target_os="android" target_cpu="arm"', 106*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 107*6dbdd20aSAndroid Build Coastguard Worker 'test/ci/android_tests.sh', 108*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': 109*6dbdd20aSAndroid Build Coastguard Worker '--android', 110*6dbdd20aSAndroid Build Coastguard Worker }, 111*6dbdd20aSAndroid Build Coastguard Worker 'linux-clang-x86_64-libfuzzer': { 112*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 'is_debug=false is_fuzzer=true is_asan=true', 113*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/fuzzer_tests.sh', 114*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '', 115*6dbdd20aSAndroid Build Coastguard Worker }, 116*6dbdd20aSAndroid Build Coastguard Worker 'linux-clang-x86_64-bazel': { 117*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': '', 118*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/bazel_tests.sh', 119*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '', 120*6dbdd20aSAndroid Build Coastguard Worker }, 121*6dbdd20aSAndroid Build Coastguard Worker 'ui-clang-x86_64-release': { 122*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_GN_ARGS': 'is_debug=false', 123*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_TEST_SCRIPT': 'test/ci/ui_tests.sh', 124*6dbdd20aSAndroid Build Coastguard Worker 'PERFETTO_INSTALL_BUILD_DEPS_ARGS': '--ui', 125*6dbdd20aSAndroid Build Coastguard Worker }, 126*6dbdd20aSAndroid Build Coastguard Worker} 127*6dbdd20aSAndroid Build Coastguard Worker 128*6dbdd20aSAndroid Build Coastguard Workerif __name__ == '__main__': 129*6dbdd20aSAndroid Build Coastguard Worker import os 130*6dbdd20aSAndroid Build Coastguard Worker import json 131*6dbdd20aSAndroid Build Coastguard Worker import re 132*6dbdd20aSAndroid Build Coastguard Worker import sys 133*6dbdd20aSAndroid Build Coastguard Worker vars = dict(kv for kv in locals().items() if re.match('^[A-Z0-9_]+$', kv[0])) 134*6dbdd20aSAndroid Build Coastguard Worker 135*6dbdd20aSAndroid Build Coastguard Worker if len(sys.argv) > 1 and sys.argv[1] == 'makefile': 136*6dbdd20aSAndroid Build Coastguard Worker deps_path = os.path.join(os.path.dirname(__file__), '.deps') 137*6dbdd20aSAndroid Build Coastguard Worker if not os.path.exists(deps_path): 138*6dbdd20aSAndroid Build Coastguard Worker os.mkdir(deps_path) 139*6dbdd20aSAndroid Build Coastguard Worker gen_file = os.path.join(deps_path, 'config.mk') 140*6dbdd20aSAndroid Build Coastguard Worker 141*6dbdd20aSAndroid Build Coastguard Worker try: 142*6dbdd20aSAndroid Build Coastguard Worker literals = (int, long, basestring) 143*6dbdd20aSAndroid Build Coastguard Worker except NameError: 144*6dbdd20aSAndroid Build Coastguard Worker literals = (int, str) 145*6dbdd20aSAndroid Build Coastguard Worker 146*6dbdd20aSAndroid Build Coastguard Worker with open(gen_file, 'w') as f: 147*6dbdd20aSAndroid Build Coastguard Worker for k, v in vars.items(): 148*6dbdd20aSAndroid Build Coastguard Worker if isinstance(v, literals): 149*6dbdd20aSAndroid Build Coastguard Worker f.write('override %s=%s\n' % (k, v)) 150*6dbdd20aSAndroid Build Coastguard Worker elif isinstance(v, list): 151*6dbdd20aSAndroid Build Coastguard Worker f.write('override %s=%s\n' % (k, ','.join(v))) 152*6dbdd20aSAndroid Build Coastguard Worker 153*6dbdd20aSAndroid Build Coastguard Worker print(gen_file) 154*6dbdd20aSAndroid Build Coastguard Worker 155*6dbdd20aSAndroid Build Coastguard Worker if len(sys.argv) > 1 and sys.argv[1] == 'js': 156*6dbdd20aSAndroid Build Coastguard Worker jsn = json.dumps(vars, indent=2) 157*6dbdd20aSAndroid Build Coastguard Worker print('// Auto-generated by %s, do not edit.\n' % 158*6dbdd20aSAndroid Build Coastguard Worker os.path.basename(__file__)) 159*6dbdd20aSAndroid Build Coastguard Worker print('\'use strict\';\n') 160*6dbdd20aSAndroid Build Coastguard Worker print('const cfg = JSON.parse(`%s`);\n' % jsn.replace(r'\"', r'\\\"')) 161