Hi. I’m looking for contact information for more people who package Rust.
I do what I can to smooth over issues for Rust packagers, but my contact info is incomplete. I know I’ve interacted with many of you, and suspect there are many that I haven’t, but currently I only have contact info for a few larger packagers (Red Hat, Debian, Ubuntu, and SUSE, whom I’ve worked with recently to solve Firefox+Rust packaging issues).
Today I sent out an email about a tagging mistake I made in 1.15.1, but only to those contacts I had on hand. So I wish I had a better contact list.
If you are interested in future notifications like the above, or just want a direct line for packaging issues, please provide me your email address. You can post here or send me an email at banderson@mozilla.com.
For Arch Linux please contact the package maintainer Alexander Rødseth, his email is xyproto@archlinux.org. As a backup you can contact me (I am an Arch developer as well).
I have not used this list for anything yet, but I really should have. After the big rustbuild change I am positive that broke downstream packaging.
Other changes recently have included the way we vendor sources. At the moment, only the tarballs come with vendored dependencies, and are thus able to build offline (theoretically). The git sources do not contain the vendored dependencies.
The other big change I would have told packagers is that we are now bundling all the Rust tooling that we consider part of the the Rust product in tree, and I’d suggest packagers source e.g. cargo from there, and no longer attempt to obtain it independently. The same will soon be true of rls, rustfmt and clippy. All these things will at some point in the near future be part of Rust proper.
Currently, if it is possible to build rustc using vendored crates provided in tarball, it isn’t the case for cargo: some required crates are missing. But I expect that src/vendor in tarball to be generated for rustc only.
It makes building all the Rust tooling at the same time complex (for packagers that try to do it offline): the build method are too differents.
At OpenBSD, I am building rustc on one side (using vendored crates), and cargo on another side (using the same tarball). For cargo, I setup a specific build environment where all the required crates at downloaded at first (controlled) step, there are extracted in a directory, metadata for vendoring at generated, and cargo is configured to search crates in vendored directory. The list of crates is manually maintained and changed at each release.
Yeah, I’ve had trouble updating the Gentoo packages. For 1.16.0 in the end another Gentoo Rust team member in the end just added --disable-rustbuild to the configure options, but so far I haven’t been able to update to 1.17.0. I filed https://github.com/rust-lang/cargo/issues/3965 after working through some other issues. In the mean-time, I’ve thrown away my previous 1.17.0 ebuild and now I forgot what I did to it, because apparently the build has changed again in some inscrutable way.
Having better “support” for packagers in some way would be much appreciated.
configure: generate a config.toml file in your build directory (for example see the file located at rust-src/src/bootstrap/config.toml.example).
build: invoke python rust-src/x.py build
(note the x.py tool has help: python rust-src/x.py help)
at OpenBSD, I am building using x.py dist (it generates a tarball with installer), and next at install stage I unpack the tarball and launch install.sh --prefix=MY-PREFIX.
@brson I think having a channel of communication for packagers would be valuable (mailing-list ? discourse ?). Packagers would be able to share their problems and seen how other resolv them, and Rust developers would be more aware of packager-specifics issues.
But that will download a bunch of stuff, right? I need to handle the downloads up front, since our install phase has a network sandbox. What’s the best way to do this?
you need a complete rust suite at 1.16.0 (compiler + std library + cargo) on the build host to build rustc-1.17.0. if you didn’t specify rustc and cargo path in build.rustc and build.cargo, the build will try to download them automatically.