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

Re: Requesting guidance on the best way to package Python packages that include Rust code (specifically uv_build)



Hi Soren,

On Thu, Sep 18, 2025 at 02:08:47PM -0700, Soren Stoutner wrote:
> There are a couple of Python packages I maintain which have introduced new 
> dependencies written in Python but containing Rust code.  In particular, this 
> email is regarding uv_build, which is a Python build system that is being 
> adopted by a number of upstream projects whose packages I maintain.
> 
> Manuel Guerra has been looking into how difficult it is to package uv_build.

I will talk more about this below.

> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1115616
> 
> By default, it wants to download Rust code at build-time based on a 
> Cargo.toml.  I assume this is not unique nor the first time this can come up 
> with a Python package.  My question is, what is the canonical way for handing 
> such dependencies?

The rust cargo wrapper is currently the way we usually go with, you
can refer to [0]. pollo already shared an example, some other ones are
python-orjson, pendulum etc. This is all under the impression of your
package not using uv_build itself as build backend, or you will have to either
switch it over to another build backend or wait until uv_build is packaged.

Coming back to the packaging of uv_build, there is already ongoing
effor for packaging uv. But it is not easy as the dependency is tree
is quite huge. I'd expect most of it to be packaged though, but
there's a huge pain with uv itself. uv has an insane amount of
internal crates, none of which are in crates.io, which means the
typical rust team workflow can't be applied to them at least. A simple
'find crates/ -maxdepth 1 -name uv-* -type d | wc -l' in the uv repo
will give you 61 as result, which is 60 other internal crates than uv
itself. Now uv_build does not require all of that, but working on this
will require a lot of things to be figured out first; such as what all
binaries need to be shipped, how to handle the build, etc. So it is
quite complicated and probably will take some time to get sorted out.

[0] https://rust-team.pages.debian.net/book/process-workspace.html

-- 
Best,
Ananthu

Attachment: signature.asc
Description: PGP signature


Reply to: