summaryrefslogtreecommitdiff
path: root/guix/build
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2021-11-10 19:48:12 +0200
committerEfraim Flashner <efraim@flashner.co.il>2023-05-07 19:28:57 +0300
commit1963daf94c529e0ae5e5e2e7c738ffbae94dab4e (patch)
tree1ecf6f0fac600ac71f5ef1886637d885a8f8ddb1 /guix/build
parent59fffe7738ff91fd2d0c3965102b93154730e05f (diff)
build: cargo-build-system: Don't try to package when skipping build.
* guix/build/cargo-build-system.scm (package): If the package isn't going to be built then use the source instead.
Diffstat (limited to 'guix/build')
-rw-r--r--guix/build/cargo-build-system.scm18
1 files changed, 17 insertions, 1 deletions
diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index 41766228c2..5d7bfc8eb3 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -210,12 +210,28 @@ directory = '" port)
#t))
(define* (package #:key
+ source
+ skip-build?
install-source?
(cargo-package-flags '("--no-metadata" "--no-verify"))
#:allow-other-keys)
"Run 'cargo-package' for a given Cargo package."
(if install-source?
- (apply invoke `("cargo" "package" ,@cargo-package-flags))
+ (if skip-build?
+ (begin
+ (install-file source "target/package")
+ (with-directory-excursion "target/package"
+ (for-each
+ (lambda (file)
+ (make-file-writable file)
+ ;; Strip the hash and replace '.tar.gz' with '.crate'.
+ (rename-file file
+ (string-append (string-drop-right
+ (string-drop file 35)
+ (string-length ".tar.gz"))
+ ".crate")))
+ (find-files "." "\\.tar\\.gz$"))))
+ (apply invoke `("cargo" "package" ,@cargo-package-flags)))
(format #t "Not installing cargo sources, skipping `cargo package`.~%"))
#t)