mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-04-20 23:41:08 +00:00
In a distributed, non-homogeneous CI setup, the binary-toolchain setup script might not run on the machine that needs the toolchains. Make this per-build and it will always be there, at the expense of running on builds that might not need it (though it still should be fast). Also, there is an issue with the directory where the binary toolchain is located being global, and racing against other systems using, setting up, and tearing down. Link this to a local directory to avoid any races. Signed-off-by: Jon Mason <jon.mason@arm.com>
213 lines
4.0 KiB
YAML
213 lines
4.0 KiB
YAML
image: ghcr.io/siemens/kas/kas:latest-release
|
|
|
|
# First do a common bootstrap, and then build all the targets
|
|
stages:
|
|
- prep
|
|
- bootstrap
|
|
- build
|
|
|
|
# Common job fragment to get a worker ready
|
|
.setup:
|
|
stage: build
|
|
interruptible: true
|
|
variables:
|
|
KAS_WORK_DIR: $CI_PROJECT_DIR/work
|
|
KAS_REPO_REF_DIR: $CI_BUILDS_DIR/persist/repos
|
|
SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate
|
|
DL_DIR: $CI_BUILDS_DIR/persist/downloads
|
|
BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml
|
|
TOOLCHAIN_DIR: $CI_BUILDS_DIR/persist/toolchains
|
|
IMAGE_DIR: $CI_PROJECT_DIR/work/build/tmp/deploy/images
|
|
TOOLCHAIN_LINK_DIR: $CI_PROJECT_DIR/work/build/toolchains
|
|
before_script:
|
|
- echo KAS_WORK_DIR = $KAS_WORK_DIR
|
|
- echo SSTATE_DIR = $SSTATE_DIR
|
|
- echo DL_DIR = $DL_DIR
|
|
- rm -rf $KAS_WORK_DIR
|
|
- mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
|
|
# Must do this here, as it's the only way to make sure the toolchain is installed on the same builder
|
|
- ./ci/get-binary-toolchains $DL_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
|
|
|
|
# Generalised fragment to do a Kas build
|
|
.build:
|
|
extends: .setup
|
|
script:
|
|
- KASFILES=$(./ci/jobs-to-kas $CI_JOB_NAME)
|
|
- kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
|
|
- kas build $KASFILES
|
|
- ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
|
|
|
|
#
|
|
# Prep stage, update repositories once
|
|
#
|
|
update-repos:
|
|
extends: .setup
|
|
stage: prep
|
|
script:
|
|
- flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
|
|
|
|
#
|
|
# Bootstrap stage, bootstrap and machine coverage
|
|
#
|
|
|
|
# Build a number of native tools first to ensure the other builders don't race
|
|
# over them
|
|
n1sdp/bootstrap:
|
|
extends: .build
|
|
stage: bootstrap
|
|
|
|
# What percentage of machines in the layer do we build
|
|
machine-coverage:
|
|
stage: bootstrap
|
|
interruptible: true
|
|
script:
|
|
- ./ci/check-machine-coverage
|
|
coverage: '/Coverage: \d+/'
|
|
|
|
|
|
#
|
|
# Build stage, the actual build jobs
|
|
#
|
|
|
|
# Validate layers are Yocto Project Compatible
|
|
check-layers:
|
|
extends: .setup
|
|
coverage: '/Coverage: \d+/'
|
|
script:
|
|
- kas shell --update --force-checkout ci/base.yml:ci/meta-python.yml --command \
|
|
"$CI_PROJECT_DIR/ci/check-layers.py $CI_PROJECT_DIR/ci/check-layers.yml $CI_PROJECT_DIR $KAS_WORK_DIR"
|
|
|
|
corstone500:
|
|
extends: .build
|
|
|
|
corstone700-fvp:
|
|
extends: .build
|
|
|
|
corstone700-mps3:
|
|
extends: .build
|
|
|
|
fvp-base:
|
|
extends: .build
|
|
|
|
fvp-base-arm32:
|
|
extends: .build
|
|
|
|
fvp-base-arm32/external-gccarm:
|
|
extends: .build
|
|
|
|
fvp-baser-aemv8r64:
|
|
extends: .build
|
|
|
|
gem5-arm64:
|
|
extends: .build
|
|
|
|
gem5-arm64-xen:
|
|
extends: .build
|
|
|
|
gem5-atp-arm64:
|
|
extends: .build
|
|
|
|
generic-arm64:
|
|
extends: .build
|
|
|
|
juno:
|
|
extends: .build
|
|
|
|
juno/clang:
|
|
extends: .build
|
|
|
|
microbit-v1:
|
|
extends: .build
|
|
|
|
musca-b1:
|
|
extends: .build
|
|
|
|
musca-s1:
|
|
extends: .build
|
|
|
|
n1sdp:
|
|
extends: .build
|
|
|
|
n1sdp/armgcc:
|
|
extends: .build
|
|
|
|
qemu-cortex-a53:
|
|
extends: .build
|
|
|
|
qemuarm/testimage:
|
|
extends: .build
|
|
|
|
qemuarm64-sbsa:
|
|
extends: .build
|
|
|
|
qemuarm64-secureboot/testimage:
|
|
extends: .build
|
|
|
|
qemuarm64-secureboot/clang/testimage:
|
|
extends: .build
|
|
|
|
qemuarm64-secureboot/clang/musl/testimage:
|
|
extends: .build
|
|
|
|
qemuarm64-secureboot/musl/testimage:
|
|
extends: .build
|
|
|
|
qemuarmv5/testimage:
|
|
extends: .build
|
|
|
|
sgi575:
|
|
extends: .build
|
|
|
|
tc0:
|
|
extends: .build
|
|
|
|
|
|
#
|
|
# Utility tasks, not executed automatically
|
|
#
|
|
|
|
delete-dl-dir:
|
|
extends: .setup
|
|
stage: prep
|
|
when: manual
|
|
script:
|
|
- rm -rf $DL_DIR/*
|
|
|
|
delete-repo-dir:
|
|
extends: .setup
|
|
stage: prep
|
|
when: manual
|
|
script:
|
|
- rm -rf $KAS_REPO_REF_DIR/*
|
|
|
|
# Delete all sstate
|
|
delete-sstate:
|
|
extends: .setup
|
|
stage: prep
|
|
when: manual
|
|
script:
|
|
- rm -rf $SSTATE_DIR/*
|
|
|
|
delete-toolchains:
|
|
extends: .setup
|
|
stage: prep
|
|
when: manual
|
|
script:
|
|
- rm -rf $TOOLCHAIN_DIR/*
|
|
|
|
# Wipe out old sstate
|
|
prune-sstate:
|
|
extends: .setup
|
|
stage: prep
|
|
when: manual
|
|
script:
|
|
- find $SSTATE_DIR -type f -atime +30 -delete
|
|
|
|
# Report on disk usage
|
|
usage:
|
|
extends: .setup
|
|
stage: prep
|
|
when: manual
|
|
script:
|
|
- du -h -s $DL_DIR $SSTATE_DIR $KAS_REPO_REF_DIR $TOOLCHAIN_DIR
|