build/cargo: Don't vendor self.

* guix/build/cargo-build-system.scm (crate-src?, configure): Exclude self.
* gnu/packages/gnome.scm (librsvg)[#:phases]: Remove ‘dont-vendor-self’.
* gnu/packages/python-crypto.scm (python-cryptography)[#:arguments]: Likewise.
* gnu/packages/python-xyz.scm (python-libcst)[#:arguments]: Likewise.
* gnu/packages/syndication.scm (newsboat)[#:arguments]: Likewise.
* gnu/packages/antivirus.scm (clamav)[#:arguments]: Likewise.

Change-Id: I5e01721fb705937f5fcf858c21b6d7e27ade6c10
This commit is contained in:
Hilton Chain 2025-03-03 23:47:10 +08:00
parent a087db5f83
commit 9ba78f3ccf
No known key found for this signature in database
GPG key ID: ACC66D09CA528292
6 changed files with 23 additions and 45 deletions

View file

@ -116,10 +116,7 @@
(add-after 'configure 'fix-cargo-inputs-vendoring
(lambda _
;; Reproduce the original layout, fails with config.
(rename-file ".cargo/config" ".cargo/config.toml")
;; Wrongly placed by configure
(delete-file-recursively
(string-append ".cargo/vendor/clamav-" #$version ".tar.zst"))))
(rename-file ".cargo/config" ".cargo/config.toml")))
(add-after 'patch-cargo-checksums 'cmake-configure
(lambda* (#:key outputs #:allow-other-keys)
((assoc-ref cmake:%standard-phases 'configure)

View file

@ -3807,11 +3807,6 @@ for dealing with different structured file formats.")
"--host=" #$(%current-target-system)))
#~("--enable-vala")))
args)))
(add-after 'configure 'dont-vendor-self
(lambda* (#:key vendor-dir #:allow-other-keys)
;; Don't keep the whole tarball in the vendor directory
(delete-file-recursively
(string-append vendor-dir "/" #$name "-" #$version ".tar.xz"))))
(replace 'build
(assoc-ref gnu:%standard-phases 'build))
(replace 'check

View file

@ -561,11 +561,6 @@ is used by the Requests library to verify HTTPS requests.")
#:install-source? #false
#:phases
#~(modify-phases %standard-phases
(add-after 'configure 'dont-vendor-self
(lambda* (#:key vendor-dir #:allow-other-keys)
;; Don't keep the whole tarball in the vendor directory
(delete-file-recursively
(string-append vendor-dir "/cryptography-" #$version ".tar.zst"))))
(replace 'build
(assoc-ref py:%standard-phases 'build))
(delete 'check)

View file

@ -23742,11 +23742,6 @@ members = [
(add-after 'unpack 'prepare-source
(lambda _
(delete-file "native/Cargo.lock")))
(add-after 'configure 'dont-vendor-self
(lambda* (#:key vendor-dir #:allow-other-keys)
;; Don't keep the whole tarball in the vendor directory
(delete-file-recursively
(string-append vendor-dir "/libcst-" #$version ".tar.zst"))))
(replace 'build
(assoc-ref py:%standard-phases 'build))
(add-after 'install 'wrap

View file

@ -312,11 +312,6 @@ cards.")
(("if curl-config")
(string-append
"if " (search-input-file inputs "/bin/curl-config"))))))
(add-after 'configure 'dont-vendor-self
(lambda* (#:key vendor-dir #:allow-other-keys)
;; Don't keep the whole tarball in the vendor directory
(delete-file-recursively
(string-append vendor-dir "/" #$name "-" #$version ".tar.xz"))))
(add-after 'unpack 'patch-source
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "Makefile"

View file

@ -71,27 +71,28 @@ root package."
(call-with-input-file manifest-file get-string-all)
"[package]"))))
(define (crate-src? path)
(define* (crate-src? path #:key source)
"Check if PATH refers to a crate source, namely a gzipped tarball with a
Cargo.toml file present at its root."
(if (directory-exists? path)
;; The build system only handles sources containing single crate.
;; Workspaces should be packaged into crates (via 'package phase)
;; and used in inputs.
(cargo-package? path)
(and (not (string-suffix? "py" path)) ;sanity-check.py
;; First we print out all file names within the tarball to see
;; if it looks like the source of a crate. However, the tarball
;; will include an extra path component which we would like to
;; ignore (since we're interested in checking if a Cargo.toml
;; exists at the root of the archive, but not nested anywhere
;; else). We do this by cutting up each output line and only
;; looking at the second component. We then check if it matches
;; Cargo.toml exactly and short circuit if it does.
(invoke "sh" "-c"
(string-append "tar -tf " path
" | cut -d/ -f2"
" | grep -q '^Cargo.toml$'")))))
(and (not (string=? path source)) ;Exclude self.
(if (directory-exists? path)
;; The build system only handles sources containing single crate.
;; Workspaces should be packaged into crates (via 'package phase)
;; and used in inputs.
(cargo-package? path)
(and (not (string-suffix? "py" path)) ;sanity-check.py
;; First we print out all file names within the tarball to see
;; if it looks like the source of a crate. However, the tarball
;; will include an extra path component which we would like to
;; ignore (since we're interested in checking if a Cargo.toml
;; exists at the root of the archive, but not nested anywhere
;; else). We do this by cutting up each output line and only
;; looking at the second component. We then check if it matches
;; Cargo.toml exactly and short circuit if it does.
(invoke "sh" "-c"
(string-append "tar -tf " path
" | cut -d/ -f2"
" | grep -q '^Cargo.toml$'"))))))
(define* (unpack-rust-crates #:key inputs (vendor-dir "guix-vendor")
#:allow-other-keys)
@ -156,7 +157,7 @@ libraries or executables."
(format #t "error: Possible pre-generated file found: ~a~%" file)))
(find-files "." (negate empty-file?)))))
(define* (configure #:key inputs
(define* (configure #:key source inputs
target system
(cargo-target #f)
(vendor-dir "guix-vendor")
@ -173,7 +174,7 @@ libraries or executables."
((name . path)
(let* ((basepath (strip-store-file-name path))
(crate-dir (string-append vendor-dir "/" basepath)))
(and (crate-src? path)
(and (crate-src? path #:source source)
;; Gracefully handle duplicate inputs
(not (file-exists? crate-dir))
(if (directory-exists? path)