Repository navigation
kbuild: merge config fragments from the kernel source tree - #3225
Open
bhcopeland wants to merge 2 commits into
Open
bhcopeland wants to merge 2 commits into
bhcopeland wants to merge 2 commits into
Conversation
Member
Author
bhcopeland
marked this pull request as draft
September 25, 2026 22:22
bhcopeland
force-pushed
the
kbuild-tree-fragments
branch
from
October 28, 2026 17:31
2903b20 to
a8b950f
Compare
aistcv
added a commit
to aistcv/kernelci-pipeline
that referenced
this pull request
Oct 28, 2026
Build tools/perf alongside mainline arm64 kernels using the dedicated GCC 15 perf image from kernelci-core. Combine defconfig with lab-setup, perf and perf-arm64, and disable kselftest compilation. Read the common and arm64 perf fragments from tools/perf/tests/config-fragments in the selected kernel using tree directives, keeping the settings aligned with that kernel revision. Request perf and pass CORESIGHT=1 through extra_targets, using TuxMake's existing positional make-assignment support to enable OpenCSD decoding. Schedule the job for mainline checkout events to produce a perf archive. Requires the tree-fragment support from kernelci/kernelci-core#3225 and a published arm64-perf-kernelci image containing that support. Signed-off-by: Aishwarya TCV <aishwarya.tcv@arm.com>
bhcopeland
marked this pull request as ready for review
October 29, 2026 10:37
bhcopeland
force-pushed
the
kbuild-tree-fragments
branch
3 times, most recently
from
October 30, 2026 10:17
d774c79 to
8c6337a
Compare
A fragment can only carry config symbols or a make target, so a job that needs the options a subsystem's selftests declare has to either run 'make kselftest-merge', which merges every selftest config and brings in lockdep, DEBUG_PAGEALLOC and the rest, or copy that one config file into fragments.yaml, where it goes stale as the kernel's copy changes. Accept a 'tree:<path>' entry naming a config fragment file in the kernel source tree, such as 'tree:tools/testing/selftests/arm64/config', and merge it as each tree ships it. The make backend merges it with merge_config.sh from inside the tree; tuxmake is given its path in the tree. The path is written into the build script unquoted, so one that is empty, absolute, lexically outside the tree or holding anything but letters, digits, '.', '_', '-' and '/' fails the job. When a tree does not ship the file its merge is skipped with a message, and the build continues: tools/testing/selftests/arm64/config first appears in v7.3-rc1, and the same fragment is built for stable branches that predate it. The check happens when the script runs, since the tree is only unpacked then. Signed-off-by: Ben Copeland <ben.copeland@linaro.org>
A 'make:<target>' fragment entry is written into the build script unquoted, both as 'make <target>' for the make backend and as --kconfig-add=make:<target> for tuxmake, so a target holding whitespace or shell syntax would be run as shell, and one starting with '-' would be taken as an option. Accept only a plain target name, a letter or digit followed by letters, digits, '.', '_' and '-', and refuse anything else as a job error. That covers kselftest-merge and the *.config fragment targets. A bare 'make:' is still skipped. Suggested-by: Anders Roxell <anders.roxell@linaro.org> Signed-off-by: Ben Copeland <ben.copeland@linaro.org>
bhcopeland
force-pushed
the
kbuild-tree-fragments
branch
from
October 30, 2026 10:21
8c6337a to
2e9bdcd
Compare
roxell
approved these changes
Oct 30, 2026
Contributor
|
With this implementation Core applies inline settings first, then the tree file. Could we preserve entry order when mixing tree fragments and inline settings? Could you clarify the order of inline overrides? |
This branch has not been deployed
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.
A fragment can only carry config symbols or a make target, so a job that needs the options a subsystem's selftests declare has to either run 'make kselftest-merge', which merges every selftest config and brings in lockdep, DEBUG_PAGEALLOC and the rest, or copy that one config file into fragments.yaml, where it goes stale as the kernel's copy changes.
Accept a 'tree:' entry naming a config fragment file in the kernel source tree, such as 'tree:tools/testing/selftests/arm64/config', and merge it as each tree ships it. The make backend merges it with merge_config.sh from inside the tree; tuxmake is given its path in the tree. The path is written into the build script unquoted, so one that is empty, absolute, lexically outside the tree or holding anything but letters, digits, '.', '_', '-' and '/' fails the job.
When a tree does not ship the file its merge is skipped with a message, and the build continues: tools/testing/selftests/arm64/config first appears in v7.3-rc1, and the same fragment is built for stable branches that predate it. The check happens when the script runs, since the tree is only unpacked then.