From 1c6aae1e15a8540564d3688f5c3fd6578ac9703b Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Tue, 14 Apr 2020 16:17:20 +0200 Subject: [PATCH 1/2] fragments: skip some config base on the arch Not all the fragments in common are needed by all the arch. The fragment can be skipped if the have the tag !arch. For example: # !s390x Fixes: #1010 Signed-off-by: Alice Frosi --- kernel/build-kernel.sh | 6 ++++-- kernel/kata_config_version | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/kernel/build-kernel.sh b/kernel/build-kernel.sh index a362508962..40d08ebd53 100755 --- a/kernel/build-kernel.sh +++ b/kernel/build-kernel.sh @@ -181,11 +181,13 @@ get_kernel_frag_path() { local gpu_path="${arch_path}/../gpu" local kernel_path="$2" + local arch="$3" local cmdpath="${kernel_path}/scripts/kconfig/merge_config.sh" local config_path="${arch_path}/.config" local arch_configs="$(ls ${arch_path}/*.conf)" - local common_configs="$(ls ${common_path}/*.conf)" + # Exclude configs if they have !$arch tag in the header + local common_configs="$(grep "\!${arch}" ${common_path}/*.conf -L)" local experimental_configs="$(ls ${common_path}/experimental/*.conf)" # These are the strings that the kernel merge_config.sh script kicks out @@ -275,7 +277,7 @@ get_default_kernel_config() { archfragdir="${default_config_frags_dir}/${kernel_arch}" if [ -d "${archfragdir}" ]; then - config="$(get_kernel_frag_path ${archfragdir} ${kernel_path})" + config="$(get_kernel_frag_path ${archfragdir} ${kernel_path} ${kernel_arch})" else [ "${hypervisor}" == "firecracker" ] && hypervisor="kvm" config="${default_kernel_config_dir}/${kernel_arch}_kata_${hypervisor}_${major_kernel}.x" diff --git a/kernel/kata_config_version b/kernel/kata_config_version index 8e14edce9c..85322d0b54 100644 --- a/kernel/kata_config_version +++ b/kernel/kata_config_version @@ -1 +1 @@ -78 +79 From b4a51d8939f8007ebd849243dba16d417c74c38e Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Tue, 26 May 2020 16:36:36 +0200 Subject: [PATCH 2/2] docs: add fragment exclusion tag Document how to use the !arch tag added by #1042 Fixes: #1010 Signed-off-by: Alice Frosi --- kernel/configs/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/configs/README.md b/kernel/configs/README.md index 7e9a5e668c..e664095b44 100644 --- a/kernel/configs/README.md +++ b/kernel/configs/README.md @@ -55,6 +55,12 @@ into a fragment. If adding config entries for a new subsystem or feature, consider making a new fragment with an appropriately descriptive name. +If you want to disable an entire fragment for a specific architecture, you can add the tag `# !${arch}` in the first line of the fragment. You can also exclude multiple architectures on the same line. Note the `#` at the beginning of the line, this is required to avoid that the tag is interpreted as a configuration. +Example of valid exclusion: +``` +# !s390x !ppc64le +``` + The fragment gathering tool perfoms some basic sanity checks, and the `build-kernel.sh` will fail and report the error in the cases of: