CI/BM: fix BuildCheck — pin ubuntu-24.04, upgrade DDT image to gcc-14, register rasdaemon/mce-inject submodules, gate warnings via allowlist#579
Merged
Conversation
- Add rasdaemon (github.com/mchehab/rasdaemon @ a4620eb). - Add mce-inject (git.kernel.org/.../mce-inject @ ca81c1d). - Re-point mce-test from a personal fork to canonical upstream (git.kernel.org/.../mce-test) and re-pin to dbbbc64, which is reachable in upstream master (1 commit behind tip)." Signed-off-by: Hongyu Ning <hongyu.ning@intel.com>
Signed-off-by: Hongyu Ning <hongyu.ning@intel.com>
- Replace gcc-13 with gcc-14 (+ g++-14) and their -multilib variants so the existing gcc-multilib / g++-multilib (i386) build keeps working. Register them via update-alternatives so plain `gcc` / `g++` resolve to v14 without touching in-tree Makefiles. Required by new feature folders that need gcc >= 14. - Add bison, flex, autoconf, automake, libtool, pkg-config, libsqlite3-dev, libtraceevent-dev, python3 so ras/rasdaemon can autoreconf + ./configure --enable-sqlite3 --enable-mce ... in CI. Signed-off-by: Hongyu Ning <hongyu.ning@intel.com>
…ules - Add a `DDT_SKIP_SUBDIRS` make variable consumed by the top-level build loop: subdir basenames listed in it are skipped with a clear log line. Used by `docker_make_ddt` (and the CI build_check script) to skip `tdx-compliance`, which needs a matching /lib/modules/$(uname -r)/build tree not available in the DDT container. - Fix the post-build error check: it inspected `MAKE_TOOLS_LOG` (undefined) instead of `MAKE_LKVS_LOG`, so subfolder build failures were silently treated as success. Now correctly exits 2 when any subfolder failed. - Fix the per-subdir failure path: capture rc and `cd ..` before `continue` so we don't stay in the failed subdir for the next iteration. - Mount `/lib/modules/$(uname -r)` into the `docker_clean` / `docker_make` containers (matches `docker_make_ddt`) so kernel module subdirs can resolve their build tree. - Add a `docker_clean_ddt` target mirroring `docker_make_ddt` (ubuntu:24.04 image). - Reword the success message to "All required subfolders built successfully" to reflect that some may have been skipped. Signed-off-by: Hongyu Ning <hongyu.ning@intel.com>
- pull_request.yml:
* runs-on: ubuntu-latest -> ubuntu-24.04 (all jobs); checkout v3->v4,
setup-python v4->v5.
* BuildCheck: drop docker-engine bootstrap (preinstalled on the
runner), drop sudo, build from BM/Dockerfile.build.ddt, checkout
submodules recursively.
* CodeCheck: use apt-get + set -euo pipefail, add wget.
* cfg-lint-check: replace tj-actions/changed-files@v46 with an inline
`git diff` over the PR merge-base feeding the cartesian matrix.
- .github/scripts/build_check:
* Fix bogus `set -oe pipefail` -> `set -o pipefail`.
* Use a named, run-id-scoped container with a cleanup trap.
* Log container os-release, gcc/g++ versions, uname before building.
* Preconfigure ras/rasdaemon (autoreconf + ./configure) before
`make test`; skip tdx-compliance by default via DDT_SKIP_SUBDIRS
(needs a matching kernel build tree not present in CI).
* Capture rc via PIPESTATUS; split warnings into build_warnings.log
and unexpected_build_warnings.log, failing only on the latter.
- .github/scripts/build_warning_allowlist (new):
* Regex-per-line allowlist of currently known pre-existing build
warnings (cet, cmpccxadd, ras/mce-test, einj, memattr, page,
etc.) so CI gates on new regressions only. Entries should be
pruned as the underlying source is fixed.
Signed-off-by: Hongyu Ning <hongyu.ning@intel.com>
5976246 to
f90b479
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restore the open-source
BuildCheckCI job to a working state. The previousconfiguration depended on a personal fork submodule, an outdated gcc-13 image,
a buggy build_check script, and a
ubuntu-latestrunner whose silent shift to24.04 was already exposing pre-existing build warnings as job failures.
What's in this PR
BM/ras: add rasdaemon and mce-inject submodules, re-pin mce-test.gitmodulesis updated to point mce-test at the canonical upstream(
git.kernel.org/.../mce-test.git) and re-pinned todbbbc64(reachablein upstream master).
rasdaemon(github.com/mchehab/rasdaemon @ a4620eb)and
mce-inject(git.kernel.org/.../mce-inject @ ca81c1d) are added asfirst-class submodules so
actions/checkout --recurse-submodulespopulatesthem on every CI run. All three SHAs verified reachable from upstream.
BM/ras: refresh Makefile, tests and helper scriptsPure content sync of the per-test shell scripts (
mce_test.sh,lmce_test.sh,ras_common.sh), the per-subdirMakefile, the README,and adds
bff_test.sh/einjv2_test.sh. No CI / build-system changesin this commit.
BM: bumpDockerfile.build.ddtto gcc-14 and add rasdaemon build depsNew BM/ras subdirs (cmpccxadd and others) need
gcc >= 14. Image basestays at
ubuntu:24.04(gcc-14 is in noble universe, no PPA required).Adds
bison,flex,autoconf,automake,libtool,pkg-config,libsqlite3-dev,libtraceevent-dev,python3so rasdaemon canautoreconf && ./configure --enable-sqlite3 --enable-mce …. Registersgcc-14/g++-14 via
update-alternativesso baregcc/g++resolves tov14 without touching in-tree Makefiles.
BM/Makefile: addDDT_SKIP_SUBDIRSskip mechanism and fix failure detectionAdds an opt-in skip list (used by CI to skip
tdx-compliance, whichneeds a matching
/lib/modules/$(uname -r)/buildtree not available inthe runner). Fixes a latent bug in the post-build error check that
inspected an undefined
MAKE_TOOLS_LOGinstead ofMAKE_LKVS_LOG,masking real subdir build failures. Mounts
/lib/modulesintodocker_clean/docker_maketo matchdocker_make_ddt, and adds amatching
docker_clean_ddttarget.ci: pin ubuntu-24.04, build with gcc-14 DDT image, gate warnings via allowlistruns-on: ubuntu-latest→ubuntu-24.04on every job (pin, not float).BuildCheckbuilds fromBM/Dockerfile.build.ddt(gcc-14) instead ofBM/Dockerfile.build(gcc-11) and drops the docker-engine bootstrapblock (Docker is preinstalled on GitHub-hosted runners) plus
sudo -E.actions/checkoutv3 → v4 withsubmodules: recursive;actions/setup-pythonv4 → v5.cfg-lint-checkreplaces the third-partytj-actions/changed-files@v46with an inline
git diff --diff-filter=ACMRTover the PR merge-base.build_checkis rewritten: named/cleanup-trapped container, toolchaindiagnostic step, rasdaemon preconfigure,
tdx-complianceskip viaDDT_SKIP_SUBDIRS, and a new.github/scripts/build_warning_allowlist(regex per line) so onlynew warnings fail the job. Existing entries should be pruned as the
underlying sources are fixed; this is not a forever-suppress mechanism.