Pull requests that only change development guides or independent tooling still compile kernels and run the VM suites. Select Ginkgo, KUnit, Clang and kernel regression through one shared path policy before expensive work. Compare the whole PR against its merge base, retaining deleted paths and both sides of renames. Run checks for unclassified inputs. Keep path rules in .github/ci-checks.toml and validate their structure, check names, literal paths and conflicting entries before selection. Provide a validation-only command. Changes to the config or selector exercise every check. Select kernel regression once in the preparation job and gate the build job before expanding its matrix. Unrelated PRs do not allocate a runner for every kernel. Selection failures fail the workflow and successful skips include a reason in the job summary. Run the Packages workflow only after pushes to master, preserving its DEB/RPM builds and publication. Keep the separate Clang DEB build on PRs. Retain full master and manual checks and the existing Checkpatch runs. Cover path ownership, config validation and Git histories with tests, and shorten the CI guide around all workflows, selection and results. Quote the CC environment key so Checkpatch does not interpret unchanged YAML diff context as a Cc trailer.
Repository scripts
The tools are grouped by purpose. Existing Make targets keep their names; direct callers of a relocated script must use its new directory below.
| Directory | Tools and entry points |
|---|---|
source/ |
list-source-files, list-non-source-files, clean-source-tree, list-double-blank-lines, and run-shellcheck (make shellcheck). |
kernel/ |
generate-kernel-patch, generate-patched-kernel, run-regression-tests, kernel-matrix, sign-modules, patch filters, and shared kernel/RPM helpers. |
release/ |
generate-release-archive (make release-archive), build-rpm-artifacts (make rpm-artifacts), prepare-package-release, and update-version. |
runtime/ |
monitor-interrupt-rate, monitor-memory-usage, blockdev-perftest, and test-persistent-reservation. |
ci/ |
CI image and guest preparation, VM execution, and associated configuration. |
kunit/ |
KUnit inventory, labels, runner, and tooling tests; see the KUnit guide. |
The existing checkpatch, checkpatch_commits, checkpatch_diff, and
checkpatch_scan entry points remain directly under scripts/. The wrapper's
diagnostic ignore list is in checkpatch; whole-tree scan exclusions are in
checkpatch_scan. The kernel regression runner retains its separate analyzer
commands and filtering. Moving the tools does not change these policies.
Use Make targets from the repository root unless a component workflow says
otherwise. Direct scripts retain their working-directory conventions:
generate-kernel-patch and update-version use the SCST root, while archive
generation and source inventory use the requested or current source directory.
Module Makefiles invoke sign-modules from the directory containing modules.
Consult each script's argument handling before invoking it.
kernel/run-regression-tests prepares kernel trees and runs compilation,
checkpatch, sparse, and smatch according to its options. The maintained kernel
matrix is ABT_KERNELS in nightly/conf/nightly.conf; the CI subset is selected
through kernel/kernel-matrix and .github/kernel-matrix.conf.
Some helpers modify source trees, generated artifacts, or live devices:
source/clean-source-tree removes untracked and ignored files; kernel helpers
can download, patch, build, or sign; release helpers can update versions or
write packages. Runtime benchmarks and reservation exercises require a
deliberately selected disposable device. The runtime monitors only observe
host counters. See the root repository guidance for operational
boundaries.
Follow the local checks when editing tools.
make shellcheck selects Bash scripts under all of scripts/ using paths
recorded in HEAD. Check newly added or renamed paths explicitly before
committing; sourced libraries, POSIX shell scripts, and callers outside
scripts/ also need the checks described there.