diff --git a/.cirrus.yml b/.cirrus.yml --- a/.cirrus.yml +++ b/.cirrus.yml @@ -51,3 +51,46 @@ post_script: - df -m - du -m -s /usr/obj + +# Check that assorted manual housekeeping has been done. These checks +# don't require a built toolchain and are a separate job to avoid +# conflating missing updates that slip through from upstream with issues +# in the main build. +# +# Scripts should be sorted by increasing runtime so we get results from +# fast failures first. +# +housekeeping_task: + compute_engine_instance: + # Reduce resource use for this task. The cloning stage is somewhat + # CPU (or maybe disk bandwidth?) bound, but runtime is still less than + # the main job so accept the higher turn around time in excange for + # lower resource use. + # + # Comment these out during test development for better turnaround. + # + cpu: 1 + memory: 1G + disk: 22 + name: Check assorted housekeeping is up to date + timeout_in: 20m + install_script: + - sh .cirrus-ci/pkg-install.sh git-lite + setup_script: + - uname -a + - git status + make_sysent_script: + - make sysent + - if ! git diff --exit-code; then printf "\n>>> Generated sysent files not updated, run make sysent <<<\n"; false; fi + include_ldirs_script: + - 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 + - (cd tools/build/options && ./makeman > /tmp/src.conf.5 2> /tmp/makeman.out); cat /tmp/makeman.out + - diff -u --ignore-matching-lines "^.Dd" share/man/man5/src.conf.5 /tmp/src.conf.5 || (echo ">>> src.conf.5 was not updated as required <<<" && false) + - if grep -q "no description found" /tmp/makeman.out; then printf "\n>>> Missing description files <<<\n"; false; fi + post_script: + - git status + - df -m