Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'rust-1.26-backport' into release-18.03
- Loading branch information
Showing
8 changed files
with
525 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
{ stdenv, fetchurl, makeWrapper, bash, cacert, zlib, buildRustPackage, curl, darwin | ||
, version | ||
, src | ||
, platform | ||
, versionType | ||
}: | ||
|
||
let | ||
inherit (stdenv.lib) getLib optionalString; | ||
inherit (darwin) libiconv; | ||
inherit (darwin.apple_sdk.frameworks) Security; | ||
|
||
bootstrapping = versionType == "bootstrap"; | ||
|
||
installComponents | ||
= "rustc,rust-std-${platform}" | ||
+ (optionalString bootstrapping ",cargo") | ||
; | ||
in | ||
|
||
rec { | ||
inherit buildRustPackage; | ||
|
||
rustc = stdenv.mkDerivation rec { | ||
name = "rustc-${versionType}-${version}"; | ||
|
||
inherit version; | ||
inherit src; | ||
|
||
meta = with stdenv.lib; { | ||
homepage = http://www.rust-lang.org/; | ||
description = "A safe, concurrent, practical language"; | ||
maintainers = with maintainers; [ qknight ]; | ||
license = [ licenses.mit licenses.asl20 ]; | ||
}; | ||
|
||
buildInputs = [ bash ] ++ stdenv.lib.optional stdenv.isDarwin Security; | ||
|
||
postPatch = '' | ||
patchShebangs . | ||
''; | ||
|
||
installPhase = '' | ||
./install.sh --prefix=$out \ | ||
--components=${installComponents} | ||
${optionalString (stdenv.isLinux && bootstrapping) '' | ||
patchelf \ | ||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ | ||
"$out/bin/rustc" | ||
patchelf \ | ||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ | ||
"$out/bin/rustdoc" | ||
patchelf \ | ||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ | ||
"$out/bin/cargo" | ||
''} | ||
${optionalString (stdenv.isDarwin && bootstrapping) '' | ||
install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/rustc" | ||
install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/rustdoc" | ||
install_name_tool -change /usr/lib/libiconv.2.dylib '${darwin.libiconv}/lib/libiconv.2.dylib' "$out/bin/cargo" | ||
install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/cargo" | ||
install_name_tool -change /usr/lib/libcurl.4.dylib '${stdenv.lib.getLib curl}/lib/libcurl.4.dylib' "$out/bin/cargo" | ||
for f in $out/lib/lib*.dylib; do | ||
install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$f" | ||
done | ||
''} | ||
# Do NOT, I repeat, DO NOT use `wrapProgram` on $out/bin/rustc | ||
# (or similar) here. It causes strange effects where rustc loads | ||
# the wrong libraries in a bootstrap-build causing failures that | ||
# are very hard to track down. For details, see | ||
# https://github.com/rust-lang/rust/issues/34722#issuecomment-232164943 | ||
''; | ||
}; | ||
|
||
cargo = stdenv.mkDerivation rec { | ||
name = "cargo-${versionType}-${version}"; | ||
|
||
inherit version; | ||
inherit src; | ||
|
||
meta = with stdenv.lib; { | ||
homepage = http://www.rust-lang.org/; | ||
description = "A safe, concurrent, practical language"; | ||
maintainers = with maintainers; [ qknight ]; | ||
license = [ licenses.mit licenses.asl20 ]; | ||
}; | ||
|
||
buildInputs = [ makeWrapper bash ] ++ stdenv.lib.optional stdenv.isDarwin Security; | ||
|
||
postPatch = '' | ||
patchShebangs . | ||
''; | ||
|
||
installPhase = '' | ||
patchShebangs ./install.sh | ||
./install.sh --prefix=$out \ | ||
--components=cargo | ||
${optionalString (stdenv.isLinux && bootstrapping) '' | ||
patchelf \ | ||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ | ||
"$out/bin/cargo" | ||
''} | ||
${optionalString (stdenv.isDarwin && bootstrapping) '' | ||
install_name_tool -change /usr/lib/libiconv.2.dylib '${darwin.libiconv}/lib/libiconv.2.dylib' "$out/bin/cargo" | ||
install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/cargo" | ||
install_name_tool -change /usr/lib/libcurl.4.dylib '${stdenv.lib.getLib curl}/lib/libcurl.4.dylib' "$out/bin/cargo" | ||
''} | ||
wrapProgram "$out/bin/cargo" \ | ||
--suffix PATH : "${rustc}/bin" | ||
''; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
{ stdenv, fetchurl, callPackage }: | ||
|
||
let | ||
# Note: the version MUST be one version prior to the version we're | ||
# building | ||
version = "1.26.1"; | ||
|
||
# fetch hashes by running `print-hashes.sh 1.24.1` | ||
hashes = { | ||
i686-unknown-linux-gnu = "d704ba5cbaaf93c5e2112d211630db0e460d5dc819a43464ba91581e5c821df3"; | ||
x86_64-unknown-linux-gnu = "b7e964bace1286696d511c287b945f3ece476ba77a231f0c31f1867dfa5080e0"; | ||
armv7-unknown-linux-gnueabihf = "34fbcebc8e60b6496f1ce7998cf0b50cd618770f039da529b65110fff1f25fa0"; | ||
aarch64-unknown-linux-gnu = "d4a369053c2dfd5f457de6853557dab563944579fa4bb55bc919bacf259bff6d"; | ||
i686-apple-darwin = "047c31a872161ebb1d21ef616f7658190403769a8734f84364a3cf15838b4708"; | ||
x86_64-apple-darwin = "ebf898b9fa7e2aafc53682a41f18af5ca6660ebe82dd78f28cd9799fe4dc189a"; | ||
}; | ||
|
||
platform = | ||
if stdenv.system == "i686-linux" | ||
then "i686-unknown-linux-gnu" | ||
else if stdenv.system == "x86_64-linux" | ||
then "x86_64-unknown-linux-gnu" | ||
else if stdenv.system == "armv7l-linux" | ||
then "armv7-unknown-linux-gnueabihf" | ||
else if stdenv.system == "aarch64-linux" | ||
then "aarch64-unknown-linux-gnu" | ||
else if stdenv.system == "i686-darwin" | ||
then "i686-apple-darwin" | ||
else if stdenv.system == "x86_64-darwin" | ||
then "x86_64-apple-darwin" | ||
else throw "missing bootstrap url for platform ${stdenv.system}"; | ||
|
||
src = fetchurl { | ||
url = "https://static.rust-lang.org/dist/rust-${version}-${platform}.tar.gz"; | ||
sha256 = hashes."${platform}"; | ||
}; | ||
|
||
in callPackage ./binaryBuild.nix | ||
{ inherit version src platform; | ||
buildRustPackage = null; | ||
versionType = "bootstrap"; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
{ stdenv, callPackage, recurseIntoAttrs, makeRustPlatform, llvm, fetchurl | ||
, targets ? [] | ||
, targetToolchains ? [] | ||
, targetPatches ? [] | ||
}: | ||
|
||
let | ||
rustPlatform = recurseIntoAttrs (makeRustPlatform (callPackage ./bootstrap.nix {})); | ||
version = "1.26.2"; | ||
cargoVersion = "1.26.2"; | ||
src = fetchurl { | ||
url = "https://static.rust-lang.org/dist/rustc-${version}-src.tar.gz"; | ||
sha256 = "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv"; | ||
}; | ||
in rec { | ||
rustc = callPackage ./rustc.nix { | ||
inherit stdenv llvm targets targetPatches targetToolchains rustPlatform version src; | ||
|
||
patches = [ | ||
./patches/net-tcp-disable-tests.patch | ||
./patches/stdsimd-disable-doctest.patch | ||
# Fails on hydra - not locally; the exact reason is unknown. | ||
# Comments in the test suggest that some non-reproducible environment | ||
# variables such $RANDOM can make it fail. | ||
./patches/disable-test-inherit-env.patch | ||
]; | ||
|
||
forceBundledLLVM = true; | ||
|
||
configureFlags = [ "--release-channel=stable" ]; | ||
|
||
# 1. Upstream is not running tests on aarch64: | ||
# see https://github.com/rust-lang/rust/issues/49807#issuecomment-380860567 | ||
# So we do the same. | ||
# 2. Tests run out of memory for i686 | ||
doCheck = !stdenv.isAarch64 && !stdenv.isi686; | ||
}; | ||
|
||
cargo = callPackage ../cargo.nix rec { | ||
version = cargoVersion; | ||
inherit src; | ||
inherit stdenv; | ||
inherit rustc; # the rustc that will be wrapped by cargo | ||
inherit rustPlatform; # used to build cargo | ||
}; | ||
} |
10 changes: 10 additions & 0 deletions
10
pkgs/development/compilers/rust/1.26/patches/disable-test-inherit-env.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- rustc-1.26.2-src.org/src/libstd/process.rs 2018-06-01 21:40:11.000000000 +0100 | ||
+++ rustc-1.26.2-src/src/libstd/process.rs 2018-06-08 07:50:23.023828658 +0100 | ||
@@ -1745,6 +1745,7 @@ | ||
} | ||
|
||
#[test] | ||
+ #[ignore] | ||
fn test_inherit_env() { | ||
use env; | ||
|
104 changes: 104 additions & 0 deletions
104
pkgs/development/compilers/rust/1.26/patches/net-tcp-disable-tests.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
diff --git a/src/libstd/net/tcp.rs b/src/libstd/net/tcp.rs | ||
index 0f60b5b3e..9b08415e7 100644 | ||
--- a/src/libstd/net/tcp.rs | ||
+++ b/src/libstd/net/tcp.rs | ||
@@ -962,6 +962,7 @@ mod tests { | ||
} | ||
} | ||
|
||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
#[test] | ||
fn listen_localhost() { | ||
let socket_addr = next_test_ip4(); | ||
@@ -1020,6 +1021,7 @@ mod tests { | ||
}) | ||
} | ||
|
||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
#[test] | ||
fn read_eof() { | ||
each_ip(&mut |addr| { | ||
@@ -1039,6 +1041,7 @@ mod tests { | ||
}) | ||
} | ||
|
||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
#[test] | ||
fn write_close() { | ||
each_ip(&mut |addr| { | ||
@@ -1065,6 +1068,7 @@ mod tests { | ||
}) | ||
} | ||
|
||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
#[test] | ||
fn multiple_connect_serial() { | ||
each_ip(&mut |addr| { | ||
@@ -1087,6 +1091,7 @@ mod tests { | ||
}) | ||
} | ||
|
||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
#[test] | ||
fn multiple_connect_interleaved_greedy_schedule() { | ||
const MAX: usize = 10; | ||
@@ -1123,6 +1128,7 @@ mod tests { | ||
} | ||
|
||
#[test] | ||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
fn multiple_connect_interleaved_lazy_schedule() { | ||
const MAX: usize = 10; | ||
each_ip(&mut |addr| { | ||
@@ -1401,6 +1407,7 @@ mod tests { | ||
} | ||
|
||
#[test] | ||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
fn clone_while_reading() { | ||
each_ip(&mut |addr| { | ||
let accept = t!(TcpListener::bind(&addr)); | ||
@@ -1421,7 +1422,10 @@ mod tests { | ||
|
||
// FIXME: re-enabled bitrig/openbsd tests once their socket timeout code | ||
// no longer has rounding errors. | ||
- #[cfg_attr(any(target_os = "bitrig", target_os = "netbsd", target_os = "openbsd"), ignore)] | ||
+ #[cfg_attr(any(target_os = "bitrig", | ||
+ target_os = "netbsd", | ||
+ target_os = "openbsd", | ||
+ target_os = "macos"), ignore)] | ||
#[test] | ||
fn timeouts() { | ||
let addr = next_test_ip4(); | ||
@@ -1596,6 +1603,7 @@ mod tests { | ||
drop(listener); | ||
} | ||
|
||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
#[test] | ||
fn nodelay() { | ||
let addr = next_test_ip4(); | ||
@@ -1610,6 +1618,7 @@ mod tests { | ||
assert_eq!(false, t!(stream.nodelay())); | ||
} | ||
|
||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
#[test] | ||
fn ttl() { | ||
let ttl = 100; | ||
@@ -1647,6 +1656,7 @@ mod tests { | ||
} | ||
} | ||
|
||
+ #[cfg_attr(target_os = "macos", ignore)] | ||
#[test] | ||
fn peek() { | ||
each_ip(&mut |addr| { | ||
@@ -1679,6 +1689,7 @@ mod tests { | ||
} | ||
|
||
#[test] | ||
+ #[cfg_attr(any(target_os = "linux", target_os = "macos"), ignore)] | ||
fn connect_timeout_unroutable() { | ||
// this IP is unroutable, so connections should always time out, | ||
// provided the network is reachable to begin with. |
20 changes: 20 additions & 0 deletions
20
pkgs/development/compilers/rust/1.26/patches/stdsimd-disable-doctest.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
diff --git a/src/stdsimd/coresimd/x86/mod.rs b/src/stdsimd/coresimd/x86/mod.rs | ||
index 32915c332..7cb54f31e 100644 | ||
--- a/src/stdsimd/coresimd/x86/mod.rs | ||
+++ b/src/stdsimd/coresimd/x86/mod.rs | ||
@@ -279,7 +279,6 @@ types! { | ||
/// | ||
/// # Examples | ||
/// | ||
- /// ``` | ||
/// # #![feature(cfg_target_feature, target_feature, stdsimd)] | ||
/// # #![cfg_attr(not(dox), no_std)] | ||
/// # #[cfg(not(dox))] | ||
@@ -301,7 +300,6 @@ types! { | ||
/// # } | ||
/// # if is_x86_feature_detected!("sse") { unsafe { foo() } } | ||
/// # } | ||
- /// ``` | ||
pub struct __m256(f32, f32, f32, f32, f32, f32, f32, f32); | ||
|
||
/// 256-bit wide set of four `f64` types, x86-specific |
Oops, something went wrong.