# Copyright 2022 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. from recipe_engine.post_process import Filter DEPS = [ "crosvm", "depot_tools/depot_tools", "recipe_engine/buildbucket", "recipe_engine/context", "recipe_engine/properties", "recipe_engine/step", ] def RunSteps(api): with api.crosvm.cros_container_build_context(): gitilies = api.buildbucket.build.input.gitiles_commit upstream_url = "https://chromium.googlesource.com/crosvm/crosvm" revision = gitilies.id or "upstream/main" api.crosvm.step_in_container( "Sync repo", [ "repo", "sync", "-j8", ], cros=True, ) api.crosvm.step_in_container( "Add crosvm upstream remote", ["git", "remote", "add", "upstream", upstream_url], cros=True, ) # Ignore errors from unshallow as repo sync sometimes resulted in full git history api.crosvm.step_in_container( "Unshallow crosvm as needed", [ "bash", "-c", "for i in $(seq 1 5);do if [[ $(git rev-parse --is-shallow-repository) == 'true' ]]; then git fetch cros --unshallow; else break; fi; done", ], cros=True, ) api.crosvm.step_in_container("Print current git log", ["git", "log"], cros=True) api.crosvm.step_in_container( "Fetch upstream crosvm", ["git", "fetch", "upstream"], cros=True ) # Apply unmerged commit from upstream to crOS tree api.crosvm.step_in_container( "Cherry-pick from upstream revision", ["git", "cherry-pick", ".." + revision], cros=True ) api.crosvm.step_in_container( "cros-workon-hatch crosvm", ["cros_sdk", "cros-workon-hatch", "start", "crosvm"], cros=True, ) api.crosvm.step_in_container( "Build crosvm", [ "cros_sdk", "build_packages", "--board=hatch", "crosvm", ], cros=True, ) def GenTests(api): filter_steps = Filter("Build crosvm") yield ( api.test( "build_chromeos_hatch", api.buildbucket.ci_build(project="crosvm/crosvm"), ) + api.post_process(filter_steps) )