public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: Uladzimir Bely <ubely@ilbers.de>
To: isar-users@googlegroups.com
Subject: [PATCH v3 03/20] linux-module: Do not use shell environment
Date: Wed,  8 Dec 2021 14:05:27 +0100	[thread overview]
Message-ID: <20211208130544.15133-4-ubely@ilbers.de> (raw)
In-Reply-To: <20211208130544.15133-1-ubely@ilbers.de>

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>
---
 .../linux-module/files/debian/rules           | 37 -------------
 .../linux-module/files/debian/rules.tmpl      | 52 +++++++++++++++++++
 meta/recipes-kernel/linux-module/module.inc   | 19 ++-----
 3 files changed, 55 insertions(+), 53 deletions(-)
 delete mode 100755 meta/recipes-kernel/linux-module/files/debian/rules
 create mode 100755 meta/recipes-kernel/linux-module/files/debian/rules.tmpl

diff --git a/meta/recipes-kernel/linux-module/files/debian/rules b/meta/recipes-kernel/linux-module/files/debian/rules
deleted file mode 100755
index 59720b37..00000000
--- a/meta/recipes-kernel/linux-module/files/debian/rules
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/make -f
-
-# Debian rules for custom kernel module build
-#
-# This software is a part of ISAR.
-# Copyright (c) Siemens AG, 2018
-#
-# SPDX-License-Identifier: MIT
-
-export DEB_BUILD_OPTIONS=parallel=$(shell nproc)
-
-export CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)-
-
-ifeq ($(DEB_HOST_GNU_CPU), arm)
-export ARCH=arm
-endif
-ifeq ($(DEB_HOST_GNU_CPU), aarch64)
-export ARCH=arm64
-endif
-ifeq ($(DEB_HOST_GNU_CPU), riscv64)
-export ARCH=riscv
-endif
-ifneq (,$(findstring 86,$(DEB_HOST_GNU_CPU)))
-export ARCH=x86
-endif
-
-override_dh_auto_clean:
-	$(MAKE) -C $(KDIR) M=$(PWD) clean
-
-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
-
-%:
-	CFLAGS= LDFLAGS= dh $@ --parallel
diff --git a/meta/recipes-kernel/linux-module/files/debian/rules.tmpl b/meta/recipes-kernel/linux-module/files/debian/rules.tmpl
new file mode 100755
index 00000000..52453e5f
--- /dev/null
+++ b/meta/recipes-kernel/linux-module/files/debian/rules.tmpl
@@ -0,0 +1,52 @@
+#!/usr/bin/make -f
+
+# Debian rules for custom kernel module build
+#
+# This software is a part of ISAR.
+# Copyright (c) Siemens AG, 2018
+#
+# SPDX-License-Identifier: MIT
+
+export DEB_BUILD_OPTIONS=parallel=$(shell nproc)
+
+export CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)-
+
+ifeq ($(DEB_HOST_GNU_CPU), arm)
+export ARCH=arm
+endif
+ifeq ($(DEB_HOST_GNU_CPU), aarch64)
+export ARCH=arm64
+endif
+ifeq ($(DEB_HOST_GNU_CPU), riscv64)
+export ARCH=riscv
+endif
+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/')
+KDIR := $(shell dpkg -L $(KERNEL_DEP) | grep "/lib/modules/.*/build")
+endif
+
+# With some build systems like sbuild `dh clean` can be called twice:
+# first, by build system itself before chroot's apt database updated,
+# second, by dpkg-buildpackage during build. So, KDIR may be empty
+# in first case (while no dependencies are yet installed), and a broken
+# 'make ... clean' command is produced. Just skip override in this case.
+ifneq ($(KDIR),)
+override_dh_auto_clean:
+	$(MAKE) -C $(KDIR) M=$(PWD) clean
+endif
+
+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
+
+%:
+	CFLAGS= LDFLAGS= dh $@ --parallel
diff --git a/meta/recipes-kernel/linux-module/module.inc b/meta/recipes-kernel/linux-module/module.inc
index 0515621a..9ae3af9b 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}/
@@ -32,17 +33,3 @@ do_prepare_build() {
         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}
-}
-- 
2.20.1


  parent reply	other threads:[~2021-12-08 13:05 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-08 13:05 [PATCH v3 00/20] Sbuild/Schroot migration Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 01/20] dpkg-gbp: Use separate command to export tarball Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 02/20] template: Make templates passthrough Uladzimir Bely
2021-12-08 13:05 ` Uladzimir Bely [this message]
2021-12-08 13:05 ` [PATCH v3 04/20] u-boot: Do not use shell environment Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 05/20] trusted-firmware: " Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 06/20] optee-os: " Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 07/20] kselftest: " Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 08/20] linux-mainline: Move cfg fragment test to debian/rules Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 09/20] dpkg-gbp: Use host tools for dsc preparation Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 10/20] sbuild: Add recipes for host and target rootfs to run sbuild Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 11/20] sbuild: Introduce a class for another build method Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 12/20] dpkg: Build packages with sbuild Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 13/20] sbuild: Introduce environment variables export API Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 14/20] linux-custom: Prepare kernel config inside sbuild Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 15/20] dpkg: Remove builddeps install task Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 16/20] dpkg-base: Switch devshell to use schroot Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 17/20] dpkg-base: Switch apt_fetch and apt_unpack " Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 18/20] dpkg-base: Cleanup from buildchroot parts Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 19/20] doc: Add sbuild-related documentation Uladzimir Bely
2021-12-08 13:05 ` [PATCH v3 20/20] sbuild: add ccache support Uladzimir Bely
2021-12-08 13:40 ` [PATCH v3 00/20] Sbuild/Schroot migration Uladzimir Bely
2021-12-08 17:20   ` 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=20211208130544.15133-4-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