From: Uladzimir Bely <ubely@ilbers.de>
To: isar-users@googlegroups.com
Subject: [PATCH v4 9/9] linux-custom: Move cfg fragments applying to debian/rules
Date: Thu, 10 Feb 2022 07:43:17 +0100 [thread overview]
Message-ID: <20220210064317.3712-10-ubely@ilbers.de> (raw)
In-Reply-To: <20220210064317.3712-1-ubely@ilbers.de>
Prepare linux fragments applying in Debian way.
This allows to avoid pre-build chroot call used for merging
kernel config file and custom config fragments. Also, shell exports
are not used anymore in favor of template files.
Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
---
.../linux/files/debian/isar/configure.tmpl | 19 +++++++
.../linux/files/debian/rules.tmpl | 3 ++
meta/recipes-kernel/linux/linux-custom.inc | 53 ++++++++++++-------
3 files changed, 55 insertions(+), 20 deletions(-)
create mode 100644 meta/recipes-kernel/linux/files/debian/isar/configure.tmpl
diff --git a/meta/recipes-kernel/linux/files/debian/isar/configure.tmpl b/meta/recipes-kernel/linux/files/debian/isar/configure.tmpl
new file mode 100644
index 00000000..83871baa
--- /dev/null
+++ b/meta/recipes-kernel/linux/files/debian/isar/configure.tmpl
@@ -0,0 +1,19 @@
+#!/bin/bash
+# Copyright (c) Mentor Graphics, a Siemens business, 2019
+# SPDX-License-Identifier: MIT
+
+# Load common stuff
+. ${S}/debian/isar/common || exit ${?}
+
+do_configure() {
+
+ # Process kernel config target and fragments
+ ${MAKE} O=${KERNEL_BUILD_DIR} ${KERNEL_CONFIG_TARGET} || exit ${?}
+ ./scripts/kconfig/merge_config.sh -O ${KERNEL_BUILD_DIR}/ \
+ ${KERNEL_BUILD_DIR}/.config ${KERNEL_CONFIG_FRAGMENTS}
+
+ # Stop tracing
+ set +x
+}
+
+main configure ${*}
diff --git a/meta/recipes-kernel/linux/files/debian/rules.tmpl b/meta/recipes-kernel/linux/files/debian/rules.tmpl
index 05a26fe2..a1166287 100755
--- a/meta/recipes-kernel/linux/files/debian/rules.tmpl
+++ b/meta/recipes-kernel/linux/files/debian/rules.tmpl
@@ -22,6 +22,9 @@ isar_env=$(strip \
override_dh_auto_clean:
$(isar_env) && bash $(deb_top_dir)/isar/clean
+override_dh_auto_configure:
+ $(isar_env) && bash $(deb_top_dir)/isar/configure
+
override_dh_auto_build:
$(isar_env) && bash $(deb_top_dir)/isar/build
diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc
index 59d42c84..ea1abf76 100644
--- a/meta/recipes-kernel/linux/linux-custom.inc
+++ b/meta/recipes-kernel/linux/linux-custom.inc
@@ -52,6 +52,7 @@ TEMPLATE_FILES += " \
debian/isar/build.tmpl \
debian/isar/clean.tmpl \
debian/isar/common.tmpl \
+ debian/isar/configure.tmpl \
debian/isar/install.tmpl \
debian/isar/version.cfg.tmpl \
debian/linux-image.postinst.tmpl \
@@ -71,6 +72,8 @@ TEMPLATE_VARS += " \
KERNEL_HEADERS_DEBIAN_DEPENDS \
LINUX_VERSION_EXTENSION \
KERNEL_NAME_PROVIDED \
+ KERNEL_CONFIG_TARGET \
+ KERNEL_CONFIG_FRAGMENTS \
"
inherit dpkg
@@ -146,41 +149,51 @@ do_prepare_build_prepend() {
# build directory for our "full" kernel build
KERNEL_BUILD_DIR = "build-full"
+def get_kernel_config_target(d):
+ kernel_defconfig = d.getVar('KERNEL_DEFCONFIG', True)
+
+ config_target = kernel_defconfig
+
+ if kernel_defconfig:
+ workdir=d.getVar('WORKDIR', True)
+ if os.path.isfile(workdir + "/" + kernel_defconfig):
+ config_target = "olddefconfig"
+ else:
+ config_target = "defconfig KBUILD_DEFCONFIG=" + kernel_defconfig
+ else:
+ config_target = "defconfig"
+
+ return config_target
+
+KERNEL_CONFIG_TARGET = "${@get_kernel_config_target(d)}"
+
+def get_kernel_config_fragments(d):
+ src_frags = " ".join(config_fragments(d))
+ out_frags = " ".join(map(lambda frag: 'debian/fragments/' + frag, config_fragments(d)))
+
+ linux_version_extension = d.getVar('LINUX_VERSION_EXTENSION', True)
+ if linux_version_extension:
+ out_frags += " debian/isar/version.cfg"
+
+ return out_frags
+
+KERNEL_CONFIG_FRAGMENTS = "${@get_kernel_config_fragments(d)}"
+
dpkg_configure_kernel() {
- config_target="${KERNEL_DEFCONFIG}"
rm -rf ${S}/${KERNEL_BUILD_DIR} && mkdir -p ${S}/${KERNEL_BUILD_DIR}
if [ -n "${KERNEL_DEFCONFIG}" ]; then
if [ -e "${WORKDIR}/${KERNEL_DEFCONFIG}" ]; then
cp ${WORKDIR}/${KERNEL_DEFCONFIG} ${S}/${KERNEL_BUILD_DIR}/.config
- config_target="olddefconfig"
- else
- config_target="defconfig KBUILD_DEFCONFIG=${KERNEL_DEFCONFIG}"
fi
- else
- config_target="defconfig"
fi
# copy config fragments over to the kernel tree
src_frags="${@ " ".join(config_fragments(d)) }"
- out_frags="${@ " ".join(map(lambda frag: 'debian/fragments/' + frag, config_fragments(d))) }"
- if [ -n "${LINUX_VERSION_EXTENSION}" ]; then
- out_frags="${out_frags} debian/isar/version.cfg"
- fi
rm -rf ${S}/debian/fragments
if [ -n "${src_frags}" ]; then
mkdir -p ${S}/debian/fragments
(cd ${WORKDIR} && cp ${src_frags} ${S}/debian/fragments/)
fi
-
- sudo -E chroot --userspec=$(id -u):$(id -g) ${BUILDCHROOT_DIR} sh -c " \
- export ARCH=${KERNEL_ARCH} && \
- cd ${PP}/${PPS} && \
- make O=${KERNEL_BUILD_DIR} ${config_target} && \
- ./scripts/kconfig/merge_config.sh \
- -O ${KERNEL_BUILD_DIR}/ \
- ${KERNEL_BUILD_DIR}/.config \
- ${out_frags} \
- "
}
dpkg_runbuild_prepend() {
--
2.20.1
prev parent reply other threads:[~2022-02-10 6:43 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-10 6:43 [PATCH v4 0/9] Avoid using shell environment during the build Uladzimir Bely
2022-02-10 6:43 ` [PATCH v4 1/9] template: Copy template attributes on transform Uladzimir Bely
2022-02-10 6:43 ` [PATCH v4 2/9] linux-module: Do not use shell environment Uladzimir Bely
2022-02-10 6:43 ` [PATCH v4 3/9] u-boot: " Uladzimir Bely
2022-02-10 6:43 ` [PATCH v4 4/9] trusted-firmware: " Uladzimir Bely
2022-02-10 6:43 ` [PATCH v4 5/9] optee-os: " Uladzimir Bely
2022-02-10 6:43 ` [PATCH v4 6/9] optee-os-stm32mp15x: " Uladzimir Bely
2022-02-10 6:43 ` [PATCH v4 7/9] kselftest: " Uladzimir Bely
2022-02-10 6:43 ` [PATCH v4 8/9] linux-mainline: Move cfg fragment test to debian/rules Uladzimir Bely
2022-02-10 6:43 ` Uladzimir Bely [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220210064317.3712-10-ubely@ilbers.de \
--to=ubely@ilbers.de \
--cc=isar-users@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox