build: cargo-build-system: Pack crates reproducibly.

This fixes reproducibility in rust crates from the package phase, again,
see <https://issues.guix.gnu.org/50015>.

Reported by: Christopher Baines (in person).

* guix/build/cargo-build-system.scm (package): When repacking the crate
tarball use standard reproducibility flags.

Change-Id: Ifb1440a023226bf0718e99ce9f95ef981e510cbc
This commit is contained in:
Efraim Flashner 2023-10-28 18:09:05 +03:00
parent aed41597ec
commit 63ccceb976
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351

View file

@ -264,7 +264,11 @@ (define* (package #:key
(unless (eq? (stat:type s) 'symlink)
(utime file 0 0 0 0))))
(find-files dir #:directories? #t))
(apply invoke "tar" "czf" (string-append dir ".crate")
;; avoid non-determinism in the archive
"--sort=name" "--mtime=@0"
"--owner=root:0" "--group=root:0"
(find-files dir #:directories? #t))
(delete-file-recursively dir)))
(find-files "." "\\.crate$")))))