public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: "Moessbauer, Felix" <felix.moessbauer@siemens.com>
To: "jan.kiszka@siemens.com" <jan.kiszka@siemens.com>,
	Uladzimir Bely <ubely@ilbers.de>,
	"isar-users@googlegroups.com" <isar-users@googlegroups.com>
Subject: RE: [PATCH v5 07/12] sbuild: support of shell exports from dpkg_runbuild_prepend
Date: Wed, 2 Feb 2022 08:46:54 +0000	[thread overview]
Message-ID: <AM9PR10MB48696F7D859317B267B6E3DB89279@AM9PR10MB4869.EURPRD10.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <9f8b4874-62b5-546f-5dc9-8d9c0bd5b1cf@siemens.com>


> -----Original Message-----
> From: isar-users@googlegroups.com <isar-users@googlegroups.com> On
> Behalf Of Jan Kiszka
> Sent: Wednesday, February 2, 2022 7:57 AM
> To: Uladzimir Bely <ubely@ilbers.de>; isar-users@googlegroups.com
> Subject: Re: [PATCH v5 07/12] sbuild: support of shell exports from
> dpkg_runbuild_prepend
> 
> On 01.02.22 19:41, Uladzimir Bely wrote:
> > In the email from Tuesday, 1 February 2022 21:09:07 +03 user Jan Kiszka
> wrote:
> >> On 01.02.22 18:00, Uladzimir Bely wrote:
> >>> Many of recipes often use shell exports done in dpkg_run_prepend, so
> >>> that this changed environment is used during build.
> >>>
> >>> While sbuild is performed in isolated environment, we need a way to
> >>> pass these variables to it. This is done by storing environment
> >>> before dpkg_runbuild (after prepare_build) and finding just before
> >>> the actual build what was changed or added.
> >>>
> >>> Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
> >>> ---
> >>>
> >>>  meta/classes/dpkg.bbclass | 18 ++++++++++++++++++
> >>>  1 file changed, 18 insertions(+)
> >>>
> >>> diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
> >>> index 66db7ec5..c252e9b3 100644
> >>> --- a/meta/classes/dpkg.bbclass
> >>> +++ b/meta/classes/dpkg.bbclass
> >>> @@ -29,12 +29,30 @@ 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)}"
> >>>      E="${@ isar_export_ccache(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"
> >>> +    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"
> >>
> >> So, this basically decouples "Avoid using shell environment during
> >> the build" and similar conversions downstream from this series,
> >> right? It's indeed good to have a compat path now.
> >>
> >> However, what are the patterns we want to push? Avoiding exports?
> >> Then we should probably warn here that this compat path should be
> >> avoided and might be removed in the future.
> >>
> >> If we want to keep both, we can probably leave several recipes alone
> >> in that other series.
> >>
> >> Jan
> >
> > You might be right. Current solution doesn't force users to avoid
> > using exports while they are silently supported.
> >
> > The first internal solution was keeping dpkg_build_export function but
> > also passing custom shell exports (from dpkg_runbuild_prepend) to
> > sbuild environment. And a warning about migration was shown.
> >
> > Later I removed this to make new patchset less invasive for downstreams.
> > Anyway, if we agree that "dpkg_build_export" (like API function) is
> > more preferable, I can get back this solution with warnings.
> >
> 
> This is not necessarily what I'm suggesting. Your conversion series works
> without that API, primarily using template. We also have build profiles. But we
> first of all need to define what we actually want.
> 
> The benefit of pushing things into the build env, rather than feeding it from the
> recipe, is likely that the resulting deb-src of such generated packages can
> actually be used for rebuilding independently of Isar. So there is likely value in
> deprecating classic export.

Using environment variables to control the build in Debian/rules is generally discouraged (except for DEB_BUILD_PROFILES and DEB_BUILD_OPTIONS).
But even for these variables, semantics are documented [1] and we / an ISAR user should strictly follow them when packaging.

There are also reasons why you want to build a package in a clean environment (e.g. to avoid accidentally setting CC or CXX to icc or clang).
Hence, I highly vote for not forwarding the environment into the sbuild build environment.

Felix

[1] https://wiki.debian.org/BuildProfileSpec#Registered_profile_names

> 
> Jan
> 
> --
> Siemens AG, Technology
> Competence Center Embedded Linux
> 
> --
> You received this message because you are subscribed to the Google Groups
> "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email
> to isar-users+unsubscribe@googlegroups.com.
> To view this discussion on the web visit
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.g
> oogle.com%2Fd%2Fmsgid%2Fisar-users%2F9f8b4874-62b5-546f-5dc9-
> 8d9c0bd5b1cf%2540siemens.com&amp;data=04%7C01%7Cfelix.moessbauer%4
> 0siemens.com%7C9ed643fe46b945b7d2a008d9e619471f%7C38ae3bcd95794fd
> 4addab42e1495d55a%7C1%7C0%7C637793819407336907%7CUnknown%7CTW
> FpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI
> 6Mn0%3D%7C3000&amp;sdata=Wfb%2F4NfV1M9LjodozJ1V5p3riY8HHobGS31
> %2B6gJ7y6c%3D&amp;reserved=0.

  reply	other threads:[~2022-02-02  8:46 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-01 17:00 [PATCH v5 00/12] Sbuild/Schroot migration Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 01/12] dpkg-gbp: Use separate command to export tarball Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 02/12] dpkg-gbp: Use host tools for dsc preparation Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 03/12] sbuild: Add recipes for host and target rootfs to run sbuild Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 04/12] sbuild: Introduce a class for another build method Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 05/12] dpkg: Build packages with sbuild Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 06/12] sbuild: support of DEB_BUILD_PROFILES Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 07/12] sbuild: support of shell exports from dpkg_runbuild_prepend Uladzimir Bely
2022-02-01 18:09   ` Jan Kiszka
2022-02-01 18:41     ` Uladzimir Bely
2022-02-02  6:57       ` Jan Kiszka
2022-02-02  8:46         ` Moessbauer, Felix [this message]
2022-02-02  8:52           ` Jan Kiszka
2022-02-02  9:13             ` Uladzimir Bely
2022-02-02  9:46               ` Jan Kiszka
2022-02-01 17:00 ` [PATCH v5 08/12] dpkg: Remove builddeps install task Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 09/12] sbuild: add ccache support Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 10/12] dpkg-base: Switch devshell to use schroot Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 11/12] dpkg-base: Switch apt_fetch and apt_unpack " Uladzimir Bely
2022-02-01 17:00 ` [PATCH v5 12/12] doc: Add sbuild-related documentation Uladzimir Bely
2022-02-01 18:14 ` [PATCH v5 00/12] Sbuild/Schroot migration Jan Kiszka
2022-02-01 18:33   ` Uladzimir Bely
2022-02-02  7:01     ` 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=AM9PR10MB48696F7D859317B267B6E3DB89279@AM9PR10MB4869.EURPRD10.PROD.OUTLOOK.COM \
    --to=felix.moessbauer@siemens.com \
    --cc=isar-users@googlegroups.com \
    --cc=jan.kiszka@siemens.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