1*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2022 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Workerfrom recipe_engine.post_process import Filter 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard WorkerDEPS = [ 8*bb4ee6a4SAndroid Build Coastguard Worker "crosvm", 9*bb4ee6a4SAndroid Build Coastguard Worker "depot_tools/depot_tools", 10*bb4ee6a4SAndroid Build Coastguard Worker "recipe_engine/buildbucket", 11*bb4ee6a4SAndroid Build Coastguard Worker "recipe_engine/context", 12*bb4ee6a4SAndroid Build Coastguard Worker "recipe_engine/properties", 13*bb4ee6a4SAndroid Build Coastguard Worker "recipe_engine/step", 14*bb4ee6a4SAndroid Build Coastguard Worker] 15*bb4ee6a4SAndroid Build Coastguard Worker 16*bb4ee6a4SAndroid Build Coastguard Worker 17*bb4ee6a4SAndroid Build Coastguard Workerdef RunSteps(api): 18*bb4ee6a4SAndroid Build Coastguard Worker with api.crosvm.cros_container_build_context(): 19*bb4ee6a4SAndroid Build Coastguard Worker gitilies = api.buildbucket.build.input.gitiles_commit 20*bb4ee6a4SAndroid Build Coastguard Worker upstream_url = "https://chromium.googlesource.com/crosvm/crosvm" 21*bb4ee6a4SAndroid Build Coastguard Worker revision = gitilies.id or "upstream/main" 22*bb4ee6a4SAndroid Build Coastguard Worker 23*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 24*bb4ee6a4SAndroid Build Coastguard Worker "Sync repo", 25*bb4ee6a4SAndroid Build Coastguard Worker [ 26*bb4ee6a4SAndroid Build Coastguard Worker "repo", 27*bb4ee6a4SAndroid Build Coastguard Worker "sync", 28*bb4ee6a4SAndroid Build Coastguard Worker "-j8", 29*bb4ee6a4SAndroid Build Coastguard Worker ], 30*bb4ee6a4SAndroid Build Coastguard Worker cros=True, 31*bb4ee6a4SAndroid Build Coastguard Worker ) 32*bb4ee6a4SAndroid Build Coastguard Worker 33*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 34*bb4ee6a4SAndroid Build Coastguard Worker "Add crosvm upstream remote", 35*bb4ee6a4SAndroid Build Coastguard Worker ["git", "remote", "add", "upstream", upstream_url], 36*bb4ee6a4SAndroid Build Coastguard Worker cros=True, 37*bb4ee6a4SAndroid Build Coastguard Worker ) 38*bb4ee6a4SAndroid Build Coastguard Worker 39*bb4ee6a4SAndroid Build Coastguard Worker # Ignore errors from unshallow as repo sync sometimes resulted in full git history 40*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 41*bb4ee6a4SAndroid Build Coastguard Worker "Unshallow crosvm as needed", 42*bb4ee6a4SAndroid Build Coastguard Worker [ 43*bb4ee6a4SAndroid Build Coastguard Worker "bash", 44*bb4ee6a4SAndroid Build Coastguard Worker "-c", 45*bb4ee6a4SAndroid Build Coastguard Worker "for i in $(seq 1 5);do if [[ $(git rev-parse --is-shallow-repository) == 'true' ]]; then git fetch cros --unshallow; else break; fi; done", 46*bb4ee6a4SAndroid Build Coastguard Worker ], 47*bb4ee6a4SAndroid Build Coastguard Worker cros=True, 48*bb4ee6a4SAndroid Build Coastguard Worker ) 49*bb4ee6a4SAndroid Build Coastguard Worker 50*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container("Print current git log", ["git", "log"], cros=True) 51*bb4ee6a4SAndroid Build Coastguard Worker 52*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 53*bb4ee6a4SAndroid Build Coastguard Worker "Fetch upstream crosvm", ["git", "fetch", "upstream"], cros=True 54*bb4ee6a4SAndroid Build Coastguard Worker ) 55*bb4ee6a4SAndroid Build Coastguard Worker 56*bb4ee6a4SAndroid Build Coastguard Worker # Apply unmerged commit from upstream to crOS tree 57*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 58*bb4ee6a4SAndroid Build Coastguard Worker "Cherry-pick from upstream revision", ["git", "cherry-pick", ".." + revision], cros=True 59*bb4ee6a4SAndroid Build Coastguard Worker ) 60*bb4ee6a4SAndroid Build Coastguard Worker 61*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 62*bb4ee6a4SAndroid Build Coastguard Worker "cros-workon-hatch crosvm", 63*bb4ee6a4SAndroid Build Coastguard Worker ["cros_sdk", "cros-workon-hatch", "start", "crosvm"], 64*bb4ee6a4SAndroid Build Coastguard Worker cros=True, 65*bb4ee6a4SAndroid Build Coastguard Worker ) 66*bb4ee6a4SAndroid Build Coastguard Worker 67*bb4ee6a4SAndroid Build Coastguard Worker api.crosvm.step_in_container( 68*bb4ee6a4SAndroid Build Coastguard Worker "Build crosvm", 69*bb4ee6a4SAndroid Build Coastguard Worker [ 70*bb4ee6a4SAndroid Build Coastguard Worker "cros_sdk", 71*bb4ee6a4SAndroid Build Coastguard Worker "build_packages", 72*bb4ee6a4SAndroid Build Coastguard Worker "--board=hatch", 73*bb4ee6a4SAndroid Build Coastguard Worker "crosvm", 74*bb4ee6a4SAndroid Build Coastguard Worker ], 75*bb4ee6a4SAndroid Build Coastguard Worker cros=True, 76*bb4ee6a4SAndroid Build Coastguard Worker ) 77*bb4ee6a4SAndroid Build Coastguard Worker 78*bb4ee6a4SAndroid Build Coastguard Worker 79*bb4ee6a4SAndroid Build Coastguard Workerdef GenTests(api): 80*bb4ee6a4SAndroid Build Coastguard Worker filter_steps = Filter("Build crosvm") 81*bb4ee6a4SAndroid Build Coastguard Worker yield ( 82*bb4ee6a4SAndroid Build Coastguard Worker api.test( 83*bb4ee6a4SAndroid Build Coastguard Worker "build_chromeos_hatch", 84*bb4ee6a4SAndroid Build Coastguard Worker api.buildbucket.ci_build(project="crosvm/crosvm"), 85*bb4ee6a4SAndroid Build Coastguard Worker ) 86*bb4ee6a4SAndroid Build Coastguard Worker + api.post_process(filter_steps) 87*bb4ee6a4SAndroid Build Coastguard Worker ) 88