sbuild: Pin experimental extras with --add-depends#36
sbuild: Pin experimental extras with --add-depends#36aquilamacedo wants to merge 2 commits intoDebian:masterfrom
Conversation
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.
|
I also considered other options (like tweaking the aspcud criteria or using apt The main downside is that the sbuild command line grows with the number of It would be useful if sbuild had a native option to install specific |
|
@aquilamacedo IMO this will break builds when the produced binary packages are in conflict. I think the best way would be going with pinning. |
Thanks for the suggestion. After discussing this with the sbuild maintainer, pinning did not look like a viable solution because the aspcud resolver does not consistently honor APT pinning, so it would not guarantee the injected experimental |
|
Hi @stapelberg, I just updated this PR with some new changes. Could you please take another look and merge it if everything looks good? |
Even when the input .changes targets experimental, resolve/rebuild rdeps from unstable, injecting the locally built .debs via sbuild --extra-package. Add -sbuild-experimental-aspcud option for buildd-like experimental handling (experimental overlay + aspcud buildd criteria) and document it in README and ratt(1).
23605bd to
1b5bdf0
Compare
|
Hi @stapelberg, gentle ping on this when you have a moment. I updated the PR a few days ago with the latest changes. If everything looks good, could you please take another look and merge? Thanks! |
This MR tweaks how ratt handles
.changesthat target experimental.By default, even if the input
.changesis for experimental, ratt resolves and rebuilds reverse build-deps from unstable, and only injects the locally built.debs from that.changesviasbuild --extra-package. That is the workflow most people want when doing rdep testing.In case a user wants buildd-like experimental behavior, they can pass
-sbuild-experimental-aspcud. In that mode, sbuild enables the experimental overlay and uses the buildd aspcud criteria:-count(down),-count(changed,APT-Release:=/experimental/),-removed,-changed,-newOne gotcha with those criteria is that aspcud can still pick dependencies from unstable even when
--extra-packageis provided. That can make rdep builds use the in-archive versions instead of the.debyou are testing, which can hide regressions (see https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/519). To avoid that, when experimental+aspcud mode is enabled and extra.debs are provided, we also add each of them as an exact build-dependency via--add-depends='pkg (= version)', forcing the solver to install the intended versions.