guix-commits
[Top][All Lists]
Advanced

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

01/23: build-system/cargo: Don't clobber packaged crates while building.


From: guix-commits
Subject: 01/23: build-system/cargo: Don't clobber packaged crates while building.
Date: Mon, 15 Mar 2021 09:54:23 -0400 (EDT)

efraim pushed a commit to branch master
in repository guix.

commit 78e7e178a3976d6c38de80449548e0332bbc474c
Author: Efraim Flashner <efraim@flashner.co.il>
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))



reply via email to

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