Skip to content

piuparts: doesn't install dependencies from experimental or -backports

If the package under test is built for experimental and has dependencies that cannot be satisfied in unstable, or if it is build for $foo-backports and has dependencies that cannot be satisfied in $foo (where $foo is buster, stretch etc.), then piuparts fails. This is because experimental and -backports are pinned to a lower priority than their base suites, and apt does not consider installing a lower-priority package if the candidate (highest priority) version is not enough.

aptitude does consider installing lower-priority packages, which is why it's used for the build-dependencies in the build stage (and for official -backports buildds), but piuparts doesn't have an option to use aptitude for package installation.

Similarly, apt-cudf with the aspcud solver (as used for official experimental buildds) would consider lower-priority packages, but piuparts still fails when that's configured, because piuparts uses apt install foo_1.0_amd64.deb and that confuses apt-cudf/aspcud (I'm not sure whose bug that is).

Solving this will probably require enhancements in apt and/or piuparts.

A workaround is to skip the piuparts stage whenever one of these overlay suites is targeted:

piuparts:
  # https://salsa.debian.org/salsa-ci-team/pipeline/issues/58
  except:
    variables:
      - $RELEASE == "experimental"
      - $RELEASE =~ /-backports$/

Original report:

I've configured xdg-desktop-portal-gtk with RELEASE: experimental because it has (build-)dependencies that aren't in unstable yet. piuparts fails:

https://salsa.debian.org/debian/xdg-desktop-portal-gtk/-/jobs/202383

0m0.0s INFO: piuparts version 1.0.1 starting up.
0m0.0s INFO: Command line arguments: /usr/sbin/piuparts --scriptsdir /etc/piuparts/scripts --allow-database --warn-on-leftovers-after-purge --hard-link -e /tmp/debian-chroot /builds/debian/xdg-desktop-portal-gtk/debian/output/xdg-desktop-portal-gtk-dbgsym_1.4.0-2_amd64.deb
...
  Get:1 http://cdn-fastly.deb.debian.org/debian sid InRelease [210 kB]
  Hit:2 http://cdn-fastly.deb.debian.org/debian experimental InRelease
  Get:3 http://cdn-fastly.deb.debian.org/debian sid/main amd64 Packages [8307 kB]
...
  Get:1 file:/var/lib/local-apt-repository ./ InRelease
  Ign:1 file:/var/lib/local-apt-repository ./ InRelease
  Get:2 file:/var/lib/local-apt-repository ./ Release [1279 B]
  Get:2 file:/var/lib/local-apt-repository ./ Release [1279 B]
  Get:3 file:/var/lib/local-apt-repository ./ Release.gpg
  Ign:3 file:/var/lib/local-apt-repository ./ Release.gpg
  Get:4 file:/var/lib/local-apt-repository ./ Packages [2115 B]
  Hit:5 http://cdn-fastly.deb.debian.org/debian sid InRelease
  Hit:6 http://cdn-fastly.deb.debian.org/debian experimental InRelease
...
  The following packages have unmet dependencies:
   xdg-desktop-portal-gtk-dbgsym : Depends: xdg-desktop-portal-gtk (= 1.4.0-2) but it is not going to be installed

I suspect this may be because experimental is marked as NotAutomatic: yes and not ButAutomaticUpgrades: yes, resulting in default apt pin priority 1 (see apt_preferences(5)), so apt will not normally install packages from experimental unless explicitly told to do so.

Pinning experimental to priority 100 (like stretch-backports) in /tmp/debian-chroot via something like

Package: *
Pin: release a=experimental
Pin-Priority: 100

might help?

Edited by Simon McVittie
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information