Two quick thoughts from my mobile:

Since transitioning through NEW takes so long, I typically upload as much
of the dependency tree as possible. But NEW is not a FIFO, so sometimes
thing pop out that is not buildable. A similar problem happens if something
is in NEW a long time and upgrades of it's deps happen.

And regarding running tests in debug, debug have additional checks for
numeric over-/underflows, something that easily happens when switching
between 64 and 32 bit architectures. I believe we catch more bugs if we
don't run the tests with --release.

//Alex

On Sat, Sep 20, 2025, 15:48 NoisyCoil <[email protected]> wrote:

> Dropping cc on bug report and replacing pkg-rust-maintainers with
> debian-rust, as these are policy discussions.
>
> On 20/09/25 10:31, Jonas Smedegaard wrote:
> > My question is aimed at something else: Why did this happen in the first
> > place? I ask with this case as a concrete example, but I have filed
> > numerous bugreports¹ for Rust packages having broken dependencies, and
> > my aim here is to address what I suspect is a more general issue:
> > Why do the Rust team upload known broken packages to unstable?
>
> There is no policy in Rust Team allowing broken packages in unstable. If
> a package is uninstallable in unstable, that's 100% a bug. If it's done
> on purpose, that's a choice of the uploader in their personal capacity,
> not reflective of team policy. Since the Rust Team maintains a large
> fraction of Rust packages, broken packages usually create issues to us
> too, so we aren't happy about those either.
>
>
> There is, however an underlying "policy" reason why packages maintained
> by the Rust Team may have an increased chance of being uninstallable.
> This can happen due to a chain of events (or lack thereof) which in my
> opinion is unnecessarily broken at the bottom:
>
> 1. We don't usually use piuparts. This is fine because most of the
> binary packages' dependencies are source package build-dependencies:
> usually, if a binary package is uninstallable, the source package is B-D
> uninstallable, and we catch that as a FTBFS bug instead. Uploading a B-D
> uninstallable/FTBFS package to unstable is a policy violation.
>
> 2. Crates marked as optional in Cargo.toml -- e.g. crates needed for
> non-default features -- are binary dependencies but not source
> build-dependencies: these missing wouldn't be caught at build-time.
> Nonetheless, by default, they are autopkgtest dependencies (trivially,
> because they are binary dependencies). If autopkgtests pass, it means
> the package was installable. So our default minimal policy is: the
> package must build and its autopkgtests must pass. As long as it does,
> we don't even need to care about piuparts. Also, if they fail, it's a
> (release) policy violation.
>
> 3. There is, however, a loophole here: by policy, autopkgtest are marked
> as skip-not-installable by default. So if tests don't fail, but they
> don't pass either, we would e.g. reject to sponsor their upload for new
> contributors (again, the default policy is autopkgtest must pass), but
> someone with more experience may just think "eh, I'll fix it later".
> Assuming they ran autopkgtest, which they are supposed to. This is where
> the chain breaks and to test installability you should use piuparts, or
> whatever alternative you are.
>
> Uninstallability is a bug regardless of its causes, but I think what I
> described above may increase the chances of it happening in
> Rust-Team-maintained packages. If memory serves me well (but it may very
> well not :-)), at DebConf you expressed you're not happy about the
> skip-not-installable policy. I agree, and I can't think of a concrete
> reason why we should keep it. Note this does not mean there *isn't* a
> concrete reason to do so. Other people have spent much more time than me
> thinking about these issues, so a reason may very well exist.
>
>
> In the same bucket, as far as I'm concerned, there's running cargo tests
> in debug -- rather than release -- mode. I agree with you this is wrong:
> no code is ever going to reach the Debian archive compiled in debug
> mode. Again, someone with more experience than me may have a different
> understanding about this.
>
> > In your reflections above, you seem to consider experimental a place
> > for cross*team* coordination.
>
> No, I was only thinking about that in the context of transitions.
>
> > I urge to use experimental more generally as a staging place for cross
> > *package* coordination: Release known broken packages to experimental,
> > and then re-release to unstable only when the package is believed stable
> > with respect to its declared dependencies.
>
> I'd rather we don't upload broken packages at all, but yeah, if you
> must, anything but experimental surely violates policy and makes
> everyone's work harder.
>
>
> Cheers!
>
>

Reply via email to