Hi, On Thu, 4 Jan 2024 21:04:57 +0100 Paul Gevers <elb...@debian.org> wrote: > [20:21:54] <helmut> agreed, but britney2 doesn't handle :any on virtual > packages in any way (neither binary dep nor build dep) > [20:22:10] <helmut> (and I'm not sure whether that's legal in any way) > [20:23:08] <elbrus> agreed > [20:23:28] <elbrus> which I'm fixing right now > [20:23:39] <elbrus> apparently there's builds with :native > [20:23:43] <elbrus> so I'll support that > [20:24:04] <elbrus> but I wanted to know what happens with :any (and > virtual B-D) > [20:25:07] <helmut> well, this is not something that existed in the > archive before gobject-introspection, so we're about to extend what is > defined > [20:25:15] <helmut> according to smcv this is legal to dpkg and apt > [20:25:35] <helmut> but we know that resolvers > (dpkg/apt/dose/britney2/...) disagree on corner cases > [20:25:50] <helmut> and I'm guilty of having written yet another > resolver in dumat > [20:26:26] <elbrus> britney2 just has to follow what dpkg and apt happen > to agree on > [20:26:45] <elbrus> or maybe even, what apt says > [20:27:01] <elbrus> if that works
back in 2015 I wrote a small tool which is able to create artificial dependency situations involving two real packages and (optionally) a third virtual packages to make sure that the multi-arch implementations of apt, dpkg and dose3 agree with each other in all cases (spoiler: they do not). https://gitlab.mister-muffin.de/josch/deb-m-a-dep-check/ The tool is meant to make mass comparisons (it generates 8624 test cases) and thus its interface is a bit clunky but if what you want to do is to see whether apt, dose3 and dpkg agree on a situation where one package depends on a virtual package with :any which is provided by a real m-a: allowed package, then you would write this: ./check.sh binary pkgc amd64 amd64 no allowed depends pkgc:any It would generate the following two stubs (shortened here for brevity): Package: pkga Version: 1 Architecture: amd64 Depends: pkgc:any Multi-Arch: no Package: pkgb Version: 1 Architecture: amd64 Provides: pkgc Multi-Arch: allowed And yes, all three tools agree on this situation: it is satisfiable. If you make pkgb m-a:no, then all tools agree that the situation is unsatisfiable. We can do the same checks for pkga being a source package: ./check.sh source pkgc none amd64 none allowed depends pkgc:any Again, all three tools agree that this situation is satisfiable. Thanks! cheers, josch
signature.asc
Description: signature