efraim pushed a commit to branch master
in repository guix.
commit 78e7e178a3976d6c38de80449548e0332bbc474c
Author: Efraim Flashner <[email protected]>
AuthorDate: Mon Mar 15 13:04:46 2021 +0200
build-system/cargo: Don't clobber packaged crates while building.
This fixes an issue where two packages share a common dependent.
* guix/build/cargo-build-system.scm (unpack-rust-crates): Only copy rust
crates into the target directory if there isn't one already there with
the same name.
---
guix/build/cargo-build-system.scm | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/guix/build/cargo-build-system.scm
b/guix/build/cargo-build-system.scm
index c7ca981..0a95672 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -91,11 +91,17 @@ Cargo.toml file present at its root."
(mkdir-p "target/package")
(mkdir-p vendor-dir)
;; TODO: copy only regular inputs to target/package, not native-inputs.
- (for-each (lambda (input-crate)
- (copy-recursively (string-append input-crate
- "/share/cargo/registry")
- "target/package"))
- (delete-duplicates rust-inputs))
+ (for-each
+ (lambda (input-crate)
+ (for-each
+ (lambda (packaged-crate)
+ (unless
+ (file-exists?
+ (string-append "target/package/" (basename packaged-crate)))
+ (install-file packaged-crate "target/package/")))
+ (find-files
+ (string-append input-crate "/share/cargo/registry")
"\\.crate$")))
+ (delete-duplicates rust-inputs))
(for-each (lambda (crate)
(invoke "tar" "xzf" crate "-C" vendor-dir))