~ruther/guix-local

9ba78f3ccfe92d409a7126133d32e977e6fcd52b — Hilton Chain 1 year, 2 months ago a087db5
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
M gnu/packages/antivirus.scm => gnu/packages/antivirus.scm +1 -4
@@ 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)

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +0 -5
@@ 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

M gnu/packages/python-crypto.scm => gnu/packages/python-crypto.scm +0 -5
@@ 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)

M gnu/packages/python-xyz.scm => gnu/packages/python-xyz.scm +0 -5
@@ 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

M gnu/packages/syndication.scm => gnu/packages/syndication.scm +0 -5
@@ 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"

M guix/build/cargo-build-system.scm => guix/build/cargo-build-system.scm +22 -21
@@ 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)