Skip to content

Conversation

@aquilamacedo
Copy link
Contributor

When building with experimental we follow the buildd aspcud criteria:
-count(down),-count(changed,APT-Release:=/experimental/),-removed,-changed,-new

With these criteria, aspcud may still choose dependencies from unstable even if we pass locally rebuilt experimental .deb via --extra-package. In that case, reverse-dependency builds end up using the in-archive versions instead of the .deb we are trying to test, which can hide regressions (see:
https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/519).

When experimental and extra .deb's are provided, add each as an exact build-dependency:
--add-depends=pkg (= version)
so the solver installs the intended experimental versions from experimental instead of mixing in unstable.

When building with experimental we follow the buildd aspcud criteria:
  -count(down),-count(changed,APT-Release:=/experimental/),-removed,-changed,-new

With these criteria, aspcud may still choose dependencies from unstable
even if we pass locally rebuilt experimental .debs via --extra-package.
In that case, reverse-dependency builds end up using the in-archive
versions instead of the .debs we are trying to test, which can hide
regressions (see:
https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/519).

When experimental and extra .debs are provided, add each as an exact
build-dependency:
  --add-depends=pkg (= version)
so the solver installs the intended experimental versions from
experimental instead of mixing in unstable.
@aquilamacedo
Copy link
Contributor Author

I also considered other options (like tweaking the aspcud criteria or using apt
pinning), but TBH this seemed like the most practical solution that stays
self contained in ratt/sbuild.

The main downside is that the sbuild command line grows with the number of
extra binaries, since each one becomes an --add-depends entry. I don't expect
this to be a big problem in practice, but if you or @ottok or @stapelberg
see a cleaner way to ensure the extra experimental .deb files are always used,
I'm happy to rework it.

It would be useful if sbuild had a native option to install specific .deb files
directly in the chroot without running them through the dependency solver. That
would help avoid overly long sbuild command lines when a source package
produces many binary .deb files.

@rbalint
Copy link
Contributor

rbalint commented Nov 15, 2025

@aquilamacedo IMO this will break builds when the produced binary packages are in conflict. I think the best way would be going with pinning.
Also simply adding dependencies could make the tested reverse dependency packages build in unexpected ways.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants