From: Andreas Naumann <anaumann@emlix.com>
To: isar-users@googlegroups.com, "MOESSBAUER,
Felix" <felix.moessbauer@siemens.com>
Subject: Re: [PATCH 2/2] handle DPKG_ARCH=all case for transitive deps
Date: Mon, 15 Sep 2025 19:49:22 +0200 [thread overview]
Message-ID: <05c06d5d-5248-4d56-b470-a096411b2844@emlix.com> (raw)
In-Reply-To: <20250820124140.281190-3-felix.moessbauer@siemens.com>
Hi Felix,
Am 20.08.25 um 14:41 schrieb 'Felix Moessbauer' via isar-users:
> Arch=all packages might build depend on other arch=all packages, hence we
> need to correctly model the dependency chain. Otherwise the transitive
> dependencies are built for the distro arch instead of the native arch.
>
> We implement this by dispatching the non-native variant of DPKG_ARCH=all
> packages to the -native variant by adding a dependency. We further
> replace the non-native do_deploy_dep task with a noop to preserve the
> dependency chain.
>
> Co-developed-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
> Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> ---
> meta/classes/multiarch.bbclass | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/multiarch.bbclass b/meta/classes/multiarch.bbclass
> index babdfbd4..c2bba21f 100644
> --- a/meta/classes/multiarch.bbclass
> +++ b/meta/classes/multiarch.bbclass
> @@ -29,7 +29,11 @@ python() {
> d.appendVar('BBCLASSEXTEND', ' compat')
>
> # build native separately only when it differs from the target variant
> - if not archIsAll and archDiffers:
> + # We must not short-circuit for DPKG_ARCH=all packages, as they might
> + # have transitive dependencies which need to be built for -native.
> + # This special handling for DPKG_ARCH=all packages is left to the
> + # multiarch_virtclass_handler
> + if archDiffers:
> d.appendVar('BBCLASSEXTEND', ' native')
> else:
> extend_provides(pn, 'native', d)
> @@ -86,6 +90,8 @@ python multiarch_virtclass_handler() {
> d.setVar(var, ' '.join(multiarch_var))
>
> pn = e.data.getVar('PN')
> + archDiffers = d.getVar('HOST_ARCH') != d.getVar('DISTRO_ARCH')
> + archIsAll = d.getVar('DPKG_ARCH') == 'all'
> if pn.endswith('-compat'):
> e.data.setVar('BPN', pn[:-len('-compat')])
> e.data.appendVar('OVERRIDES', ':class-compat')
> @@ -96,6 +102,16 @@ python multiarch_virtclass_handler() {
> e.data.appendVar('OVERRIDES', ':class-native')
> fixup_pn_in_vars(e.data)
> fixup_depends('-native', e.data)
> + elif archIsAll and archDiffers:
> + # Arch=all packages might build depend on other arch=all packages,
> + # hence we need to correctly model the dependency chain.
> + # We implement this by dispatching the non-native variant to the -native
> + # variant by adding a dependency. We further replace the non-native
> + # do_deploy_dep task with a noop to preserve the dependency chain.
> + e.data.setVar('do_deploy_deb', '')
> + bb.build.deltask('deploy_deb', e.data)
> + bb.build.addtask('deploy_deb', 'do_build', '', e.data)
> + e.data.setVarFlag('do_deploy_deb', 'depends', f'{pn}-native:do_deploy_deb')
I have now done some more testing and unfortunately find that this
causes failures when building the -native variant of some dpkg-raw
packages we have. We use them for certain config files and they are
intended for the target. I dont know why exactly they fail and I'm sure
this could be fixed, but actually there is no need to build those
packages in the native environment. So I'm somewhat surprised to see
that and could image that this causes confusion for others that dont
know about the "all" intricacies as well.
Another observation that I see is that dpkg-prebuilt "any" packages,
which are probably in the dependency chain of an "all" package, now are
always also built as -native, even though they are needed for the target
only.
best,
Andras
> }
> addhandler multiarch_virtclass_handler
> multiarch_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
--
Andreas Naumann
emlix GmbH
Headquarters: Berliner Str. 12, 37073 Goettingen, Germany
Phone +49 (0)551 30664-0, e-mail info@emlix.com
District Court of Goettingen, Registry Number HR B 3160
Managing Directors: Heike Jordan, Dr. Uwe Kracke
VAT ID No. DE 205 198 055
Office Berlin: Panoramastr. 1, 10178 Berlin, Germany
Office Bonn: Bachstr. 6, 53115 Bonn, Germany
http://www.emlix.com
--
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 visit https://groups.google.com/d/msgid/isar-users/05c06d5d-5248-4d56-b470-a096411b2844%40emlix.com.
next prev parent reply other threads:[~2025-09-15 17:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-20 12:41 [PATCH 0/2] " 'Felix Moessbauer' via isar-users
2025-08-20 12:41 ` [PATCH 1/2] dpkg-raw: add files to source package 'Felix Moessbauer' via isar-users
2025-10-03 11:09 ` Anton Mikanovich
2025-08-20 12:41 ` [PATCH 2/2] handle DPKG_ARCH=all case for transitive deps 'Felix Moessbauer' via isar-users
2025-09-10 11:00 ` Andreas Naumann
2025-09-11 10:20 ` 'MOESSBAUER, Felix' via isar-users
2025-09-12 15:50 ` Andreas Naumann
2025-09-15 7:55 ` 'MOESSBAUER, Felix' via isar-users
2025-09-15 17:49 ` Andreas Naumann [this message]
2025-09-16 7:16 ` 'MOESSBAUER, Felix' via isar-users
2025-09-19 7:15 ` Andreas Naumann
2025-10-06 14:05 ` 'MOESSBAUER, Felix' via isar-users
2025-10-07 10:57 ` 'Andreas Naumann' via isar-users
2025-10-07 12:31 ` Zhihang Wei
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=05c06d5d-5248-4d56-b470-a096411b2844@emlix.com \
--to=anaumann@emlix.com \
--cc=felix.moessbauer@siemens.com \
--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