gnu: Add rust@1.19.0.

* gnu/packages/rust.scm (rust-1.23)[build-system, native-inputs, inputs,
native-search-paths, synopsis, description, home-page, license]: Move to...
(rust-1.19): ... here. New variable.
(rust-1.23)[arguments]<#:phases>[set-env, patch-tests, patch-cargo-checksums]:
Move to...
(rust-1.19): ... here.
(rust-1.19)[arguments]<#:phases>[configure, check, install]: Replace by no-op.
This commit is contained in:
Danny Milosavljevic 2018-04-02 19:15:06 +02:00
parent d2dd939e68
commit 8fdde58103
No known key found for this signature in database
GPG Key ID: E71A35542C30BAA5
1 changed files with 72 additions and 54 deletions

View File

@ -150,30 +150,12 @@ in turn be used to build the final Rust.")
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet '(begin (delete-file-recursively "src/llvm") #t)))) (snippet '(begin (delete-file-recursively "src/llvm") #t))))
(define-public rust-1.23 (define-public rust-1.19
(package (package
(name "rust") (name "rust")
(version "1.23.0") (version "1.19.0")
(source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l")) (source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"))
(build-system gnu-build-system) (outputs '("out" "cargo"))
(native-inputs
`(("bison" ,bison) ; For the tests
("cmake" ,cmake)
("flex" ,flex) ; For the tests
("gdb" ,gdb) ; For the tests
("git" ,git)
("procps" ,procps) ; For the tests
("python-2" ,python-2)
("rustc-bootstrap" ,rust-bootstrap)
("cargo-bootstrap" ,rust-bootstrap "cargo")
("pkg-config" ,pkg-config) ; For "cargo"
("which" ,which)))
(inputs
`(("jemalloc" ,jemalloc-4.5.0)
("llvm" ,llvm-3.9.1)
("openssl" ,openssl)
("libcurl" ,curl))) ; For "cargo"
(outputs '("out" "doc" "cargo"))
(arguments (arguments
`(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums' `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
#:phases #:phases
@ -204,15 +186,6 @@ in turn be used to build the final Rust.")
;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html> ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
(delete-file-recursively "src/test/run-make/linker-output-non-utf8") (delete-file-recursively "src/test/run-make/linker-output-non-utf8")
#t))) #t)))
(add-after 'patch-tests 'fix-mtime-bug
(lambda* _
(substitute* "src/build_helper/lib.rs"
;; Bug in Rust code.
;; Current implementation assume that if dst not exist then it's mtime
;; is 0, but in same time "src" have 0 mtime in guix build!
(("let threshold = mtime\\(dst\\);")
"if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
#t))
(add-after 'patch-source-shebangs 'patch-cargo-checksums (add-after 'patch-source-shebangs 'patch-cargo-checksums
(lambda* _ (lambda* _
(substitute* "src/Cargo.lock" (substitute* "src/Cargo.lock"
@ -230,20 +203,73 @@ in turn be used to build the final Rust.")
(find-files "src/vendor" ".cargo-checksum.json")) (find-files "src/vendor" ".cargo-checksum.json"))
#t)) #t))
(replace 'configure (replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys) (const #t))
(let* ((out (assoc-ref outputs "out")) (replace 'check
(doc (assoc-ref outputs "doc")) (const #t))
(gcc (assoc-ref inputs "gcc")) (replace 'install
(gdb (assoc-ref inputs "gdb")) (const #t)))))
(binutils (assoc-ref inputs "binutils")) (build-system gnu-build-system)
(python (assoc-ref inputs "python-2")) (native-inputs
(rustc (assoc-ref inputs "rustc-bootstrap")) `(("bison" ,bison) ; For the tests
(cargo (assoc-ref inputs "cargo-bootstrap")) ("cmake" ,cmake)
(llvm (assoc-ref inputs "llvm")) ("flex" ,flex) ; For the tests
(jemalloc (assoc-ref inputs "jemalloc"))) ("gdb" ,gdb) ; For the tests
(call-with-output-file "config.toml" ("git" ,git)
(lambda (port) ("procps" ,procps) ; For the tests
(display (string-append " ("python-2" ,python-2)
("rustc-bootstrap" ,rust-bootstrap)
("cargo-bootstrap" ,rust-bootstrap "cargo")
("pkg-config" ,pkg-config) ; For "cargo"
("which" ,which)))
(inputs
`(("jemalloc" ,jemalloc-4.5.0)
("llvm" ,llvm-3.9.1)
("openssl" ,openssl)
("libcurl" ,curl))) ; For "cargo"
;; rustc invokes gcc, so we need to set its search paths accordingly.
(native-search-paths (package-native-search-paths gcc))
(synopsis "Compiler for the Rust progamming language")
(description "Rust is a systems programming language that provides memory
safety and thread safety guarantees.")
(home-page "https://www.rust-lang.org")
;; Dual licensed.
(license (list license:asl2.0 license:expat))))
(define-public rust-1.23
(package
(inherit rust-1.19)
(name "rust")
(version "1.23.0")
(source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
(outputs '("out" "doc" "cargo"))
(arguments
(substitute-keyword-arguments (package-arguments rust-1.19)
((#:phases phases)
`(modify-phases ,phases
(add-after 'patch-tests 'fix-mtime-bug
(lambda* _
(substitute* "src/build_helper/lib.rs"
;; Bug in Rust code.
;; Current implementation assume that if dst not exist then it's mtime
;; is 0, but in same time "src" have 0 mtime in guix build!
(("let threshold = mtime\\(dst\\);")
"if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
#t))
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (assoc-ref outputs "doc"))
(gcc (assoc-ref inputs "gcc"))
(gdb (assoc-ref inputs "gdb"))
(binutils (assoc-ref inputs "binutils"))
(python (assoc-ref inputs "python-2"))
(rustc (assoc-ref inputs "rustc-bootstrap"))
(cargo (assoc-ref inputs "cargo-bootstrap"))
(llvm (assoc-ref inputs "llvm"))
(jemalloc (assoc-ref inputs "jemalloc")))
(call-with-output-file "config.toml"
(lambda (port)
(display (string-append "
[llvm] [llvm]
[build] [build]
cargo = \"" cargo "/bin/cargo" "\" cargo = \"" cargo "/bin/cargo" "\"
@ -308,15 +334,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(wrap-program (string-append out "/bin/rustc") (wrap-program (string-append out "/bin/rustc")
`("PATH" ":" prefix (,(string-append ld-wrapper "/bin"))) `("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
`("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib")))) `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))
#t)))))) #t)))))))))
;; rustc invokes gcc, so we need to set its search paths accordingly.
(native-search-paths (package-native-search-paths gcc))
(synopsis "Compiler for the Rust progamming language")
(description "Rust is a systems programming language that provides memory
safety and thread safety guarantees.")
(home-page "https://www.rust-lang.org")
;; Dual licensed.
(license (list license:asl2.0 license:expat))))
(define-public rust (define-public rust
(let ((base-rust rust-1.23)) (let ((base-rust rust-1.23))