mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 10:10:41 +00:00
0a581d64ef
This adds an experimental build script that will build crosvm for ChromeOS. This will allow us to catch issues on the ChromeOS build of crosvm earlier in the process. BUG=b:226975041 TEST=./ci/kokoro/simulate.py ./ci/kokoro/build-chromeos.sh Change-Id: I4a1d906a44191e78f4e656fe76c989bd7e1b6977 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3600764 Reviewed-by: Dmitry Torokhov <dtor@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
70 lines
2.1 KiB
Bash
Executable file
70 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
|
# Copyright 2022 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
#
|
|
# Note: To simulate this locally, sudo needs to be passwordless for the duration of the build (~1h).
|
|
# This could be achieved by refreshing sudo in the background before running ci/simulate.py:
|
|
#
|
|
# while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
|
|
# ./ci/kokoro/simulate.py ./ci/kokoro/build-chromeos.sh
|
|
|
|
set -ex
|
|
|
|
CROS_ROOT="${KOKORO_ARTIFACTS_DIR}/cros"
|
|
CROSVM_ROOT="${KOKORO_ARTIFACTS_DIR}/git/crosvm"
|
|
DEPOT_TOOLS="${KOKORO_ARTIFACTS_DIR}/depot_tools"
|
|
|
|
BOARD="amd64-generic"
|
|
# TODO: Add other packages tracking the crosvm repo.
|
|
PACKAGE_LIST=(
|
|
'chromeos-base/crosvm'
|
|
)
|
|
|
|
setup_depot_tools() {
|
|
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git \
|
|
"$DEPOT_TOOLS"
|
|
export PATH="${DEPOT_TOOLS}:${PATH}"
|
|
}
|
|
|
|
setup_cros_source() {
|
|
repo init -q -u https://chromium.googlesource.com/chromiumos/manifest \
|
|
-b stable --depth=1 -c -g minilayout,crosvm
|
|
time repo sync -c # ~5min
|
|
time cros_sdk --create # ~16min
|
|
}
|
|
|
|
setup_crosvm_source() {
|
|
# Pull kokoro's version of crosvm into the cros monorepo
|
|
(
|
|
cd "${CROS_ROOT}/src/platform/crosvm" &&
|
|
git remote add crosvm "$CROSVM_ROOT" &&
|
|
git fetch crosvm &&
|
|
git checkout FETCH_HEAD
|
|
)
|
|
# Uprev ebuild files
|
|
local colon_separated_packages="$(printf '%s:' "${PACKAGE_LIST[@]}")"
|
|
./chromite/scripts/cros_uprev \
|
|
--package="$colon_separated_packages" \
|
|
--overlay-type=public
|
|
}
|
|
|
|
build_and_test_crosvm() {
|
|
# TODO: We currently build crosvm twice. Once with build_packages, once to run tests.
|
|
# ~20min
|
|
time cros_sdk build_packages --board "$BOARD" implicit-system "${PACKAGE_LIST[@]}"
|
|
# ~6min
|
|
time cros_sdk cros_run_unit_tests --board "$BOARD" --packages "${PACKAGE_LIST[@]}"
|
|
}
|
|
|
|
main() {
|
|
mkdir -p "$CROS_ROOT"
|
|
cd "$CROS_ROOT"
|
|
|
|
setup_depot_tools
|
|
setup_cros_source
|
|
setup_crosvm_source
|
|
build_and_test_crosvm
|
|
}
|
|
|
|
main
|