public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
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:45:54 +0100	[thread overview]
Message-ID: <3f1fb8d1-72c3-23d7-6e22-5f9f127b8ae3@siemens.com> (raw)
In-Reply-To: <1bc95be7-e603-966b-5326-962362548e2c@siemens.com>

On 19.11.21 13:44, Jan Kiszka wrote:
> 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).
> 

Oh, and then you still also add sbuild_export - why not use that for
cases that are ugly to convert (like this one)?

Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux

  reply	other threads:[~2021-11-19 12:45 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
2021-11-19 12:45     ` Jan Kiszka [this message]
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=3f1fb8d1-72c3-23d7-6e22-5f9f127b8ae3@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