3
5
Fork 0
mirror of git://git.savannah.gnu.org/guix.git synced 2023-12-14 03:33:07 +01:00
guix/gnu/packages/rust.scm

911 lines
42 KiB
Scheme
Raw Normal View History

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
mailmap: Update entries for Nikita. * .mailmap: change email and name for Nikita. * Makefile.am, doc/guix.texi, etc/completion/fish/guix.fish, gnu/packages/accessibility.scm, gnu/packages/admin.scm, gnu/packages/audio.scm, gnu/packages/autotools.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/cinnamon.scm, gnu/packages/compression.scm, gnu/packages/crypto.scm, gnu/packages/databases.scm, gnu/packages/django.scm, gnu/packages/dns.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/emacs.scm, gnu/packages/enlightenment.scm, gnu/packages/erlang.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/forth.scm, gnu/packages/fvwm.scm, gnu/packages/games.scm, gnu/packages/gl.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm, gnu/packages/gtk.scm, gnu/packages/guile-wm.scm, gnu/packages/guile-xyz.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-check.scm, gnu/packages/haskell-crypto.scm, gnu/packages/haskell-xyz.scm, gnu/packages/haskell.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/irc.scm, gnu/packages/language.scm, gnu/packages/libcanberra.scm, gnu/packages/linux.scm, gnu/packages/lisp-xyz.scm, gnu/packages/lisp.scm, gnu/packages/lolcode.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/mate.scm, gnu/packages/maths.scm, gnu/packages/mc.scm, gnu/packages/messaging.scm, gnu/packages/music.scm, gnu/packages/ncurses.scm, gnu/packages/networking.scm, gnu/packages/nickle.scm, gnu/packages/openbox.scm, gnu/packages/pdf.scm, gnu/packages/perl-check.scm, gnu/packages/perl.scm, gnu/packages/python-compression.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/ssh.scm, gnu/packages/suckless.scm, gnu/packages/tbb.scm, gnu/packages/telephony.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tls.scm, gnu/packages/tor.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/web.scm, gnu/packages/wm.scm, gnu/packages/xdisorg.scm, gnu/packages/xfce.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, gnu/services/certbot.scm, gnu/services/desktop.scm, gnu/services/version-control.scm, gnu/services/web.scm, guix/import/hackage.scm, guix/licenses.scm: Likewise. Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2020-05-11 13:05:45 +02:00
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org>
;;; Copyright © 2017, 2019-2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
;;; Copyright © 2020, 2021 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2020 Matthew James Kraai <kraai@ftbfs.org>
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 (unmatched parenthesis <paren@disroot.org>
;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2022 Jim Newsome <jnewsome@torproject.org>
;;; Copyright © 2022 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages rust)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages elf)
#:use-module (gnu packages flex)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gdb)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
#:use-module (gnu packages)
#:use-module (guix build-system cargo)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module ((guix build utils) #:select (alist-replace))
#:use-module (guix utils)
#:use-module (ice-9 match)
#:use-module (srfi srfi-26))
;; This is the hash for the empty file, and the reason it's relevant is not
;; the most obvious.
;;
;; The root of the problem is that Cargo keeps track of a file called
;; Cargo.lock, that contains the hash of the tarball source of each dependency.
;;
;; However, tarball sources aren't handled well by Guix because of the need to
;; patch shebangs in any helper scripts. This is why we use Cargo's vendoring
;; capabilities, where instead of the tarball, a directory is provided in its
;; place. (In the case of rustc, the source code already ships with vendored
;; dependencies, but crates built with cargo-build-system undergo vendoring
;; during the build.)
;;
;; To preserve the advantages of checksumming, vendored dependencies contain
;; a file called .cargo-checksum.json, which contains the hash of the tarball,
;; as well as the list of files in it, with the hash of each file.
;;
;; The patch-cargo-checksums phase of cargo-build-system runs after
;; any Guix-specific patches to the vendored dependencies and regenerates the
;; .cargo-checksum.json files, but it's hard to know the tarball checksum that
;; should be written to the file - and taking care of any unhandled edge case
;; would require rebuilding everything that depends on rust. This is why we lie,
;; and say that the tarball has the hash of an empty file. It's not a problem
;; because cargo-build-system removes the Cargo.lock file. We can't do that
;; for rustc because of a quirk of its build system, so we modify the lock file
;; to substitute the hash.
(define %cargo-reference-hash
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
(define* (nix-system->gnu-triplet-for-rust
#:optional (system (%current-system)))
(match system
("x86_64-linux" "x86_64-unknown-linux-gnu")
("i686-linux" "i686-unknown-linux-gnu")
("armhf-linux" "armv7-unknown-linux-gnueabihf")
("aarch64-linux" "aarch64-unknown-linux-gnu")
("mips64el-linux" "mips64el-unknown-linux-gnuabi64")
("riscv64-linux" "riscv64gc-unknown-linux-gnu")
(_ (nix-system->gnu-triplet system))))
(define* (rust-uri version #:key (dist "static"))
(string-append "https://" dist ".rust-lang.org/dist/"
"rustc-" version "-src.tar.gz"))
(define* (rust-bootstrapped-package base-rust version checksum)
"Bootstrap rust VERSION with source checksum CHECKSUM using BASE-RUST."
(package
(inherit base-rust)
(version version)
(source
(origin
(inherit (package-source base-rust))
(uri (rust-uri version))
(sha256 (base32 checksum))))
2018-09-02 00:22:53 +02:00
(native-inputs
(alist-replace "cargo-bootstrap" (list base-rust "cargo")
(alist-replace "rustc-bootstrap" (list base-rust)
(package-native-inputs base-rust))))))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
;;; Note: mrustc's only purpose is to be able to bootstap Rust; it's designed
;;; to be used in source form.
(define %mrustc-commit "597593aba86fa2edbea80c6e09f0b1b2a480722d")
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(define %mrustc-source
(let* ((version "0.10")
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(commit %mrustc-commit)
(revision "2")
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(name "mrustc"))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/thepowersgang/mrustc")
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(commit commit)))
(file-name (git-file-name name (git-version version revision commit)))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(sha256
(base32
"09rvm3zgx1d86gippl8qzh13m641ynbw9q0zsc90g0h1khd3z3b6"))
(modules '((guix build utils)))
(snippet
'(begin
;; Drastically reduces memory and build time requirements
;; by disabling debug by default.
(substitute* (find-files "." "Makefile")
(("-g ") "")))))))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
;;; Rust 1.54 is special in that it is built with mrustc, which shortens the
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
;;; bootstrap path.
(define rust-bootstrap
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(package
(name "rust")
(version "1.54.0")
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(source
(origin
(method url-fetch)
(uri (rust-uri version))
(sha256 (base32 "0xk9dhfff16caambmwij67zgshd8v9djw6ha0fnnanlv7rii31dc"))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(modules '((guix build utils)))
(snippet
'(begin
(for-each delete-file-recursively
'("src/llvm-project"))
;; Remove vendored dynamically linked libraries.
;; find . -not -type d -executable -exec file {} \+ | grep ELF
(delete-file "vendor/vte/vim10m_match")
(delete-file "vendor/vte/vim10m_table")
;; Also remove the bundled (mostly Windows) libraries.
;; find vendor -not -type d -exec file {} \+ | grep PE32
(for-each delete-file
(find-files "vendor" ".*\\.(a|dll|exe|lib)$"))))
(patches (search-patches "rustc-1.54.0-src.patch"))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(patch-flags '("-p0")))) ;default is -p1
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(outputs '("out" "cargo"))
(properties '((timeout . 72000) ;20 hours
(max-silent-time . 18000))) ;5 hours (for armel)
(build-system gnu-build-system)
(inputs
`(("libcurl" ,curl)
("llvm" ,llvm-13)
("openssl" ,openssl-1.1)
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
("zlib" ,zlib)))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)
("pkg-config" ,pkg-config)
;; Required for the libstd sources.
("mrustc-source" ,%mrustc-source)))
(arguments
`(#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
#:modules ((guix build cargo-utils)
(guix build utils)
(guix build gnu-build-system))
#:test-target "test"
;; Rust's own .so library files are not found in any RUNPATH, but
;; that doesn't seem to cause issues.
#:validate-runpath? #f
;; Most of the build is single-threaded. This also improves the
;; build time on machines with "only" 8GB of RAM.
#:parallel-build? ,(target-x86-64?)
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
#:make-flags
(list ,(string-append "RUSTC_TARGET="
(or (%current-target-system)
(nix-system->gnu-triplet-for-rust)))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
,(string-append "RUSTC_VERSION=" version)
,(string-append "MRUSTC_TARGET_VER="
(version-major+minor version))
;; mrustc expects a C11 compatible compiler. Use the default
;; C language dialect from the GCC-10 compiler.
;; This is necessary for some architectures.
"CFLAGS=-std=gnu11"
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
"OUTDIR_SUF=") ;do not add version suffix to output dir
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-reference-to-cc
;; This prevents errors like 'error: linker `cc` not found' when
;; "cc" is not found on PATH.
(lambda* (#:key inputs #:allow-other-keys)
(let ((gcc (assoc-ref inputs "gcc")))
(substitute* (find-files "." "^link.rs$")
(("\"cc\".as_ref")
(format #f "~s.as_ref" (string-append gcc "/bin/gcc")))))))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(add-after 'unpack 'setup-mrustc-sources
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(lambda* (#:key inputs #:allow-other-keys)
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(copy-recursively (assoc-ref inputs "mrustc-source") "../mrustc")
;; The Makefile of mrustc expects the sources directory of rustc
;; to be at this location, and it simplifies things to make it
;; so.
(symlink (getcwd)
(string-append "../mrustc/rustc-" ,version "-src"))
(with-output-to-file "dl-version"
(lambda _
(format #t "~a~%"
,version)))))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(add-after 'setup-mrustc-sources 'patch-makefiles
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
;; This disables building the (unbundled) LLVM.
(lambda* (#:key inputs parallel-build? #:allow-other-keys)
(let ((llvm (assoc-ref inputs "llvm")))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(with-directory-excursion "../mrustc"
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(substitute* '("minicargo.mk"
"run_rustc/Makefile")
;; Use the system-provided LLVM.
(("LLVM_CONFIG [:|?]= .*")
(string-append "LLVM_CONFIG := " llvm "/bin/llvm-config\n")))
(substitute* "minicargo.mk"
;; Do not try to fetch sources from the Internet.
(("@curl.*") ""))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(substitute* "Makefile"
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
;; Patch date and git obtained version information.
((" -D VERSION_GIT_FULLHASH=.*")
(string-append
" -D VERSION_GIT_FULLHASH=\\\"" ,%mrustc-commit "\\\""
" -D VERSION_GIT_BRANCH=\\\"master\\\""
" -D VERSION_GIT_SHORTHASH=\\\""
,(string-take %mrustc-commit 7) "\\\""
" -D VERSION_BUILDTIME="
"\"\\\"Thu, 01 Jan 1970 00:00:01 +0000\\\"\""
" -D VERSION_GIT_ISDIRTY=0\n")))
(substitute* "minicargo.mk"
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
;; Do not try to fetch sources from the Internet.
(("\\$\\(MINICARGO\\) \\$\\(RUSTC_SRC_DL\\)")
"$(MINICARGO)"))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(substitute* "run_rustc/Makefile"
(("[$]Vtime ")
"$V ")
;; Unlock the number of parallel jobs for cargo.
(("-j [[:digit:]]+ ")
"")
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
;; Patch the shebang of a generated wrapper for rustc
(("#!/bin/sh")
(string-append "#!" (which "sh"))))
(substitute* "run_rustc/rustc_proxy.sh"
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(("#!/bin/sh")
(string-append "#!" (which "sh"))))))))
(add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(lambda* _
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(substitute* "Cargo.lock"
(("(checksum = )\".*\"" all name)
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(string-append name "\"" ,%cargo-reference-hash "\"")))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(generate-all-checksums "vendor")))
(add-before 'configure 'configure-cargo-home
(lambda _
(let ((cargo-home (string-append (getcwd) "/.cargo")))
(mkdir-p cargo-home)
(setenv "CARGO_HOME" cargo-home))))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(replace 'configure
(lambda _
(setenv "CC" "gcc")
(setenv "CXX" "g++")
;; The Guix LLVM package installs only shared libraries.
(setenv "LLVM_LINK_SHARED" "1")
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
;; rustc still insists on having 'cc' on PATH in some places
;; (e.g. when building the 'test' library crate).
(mkdir-p "/tmp/bin")
(symlink (which "gcc") "/tmp/bin/cc")
(setenv "PATH" (string-append "/tmp/bin:" (getenv "PATH")))))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(delete 'patch-generated-file-shebangs)
(replace 'build
(lambda* (#:key make-flags parallel-build? #:allow-other-keys)
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(let* ((src-root (getcwd))
(job-count (if parallel-build?
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(parallel-job-count)
1)))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
;; Adapted from:
;; https://github.com/dtolnay/bootstrap/blob/master/build-1.54.0.sh.
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(chdir "../mrustc")
;; Use PARLEVEL since both minicargo and mrustc use it
;; to set the level of parallelism.
(setenv "PARLEVEL" (number->string job-count))
(display "Building mrustc...\n")
(apply invoke "make" make-flags)
;; This doesn't seem to build anything, but it
;; sets additional minicargo flags.
(display "Building RUSTCSRC...\n")
(apply invoke "make" "RUSTCSRC" make-flags)
;; This probably doesn't need to be called explicitly.
(display "Building LIBS...\n")
(apply invoke "make" "-f" "minicargo.mk" "LIBS" make-flags)
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(display "Building rustc...\n")
(apply invoke "make" "-f" "minicargo.mk" "output/rustc"
make-flags)
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(display "Building cargo...\n")
(apply invoke "make" "-f" "minicargo.mk" "output/cargo"
make-flags)
;; This one isn't listed in the build script.
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(display "Rebuilding stdlib with rustc...\n")
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(apply invoke "make" "-C" "run_rustc" make-flags))))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(cargo (assoc-ref outputs "cargo"))
(bin (string-append out "/bin"))
(rustc (string-append bin "/rustc"))
(cargo-bin (string-append cargo "/bin"))
(lib (string-append out "/lib"))
(gnu-triplet ,(or (%current-target-system)
(nix-system->gnu-triplet-for-rust)))
(system-lib-prefix (string-append lib "/rustlib/"
gnu-triplet "/lib")))
(mkdir-p (dirname rustc))
(copy-file "run_rustc/output/prefix/bin/rustc_binary" rustc)
(wrap-program rustc
`("LD_LIBRARY_PATH" = (,system-lib-prefix)))
(mkdir-p lib)
(copy-recursively "run_rustc/output/prefix/lib" lib)
(install-file "run_rustc/output/prefix/bin/cargo" cargo-bin)))))))
(synopsis "Compiler for the Rust programming language")
(description "Rust is a systems programming language that provides memory
safety and thread safety guarantees.")
(home-page "https://github.com/thepowersgang/mrustc")
;; The intermediate generated code is known to be inefficient and
;; therefore the build process needs 8GB of RAM while building.
;; It may support i686 soon:
;; <https://github.com/thepowersgang/mrustc/issues/78>.
;; XXX: The rust bootstrap is currently broken on riscv64,
;; remove it until this is fixed.
(supported-systems '("x86_64-linux" "aarch64-linux"))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
;; Dual licensed.
(license (list license:asl2.0 license:expat))))
(define rust-1.55
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(package
(name "rust")
(version "1.55.0")
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(source
(origin
(method url-fetch)
(uri (rust-uri version))
(sha256 (base32 "07l28f7grdmi65naq71pbmvdd61hwcpi40ry7kp7dy7m233rldxj"))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(modules '((guix build utils)))
(snippet
'(begin
(for-each delete-file-recursively
'("src/llvm-project"
"vendor/tikv-jemalloc-sys/jemalloc"))
;; Remove vendored dynamically linked libraries.
;; find . -not -type d -executable -exec file {} \+ | grep ELF
(delete-file "vendor/vte/vim10m_match")
(delete-file "vendor/vte/vim10m_table")
;; Also remove the bundled (mostly Windows) libraries.
;; find vendor -not -type d -exec file {} \+ | grep PE32
(for-each delete-file
(find-files "vendor" ".*\\.(a|dll|exe|lib)$"))
;; Add support for riscv64-linux.
(substitute* "vendor/tikv-jemallocator/src/lib.rs"
((" target_arch = \"s390x\"," all)
(string-append all "\n target_arch = \"riscv64\",")))))))
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
(outputs '("out" "cargo"))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(properties '((timeout . 72000) ;20 hours
(max-silent-time . 18000))) ;5 hours (for armel)
(build-system gnu-build-system)
(arguments
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
`(#:validate-runpath? #f
;; Only the final Rust is tested, not the intermediate bootstrap ones,
;; for performance and simplicity.
#:tests? #f
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
#:modules ((guix build cargo-utils)
(guix build utils)
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(guix build gnu-build-system)
(ice-9 match)
(srfi srfi-1))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-env
(lambda* (#:key inputs #:allow-other-keys)
(setenv "SHELL" (which "sh"))
(setenv "CONFIG_SHELL" (which "sh"))
gnu: Use 'search-input-file' when looking for executables. * gnu/packages/admin.scm (isc-dhcp): Use 'search-input-file' when looking for executables. * gnu/packages/audio.scm (ableton-link): Likewise. * gnu/packages/benchmark.scm (fio): Likewise. * gnu/packages/bioinformatics.scm (roary): Likewise. (ngless): Likewise. * gnu/packages/boost.scm (boost-for-irods): Likewise. * gnu/packages/bootloaders.scm (grub): Likewise. (grub-efi): Likewise. * gnu/packages/chemistry.scm (inchi): Likewise. * gnu/packages/dictionaries.scm (ding): Likewise. * gnu/packages/dlang.scm (ldc): Likewise. * gnu/packages/education.scm (childsplay): Likewise. * gnu/packages/emacs-xyz.scm (emacs-hyperbole): Likewise. (emacs-haskell-mode): Likewise. (emacs-auctex): Likewise. (emacs-ggtags): Likewise. (emacs-graphviz-dot-mode): Likewise. (emacs-flycheck-grammalecte): Likewise. (emacs-counsel-notmuch): Likewise. (emacspeak): Likewise. (emacs-exwm): Likewise. (emacs-exwm-x): Likewise. (emacs-treemacs): Likewise. (emacs-telega): Likewise. (emacs-exiftool): Likewise. * gnu/packages/emulators.scm (higan): Likewise. * gnu/packages/engineering.scm (freehdl): Likewise. (librepcb): Likewise. * gnu/packages/entr.scm (entr): Likewise. * gnu/packages/file-systems.scm (libeatmydata): Likewise. (xfstests): Likewise. (mergerfs): Likewise. (mergerfs-tools): Likewise. * gnu/packages/finance.scm (monero-gui): Likewise. * gnu/packages/flashing-tools.scm (flashrom): Likewise. * gnu/packages/fontutils.scm (fontforge): Likewise. * gnu/packages/game-development.scm (python2-renpy): Likewise. * gnu/packages/games.scm (opensurge): Likewise. (xboard): Likewise. (hyperrogue): Likewise. (flare-game): Likewise. (chessx): Likewise. * gnu/packages/geo.scm (grass): Likewise. * gnu/packages/glib.scm (glib): Likewise. * gnu/packages/gnome.scm (mm-common): Likewise. (network-manager-openvpn): Likewise. (network-manager-vpnc): Likewise. (network-manager-openconnect): Likewise. (apostrophe): Likewise. * gnu/packages/gnupg.scm (pius): Likewise. (jetring): Likewise. * gnu/packages/gnuzilla.scm (icedove): Likewise. * gnu/packages/golang.scm (go-1.4): Likewise. * gnu/packages/graphviz.scm (xdot): Likewise. * gnu/packages/guile-xyz.scm (jupyter-guile-kernel): Likewise. * gnu/packages/haskell-xyz.scm (ghc-hindent): Likewise. * gnu/packages/ibus.scm (ibus): Likewise. * gnu/packages/image.scm (phockup): Likewise. * gnu/packages/irc.scm (quassel): Likewise. * gnu/packages/java.scm (drip): Likewise. (ant-bootstrap): Likewise. (tla2tools): Likewise. * gnu/packages/julia.scm (julia): Likewise. * gnu/packages/less.scm (lesspipe): Likewise. * gnu/packages/libreoffice.scm (libreoffice): Likewise. * gnu/packages/linux.scm (fuse): Likewise. (lm-sensors): Likewise. (bluez): Likewise. (fakeroot): Likewise. (inputattach): Likewise. * gnu/packages/lisp-xyz.scm (sbcl-cl-diskspace): Likewise. * gnu/packages/lisp.scm (lisp-repl-core-dumper): Likewise. * gnu/packages/lua.scm (fennel): Likewise. * gnu/packages/lxde.scm (spacefm): Likewise. * gnu/packages/mail.scm (public-inbox): Likewise. * gnu/packages/maths.scm (hdf-java): Likewise. (maxima): Likewise. (frama-c): Likewise. * gnu/packages/messaging.scm (libgadu): Likewise. * gnu/packages/music.scm (denemo): Likewise. (curseradio): Likewise. * gnu/packages/netpbm.scm (netpbm): Likewise. * gnu/packages/networking.scm (blueman): Likewise. (squid): Likewise. (aircrack-ng): Likewise. * gnu/packages/node.scm (node): Likewise. (node-llparse-frontend-bootstrap): Likewise. (node-llparse-bootstrap): Likewise. (llhttp-bootstrap): Likewise. (node-lts): Likewise. * gnu/packages/ocaml.scm (ocaml-4.11): Likewise. (opam): Likewise. (ocaml-graph): Likewise. * gnu/packages/orpheus.scm (orpheus): Likewise. * gnu/packages/password-utils.scm (password-store): Likewise. * gnu/packages/python.scm (pypy3): Likewise. * gnu/packages/qt.scm (qt5ct): Likewise. * gnu/packages/radio.scm (libosmo-dsp): Likewise. * gnu/packages/ruby.scm (ruby-pandoc-ruby): Likewise. * gnu/packages/rust.scm (rust-1.30): Likewise. * gnu/packages/screen.scm (byobu): Likewise. * gnu/packages/statistics.scm (r-with-tests): Likewise. * gnu/packages/suckless.scm (surf): Likewise. * gnu/packages/syndication.scm (gfeeds): Likewise. * gnu/packages/telephony.scm (mumble): Likewise. * gnu/packages/terminals.scm (alacritty): Likewise. * gnu/packages/tex.scm (texlive-bin): Likewise. * gnu/packages/uml.scm (plantuml): Likewise. * gnu/packages/version-control.scm (python-git-multimail): Likewise. (gitolite): Likewise. (hg-commitsigs): Likewise. (git-when-merged): Likewise. (git-imerge): Likewise. (gita): Likewise. * gnu/packages/video.scm (you-get): Likewise. * gnu/packages/vim.scm (eovim): Likewise. * gnu/packages/virtualization.scm (qemu): Likewise. (virt-manager): Likewise. (criu): Likewise. * gnu/packages/vpn.scm (strongswan): Likewise. (xl2tpd): Likewise. * gnu/packages/wm.scm (i3lock-fancy): Likewise. * gnu/packages/wxwidgets.scm (python-wxpython): Likewise. (python2-wxpython): Likewise. * gnu/packages/xdisorg.scm (autorandr): Likewise. * gnu/packages/xorg.scm (hackneyed-x11-cursors): Likewise. (v86d): Likewise. (mkfontdir): Likewise. (xpra): Likewise.
2021-07-16 16:50:56 +02:00
(setenv "CC" (search-input-file inputs "/bin/gcc"))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
;; The Guix LLVM package installs only shared libraries.
(setenv "LLVM_LINK_SHARED" "1")))
(add-after 'unpack 'set-linker-locale-to-utf8
(lambda _
(substitute* (find-files "." "^linker.rs$")
(("linker.env\\(\"LC_ALL\", \"C\"\\);")
"linker.env(\"LC_ALL\", \"en_US.UTF-8\");"))))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(add-after 'unpack 'add-cc-shim-to-path
(lambda _
(mkdir-p "/tmp/bin")
(symlink (which "gcc") "/tmp/bin/cc")
(setenv "PATH" (string-append "/tmp/bin:" (getenv "PATH")))))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(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"))
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
(binutils (assoc-ref inputs "binutils"))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(rustc (assoc-ref inputs "rustc-bootstrap"))
(cargo (assoc-ref inputs "cargo-bootstrap"))
(llvm (assoc-ref inputs "llvm"))
(jemalloc (assoc-ref inputs "jemalloc")))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
;; The compiler is no longer directly built against jemalloc, but
;; rather via the jemalloc-sys crate (which vendors the jemalloc
;; source). To use jemalloc we must enable linking to it (otherwise
;; it would use the system allocator), and set an environment
;; variable pointing to the compiled jemalloc.
(setenv "JEMALLOC_OVERRIDE"
(search-input-file inputs
"/lib/libjemalloc_pic.a"))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(call-with-output-file "config.toml"
(lambda (port)
(display (string-append "
[llvm]
[build]
cargo = \"" cargo "/bin/cargo" "\"
rustc = \"" rustc "/bin/rustc" "\"
docs = false
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
python = \"" python "/bin/python" "\"
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
vendor = true
submodules = false
[install]
prefix = \"" out "\"
sysconfdir = \"etc\"
[rust]
debug=false
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
jemalloc=true
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
default-linker = \"" gcc "/bin/gcc" "\"
channel = \"stable\"
rpath = true
[target." ,(nix-system->gnu-triplet-for-rust) "]
llvm-config = \"" llvm "/bin/llvm-config" "\"
cc = \"" gcc "/bin/gcc" "\"
cxx = \"" gcc "/bin/g++" "\"
ar = \"" binutils "/bin/ar" "\"
[dist]
") port))))))
(replace 'build
;; The standard library source location moved in this release.
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(lambda* (#:key parallel-build? #:allow-other-keys)
(let ((job-spec (string-append
"-j" (if parallel-build?
(number->string (parallel-job-count))
"1"))))
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(invoke "./x.py" job-spec "build" "--stage=1"
"library/std"
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
"src/tools/cargo"))))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(let* ((out (assoc-ref outputs "out"))
(cargo-out (assoc-ref outputs "cargo"))
(gnu-triplet ,(or (%current-target-system)
(nix-system->gnu-triplet-for-rust)))
(build (string-append "build/" gnu-triplet)))
;; Manually do the installation instead of calling './x.py
;; install', as that is slow and needlessly rebuilds some
;; things.
(install-file (string-append build "/stage1/bin/rustc")
(string-append out "/bin"))
(copy-recursively (string-append build "/stage1/lib")
(string-append out "/lib"))
(install-file (string-append build "/stage1-tools-bin/cargo")
(string-append cargo-out "/bin")))))
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(add-after 'install 'delete-install-logs
(lambda* (#:key outputs #:allow-other-keys)
(for-each (lambda (f)
(false-if-exception (delete-file f)))
(append-map (lambda (output)
(find-files (string-append
output "/lib/rustlib")
"(^install.log$|^manifest-)"))
(map cdr outputs)))))
(add-after 'install 'wrap-rustc
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(libc (assoc-ref inputs "libc"))
(ld-wrapper (assoc-ref inputs "ld-wrapper")))
;; Let gcc find ld and libc startup files.
(wrap-program (string-append out "/bin/rustc")
`("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
`("LIBRARY_PATH" ":"
suffix (,(string-append libc "/lib"))))))))))
(native-inputs
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
`(("cmake" ,cmake-minimal)
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
("pkg-config" ,pkg-config) ; For "cargo"
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
("python" ,python-wrapper)
("rustc-bootstrap" ,rust-bootstrap)
("cargo-bootstrap" ,rust-bootstrap "cargo")
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
("which" ,which)))
(inputs
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
`(("jemalloc" ,jemalloc)
("llvm" ,llvm-13)
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
("openssl" ,openssl)
("libssh2" ,libssh2) ; For "cargo"
("libcurl" ,curl))) ; For "cargo"
;; rustc invokes gcc, so we need to set its search paths accordingly.
;; Note: duplicate its value here to cope with circular dependencies among
;; modules (see <https://bugs.gnu.org/31392>).
(native-search-paths
(list (search-path-specification
(variable "C_INCLUDE_PATH")
(files '("include")))
(search-path-specification
(variable "CPLUS_INCLUDE_PATH")
(files '("include/c++" "include")))
(search-path-specification
(variable "LIBRARY_PATH")
(files '("lib" "lib64")))))
(synopsis "Compiler for the Rust programming language")
gnu: rust: Bootstrap rust@1.29.2 by mrustc@0.9. This reduced bootstrap reduces the complete Rust bootstrap chain build time by approximately 30% compared to the original (about 11 hours instead of 16 hours, on a fast machine). * gnu/packages/patches/rust-1.45-linker-locale.patch: Delete file. * gnu/packages/patches/rust-1.48-linker-locale.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register deleted files. * gnu/packages/rust.scm (%mrustc-source): New variable. (rust-1.29): New variable. It is bootstrapped from mrust 0.9, which is used in source form. (rust-1.30): New variable. (rust-1.31)[phases]{patch-command-exec-tests-phase}: Rewrite so that it doesn't need to be redefined later when the file is moved. {enable-docs}: New phase. (rust-1.32): Disable tests. [inputs]: Remove field. [phases]{override-jemalloc}: Reorder after the configure phase. (rust-1.33): Enable tests. [phases]{disable-codegen-tests}: New phase. (rust-1.34)[phases]{disable-codegen-tests}: Delete phase. (rust-1.35)[arguments]: Remove field. The disable-tidy-bins-check phase is now defined in rust-1.30. (rust-1.38)[phases]{patch-command-exec-tests-phase}: Remove. {patch-command-uid-gid-test}: Do not worry about the Tidy lint test, which is disabled. (rust-1.40)[phases]: Move #:validate-runpath? inside the use of 'substitute-keyword-arguments'. {neuter-tidy}: Delete. {patch-command-uid-gid-test}: Make the regexp more precise. Remove the TODO comment, which has been addressed. (rust-1.44)[inputs]: Replace python2 by python-wrapper. [phases]{use-python3}: New phase. (rust-1.45)[source]: Remove field. The linker locale fix is now made via ... [phases]{set-linker-locale-to-utf8}: ... this phase. (rust-1.46)[phases]{build, check}: Allow parallel execution. Add comments. {delete-install-logs}: Delete phase; it's now done in rust-1.30. (rust-1.47)[phases]{patch-cargo-checksums}: Do not reorder phase. The initial ordering of the phase has been fixed with in the rust-1.30 package. (rust-1.48)[source]: Remove field.
2020-08-18 20:59:03 +02:00
(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 rust-1.56
(let ((base-rust (rust-bootstrapped-package
rust-1.55 "1.56.1"
"04cmqx7nn63hzz7z27b2b0dj2qx18rck9ifvip43s6dampx8v2f3")))
(package
(inherit base-rust)
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
((#:validate-runpath? _ #t)
#t)
((#:phases phases)
`(modify-phases ,phases
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time. Only stage 1 (rather than stage 2) rustc and cargo are built and the installation phase rewritten to not invoke the build tool, which helps to shorten the build time to about 10 minutes per Rust on a fast machine. The total build time should take less than 4h30, down from the current 8 hours on a Ryzen 3900X CPU. * gnu/packages/patches/rust-reproducible-builds.patch: Delete file. * gnu/packages/patches/rustc-1.39.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it, and un-register rust-reproducible-builds.patch. * gnu/packages/rust.scm (%mrustc-commit): New variable. (%mrustc-source): Update to latest commit. (rust-1.29): Morph into... (rust-1.39): ... this. [source]: Adjust the snippet, patches and patch-flags fields. [inputs]: Replace llvm-7 by llvm (9). [make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make variables. Remove the RUSTCSRC make variable. [phases]{copy-mrustc-and-patch}: Rename to... {setup-mrustc-sources}: ... this. A symbolic link is created inside the mrustc directory, pointing to the Rust 1.39.0 sources. {patch-makefiles}: Adjust directory. Patch date and git definitions. Edit out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang. {patch-cargo-checksums}: Adjust. {configure-cargo-home}: New phase. {configure}: Create and add a 'cc' shim to PATH. {build}: Do not invoke make in parallel mode inside the run_rustc directory. (rust-1.30): Morph into... (rust-1.40): ... this, integrating the changes introduced between 1.30 and 1.40. [modules]: Properly import (guix build cargo-utils). [phases]{add-cc-shim-to-path}: New phase. {configure}: Increase the codegen-units value to 256. {build}: Only build stage 1 rustc and cargo, and group the commands into one invocation. {install}: Manually install the stage 1 build artifacts. {patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed. [source]: Adjust. [arguments]: Set validate-runpath? to #f. [phases]{patch-cargo-checksums}: Remove phase. {configure}: Repatriate the jemalloc configuration changes from 1.40. [native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular jemalloc and llvm versions. (rust-1.41)[phases]: Add the patch-cargo-checksums phase. (rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37) (rust-1.38, rust-1.39, rust-1.40): Delete variables. (rust-1.46)[phases]{install}: Group build, test and install commands. (rust-1.47)[phases]{build}: Override to adjust for the relocation of the standard library source directory.
2021-08-21 07:01:23 +02:00
(delete 'add-cc-shim-to-path)
(add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
(lambda* _
(substitute* "Cargo.lock"
(("(checksum = )\".*\"" all name)
(string-append name "\"" ,%cargo-reference-hash "\"")))
(generate-all-checksums "vendor"))))))))))
(define rust-1.57
(rust-bootstrapped-package
;; Verified that it *doesn't* build with 1.55. e.g.:
;; * feature `edition2021` is required
rust-1.56 "1.57.0" "06jw8ka2p3kls8p0gd4p0chhhb1ia1mlvj96zn78n7qvp71zjiim"))
(define rust-1.58
(rust-bootstrapped-package
;; Verified that it *doesn't* build with 1.56. e.g.:
;; * error: attributes starting with `rustc` are reserved for use by the
;; `rustc` compiler
;; * error: cannot find attribute `rustc_do_not_const_check` in this scope
;; * error[E0522]: definition of an unknown language item:
;; `const_eval_select_ct`
rust-1.57 "1.58.1" "1iq7kj16qfpkx8gvw50d8rf7glbm6s0pj2y1qkrz7mi56vfsyfd8"))
(define rust-1.59
(let ((base-rust
(rust-bootstrapped-package
;; Verified that it *doesn't* build with 1.57. e.g.:
;; * error: `doc(primitive)` should never have been stable
;; * error[E0522]: definition of an unknown language item:
;; `generator_return`
;; * error[E0206]: the trait `Copy` may not be implemented for this type
rust-1.58 "1.59.0" "1yc5bwcbmbwyvpfq7zvra78l0r8y3lbv60kbr62fzz2vx2pfxj57")))
(package
(inherit base-rust)
(arguments
(if (target-riscv64?)
(substitute-keyword-arguments (package-arguments base-rust)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'revert-riscv-pause-instruction
(lambda _
;; This fails with:
;; error: unknown directive, referring to '.insn'.
;; This is due to building with llvm < 14.
;; https://github.com/rust-lang/stdarch/issues/1291
;; Partial roll-back from this commit:
;; https://github.com/rust-lang/stdarch/pull/1271
(substitute*
"library/stdarch/crates/core_arch/src/riscv_shared/mod.rs"
(("\\.insn i 0x0F, 0, x0, x0, 0x010") ".word 0x0100000F")))))))
(package-arguments base-rust))))))
(define rust-1.60
(rust-bootstrapped-package
;; Verified that it *doesn't* build with 1.58. e.g.:
;; * error: unknown codegen option: `symbol-mangling-version`
rust-1.59 "1.60.0" "1drqr0a26x1rb2w3kj0i6abhgbs3jx5qqkrcwbwdlx7n3inq5ji0"))
(define rust-1.61
(let ((base-rust
(rust-bootstrapped-package
rust-1.60 "1.61.0" "1vfs05hkf9ilk19b2vahqn8l6k17pl9nc1ky9kgspaascx8l62xd")))
(package
(inherit base-rust)
(source
(origin
(inherit (package-source base-rust))
(snippet
'(begin
(for-each delete-file-recursively
'("src/llvm-project"
"vendor/tikv-jemalloc-sys/jemalloc"))
;; Remove vendored dynamically linked libraries.
;; find . -not -type d -executable -exec file {} \+ | grep ELF
(delete-file "vendor/vte/vim10m_match")
(delete-file "vendor/vte/vim10m_table")
;; Also remove the bundled (mostly Windows) libraries.
(for-each delete-file
(find-files "vendor" ".*\\.(a|dll|exe|lib)$")))))))))
(define rust-1.62
(rust-bootstrapped-package
rust-1.61 "1.62.1" "0gqkg34ic77dcvsz69qbdng6g3zfhl6hnhx7ha1mjkyrzipvxb3j"))
(define rust-1.63
(rust-bootstrapped-package
rust-1.62 "1.63.0" "1l4rrbzhxv88pnfq94nbyb9m6lfnjwixma3mwjkmvvs2aqlq158z"))
(define rust-1.64
(let ((base-rust
(rust-bootstrapped-package
rust-1.63 "1.64.0" "018j720b2n12slp4xk64jc6shkncd46d621qdyzh2a8s3r49zkdk")))
(package
(inherit base-rust)
(source
(origin
(inherit (package-source base-rust))
(patches (search-patches "rust-1.64-fix-riscv64-bootstrap.patch"))
(patch-flags '("-p1" "--reverse"))))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:phases phases)
`(modify-phases ,phases
(replace 'patch-cargo-checksums
(lambda _
(substitute* '("Cargo.lock"
"src/bootstrap/Cargo.lock"
"src/tools/rust-analyzer/Cargo.lock")
(("(checksum = )\".*\"" all name)
(string-append name "\"" ,%cargo-reference-hash "\"")))
(generate-all-checksums "vendor"))))))))))
(define rust-1.65
(let ((base-rust
(rust-bootstrapped-package
rust-1.64 "1.65.0" "0f005kc0vl7qyy298f443i78ibz71hmmh820726bzskpyrkvna2q")))
(package
(inherit base-rust)
(source
(origin
(inherit (package-source base-rust))
(patches '())
(patch-flags '("-p1")))))))
(define rust-1.66
(rust-bootstrapped-package
rust-1.65 "1.66.1" "1fjr94gsicsxd2ypz4zm8aad1zdbiccr7qjfbmq8f8f7jhx96g2v"))
(define rust-1.67
(let ((base-rust
(rust-bootstrapped-package
rust-1.66 "1.67.1" "0vpzv6rm3w1wbni17ryvcw83k5klhghklylfdza3nnp8blz3sj26")))
(package
(inherit base-rust)
(inputs (modify-inputs (package-inputs base-rust)
(replace "llvm" llvm-15))))))
(define rust-1.68
(rust-bootstrapped-package
rust-1.67 "1.68.2" "15ifyd5jj8rd979dkakp887hgmhndr68pqaqvd2hqkfdywirqcwk"))
;;; Note: Only the latest version of Rust is supported and tested. The
;;; intermediate rusts are built for bootstrapping purposes and should not
;;; be relied upon. This is to ease maintenance and reduce the time
;;; required to build the full Rust bootstrap chain.
;;;
;;; Here we take the latest included Rust, make it public, and re-enable tests
;;; and extra components such as rustfmt.
(define-public rust
(let ((base-rust rust-1.68))
(package
(inherit base-rust)
(outputs (cons "rustfmt" (package-outputs base-rust)))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
((#:tests? _ #f)
(not (%current-target-system)))
((#:phases phases)
`(modify-phases ,phases
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
(add-after 'unpack 'relax-gdb-auto-load-safe-path
;; Allow GDB to load binaries from any location, otherwise the
;; gdbinfo tests fail. This is only useful when testing with a
;; GDB version newer than 8.2.
(lambda _
(setenv "HOME" (getcwd))
(with-output-to-file (string-append (getenv "HOME") "/.gdbinit")
(lambda _
(format #t "set auto-load safe-path /~%")))
;; Do not launch gdb with '-nx' which causes it to not execute
;; any init file.
(substitute* "src/tools/compiletest/src/runtest.rs"
(("\"-nx\".as_ref\\(\\), ")
""))))
(add-after 'unpack 'patch-cargo-env-shebang
(lambda _
(substitute* '("src/tools/cargo/tests/testsuite/build.rs"
"src/tools/cargo/tests/testsuite/fix.rs")
;; The cargo *_wrapper tests set RUSTC.*WRAPPER environment
;; variable which points to /usr/bin/env. Since it's not a
;; shebang, it needs to be manually patched.
(("/usr/bin/env")
(which "env")))))
(add-after 'unpack 'disable-tests-requiring-git
(lambda _
(substitute* "src/tools/cargo/tests/testsuite/new.rs"
(("fn author_prefers_cargo")
"#[ignore]\nfn author_prefers_cargo")
(("fn finds_author_git")
"#[ignore]\nfn finds_author_git")
(("fn finds_local_author_git")
"#[ignore]\nfn finds_local_author_git"))))
(add-after 'unpack 'disable-tests-requiring-mercurial
(lambda _
(substitute*
"src/tools/cargo/tests/testsuite/init/simple_hg_ignore_exists/mod.rs"
(("fn simple_hg_ignore_exists")
"#[ignore]\nfn simple_hg_ignore_exists"))
(substitute*
"src/tools/cargo/tests/testsuite/init/mercurial_autodetect/mod.rs"
(("fn mercurial_autodetect")
"#[ignore]\nfn mercurial_autodetect"))))
(add-after 'unpack 'disable-tests-broken-on-aarch64
(lambda _
(with-directory-excursion "src/tools/cargo/tests/testsuite/"
(substitute* "build_script_extra_link_arg.rs"
(("^fn build_script_extra_link_arg_bin_single" m)
(string-append "#[ignore]\n" m)))
(substitute* "build_script.rs"
(("^fn env_test" m)
(string-append "#[ignore]\n" m)))
(substitute* "collisions.rs"
(("^fn collision_doc_profile_split" m)
(string-append "#[ignore]\n" m)))
(substitute* "concurrent.rs"
(("^fn no_deadlock_with_git_dependencies" m)
(string-append "#[ignore]\n" m)))
(substitute* "features2.rs"
(("^fn dep_with_optional_host_deps_activated" m)
(string-append "#[ignore]\n" m))))))
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
(add-after 'unpack 'patch-command-exec-tests
;; This test suite includes some tests that the stdlib's
;; `Command` execution properly handles in situations where
;; the environment or PATH variable are empty, but this fails
;; since we don't have `echo` available at its usual FHS
;; location.
(lambda _
(substitute* (match (find-files "." "^command-exec.rs$")
((file) file))
(("Command::new\\(\"echo\"\\)")
(format #f "Command::new(~s)" (which "echo"))))))
(add-after 'unpack 'patch-command-uid-gid-test
(lambda _
(substitute* (match (find-files "." "^command-uid-gid.rs$")
((file) file))
(("/bin/sh")
(which "sh")))))
(add-after 'unpack 'skip-shebang-tests
;; This test make sure that the parser behaves properly when a
;; source file starts with a shebang. Unfortunately, the
;; patch-shebangs phase changes the meaning of these edge-cases.
;; We skip the test since it's drastically unlikely Guix's
;; packaging will introduce a bug here.
(lambda _
(delete-file "tests/ui/parser/shebang/sneaky-attrib.rs")))
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
(add-after 'unpack 'patch-process-tests
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
(substitute* "library/std/src/process/tests.rs"
(("\"/bin/sh\"")
(string-append "\"" bash "/bin/sh\"")))
;; The three tests which are known to fail upstream on QEMU
;; emulation on aarch64 and riscv64 also fail on x86_64 in Guix's
;; build system. Skip them on all builds.
(substitute* "library/std/src/sys/unix/process/process_common/tests.rs"
(("target_arch = \"arm\",") "target_os = \"linux\",")))))
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
(add-after 'unpack 'disable-interrupt-tests
(lambda _
;; This test hangs in the build container; disable it.
(substitute* (match (find-files "." "^freshness.rs$")
((file) file))
(("fn linking_interrupted")
"#[ignore]\nfn linking_interrupted"))
;; Likewise for the ctrl_c_kills_everyone test.
(substitute* (match (find-files "." "^death.rs$")
((file) file))
(("fn ctrl_c_kills_everyone")
"#[ignore]\nfn ctrl_c_kills_everyone"))))
(add-after 'unpack 'adjust-rpath-values
;; This adds %output:out to rpath, allowing us to install utilities in
;; different outputs while reusing the shared libraries.
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "src/bootstrap/builder.rs"
((" = rpath.*" all)
(string-append all
" "
"rustflags.arg(\"-Clink-args=-Wl,-rpath="
out "/lib\");\n"))))))
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
(add-after 'configure 'add-gdb-to-config
(lambda* (#:key inputs #:allow-other-keys)
(let ((gdb (assoc-ref inputs "gdb")))
(substitute* "config.toml"
(("^python =.*" all)
(string-append all
"gdb = \"" gdb "/bin/gdb\"\n"))))))
(replace 'build
;; Phase overridden to also build rustfmt.
(lambda* (#:key parallel-build? #:allow-other-keys)
(let ((job-spec (string-append
"-j" (if parallel-build?
(number->string (parallel-job-count))
"1"))))
(invoke "./x.py" job-spec "build"
"library/std" ;rustc
"src/tools/cargo"
"src/tools/rustfmt"))))
(replace 'check
;; Phase overridden to also test rustfmt.
(lambda* (#:key tests? parallel-build? #:allow-other-keys)
(when tests?
(let ((job-spec (string-append
"-j" (if parallel-build?
(number->string (parallel-job-count))
"1"))))
(invoke "./x.py" job-spec "test" "-vv"
"library/std"
"src/tools/cargo"
"src/tools/rustfmt")))))
(replace 'install
;; Phase overridden to also install rustfmt.
(lambda* (#:key outputs #:allow-other-keys)
(invoke "./x.py" "install")
(substitute* "config.toml"
;; Adjust the prefix to the 'cargo' output.
(("prefix = \"[^\"]*\"")
(format #f "prefix = ~s" (assoc-ref outputs "cargo"))))
(invoke "./x.py" "install" "cargo")
(substitute* "config.toml"
;; Adjust the prefix to the 'rustfmt' output.
(("prefix = \"[^\"]*\"")
(format #f "prefix = ~s" (assoc-ref outputs "rustfmt"))))
(invoke "./x.py" "install" "rustfmt")))))))
gnu: rust: Only test the current release. By only testing the final Rust in the bootstrap chain, the total build time is reduced by approximately 30%, from about 11 hours to 8 hours on a fast machine. Combined with commit df93fc21a4, the total Rust bootstrap chain build time should have been halved. * gnu/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/rust.scm (rust-1.29): Do not apply the above patch. (rust-1.30): Remove the "doc" output. Disable tests. [phases]{set-env}: Do not set CFG_DISABLE_CROSS_TESTS. {relax-gdb-auto-load-safe-path, patch-tests, patch-cargo-index-update} {patch-aarch64-test, remove-unsupported-tests, disable-amd64-avx-test} {patch-cargo-tests, patch-cargo-env-shebang} {ignore-cargo-package-tests}: Remove phases. {configure}: Remove the doc and gdb bindings and their respective configuration entries in the generated config.toml file. {check}: Remove phase. [native-inputs]{bison, flex, gdb, procps}: Remove inputs. {python-2}: Replace by python-wrapper. {rust-1.29}: Do not export variable. {rust-1.30}: Likewise. (rust-1.31): Likewise. [arguments]: Remove field. (rust-1.32): Do not export variable. [source]: Remove patch. [phases]{override-jemalloc}: Order following 'configure. {remove-flaky-test, patch-aarch64-test}: Remove deletions. (rust-1.33): Do not export variable. [arguments]: Remove field. (rust-1.34): Do not export variable. (rust-1.35): Likewise. (rust-1.36): Likewise. [arguments]: Remove field. (rust-1.37): Do not export variable. (rust-1.38): Do not export variable. [arguments]: Likewise. (rust-1.39): Do not export variable. (rust-1.40): Do not export variable. [phases]: Do not alter the #:phases argument. (rust-1.41, rust-1.42, rust-1.43): Do not export variables. (rust-1.44): Likewise. [arguments]: Remove field. (rust-1.45): Do not export variable. [phases]{skip-shebang-tests, skip-networking-test}: Remove phases. (rust-1.46): Do not export variable. (rust-1.47): Do not export variable. [arguments]: Remove field. (rust-1.48): Do not export variable. [arguments]: Remove field. (rust-1.49): Rename to... (rust): ... this. [outputs]: Add a "doc" output. [phases]{enable-docs, add-gdb-to-config} {relax-gdb-auto-load-safe-path, patch-cargo-env-shebang} {disable-tests-requiring-git, disable-interrupt-tests} {patch-command-exec-tests, patch-command-uid-gid-test} {skip-shebang-tests, patch-process-tests}: New phases. [native-inputs]{gdb-9.2, procps}: New inputs.
2021-02-01 16:34:26 +01:00
;; Add test inputs.
(native-inputs (cons* `("gdb" ,gdb/pinned)
`("procps" ,procps)
(package-native-inputs base-rust))))))
(define-public rust-src
(hidden-package
(package
(inherit rust)
(name "rust-src")
(build-system copy-build-system)
(native-inputs '())
(inputs '())
(native-search-paths '())
(outputs '("out"))
(arguments
`(#:install-plan
'(("library" "lib/rustlib/src/rust/library")
("src" "lib/rustlib/src/rust/src"))))
(synopsis "Source code for the Rust standard library")
(description "This package provide source code for the Rust standard
library, only use by rust-analyzer, make rust-analyzer out of the box."))))