(zilch lang rust): remove lack-of-vfs workarounds
This commit is contained in:
parent
59dc27b94c
commit
e42315e67a
3 changed files with 29 additions and 20 deletions
|
|
@ -5,7 +5,7 @@
|
|||
(zilch nixpkgs) (zilch zexpr) (zilch semver)
|
||||
json
|
||||
(chicken process)
|
||||
(chicken base) (chicken format) (chicken file)
|
||||
(chicken base) (chicken format)
|
||||
(chicken foreign)
|
||||
(srfi 4) (srfi 128) (srfi 146) (srfi 152) (srfi 207)
|
||||
(zilch lang rust registry) (zilch lang rust) (zilch lang rust cfg)
|
||||
|
|
@ -334,25 +334,16 @@
|
|||
(define package-links (and-cdr (assoc "links" package)))
|
||||
(define package-edition (or (and-cdr (assoc "edition" package)) "2015"))
|
||||
|
||||
(define has-build (and (zexp? vfs) (file-exists? (string-append (zexp-unquote vfs) "/build.rs"))))
|
||||
|
||||
(unless (and vfs (vfs? vfs))
|
||||
(set! vfs #f))
|
||||
|
||||
(define lib-target #f)
|
||||
;; TODO(puck): lack-of-vfs workarounds
|
||||
(when (or (assoc "lib" internals) (if vfs (vfs-file-ref vfs "src" "lib.rs") #t))
|
||||
(when (or (assoc "lib" internals) (vfs-file-ref vfs "src" "lib.rs"))
|
||||
(set! lib-target (cargo-target-from-toml (or (and-cdr (assoc "lib" internals)) #()) package-name 'lib package-edition)))
|
||||
|
||||
(define other-targets '())
|
||||
(when (and vfs (vfs-file-ref vfs "src" "main.rs"))
|
||||
(when (vfs-file-ref vfs "src" "main.rs")
|
||||
(set! other-targets (cons (cargo-target-from-toml (vector (cons "name" package-name) (cons "path" "src/main.rs")) package-name 'bin package-edition) other-targets)))
|
||||
|
||||
(define build-file-path (and-cdr (assoc "build" package)))
|
||||
(when
|
||||
(or
|
||||
(and has-build (not build-file-path))
|
||||
(and vfs (vfs-file-ref vfs "" "build.rs")))
|
||||
(when (vfs-file-ref vfs "" "build.rs")
|
||||
(set! build-file-path "build.rs"))
|
||||
(define build-script-target #f)
|
||||
(when build-file-path
|
||||
|
|
|
|||
|
|
@ -84,8 +84,9 @@
|
|||
(define (resolver-download resolver name version)
|
||||
(unless version
|
||||
(error "Resolver wanted non-versioned download" name))
|
||||
(define vfs (force (cddr (mapping-ref (mapping-ref (resolver-locked-dependencies resolver) name) (version-str version)))))
|
||||
(define-values (parsed-cargo parsed-workspace) (parse-cargo-toml vfs (call-with-port (store-path-open #~,(string-append #$vfs "/Cargo.toml")) (lambda (p) (read-string 99999999 p))) #f))
|
||||
(define dir (force (cddr (mapping-ref (mapping-ref (resolver-locked-dependencies resolver) name) (version-str version)))))
|
||||
(define vfs (vfs-from-store dir))
|
||||
(define-values (parsed-cargo parsed-workspace) (parse-cargo-toml vfs (call-with-port (store-path-open (vfs-file-ref vfs "" "Cargo.toml")) (lambda (p) (read-string 99999999 p))) #f))
|
||||
(unless (cargo-crate-lib-target parsed-cargo)
|
||||
(error "Crate does not have valid [lib] target" (list name version)))
|
||||
|
||||
|
|
@ -282,7 +283,7 @@
|
|||
; emits: (dep-info: #t)
|
||||
(define crate-name (cargo-target-name (resolved-package-cargo-target resolved)))
|
||||
(define crate-version (version-str (resolved-package-version resolved)))
|
||||
(define crate-root (if (vfs? (resolved-package-fs resolved)) (vfs-to-store (resolved-package-fs resolved)) (resolved-package-fs resolved)))
|
||||
(define crate-root (vfs-to-store (resolved-package-fs resolved)))
|
||||
(define crate-type (cargo-target-crate-type (resolved-package-cargo-target resolved)))
|
||||
|
||||
; TODO(puck): workaround for multi-crate-type targets.
|
||||
|
|
@ -448,7 +449,7 @@
|
|||
(unless (eq? crate-type 'rlib)
|
||||
(set! params `(codegen-flags: ("linker" . ,(force linker)) . ,params)))
|
||||
|
||||
(define path #~,(string-append #$(if (vfs? (resolved-package-fs resolved)) (vfs-to-store (resolved-package-fs resolved)) (resolved-package-fs resolved)) "/" (cargo-target-path (resolved-package-cargo-target resolved))))
|
||||
(define path #~,(string-append #$(vfs-to-store (resolved-package-fs resolved)) "/" (cargo-target-path (resolved-package-cargo-target resolved))))
|
||||
(define dep-info (cdar (apply call-rustc `(,path ,rustc-env search-path: ("dependency" . ,transitive-dependencies-meta) emits: (dep-info: #t) . ,params-meta))))
|
||||
|
||||
(define rlib-name (string-append "lib" crate-name "-v" crate-version ".rlib"))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue