diff options
| author | Nicolas Graves <ngraves@ngraves.fr> | 2025-09-14 16:20:43 +0200 |
|---|---|---|
| committer | Sharlatan Hellseher <sharlatanus@gmail.com> | 2025-10-07 15:00:18 +0100 |
| commit | 24efb0fa8b539f0d3f87c93fbbdc0c69ad1f3958 (patch) | |
| tree | b46f5b5659a8860b88dd3287ad6fc48cb73b6047 | |
| parent | 29519ba849dcc357fc5086473a3c252cab6ed2d3 (diff) | |
build-system: cargo: Pass features to manifest-targets.
* guix/build/cargo-build-system.scm (manifest-targets): Pass features to
manifest-targets.
Change-Id: Id1a11d75d16389b92124fc49d2102d6aec935f64
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
| -rw-r--r-- | guix/build/cargo-build-system.scm | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm index 6b71c2cba4..763aa10d17 100644 --- a/guix/build/cargo-build-system.scm +++ b/guix/build/cargo-build-system.scm @@ -48,10 +48,13 @@ ;; ;; Code: -(define (manifest-targets) +(define* (manifest-targets #:optional features) "Extract all targets from the Cargo.toml manifest" - (let* ((command (string-join (list "cargo" "metadata" "--no-deps" - "--format-version" "1"))) + (let* ((command (string-join (cons* "cargo" "metadata" "--no-deps" + "--format-version" "1" + (if (or (not features) (null? features)) + '() + (cons* "--features" features))))) (port (open-input-pipe command)) (data (json->scm port)) (packages (vector-ref (assoc-ref data "packages") 0)) @@ -59,12 +62,12 @@ (close-port port) targets)) -(define (has-executable-target?) +(define (has-executable-target? features) "Check if the current cargo project declares any binary targets." (let* ((bin? (lambda (kind) (string=? kind "bin"))) (get-kinds (lambda (dep) (assoc-ref dep "kind"))) (bin-dep? (lambda (dep) (vector-any bin? (get-kinds dep))))) - (vector-any bin-dep? (manifest-targets)))) + (vector-any bin-dep? (manifest-targets features)))) (define (cargo-package? dir) "Check if directory DIR contains a single package, or a Cargo workspace with @@ -431,7 +434,7 @@ directory = '" vendor-dir "'") port) ;; NOTE: Cargo workspace installation support: ;; #:skip-build? #f + #:cargo-install-paths. (and (null? cargo-install-paths) - (not (has-executable-target?))) + (not (has-executable-target? features))) (for-each (lambda (path) (invoke "cargo" "install" "--offline" "--no-track" |
