From: Jan Kiszka <jan.kiszka@siemens.com>
To: Uladzimir Bely <ubely@ilbers.de>, isar-users@googlegroups.com
Subject: Re: [PATCH v2 04/24] linux-module: Do not use shell environment
Date: Fri, 19 Nov 2021 13:44:12 +0100 [thread overview]
Message-ID: <1bc95be7-e603-966b-5326-962362548e2c@siemens.com> (raw)
In-Reply-To: <20211119121333.13805-5-ubely@ilbers.de>
On 19.11.21 13:13, Uladzimir Bely wrote:
> From: Anton Mikanovich <amikan@ilbers.de>
>
> To make package build process independent of the shell environment we
> should remove KDIR and PN passing through export call.
> KDIR can be prepared during package build. This also will allow not to
> rely on previous builddeps install task.
> To pass PN variable we can just migrate to template-based debian/rules
> file.
>
> Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
> Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
> ---
> .../files/debian/{rules => rules.tmpl} | 14 ++++++++++-
> meta/recipes-kernel/linux-module/module.inc | 23 +++++++------------
> 2 files changed, 21 insertions(+), 16 deletions(-)
> rename meta/recipes-kernel/linux-module/files/debian/{rules => rules.tmpl} (50%)
>
> diff --git a/meta/recipes-kernel/linux-module/files/debian/rules b/meta/recipes-kernel/linux-module/files/debian/rules.tmpl
> similarity index 50%
> rename from meta/recipes-kernel/linux-module/files/debian/rules
> rename to meta/recipes-kernel/linux-module/files/debian/rules.tmpl
> index 59720b37..d8f1d48a 100755
> --- a/meta/recipes-kernel/linux-module/files/debian/rules
> +++ b/meta/recipes-kernel/linux-module/files/debian/rules.tmpl
> @@ -24,14 +24,26 @@ ifneq (,$(findstring 86,$(DEB_HOST_GNU_CPU)))
> export ARCH=x86
> endif
>
> +# Custom kernels contain the build folder directly.
> +KDIR := $(shell dpkg -L linux-headers-${KERNEL_NAME} | grep "/lib/modules/.*/build")
> +ifeq ($(KDIR),)
> +# Debian kernels install that folder indirectly via a dependency.
> +KERNEL_DEP := $(shell dpkg-query -W -f '$${Depends}' linux-headers-${KERNEL_NAME} | sed 's/.*\(linux-headers-[[:graph:]]*\).*/\1/')
Could we wrap this long line?
> +KDIR := $(shell dpkg -L $(KERNEL_DEP) | grep "/lib/modules/.*/build")
> +endif
> +
> +# With sbuild `dh clean` is called before chroot's apt database updated. So,
> +# KDIR is empty at that moment and the override causes error. Will skip it.
> +ifneq ($(KDIR),)
> override_dh_auto_clean:
> $(MAKE) -C $(KDIR) M=$(PWD) clean
> +endif
This looks wrong, or at least fragile. Why can we live without a proper
clean on the kernel tree?
>
> override_dh_auto_build:
> $(MAKE) -C $(KDIR) M=$(PWD) modules
>
> override_dh_auto_install:
> - $(MAKE) -C $(KDIR) M=$(PWD) INSTALL_MOD_PATH=$(PWD)/debian/$(PN) modules_install
> + $(MAKE) -C $(KDIR) M=$(PWD) INSTALL_MOD_PATH=$(PWD)/debian/${PN} modules_install
>
> %:
> CFLAGS= LDFLAGS= dh $@ --parallel
> diff --git a/meta/recipes-kernel/linux-module/module.inc b/meta/recipes-kernel/linux-module/module.inc
> index 0515621a..5b086233 100644
> --- a/meta/recipes-kernel/linux-module/module.inc
> +++ b/meta/recipes-kernel/linux-module/module.inc
> @@ -22,8 +22,9 @@ AUTOLOAD ?= ""
> inherit dpkg
>
> TEMPLATE_FILES = "debian/control.tmpl \
> - debian/changelog.tmpl"
> -TEMPLATE_VARS += "KERNEL_NAME"
> + debian/changelog.tmpl \
> + debian/rules.tmpl"
> +TEMPLATE_VARS += "KERNEL_NAME PN"
>
> do_prepare_build() {
> cp -r ${WORKDIR}/debian ${S}/
> @@ -31,18 +32,10 @@ do_prepare_build() {
> for module in "${AUTOLOAD}"; do
> echo "echo $module >> /etc/modules" >> ${S}/debian/postinst
> done
> -}
>
> -dpkg_runbuild_prepend() {
> - # Custom kernels contain the build folder directly.
> - export KDIR=$(dpkg -L --root=${BUILDCHROOT_DIR} linux-headers-${KERNEL_NAME} | \
> - grep "/lib/modules/.*/build")
> - if [ -z "$KDIR" ]; then
> - # Debian kernels install that folder indirectly via a dependency.
> - KERNEL_DEP=$(dpkg-query -W -f '${Depends}' --admindir=${BUILDCHROOT_DIR}/var/lib/dpkg \
> - linux-headers-${KERNEL_NAME} | sed 's/.*\(linux-headers-[[:graph:]]*\).*/\1/')
> - export KDIR=$(dpkg -L --root=${BUILDCHROOT_DIR} ${KERNEL_DEP} | \
> - grep "/lib/modules/.*/build")
> - fi
> - export PN=${PN}
> + # remove templates from the source tree
> + find ${S}/debian -name *.tmpl | xargs rm -f
Hmm...
> +
> + # restore execute permissions
> + chmod a+x ${S}/debian/rules
The mode should be fixed (aligned to the template) in template.bbclass
to avoid bothering every recipe with such boilerplate code. I'm seeing
this in other changes as well.
With all those "do not use shell env" - how will a downstream user
detect that a recipe is not properly converted? That looks like a nice
trap during migration to sbuild (because of silent / non-obvious errors).
Jan
--
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2021-11-19 12:44 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-19 12:13 [PATCH v2 00/24] Sbuild/Schroot migration Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 01/24] dpkg: Install raw package files to source root Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 02/24] dpkg-gbp: Use separate command to export tarball Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 03/24] isar-bootstrap: Export bootstrap to schroot config Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 04/24] linux-module: Do not use shell environment Uladzimir Bely
2021-11-19 12:44 ` Jan Kiszka [this message]
2021-11-19 12:45 ` Jan Kiszka
2021-11-23 12:24 ` Uladzimir Bely
2021-11-24 6:13 ` Jan Kiszka
2021-11-25 5:47 ` Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 05/24] u-boot: " Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 06/24] trusted-firmware: " Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 07/24] optee-os: " Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 08/24] kselftest: " Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 09/24] dpkg: Build packages with sbuild Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 10/24] sbuild: Introduce environment variables export API Uladzimir Bely
2021-11-21 9:07 ` Jan Kiszka
2021-11-19 12:13 ` [PATCH v2 11/24] dpkg-gbp: Migrate to schroot Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 12/24] linux-mainline: Move cfg fragment test to debian/rules Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 13/24] linux-custom: Prepare kernel config inside sbuild Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 14/24] sbuild: Add recipes for host and target rootfs to run sbuild Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 15/24] sbuild: Mount base-apt in schroot Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 16/24] sbuild: Add sbuildshell task Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 17/24] dpkg-gbp: Preinstall gbp utils in schroot Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 18/24] dpkg: Remove builddeps install task Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 19/24] dpkg-base: Switch devshell to use schroot Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 20/24] dpkg-base: Switch apt_fetch and apt_unpack " Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 21/24] dpkg-base: Cleanup from buildchroot parts Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 22/24] dpkg-gbp: Use host tools for dsc preparation Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 23/24] doc: Add sbuild-related documentation Uladzimir Bely
2021-11-19 12:13 ` [PATCH v2 24/24] sbuild: Replace isar-apt mounting with copying Uladzimir Bely
2021-11-19 21:48 ` [PATCH v2 00/24] Sbuild/Schroot migration Henning Schild
2021-11-21 9:07 ` Jan Kiszka
2021-11-23 13:05 ` Uladzimir Bely
2021-11-26 6:43 ` Jan Kiszka
2021-11-26 8:03 ` Uladzimir Bely
2021-11-26 8:50 ` Jan Kiszka
2021-12-01 12:11 ` Jan Kiszka
2021-11-26 12:09 ` Michael Adler
2021-11-26 12:57 ` Uladzimir Bely
2021-11-26 14:58 ` Jan Kiszka
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=1bc95be7-e603-966b-5326-962362548e2c@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=isar-users@googlegroups.com \
--cc=ubely@ilbers.de \
/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