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-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: amd64-llvm17 World and kernel build and boot smoke test only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*' env: TARGET: amd64 TARGET_ARCH: amd64 TOOLCHAIN: llvm17 TOOLCHAIN_PKG: ${TOOLCHAIN}-lite - name: amd64-llvm18 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: llvm18 TOOLCHAIN_PKG: ${TOOLCHAIN}-lite - 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: arm64-llvm17 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: llvm17 TOOLCHAIN_PKG: ${TOOLCHAIN} - name: arm64-llvm18 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: llvm18 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} EXTRA_MAKE_FLAGS: -s - name: amd64-gcc13 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-gcc13 TOOLCHAIN_PKG: ${TOOLCHAIN} EXTRA_MAKE_FLAGS: -s - name: aarch64-gcc12 World and kernel build and boot smoke test (manual) only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' trigger_type: manual env: TARGET: arm64 TARGET_ARCH: aarch64 TOOLCHAIN: aarch64-gcc12 TOOLCHAIN_PKG: ${TOOLCHAIN} EXTRA_MAKE_FLAGS: -s - name: aarch64-gcc13 World and kernel build and boot smoke test (manual) only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' trigger_type: manual env: TARGET: arm64 TARGET_ARCH: aarch64 TOOLCHAIN: aarch64-gcc13 TOOLCHAIN_PKG: ${TOOLCHAIN} EXTRA_MAKE_FLAGS: -s - name: amd64-gcc12 World and kernel build and boot smoke test (FreeBSD repo) only_if: $CIRRUS_REPO_FULL_NAME == 'freebsd/freebsd-src' && $CIRRUS_BRANCH =~ 'pull/.*' env: TARGET: amd64 TARGET_ARCH: amd64 TOOLCHAIN: amd64-gcc12 TOOLCHAIN_PKG: ${TOOLCHAIN} EXTRA_MAKE_FLAGS: -s 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 -n user -m - mkdir -p /usr/obj/$(pwd -P) - chown user:user /usr/obj/$(pwd -P) - su user -c "git config --global --add safe.directory $(pwd -P)" build_world_script: - su user -c "make -j$(sysctl -n hw.ncpu) ${EXTRA_MAKE_FLAGS} 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