Package: sbuild
X-Debbugs-Cc: [email protected]
Version: 0.91.4
Severity: wishlist

Hi,

In Salsa CI we now have a reverse-dependency (rdep) job that rebuilds
rdeps of
a target package, for instance this wireshark example:
https://salsa.debian.org/debian/wireshark/-/pipelines/953817

When the target is built for experimental, the rdep jobs enable
experimental
and use buildd-like aspcud criteria for build-dependency resolution.

The intent of the rdep job is to take reverse-dependencies from the
archive and
rebuild them against the freshly built target binaries injected via
--extra-package, to catch regressions before the target hits the
archive.

In that setup, I noticed that versions provided via --extra-package are
not
always preferred during version selection. Even when the injected .deb
is
newer, the resolver may still select the in-archive (unstable) version
for the
same package name.

Concrete example:

 unstable:        libwireshark-data (all) 4.4.9-1
 injected .deb:  
libwireshark-data_4.6.0-0exp1+salsaci+20251010+299_all.deb

In the Salsa CI rdep job, the build installed 4.4.9-1 from unstable
instead of
the injected 4.6.0-0exp1+salsaci+...

This undermines the purpose of the rdep test. We expect the build to
exercise
the locally injected experimental binaries, but it can silently end up
using
the unstable versions instead.

Command line (representative):

sbuild --arch-all --dist=unstable \
  --extra-repository='deb-src http://deb.debian.org/debian unstable
main' \
  --extra-repository='deb http://deb.debian.org/debian experimental
main' \
  --extra-repository='deb-src http://deb.debian.org/debian experimental
main' \
  --build-dep-resolver=aspcud \
 
--aspcud-criteria='-count(down),-count(changed,APT-Release:=/experimental/),-removed,-changed,-new'
\
  <rdep>_<ver> \
 
--extra-package=/path/to/libwireshark-data_4.6.0-0exp1+salsaci+..._all.deb
\
  ...

For full command/logs see:
https://salsa.debian.org/debian/wireshark/-/jobs/8424754#L260

Wishlist / feature request:

It would be useful if sbuild had an opt-in option to prefer (or force)
the
exact versions provided via --extra-package during build-dependency
resolution.

Note: this should not introduce new dependencies by itself, it should
only
influence version choice when that package is already pulled into the
build-dep
closure.

Something like:
  --prefer-extra-packages or --pin-extra-packages

Cheers,

Aquila Macedo

Reply via email to