It appears that Cirrus-CI has a 100MB limit for log output, and we exceed that (!) with the amd64-gcc12 build. Separate world and kernel build tasks in an attempt to stay below the limit. This also has the benefit of showing world and kernel build status separately in the Cirrus-CI UI. PR: 271903 Sponsored by: The FreeBSD Foundation
112 lines
3.7 KiB
YAML
112 lines
3.7 KiB
YAML
# $FreeBSD$
|
|
|
|
compute_engine_instance:
|
|
# Image list available via
|
|
# gcloud compute images list --project freebsd-org-cloud-dev --no-standard-images
|
|
platform: freebsd
|
|
image_project: freebsd-org-cloud-dev
|
|
image: freebsd-13-2-release-amd64
|
|
cpu: 8
|
|
memory: 8G
|
|
disk: 40
|
|
|
|
env:
|
|
PKG_FORMAT: tar
|
|
|
|
task:
|
|
matrix:
|
|
- name: amd64-llvm15 World and kernel build and boot smoke test
|
|
env:
|
|
TARGET: amd64
|
|
TARGET_ARCH: amd64
|
|
TOOLCHAIN: llvm15
|
|
TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
|
|
- name: amd64-llvm16 World and kernel build and boot smoke test
|
|
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
trigger_type: manual
|
|
env:
|
|
TARGET: amd64
|
|
TARGET_ARCH: amd64
|
|
TOOLCHAIN: llvm16
|
|
TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
|
|
- name: arm64-llvm15 World and kernel build and boot smoke test
|
|
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
trigger_type: manual
|
|
env:
|
|
TARGET: arm64
|
|
TARGET_ARCH: aarch64
|
|
TOOLCHAIN: llvm15
|
|
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
- name: arm64-llvm16 World and kernel build and boot smoke test
|
|
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
trigger_type: manual
|
|
env:
|
|
TARGET: arm64
|
|
TARGET_ARCH: aarch64
|
|
TOOLCHAIN: llvm16
|
|
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
- name: amd64-gcc12 World and kernel build and boot smoke test (manual)
|
|
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
trigger_type: manual
|
|
env:
|
|
TARGET: amd64
|
|
TARGET_ARCH: amd64
|
|
TOOLCHAIN: amd64-gcc12
|
|
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
- name: amd64-gcc12 World and kernel build and boot smoke test (FreeBSD repo)
|
|
only_if: $CIRRUS_REPO_FULL_NAME == 'freebsd/freebsd-src'
|
|
env:
|
|
TARGET: amd64
|
|
TARGET_ARCH: amd64
|
|
TOOLCHAIN: amd64-gcc12
|
|
TOOLCHAIN_PKG: ${TOOLCHAIN}
|
|
timeout_in: 120m
|
|
install_script:
|
|
- sh .cirrus-ci/pkg-install.sh ${TOOLCHAIN_PKG} git-lite
|
|
|
|
setup_script:
|
|
- uname -a
|
|
- gpart show
|
|
- df -m
|
|
- pkg --version
|
|
- pw useradd user
|
|
- mkdir -p /usr/obj/$(pwd -P)
|
|
- chown user:user /usr/obj/$(pwd -P)
|
|
|
|
build_world_script:
|
|
- su user -c "make -j$(sysctl -n hw.ncpu) CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildworld"
|
|
|
|
build_kernel_script:
|
|
- su user -c "make -j$(sysctl -n hw.ncpu) CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildkernel"
|
|
|
|
package_script:
|
|
- su user -c "make CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes packages"
|
|
|
|
package_check_script:
|
|
- su user -c "/usr/libexec/flua tools/pkgbase/metalog_reader.lua -c /usr/obj/$(pwd -P)/${TARGET}.${TARGET_ARCH}/worldstage/METALOG"
|
|
|
|
test_script:
|
|
- sh .cirrus-ci/pkg-install.sh qemu-nox11
|
|
- sh tools/boot/ci-qemu-test.sh
|
|
|
|
make_sysent_script:
|
|
# Check that make sysent results were committed if required
|
|
- make sysent
|
|
- if ! git diff --exit-code; then printf "\n>>> Generated sysent files not updated, run make sysent <<<\n"; false; fi
|
|
|
|
include_ldirs_script:
|
|
# Check that includes/Makefile refers to existing directories
|
|
- if ! make -C include/ check-ldirs; then printf "\n>>> include/Makefile lists nonexistant directories <<<\n"; false; fi
|
|
|
|
makeman_script:
|
|
# Check that the committed src.conf.5 matches the one generated by
|
|
# tools/build/options/makeman (modulo the date which always updates)
|
|
# XXX: This script is slow so keep it last
|
|
- (make makeman 2> /tmp/makeman.out); cat /tmp/makeman.out
|
|
- if ! git diff --exit-code --ignore-matching-lines "^.Dd" share/man/man5/src.conf.5; then printf "\n>>> src.conf.5 was not updated as required <<<\n"; false; fi
|
|
- if grep -q "no description found" /tmp/makeman.out; then printf "\n>>> Missing description files <<<\n"; false; fi
|
|
|
|
post_script:
|
|
- df -m
|
|
- du -m -s /usr/obj
|