[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Being easy to package for Debian




On June 5, 2024 8:08:01 AM GMT+02:00, Lars Wirzenius <liw@liw.fi> wrote:
>Thanks for pointing that out. I did in fact not know about that. I run
>Debian stable, so I don't have access to that, but I can easily set up
>a VM with unstable to use it. Saves me the pain of maintaining my own
>tool. This is nice.
>
>Other than that, my summary of this thread:
>
>* test on ARM -- of course, though this is not Rust specific
>* avoid generating code - OK; not sure why it's a problem
>
>So I guess my summary was OK, especially as a starting point. I shall
>keep this in mind for my Rust projects.

One more thing that's nice to keep in mind:
- try not to expose optional deps as features, unless there is a 1:1 relation and it makes sense (in other words - use 'dep:foo' unless enabling foo on its own makes sense and you want that to be part of your public interface)
- try to design your features matrix so that features are actually independent, document if they are not and ensure the right annotations are in place by testing (there's 'cargo-hack' that can help with that in CI)

If you are writing sys crates:
- make using the system version of the lib the default
- make it easy to remove/disable bundled C code and regenerate pre-generated bindings, if those exist

>
>On Thu, 2024-05-30 at 13:28 +0200, Sylvestre Ledru wrote:
>> Hello Lars,
>> 
>> Le 30/05/2024 à 13:04, Lars Wirzenius a écrit :
>> > I am part of various projects that develop open source software
>> > using
>> > the Rust language. I also used to be a Debian developer, but
>> > haven't
>> > been for many years. As upstream, my question is, what can I do to
>> > make it as easy as possible for Debian to package software written
>> > in
>> > Rust?
>> > 
>> > I'm asking about this in general rather than for a specific
>> > project,
>> > though my question is triggered by the Radicle project.
>> > 
>> > Based on my Debian experience, and my hazy understanding of how the
>> > Rust packaging team in Debian operates, here is my current
>> > thinking,
>> > but I would welcome advice. As upstream I can ensure that:
>> > 
>> > * my code is published on crates.io
>> > * my code works with the Rust compiler and cargo in Debian unstable
>> > * my crate dependencies are packaged in Debian
>> > * my code works with the versions of crate dependencies that are
>> >    packaged in Debian
>> > * I don't vendor any dependencies
>> > 
>> > There are of course all the generic aspects of being packaged in
>> > Debian, but here I'm concerned about aspects relating to Rust
>> > specifically.
>> > 
>> > To help myself estimate the packaging effort for my various Rust
>> > programs I wrote a little helper tool. It analyzes a Rust crate (or
>> > workspace) and its dependency graph, and makes a list of entirely
>> > missing crate dependencies, and a list of dependencies where the
>> > packaged version of a crate doesn't satisfy the version requirement
>> > of
>> > my program. The program is very quick and dirty:
>> > https://app.radicle.xyz/nodes/radicle.liw.fi/rad:z3PKKNstRjLYqhvGq9rxGy7LoEVr5
>> > (I'd love it if someone wanted to take it over, and package it for
>> > Debian.)
>> > 
>> Are you aware of
>> 
>> https://github.com/kpcyrd/cargo-debstatus ;? :)
>> 
>> Seems quite similar
>> 
>> Cheers
>> 
>> Sylvestre
>> 
>> 
>


Reply to: