[Top][All Lists]

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

Reproducible rust builds

From: Nikolai Merinov
Subject: Reproducible rust builds
Date: Sat, 13 Oct 2018 02:16:32 +0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)


I made some investigations about reproducible builds of rust packages
(at least of my laptop with x86_64 arch) and I got next results:

1. I failed to make rust 1.25.0 reproducible with LLVM 6.0.1, but this
release reproducible if we build it with LLVM 3.9.1. I also tried to
build rust 1.25.0 with internal LLVM and got same reproducibility issue.
2. Rust 1.26.2 reproducible with LLVM 6.0.1 regardless of which LLVM
used for rust 1.25.0. I failed to find any specific changes that allow
this version to be built in reproducible manner with LLVM 6.0.1.
3. There is a same situation with 1.27.2 as with rust 1.25.0:
Reproducible with LLVM 3.9.1, not reproducible with LLVM 6.0.1. Build
with LLVM 3.9.1 step on reproducibility issue in rustdoc, but there is
patch for this issue.
4. Rust 1.28.0 and 1.29.1 releases builds well with LLVM 6.0.1
5. From very first release we missed cargo dependency on libssh2 and
libgit2 and this dependencies was build internally by rust.

Code of reproducible packages for 1.25.0, 1.27.2, 1.28.0, and 1.29.1
rust releases you can find in

Can you recommend preferable changes for rust packages in GuixSD? I
suggest to make next changes:

1. Switch back to llvm 3.9.1 in rust 1.25.0, 1.26.2, 1.27.2 rust
packages. NOTE: External LLVM 6.0 in rust 1.26.0 and newer allow to use
#[cfg(target-feature)] to check processor features. Prior to 1.26.0
release this feature was supported only with bundled llvm.
2. Use llvm 6.0.1 for rust 1.28.0 and newer.
3. Add external libssh2 and libgit2 dependencies to rust packages.

Open question: To which release should I add dependency on libgit2 and
libssh2? It can be added to rust-1.19 still it was missed from very
beginning or to rust-1.25, because we should change rust-1.25 package in
any case.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]