Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
google
GitHub Repository: google/crosvm
Path: blob/main/infra/recipes/build_chromeos_hatch.py
5392 views
1
# Copyright 2022 The ChromiumOS Authors
2
# Use of this source code is governed by a BSD-style license that can be
3
# found in the LICENSE file.
4
5
from recipe_engine.post_process import Filter
6
7
DEPS = [
8
"crosvm",
9
"depot_tools/depot_tools",
10
"recipe_engine/buildbucket",
11
"recipe_engine/context",
12
"recipe_engine/properties",
13
"recipe_engine/step",
14
]
15
16
17
def RunSteps(api):
18
with api.crosvm.cros_container_build_context():
19
gitilies = api.buildbucket.build.input.gitiles_commit
20
upstream_url = "https://chromium.googlesource.com/crosvm/crosvm"
21
revision = gitilies.id or "upstream/main"
22
23
api.crosvm.step_in_container(
24
"Sync repo",
25
[
26
"repo",
27
"sync",
28
"-j8",
29
],
30
cros=True,
31
)
32
33
api.crosvm.step_in_container(
34
"Add crosvm upstream remote",
35
["git", "remote", "add", "upstream", upstream_url],
36
cros=True,
37
)
38
39
# Ignore errors from unshallow as repo sync sometimes resulted in full git history
40
api.crosvm.step_in_container(
41
"Unshallow crosvm as needed",
42
[
43
"bash",
44
"-c",
45
"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
],
47
cros=True,
48
)
49
50
api.crosvm.step_in_container("Print current git log", ["git", "log"], cros=True)
51
52
api.crosvm.step_in_container(
53
"Fetch upstream crosvm", ["git", "fetch", "upstream"], cros=True
54
)
55
56
# Apply unmerged commit from upstream to crOS tree
57
api.crosvm.step_in_container(
58
"Cherry-pick from upstream revision", ["git", "cherry-pick", ".." + revision], cros=True
59
)
60
61
api.crosvm.step_in_container(
62
"cros-workon-hatch crosvm",
63
["cros_sdk", "cros-workon-hatch", "start", "crosvm"],
64
cros=True,
65
)
66
67
api.crosvm.step_in_container(
68
"Build crosvm",
69
[
70
"cros_sdk",
71
"build_packages",
72
"--board=hatch",
73
"crosvm",
74
],
75
cros=True,
76
)
77
78
79
def GenTests(api):
80
filter_steps = Filter("Build crosvm")
81
yield (
82
api.test(
83
"build_chromeos_hatch",
84
api.buildbucket.ci_build(project="crosvm/crosvm"),
85
)
86
+ api.post_process(filter_steps)
87
)
88
89