Merge pull request #73039 from taku0/rust_multiple_version

rust: keep multiple version
This commit is contained in:
Eelco Dolstra 2019-11-08 14:34:38 +01:00 committed by GitHub
commit e4a6fba808
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 71 additions and 22 deletions

View File

@ -0,0 +1,20 @@
import ./default.nix {
rustcVersion = "1.38.0";
rustcSha256 = "101dlpsfkq67p0hbwx4acqq6n90dj4bbprndizpgh1kigk566hk4";
# Note: the version MUST be one version prior to the version we're
# building
bootstrapVersion = "1.37.0";
# fetch hashes by running `print-hashes.sh 1.37.0`
bootstrapHashes = {
i686-unknown-linux-gnu = "74510e0e52a55e65a9f716673c2cda4d2bd427e2453541c6993c77c3ec04acf9";
x86_64-unknown-linux-gnu = "cb573229bfd32928177c3835fdeb62d52da64806b844bc1095c6225b0665a1cb";
armv7-unknown-linux-gnueabihf = "5b87b877f0ed20c6a09ce26e7a15d8c61b26b62484b97e78a51099d0efefec98";
aarch64-unknown-linux-gnu = "263ef98fa3a6b2911b56f89c06615cdebf6ef676eb9b2493ad1539602f79b6ba";
i686-apple-darwin = "e45d0c4d882fc6c404ffa6fe790294f4ea96384a2b48804adbf723f3635477a8";
x86_64-apple-darwin = "b2310c97ffb964f253c4088c8d29865f876a49da2a45305493af5b5c7a3ca73d";
};
selectRustPackage = pkgs: pkgs.rust_1_38_0;
}

View File

@ -0,0 +1,20 @@
import ./default.nix {
rustcVersion = "1.39.0";
rustcSha256 = "0mwkc1bnil2cfyf6nglpvbn2y0zfbv44zfhsd5qg4c9rm6vgd8dl";
# Note: the version MUST be one version prior to the version we're
# building
bootstrapVersion = "1.38.0";
# fetch hashes by running `print-hashes.sh 1.38.0`
bootstrapHashes = {
i686-unknown-linux-gnu = "41aed8a350e24a0cac1444ed99b3dd24a90bc581dd88cb420c6e547d6b5f57af";
x86_64-unknown-linux-gnu = "adda26b3f0609dbfbdc2019da4a20101879b9db2134fae322a4e863a069ec221";
armv7-unknown-linux-gnueabihf = "8b1bf1680a61a643d6b5c7a3b1a1ce88448652756395e20ba5846739cbd085c4";
aarch64-unknown-linux-gnu = "06afd6d525326cea95c3aa658aaa8542eab26f44235565bb16913ac9d12b7bda";
i686-apple-darwin = "cdbf2807774bed350a3af6f41d7f7dd7ceff28777cde310c3ba90033188eb2f8";
x86_64-apple-darwin = "bd301b78ddcd5d4553962b115e1dca5436dd3755ed323f86f4485769286a8a5a";
};
selectRustPackage = pkgs: pkgs.rust_1_39_0;
}

View File

@ -1,20 +1,6 @@
{ stdenv, fetchurl, callPackage }:
{ stdenv, fetchurl, callPackage, version, hashes }:
let
# Note: the version MUST be one version prior to the version we're
# building
version = "1.38.0";
# fetch hashes by running `print-hashes.sh 1.38.0`
hashes = {
i686-unknown-linux-gnu = "41aed8a350e24a0cac1444ed99b3dd24a90bc581dd88cb420c6e547d6b5f57af";
x86_64-unknown-linux-gnu = "adda26b3f0609dbfbdc2019da4a20101879b9db2134fae322a4e863a069ec221";
armv7-unknown-linux-gnueabihf = "8b1bf1680a61a643d6b5c7a3b1a1ce88448652756395e20ba5846739cbd085c4";
aarch64-unknown-linux-gnu = "06afd6d525326cea95c3aa658aaa8542eab26f44235565bb16913ac9d12b7bda";
i686-apple-darwin = "cdbf2807774bed350a3af6f41d7f7dd7ceff28777cde310c3ba90033188eb2f8";
x86_64-apple-darwin = "bd301b78ddcd5d4553962b115e1dca5436dd3755ed323f86f4485769286a8a5a";
};
platform =
if stdenv.hostPlatform.system == "i686-linux"
then "i686-unknown-linux-gnu"

View File

@ -1,3 +1,9 @@
{ rustcVersion
, rustcSha256
, bootstrapVersion
, bootstrapHashes
, selectRustPackage
}:
{ stdenv, lib
, buildPackages
, newScope, callPackage
@ -36,21 +42,27 @@
# cycles / purify builds). In this way, nixpkgs would be in control of all
# bootstrapping.
packages = {
prebuilt = callPackage ./bootstrap.nix {};
prebuilt = callPackage ./bootstrap.nix {
version = bootstrapVersion;
hashes = bootstrapHashes;
};
stable = lib.makeScope newScope (self: let
# Like `buildRustPackages`, but may also contain prebuilt binaries to
# break cycle. Just like `bootstrapTools` for nixpkgs as a whole,
# nothing in the final package set should refer to this.
bootstrapRustPackages = self.buildRustPackages.overrideScope' (_: _:
lib.optionalAttrs (stdenv.buildPlatform == stdenv.hostPlatform)
buildPackages.rust.packages.prebuilt);
(selectRustPackage buildPackages).packages.prebuilt);
bootRustPlatform = makeRustPlatform bootstrapRustPackages;
in {
# Packages suitable for build-time, e.g. `build.rs`-type stuff.
buildRustPackages = buildPackages.rust.packages.stable;
buildRustPackages = (selectRustPackage buildPackages).packages.stable;
# Analogous to stdenv
rustPlatform = makeRustPlatform self.buildRustPackages;
rustc = self.callPackage ./rustc.nix ({
version = rustcVersion;
sha256 = rustcSha256;
# Use boot package set to break cycle
rustPlatform = bootRustPlatform;
} // lib.optionalAttrs (stdenv.cc.isClang && stdenv.hostPlatform == stdenv.buildPlatform) {

View File

@ -4,6 +4,8 @@
, pkgconfig, openssl
, which, libffi
, withBundledLLVM ? false
, version
, sha256
}:
let
@ -18,11 +20,11 @@ let
llvmShared = llvm_7.override { enableSharedLibraries = true; };
in stdenv.mkDerivation rec {
pname = "rustc";
version = "1.39.0";
inherit version;
src = fetchurl {
url = "https://static.rust-lang.org/dist/rustc-${version}-src.tar.gz";
sha256 = "0mwkc1bnil2cfyf6nglpvbn2y0zfbv44zfhsd5qg4c9rm6vgd8dl";
inherit sha256;
};
__darwinAllowLocalNetworking = true;

View File

@ -8523,10 +8523,18 @@ in
inherit (darwin) apple_sdk;
};
rust = callPackage ../development/compilers/rust {
rust_1_39_0 = callPackage ../development/compilers/rust/1_39_0.nix {
inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
};
rustPackages = rust.packages.stable;
rust_1_38_0 = callPackage ../development/compilers/rust/1_38_0.nix {
inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
};
rust = rust_1_39_0;
rustPackages_1_39_0 = rust_1_39_0.packages.stable;
rustPackages_1_38_0 = rust_1_38_0.packages.stable;
rustPackages = rustPackages_1_39_0;
inherit (rustPackages) cargo rustc rustPlatform;
inherit (rust) makeRustPlatform;
@ -21283,6 +21291,7 @@ in
thunderbird = callPackage ../applications/networking/mailreaders/thunderbird {
inherit (gnome2) libIDL;
inherit (rustPackages_1_38_0) cargo rustc;
libpng = libpng_apng;
enableGTK3 = true;
};