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 v7 07/13] sbuild: support of shell exports from dpkg_runbuild_prepend
Date: Sun, 13 Feb 2022 08:44:53 +0100	[thread overview]
Message-ID: <20220213074459.24200-8-ubely@ilbers.de> (raw)
In-Reply-To: <20220213074459.24200-1-ubely@ilbers.de>

Many of recipes often use shell exports done in dpkg_run_prepend.

While sbuild is performed in isolated environment, we need a way to pass
these exported variables to it. This is done by storing environment just
before dpkg_runbuild (after prepare_build) and finding just before
the actual build what has been changed or added.

This patch allows using shell exports, but warning will be produced.
It's recommended to modify the code (in downstreams) and replace shell
exports by other methods, like using templates.

Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
---
 meta/classes/dpkg.bbclass | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
index 5511de64..82a722df 100644
--- a/meta/classes/dpkg.bbclass
+++ b/meta/classes/dpkg.bbclass
@@ -32,6 +32,12 @@ do_install_builddeps[lockfiles] += "${REPO_ISAR_DIR}/isar.lock"
 
 addtask devshell after do_install_builddeps
 
+DPKG_PREBUILD_ENV_FILE="${WORKDIR}/dpkg_prebuild.env"
+
+do_prepare_build_append() {
+    env > ${DPKG_PREBUILD_ENV_FILE}
+}
+
 # Build package from sources using build script
 dpkg_runbuild() {
     E="${@ isar_export_proxies(d)}"
@@ -40,6 +46,27 @@ dpkg_runbuild() {
     export DEB_BUILD_PROFILES="${@ isar_deb_build_profiles(d)}"
     export PARALLEL_MAKE="${PARALLEL_MAKE}"
 
+    env | while read -r line; do
+        # Filter the same lines
+        grep -q "^${line}" ${DPKG_PREBUILD_ENV_FILE} && continue
+        # Filter some standard variables
+        echo ${line} | grep -q "^HOME=" && continue
+        echo ${line} | grep -q "^PWD=" && continue
+
+        var=$(echo "${line}" | cut -d '=' -f1)
+        value=$(echo "${line}" | cut -d '=' -f2-)
+        sbuild_export $var "$value"
+
+        # Don't warn some variables
+        [ "${var}" = "PARALLEL_MAKE" ] && continue
+        [ "${var}" = "CCACHE_DIR" ] && continue
+        [ "${var}" = "PATH_PREPEND" ] && continue
+        [ "${var}" = "DEB_BUILD_OPTIONS" ] && continue
+        [ "${var}" = "DEB_BUILD_PROFILES" ] && continue
+
+        bbwarn "Export of '${line}' detected, please migrate to templates"
+    done
+
     profiles=$(grep "DEB_BUILD_PROFILES" ${SBUILD_CONFIG} | tail -n1 | cut -d "'" -f 4)
     if [ ${ISAR_CROSS_COMPILE} -eq 1 ]; then
         profiles="${profiles} cross nocheck"
-- 
2.20.1


  parent reply	other threads:[~2022-02-13  7:45 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-13  7:44 [PATCH v7 00/13] Sbuild/Schroot migration Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 01/13] dpkg-gbp: Use separate command to export tarball Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 02/13] dpkg-gbp: Use host tools for dsc preparation Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 03/13] sbuild: Add recipes for host and target rootfs to run sbuild Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 04/13] sbuild: Introduce a class for another build method Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 05/13] dpkg: Build packages with sbuild Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 06/13] sbuild: support of DEB_BUILD_PROFILES Uladzimir Bely
2022-02-13 16:04   ` Moessbauer, Felix
2022-02-13 20:09     ` Uladzimir Bely
2022-02-13  7:44 ` Uladzimir Bely [this message]
2022-02-13  7:44 ` [PATCH v7 08/13] dpkg: Remove builddeps install task Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 09/13] sbuild: add ccache support Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 10/13] dpkg-base: Switch devshell to use schroot Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 11/13] dpkg-base: Switch apt_fetch and apt_unpack " Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 12/13] doc: Add sbuild-related documentation Uladzimir Bely
2022-02-13  7:44 ` [PATCH v7 13/13] sbuild: Use .dsc file instead of source directory Uladzimir Bely

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=20220213074459.24200-8-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