[1/1] apt: allow package downgrades in sbuild chroots

Message ID 20250513070208.1226836-1-felix.moessbauer@siemens.com
State Under Review
Headers show
Series [1/1] apt: allow package downgrades in sbuild chroots | expand

Commit Message

MOESSBAUER, Felix May 13, 2025, 7:02 a.m. UTC
The sbuild chroots carry many packages needed for the build environment.
This sometimes requires packages from bootstrapping to be downgraded so
that the dependencies can be resolved.

An example is the liblzma5 which currently (1st of May 2025) needs to be
downgraded on Debian bookworm.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
 meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc | 3 +++
 1 file changed, 3 insertions(+)

Comments

Jan Kiszka May 13, 2025, 11:40 a.m. UTC | #1
On 13.05.25 09:02, 'Felix Moessbauer' via isar-users wrote:
> The sbuild chroots carry many packages needed for the build environment.
> This sometimes requires packages from bootstrapping to be downgraded so
> that the dependencies can be resolved.
> 
> An example is the liblzma5 which currently (1st of May 2025) needs to be
> downgraded on Debian bookworm.
> 
> Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> ---
>  meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
> index 6478d3a6..05424f54 100644
> --- a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
> +++ b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
> @@ -61,6 +61,9 @@ ROOTFS_POSTPROCESS_COMMAND:remove = "rootfs_cleanup_isar_apt"
>  # Do not cleanup base-apt
>  ROOTFS_POSTPROCESS_COMMAND:remove = "rootfs_cleanup_base_apt"
>  
> +# Allow downgrades of packages from bootstrap
> +ROOTFS_APT_ARGS += "--allow-downgrades"
> +

We already have partial downgrade permission for isar-apt and even for
the devshell. We should check if those are then still relevant.

But we also need to check again about other, maybe less desirable side
effects of this change...

Jan

>  DEPLOY_SCHROOT = "${@d.getVar('SCHROOT_' + d.getVar('SBUILD_VARIANT').upper() + '_DIR')}${SBUILD_SCHROOT_SUFFIX}"
>  
>  do_sbuildchroot_deploy[dirs] = "${DEPLOY_DIR}/schroot-${SBUILD_VARIANT}"
MOESSBAUER, Felix May 13, 2025, 1:11 p.m. UTC | #2
On Tue, 2025-05-13 at 13:40 +0200, Jan Kiszka wrote:
> On 13.05.25 09:02, 'Felix Moessbauer' via isar-users wrote:
> > The sbuild chroots carry many packages needed for the build
> > environment.
> > This sometimes requires packages from bootstrapping to be
> > downgraded so
> > that the dependencies can be resolved.
> > 
> > An example is the liblzma5 which currently (1st of May 2025) needs
> > to be
> > downgraded on Debian bookworm.
> > 
> > Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> > ---
> >  meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
> > b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
> > index 6478d3a6..05424f54 100644
> > --- a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
> > +++ b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
> > @@ -61,6 +61,9 @@ ROOTFS_POSTPROCESS_COMMAND:remove =
> > "rootfs_cleanup_isar_apt"
> >  # Do not cleanup base-apt
> >  ROOTFS_POSTPROCESS_COMMAND:remove = "rootfs_cleanup_base_apt"
> >  
> > +# Allow downgrades of packages from bootstrap
> > +ROOTFS_APT_ARGS += "--allow-downgrades"
> > +
> 
> We already have partial downgrade permission for isar-apt and even
> for
> the devshell. We should check if those are then still relevant.

I also thought about globally applying the downgrade permission to the
rootfs class, but I also was unsure about the side-effects.

Nontheless, I prefer to have this fix merged rather sooner than later,
as Debian bookworm builds ~ after 1st of may are broken. It looks like
some package in the sbuild chroot list depends on an older version of
liblzma5 which is already installed during bootstrap.

Felix

> 
> But we also need to check again about other, maybe less desirable
> side
> effects of this change...
> 
> Jan
> 
> >  DEPLOY_SCHROOT = "${@d.getVar('SCHROOT_' +
> > d.getVar('SBUILD_VARIANT').upper() +
> > '_DIR')}${SBUILD_SCHROOT_SUFFIX}"
> >  
> >  do_sbuildchroot_deploy[dirs] = "${DEPLOY_DIR}/schroot-
> > ${SBUILD_VARIANT}"
>
Baurzhan Ismagulov May 14, 2025, 1:44 p.m. UTC | #3
On 2025-05-13 09:02, 'Felix Moessbauer' via isar-users wrote:
> The sbuild chroots carry many packages needed for the build environment.
> This sometimes requires packages from bootstrapping to be downgraded so
> that the dependencies can be resolved.
> 
> An example is the liblzma5 which currently (1st of May 2025) needs to be
> downgraded on Debian bookworm.

I think this touches a tricky topic and we should check whether this intersects
with e.g. [1], [2]. A testcase would definitely help. Also, at least the known
cases should be considered (upgrade / downgrade, non-essential / essential,
maybe non-compat / compat).

1. https://lists.isar-build.org/isar-users/20250221154843.515037-1-amikan@ilbers.de/
2. https://lists.isar-build.org/isar-users/215cc575-fa4f-45e6-8511-eff4254a4383@ilbers.de/T/#t

With kind regards,
Baurzhan
Cihan Mete Bahadır June 4, 2025, 1:58 p.m. UTC | #4
Also had the issue while downgrading :

The following packages will be DOWNGRADED:
  libsystemd0 libudev1
0 upgraded, 266 newly installed, 2 downgraded, 0 to remove and 0 not 
upgraded.
E: Packages were downgraded and -y was used without --allow-downgrades.

Best regards,
Mete

14 Mayıs 2025 Çarşamba tarihinde saat 16:44:40 UTC+3 itibarıyla Baurzhan 
Ismagulov şunları yazdı:

> On 2025-05-13 09:02, 'Felix Moessbauer' via isar-users wrote:
> > The sbuild chroots carry many packages needed for the build environment.
> > This sometimes requires packages from bootstrapping to be downgraded so
> > that the dependencies can be resolved.
> > 
> > An example is the liblzma5 which currently (1st of May 2025) needs to be
> > downgraded on Debian bookworm.
>
> I think this touches a tricky topic and we should check whether this 
> intersects
> with e.g. [1], [2]. A testcase would definitely help. Also, at least the 
> known
> cases should be considered (upgrade / downgrade, non-essential / essential,
> maybe non-compat / compat).
>
> 1. https://lists.isar-build.org/isar-users/20250221154843....@ilbers.de/ 
> <https://lists.isar-build.org/isar-users/20250221154843.515037-1-amikan@ilbers.de/>
> 2. 
> https://lists.isar-build.org/isar-users/215cc575-fa4f-45e6...@ilbers.de/T/#t 
> <https://lists.isar-build.org/isar-users/215cc575-fa4f-45e6-8511-eff4254a4383@ilbers.de/T/#t>
>
> With kind regards,
> Baurzhan
>
Baurzhan Ismagulov June 5, 2025, 1 p.m. UTC | #5
On 2025-06-04 06:58, Cihan Mete Bahadır wrote:
> 14 Mayıs 2025 Çarşamba tarihinde saat 16:44:40 UTC+3 itibarıyla Baurzhan 
> Ismagulov şunları yazdı:
> > I think this touches a tricky topic and we should check whether this 
> > intersects
> > with e.g. [1], [2]. A testcase would definitely help. Also, at least the 
> > known
> > cases should be considered (upgrade / downgrade, non-essential / essential,
> > maybe non-compat / compat).
> Also had the issue while downgrading :
> 
> The following packages will be DOWNGRADED:
>   libsystemd0 libudev1
> 0 upgraded, 266 newly installed, 2 downgraded, 0 to remove and 0 not 
> upgraded.
> E: Packages were downgraded and -y was used without --allow-downgrades.

Thanks Mete for the update. To be clear, I'm not challenging that the issue
exists. Tricky topics need testcases for the code to stay modifiable. We'll
check this.

With kind regards,
Baurzhan

Patch

diff --git a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
index 6478d3a6..05424f54 100644
--- a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
+++ b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
@@ -61,6 +61,9 @@  ROOTFS_POSTPROCESS_COMMAND:remove = "rootfs_cleanup_isar_apt"
 # Do not cleanup base-apt
 ROOTFS_POSTPROCESS_COMMAND:remove = "rootfs_cleanup_base_apt"
 
+# Allow downgrades of packages from bootstrap
+ROOTFS_APT_ARGS += "--allow-downgrades"
+
 DEPLOY_SCHROOT = "${@d.getVar('SCHROOT_' + d.getVar('SBUILD_VARIANT').upper() + '_DIR')}${SBUILD_SCHROOT_SUFFIX}"
 
 do_sbuildchroot_deploy[dirs] = "${DEPLOY_DIR}/schroot-${SBUILD_VARIANT}"