commit:     d5b0c16d1d3fdf63d743b22e7192e88e04556b05
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 13 22:37:12 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Nov 14 14:01:37 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d5b0c16d

kernel-build.eclass: Support merging config files

Add a convenience function to merge kernel config files from within
the build tree, and support merging user configs.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/kernel-build.eclass | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/eclass/kernel-build.eclass b/eclass/kernel-build.eclass
index 048d0c9b016..99279ba58a9 100644
--- a/eclass/kernel-build.eclass
+++ b/eclass/kernel-build.eclass
@@ -197,6 +197,38 @@ kernel-build_pkg_postinst() {
        savedconfig_pkg_postinst
 }
 
+# @FUNCTION: kernel-build_merge_configs
+# @USAGE: [distro.config...]
+# @DESCRIPTION:
+# Merge the config files specified as arguments (if any) into
+# the '.config' file in the current directory, then merge
+# any user-supplied configs from ${BROOT}/etc/kernel/config.d/*.config.
+# The '.config' file must exist already and contain the base
+# configuration.
+kernel-build_merge_configs() {
+       debug-print-function ${FUNCNAME} "${@}"
+
+       [[ -f .config ]] || die "${FUNCNAME}: .config does not exist"
+       has .config "${@}" &&
+               die "${FUNCNAME}: do not specify .config as parameter"
+
+       local shopt_save=$(shopt -p nullglob)
+       shopt -s nullglob
+       local user_configs=( "${BROOT}"/etc/kernel/config.d/*.config )
+       shopt -u nullglob
+
+       if [[ ${#user_configs[@]} -gt 0 ]]; then
+               elog "User config files are being applied:"
+               local x
+               for x in "${user_configs[@]}"; do
+                       elog "- ${x}"
+               done
+       fi
+
+       ./scripts/kconfig/merge_config.sh -m -r \
+               .config "${@}" "${user_configs[@]}" || die
+}
+
 _KERNEL_BUILD_ECLASS=1
 fi
 

Reply via email to