[Unstable/Lunar][RFC][PATCH] UBUNTU: [Packaging] kernelconfig: Automatically split the annotations file
Andrea Righi
andrea.righi at canonical.com
Sat Feb 4 09:48:35 UTC 2023
On Fri, Feb 03, 2023 at 11:38:59AM +0100, Juerg Haefliger wrote:
> We currently need an annotation rule for every single kernel config
> because the parser does not understand dependencies. A lot of configs are
> therefore due to other config setting or dependencies and are not directly
> controllable but they still end up in the annotations file and pollute it.
>
> Ideally, all configs that are set deliberately should have a note, the
> rest are just mechanically introduced necessary options. With this patch,
> the annotations file is split up and all rules *without* notes are moved
> to a separate file 'annotations.dep'. The idea being that by looking at
> the 'main' annotations file, one can tell what this kernel's config is all
> about. This is especially helpful for derivatives that include and
> override the master annotations.
>
> Obviously the whole concept depends on the maintainer being diligent and
> adding notes to configs that are manually modified...
>
> Signed-off-by: Juerg Haefliger <juerg.haefliger at canonical.com>
So, I've played with this a little bit and I like the idea of having a
way to immediately identify the subset of configs with a note (configs
that we care about) vs configs without notes (dependencies or configs
that we don't care).
However, I don't know if introducing a new file and hard-code the name
"annotations.dep" is the ideal solution.
Also because in perspective we may have multiple annotations files
(annotations.ubuntu, annotations.cloud, annotations.systemd,
annotations.apparmor, etc.).
So, I was wondering if the annotations script could just save the
configs with a note at the end of the files after the other configs.
In this way we would still keep a single file and at the same time
maintain the separation between configs-with-note vs configs-without-note.
This change would be implemented in the annotations script itself and we
won't have to touch any other script.
What do you think?
Thanks,
-Andrea
> ---
> debian/scripts/misc/kernelconfig | 33 ++++++++++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
>
> diff --git a/debian/scripts/misc/kernelconfig b/debian/scripts/misc/kernelconfig
> index a3559f323b57..578972083259 100755
> --- a/debian/scripts/misc/kernelconfig
> +++ b/debian/scripts/misc/kernelconfig
> @@ -173,6 +173,39 @@ else
> python3 debian/scripts/misc/annotations -f "${annotations_file}" \
> --arch "${arch}" --flavour "${flavour}" --import "${tmp_conf_file}"
> done
> +
> + if grep -q '^include "annotations.dep"' "${annotations_file}" ; then
> + echo
> + echo "Splitting annotations ..."
> + echo
> +
> + # Collect the configs with notes
> + declare -A config_w_notes
> + while IFS=" " read -r config rest ; do
> + config_w_notes[${config}]=1
> + done < <(grep '^CONFIG_.* note<' "${annotations_file}")
> +
> + # Move all configs without notes to the dependers file
> + true > "${annotations_file}".new
> + while IFS= read -r line ; do
> + outfile="${annotations_file}".new
> + if [ "${line#CONFIG_}" != "${line}" ] ; then
> + config=${line%% *}
> + if [ ${config_w_notes[${config}]:-0} -eq 0 ] ; then
> + outfile="${annotations_file}".dep
> + fi
> + fi
> + echo "${line}" >> "${outfile}"
> + done < "${annotations_file}"
> +
> + # Squeeze multiple empty lines and remove any trailing
> + # empty line from the annotations file
> + cat -s "${annotations_file}".new | sed '${/^$/d}' > "${annotations_file}"
> + rm "${annotations_file}".new
> +
> + # Sort the dependers file
> + sort -uo "${annotations_file}".dep "${annotations_file}".dep
> + fi
> fi
>
> exit "${rc}"
> --
> 2.34.1
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
More information about the kernel-team
mailing list