[PATCH staging] cargo-build-system: Accept a #:features argument

  • Done
  • quality assurance status badge
Details
One participant
  • Jakub K?dzio?ka
Owner
unassigned
Submitted by
Jakub K?dzio?ka
Severity
normal
J
J
Jakub K?dzio?ka wrote on 19 Mar 2020 14:53
(address . guix-patches@gnu.org)
20200319135315.17573-1-kuba@kadziolka.net
* guix/build/cargo-build-system.scm (build, install): Pass the features
to cargo.
(check): Remove indirection layer for consistency with build and
install.
* guix/build-system/cargo.scm (cargo-build): New argument; pass it into
the builder.
* gnu/packages/rust-apps.scm (ripgrep): Use the new argument instead of
a custom phase.
---
gnu/packages/rust-apps.scm | 14 ++------------
guix/build-system/cargo.scm | 2 ++
guix/build/cargo-build-system.scm | 12 ++++++++----
3 files changed, 12 insertions(+), 16 deletions(-)

Toggle diff (90 lines)
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index af51c0fcfc..2c718a14f5 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -244,18 +244,8 @@ provides defaults for 80% of the use cases.")
(install-file manpage (string-append
(assoc-ref outputs "out")
"/share/man/man1"))))
- #t))
- (replace 'install
- ;; Adapted from (guix build cargo-build-system). The flags need to
- ;; be passed to `cargo install' too, as otherwise it will build
- ;; another binary, without the features.
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (mkdir-p out)
- (setenv "CARGO_TARGET_DIR" "./target")
- (invoke "cargo" "install" "--path" "." "--root" out
- "--features" "pcre2")))))
- #:cargo-build-flags '("--release" "--features" "pcre2")))
+ #t)))
+ #:features '("pcre2")))
(native-inputs
`(("asciidoc" ,asciidoc)
("pcre2" ,pcre2)
diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index 1e8b3a578e..2b5f301dc2 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -76,6 +76,7 @@ to NAME and VERSION."
(vendor-dir "guix-vendor")
(cargo-build-flags ''("--release"))
(cargo-test-flags ''("--release"))
+ (features ''())
(skip-build? #f)
(phases '(@ (guix build cargo-build-system)
%standard-phases))
@@ -104,6 +105,7 @@ to NAME and VERSION."
#:vendor-dir ,vendor-dir
#:cargo-build-flags ,cargo-build-flags
#:cargo-test-flags ,cargo-test-flags
+ #:features ,features
#:skip-build? ,skip-build?
#:tests? ,(and tests? (not skip-build?))
#:phases ,phases
diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index 0721989589..0e2faee3c1 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -140,11 +140,14 @@ directory = '" port)
(define* (build #:key
skip-build?
+ features
(cargo-build-flags '("--release"))
#:allow-other-keys)
"Build a given Cargo package."
(or skip-build?
- (apply invoke `("cargo" "build" ,@cargo-build-flags))))
+ (apply invoke "cargo" "build"
+ "--features" (string-join features)
+ cargo-build-flags)))
(define* (check #:key
tests?
@@ -152,10 +155,10 @@ directory = '" port)
#:allow-other-keys)
"Run tests for a given Cargo package."
(if tests?
- (apply invoke `("cargo" "test" ,@cargo-test-flags))
+ (apply invoke "cargo" "test" cargo-test-flags)
#t))
-(define* (install #:key inputs outputs skip-build? #:allow-other-keys)
+(define* (install #:key inputs outputs skip-build? features #:allow-other-keys)
"Install a given Cargo package."
(let* ((out (assoc-ref outputs "out")))
(mkdir-p out)
@@ -168,7 +171,8 @@ directory = '" port)
;; otherwise cargo will raise an error.
(or skip-build?
(not (has-executable-target?))
- (invoke "cargo" "install" "--path" "." "--root" out))))
+ (invoke "cargo" "install" "--path" "." "--root" out
+ "--features" (string-join features)))))
(define %standard-phases
(modify-phases gnu:%standard-phases
--
2.25.1
J
J
Jakub K?dzio?ka wrote on 19 Mar 2020 15:57
Whoops
(address . 40131-done@debbugs.gnu.org)
20200319145729.xvfvylrpkmmm2dxh@gravity
I totally forgot that I have already sent this patch, see #39959. It's
been a long two weeks...
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE5Xa/ss9usT31cTO54xWnWEYTFWQFAl5ziFkACgkQ4xWnWEYT
FWSx8BAAnB8q4zIsbSM5CqiBvEisqA1RXaLUKYj9vtvyW/MS41lkNTLnTwknC4SK
yTOJkzEoDv6gwVrTHnHOF5SpjlpBZgJVlTrhQWP1BLdDFJ+ncdkr0bPyyGK7qtmT
8fBnoDqkC9H5ZIJzOyjPqpq1YfJ4FXYVyIF0dW0g0CVZtmYMeL4r0l1XoMamfsEs
zn3axpfJD46d4DezURtPHWfDIWlVR/r59oMkURw9oPs/FL1X8j6x6unC73yWU7CK
if86WOVpJ4dVYIM847hbx2Jkx6Rin0QlXBuDIAiXSqWG/hFkB077GVXYCbes7v4U
0uNoW1GpKMvSodqemVZNabxXp42xc3QNchsT42OdHnaS9ZLhZnscLn/jRu5vjHQw
GqLQGczbgDRXBQMPsHuveiXrllgHBWUL5ogWxgfWLLOxk+Z9hqBi2tmiBkEB2Mx7
ZdzJhRSZjwdGM2YvpPwq1nQKk8kDy/mybm81Tcajh+B5K9Zj7nKtTlc+gatC0VfJ
19D5t/PMbF8tKbDgNLh+mGhcoB2UFaOkgjBZ9uubSiQ/G9YtsvOa9qeLKdC+R1Xm
TqbBP1TJdzyapxEMiEW98SyQyzz6v6Z4cBibAcESMIAJSg66TkhCV3kT6vT//czA
eDCJo/npFWThH+/sQ8XtNLQr9rZwfDqSM94GJJxr8ILXP5NwNhc=
=r7zp
-----END PGP SIGNATURE-----


Closed
?