gnu: Add rustc.
* gnu/packages/rust.scm (rustc): New variable. Co-authored-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>
This commit is contained in:
parent
423f9e4494
commit
ecee21473b
|
@ -1,5 +1,6 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2016 David Craven <david@craven.ch>
|
;;; Copyright © 2016 David Craven <david@craven.ch>
|
||||||
|
;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -19,9 +20,14 @@
|
||||||
(define-module (gnu packages rust)
|
(define-module (gnu packages rust)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages bootstrap)
|
#:use-module (gnu packages bootstrap)
|
||||||
|
#:use-module (gnu packages cmake)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages elf)
|
#:use-module (gnu packages elf)
|
||||||
#:use-module (gnu packages gcc)
|
#:use-module (gnu packages gcc)
|
||||||
|
#:use-module (gnu packages jemalloc)
|
||||||
|
#:use-module (gnu packages llvm)
|
||||||
|
#:use-module (gnu packages python)
|
||||||
|
#:use-module (gnu packages version-control)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
#:use-module (guix build-system trivial)
|
#:use-module (guix build-system trivial)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
|
@ -182,3 +188,79 @@ manager, which is required to build itself.")
|
||||||
(description "Meta package for a rust environment. Provides pre-compiled
|
(description "Meta package for a rust environment. Provides pre-compiled
|
||||||
rustc-bootstrap and cargo-bootstrap packages.")
|
rustc-bootstrap and cargo-bootstrap packages.")
|
||||||
(license license:asl2.0)))
|
(license license:asl2.0)))
|
||||||
|
|
||||||
|
(define-public rustc
|
||||||
|
(package
|
||||||
|
(name "rustc")
|
||||||
|
(version (rustc-version %rust-bootstrap-binaries-version))
|
||||||
|
(source (origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append
|
||||||
|
"https://static.rust-lang.org/dist/"
|
||||||
|
"rustc-" version "-src.tar.gz"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"112h7qgbn8c7s5880vplpgy5n58sc8css32dq7z5wylpr9slgf7c"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(native-inputs
|
||||||
|
`(("cmake" ,cmake)
|
||||||
|
("git" ,git)
|
||||||
|
("python-2" ,python-2)
|
||||||
|
("rust-bootstrap" ,rust-bootstrap)
|
||||||
|
("which" ,which)))
|
||||||
|
(inputs
|
||||||
|
`(("jemalloc" ,jemalloc)
|
||||||
|
("llvm" ,llvm)))
|
||||||
|
(arguments
|
||||||
|
;; FIXME: Test failure with llvm 3.8; Update llvm.
|
||||||
|
;; https://github.com/rust-lang/rust/issues/36835
|
||||||
|
`(#:tests? #f
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'patch-configure
|
||||||
|
(lambda _
|
||||||
|
;; Detect target CPU correctly.
|
||||||
|
(substitute* "configure"
|
||||||
|
(("/usr/bin/env") (which "env")))
|
||||||
|
;; Avoid curl as a build dependency.
|
||||||
|
(substitute* "configure"
|
||||||
|
(("probe_need CFG_CURL curl") ""))))
|
||||||
|
(add-after 'unpack 'set-env
|
||||||
|
(lambda _
|
||||||
|
(setenv "SHELL" (which "sh"))
|
||||||
|
(setenv "CONFIG_SHELL" (which "sh"))))
|
||||||
|
(add-after 'unpack 'patch-lockfile-test
|
||||||
|
(lambda _
|
||||||
|
(substitute* "src/tools/tidy/src/main.rs"
|
||||||
|
(("^.*cargo.*::check.*$") ""))))
|
||||||
|
(replace 'configure
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
|
(gcc (assoc-ref inputs "gcc"))
|
||||||
|
(python (assoc-ref inputs "python-2"))
|
||||||
|
(rustc (assoc-ref inputs "rustc-bootstrap"))
|
||||||
|
(llvm (assoc-ref inputs "llvm"))
|
||||||
|
(jemalloc (assoc-ref inputs "jemalloc"))
|
||||||
|
(flags (list
|
||||||
|
(string-append "--prefix=" out)
|
||||||
|
(string-append "--datadir=" out "/share")
|
||||||
|
(string-append "--infodir=" out "/share/info")
|
||||||
|
(string-append "--default-linker=" gcc "/bin/gcc")
|
||||||
|
(string-append "--default-ar=" gcc "/bin/ar")
|
||||||
|
(string-append "--python=" python "/bin/python2")
|
||||||
|
(string-append "--local-rust-root=" rustc)
|
||||||
|
(string-append "--llvm-root=" llvm)
|
||||||
|
(string-append "--jemalloc-root=" jemalloc "/lib")
|
||||||
|
"--release-channel=stable"
|
||||||
|
"--enable-rpath"
|
||||||
|
"--enable-local-rust"
|
||||||
|
;;"--enable-rustbuild"
|
||||||
|
"--disable-manage-submodules")))
|
||||||
|
;; Rust uses a custom configure script (no autoconf).
|
||||||
|
(zero? (apply system* "./configure" flags))))))))
|
||||||
|
(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))))
|
||||||
|
|
Loading…
Reference in New Issue