From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Craven Subject: [PATCH 08/12] gnu: Add rustc. Date: Sun, 11 Dec 2016 18:25:33 +0100 Message-ID: <20161211172537.23315-9-david@craven.ch> References: <20161211172537.23315-1-david@craven.ch> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:46331) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cG7tG-0008SB-Ab for guix-devel@gnu.org; Sun, 11 Dec 2016 12:26:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cG7tF-0001Eo-7C for guix-devel@gnu.org; Sun, 11 Dec 2016 12:26:22 -0500 Received: from so254-10.mailgun.net ([198.61.254.10]:17245) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cG7tF-00016t-2d for guix-devel@gnu.org; Sun, 11 Dec 2016 12:26:21 -0500 In-Reply-To: <20161211172537.23315-1-david@craven.ch> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org * gnu/packages/rust.scm (rustc): New variable. Co-authored-by: Eric Le Bihan --- gnu/packages/rust.scm | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 34f87c689..8bbb5d116 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -23,6 +23,10 @@ #:use-module (gnu packages compression) #:use-module (gnu packages elf) #: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 trivial) #:use-module (guix download) @@ -188,3 +192,80 @@ to be deprecated.") (synopsis "Rust bootstrap") (description "Meta package for rustc and cargo bootstrap packages.") (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) + ("rustc-bootstrap" ,rustc-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 "RUSTC_BOOTSTRAP" "1") + (setenv "VERBOSE" "1") + (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 runs blazingly +fast, prevents segfaults, and guarantees thread safety.") + (home-page "https://www.rust-lang.org") + (license (list license:asl2.0 license:expat)))) -- 2.11.0