Greg Freemyer
Someone already has a rust devel project setup (an unofficial repo):
https://build.opensuse.org/project/show/devel:languages:rust
The rust devel project is mainly developed by mvyskocil, me and dmacvicar. In the past it has been building fine, but unfortunately it seems that 1.8.0 is hitting the limits of the build VMs on the OBS - building rust is a very disk and memory intensive operation. It also takes a ridiculous amount of time :/ So, there are a number of complications remaining to be solved before rust is ready for inclusion in Tumbleweed. - First of all, the package needs to succeed reliably, not break on low disk space etc. - Rust needs to be able to bootstrap itself from the previous version. In the past, building rust requires a binary snapshot of a previous version of rust. This is no good for building from source, if we need a binary snapshot we might as well just ship that instead. So the preferred thing would be if rust 1.8 can build using rust 1.7, then we can bootstrap each update with the already-compiled compiler. I have talked to Aaron Turon in the rust team about this, and they finally promised to make this a requirement for rust from version 1.9 (if I remember correctly). So that will be a better point at which to submit rust for Tumbleweed. - Cargo needs to be buildable using the compiled version of rust we have. Right now, Cargo has the same bootstrapping problem as rust except worse - not only does it need a random rust snapshot, it also needs a random Cargo snapshot and about 30 crates to build. Then we get to the problems of packaging crates... - Rust doesn't have a stable ABI, which means that every time the rust compiler is updated, we'd have to rebuild every single project which uses the rust standard library as they would otherwise break. - There has to be a decision on how to manage crates. The best thing would be if each crate was its own separate rpm package. However, there are some issues with that.. First of all, rust (just like go) doesn't do dynamic linking with crates. Second of all, the ABI problem makes dynamically linking to crates meaningless anyway since any rebuild of a crate might mean having to rebuild the projects that rely on it. Rebuilding rust projects would eat up a ton of OBS resources. There has been some discussion on this with us and other distributions in the rust internals forum, here: https://internals.rust-lang.org/t/perfecting-rust-packaging-the-plan/2767 There is a desire from rust upstream to make this easier, so hopefully there will be progress on this in the near future. Any help in figuring any of these things out is welcome! Especially the issue of packaging crates is one that I know other languages also have (like go and haskell) so if we can come up with some solution for making that kind of package management easier, that would be great. Cheers, Kristoffer -- // Kristoffer Grönlund // kgronlund@suse.com -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org