mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-21 18:27:22 +00:00
![Brooks Davis](/assets/img/avatar_default.png)
The git checkout it owned by root, but builds are run as "user". git
refuses to operate in such an environment unless the directory is
trusted so make "user" trust it.
Fixes CI after 99b8c0c35b
.
Sponsored by: DARPA
Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D42903
124 lines
4.2 KiB
YAML
124 lines
4.2 KiB
YAML
|
|
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
|
|
only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
|
|
trigger_type: manual
|
|
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' || $CIRRUS_BRANCH =~ 'pull/.*'
|
|
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}
|
|
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: 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
|