beta test
This commit is contained in:
parent
4f5c2bcd74
commit
d201a25c94
|
@ -1,118 +0,0 @@
|
||||||
From f107514aef0b25b0d959941df1e45b18a478151b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Josh Stone <jistone@redhat.com>
|
|
||||||
Date: Fri, 30 Nov 2018 15:33:40 -0800
|
|
||||||
Subject: [PATCH] Deal with EINTR in net timeout tests
|
|
||||||
|
|
||||||
We've seen sporadic QE failures in the timeout tests on this assertion:
|
|
||||||
|
|
||||||
assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
|
|
||||||
|
|
||||||
So there's an error, but not either of the expected kinds. Adding a
|
|
||||||
format to show the kind revealed `ErrorKind::Interrupted` (`EINTR`).
|
|
||||||
|
|
||||||
For the cases that were using `read`, we can just use `read_exact` to
|
|
||||||
keep trying after interruption. For those using `recv_from`, we have to
|
|
||||||
manually loop until we get a non-interrupted result.
|
|
||||||
---
|
|
||||||
src/libstd/net/tcp.rs | 10 ++++++----
|
|
||||||
src/libstd/net/udp.rs | 20 ++++++++++++++++----
|
|
||||||
src/libstd/sys/unix/ext/net.rs | 10 ++++++----
|
|
||||||
3 files changed, 28 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libstd/net/tcp.rs b/src/libstd/net/tcp.rs
|
|
||||||
index ad212a547579..be797803233a 100644
|
|
||||||
--- a/src/libstd/net/tcp.rs
|
|
||||||
+++ b/src/libstd/net/tcp.rs
|
|
||||||
@@ -1548,8 +1548,9 @@ mod tests {
|
|
||||||
|
|
||||||
let mut buf = [0; 10];
|
|
||||||
let start = Instant::now();
|
|
||||||
- let kind = stream.read(&mut buf).err().expect("expected error").kind();
|
|
||||||
- assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
|
|
||||||
+ let kind = stream.read_exact(&mut buf).err().expect("expected error").kind();
|
|
||||||
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
|
|
||||||
+ "unexpected_error: {:?}", kind);
|
|
||||||
assert!(start.elapsed() > Duration::from_millis(400));
|
|
||||||
drop(listener);
|
|
||||||
}
|
|
||||||
@@ -1570,8 +1571,9 @@ mod tests {
|
|
||||||
assert_eq!(b"hello world", &buf[..]);
|
|
||||||
|
|
||||||
let start = Instant::now();
|
|
||||||
- let kind = stream.read(&mut buf).err().expect("expected error").kind();
|
|
||||||
- assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
|
|
||||||
+ let kind = stream.read_exact(&mut buf).err().expect("expected error").kind();
|
|
||||||
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
|
|
||||||
+ "unexpected_error: {:?}", kind);
|
|
||||||
assert!(start.elapsed() > Duration::from_millis(400));
|
|
||||||
drop(listener);
|
|
||||||
}
|
|
||||||
diff --git a/src/libstd/net/udp.rs b/src/libstd/net/udp.rs
|
|
||||||
index 0ebe3284b4f0..fc68abae05a0 100644
|
|
||||||
--- a/src/libstd/net/udp.rs
|
|
||||||
+++ b/src/libstd/net/udp.rs
|
|
||||||
@@ -1030,8 +1030,14 @@ mod tests {
|
|
||||||
let mut buf = [0; 10];
|
|
||||||
|
|
||||||
let start = Instant::now();
|
|
||||||
- let kind = stream.recv_from(&mut buf).err().expect("expected error").kind();
|
|
||||||
- assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
|
|
||||||
+ loop {
|
|
||||||
+ let kind = stream.recv_from(&mut buf).err().expect("expected error").kind();
|
|
||||||
+ if kind != ErrorKind::Interrupted {
|
|
||||||
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
|
|
||||||
+ "unexpected_error: {:?}", kind);
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
assert!(start.elapsed() > Duration::from_millis(400));
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1049,8 +1055,14 @@ mod tests {
|
|
||||||
assert_eq!(b"hello world", &buf[..]);
|
|
||||||
|
|
||||||
let start = Instant::now();
|
|
||||||
- let kind = stream.recv_from(&mut buf).err().expect("expected error").kind();
|
|
||||||
- assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
|
|
||||||
+ loop {
|
|
||||||
+ let kind = stream.recv_from(&mut buf).err().expect("expected error").kind();
|
|
||||||
+ if kind != ErrorKind::Interrupted {
|
|
||||||
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
|
|
||||||
+ "unexpected_error: {:?}", kind);
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
assert!(start.elapsed() > Duration::from_millis(400));
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/libstd/sys/unix/ext/net.rs b/src/libstd/sys/unix/ext/net.rs
|
|
||||||
index 55f43ccd7db4..737437c76b7c 100644
|
|
||||||
--- a/src/libstd/sys/unix/ext/net.rs
|
|
||||||
+++ b/src/libstd/sys/unix/ext/net.rs
|
|
||||||
@@ -1654,8 +1654,9 @@ mod test {
|
|
||||||
or_panic!(stream.set_read_timeout(Some(Duration::from_millis(1000))));
|
|
||||||
|
|
||||||
let mut buf = [0; 10];
|
|
||||||
- let kind = stream.read(&mut buf).err().expect("expected error").kind();
|
|
||||||
- assert!(kind == io::ErrorKind::WouldBlock || kind == io::ErrorKind::TimedOut);
|
|
||||||
+ let kind = stream.read_exact(&mut buf).err().expect("expected error").kind();
|
|
||||||
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
|
|
||||||
+ "unexpected_error: {:?}", kind);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
@@ -1675,8 +1676,9 @@ mod test {
|
|
||||||
or_panic!(stream.read(&mut buf));
|
|
||||||
assert_eq!(b"hello world", &buf[..]);
|
|
||||||
|
|
||||||
- let kind = stream.read(&mut buf).err().expect("expected error").kind();
|
|
||||||
- assert!(kind == io::ErrorKind::WouldBlock || kind == io::ErrorKind::TimedOut);
|
|
||||||
+ let kind = stream.read_exact(&mut buf).err().expect("expected error").kind();
|
|
||||||
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
|
|
||||||
+ "unexpected_error: {:?}", kind);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure the `set_read_timeout` and `set_write_timeout` calls return errors
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
From 72cd8aedc2901d6a6b598eadc001cc39040ae487 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Josh Stone <jistone@redhat.com>
|
||||||
|
Date: Wed, 12 Dec 2018 16:51:31 -0800
|
||||||
|
Subject: [PATCH] Try to get the target triple from rustc itself
|
||||||
|
|
||||||
|
The prior method was trying to pick the triple out of the sysroot path.
|
||||||
|
A FIXME comment already notes that this doesn't work with custom
|
||||||
|
toolchains in rustup. It also fails with distro-installed toolchains,
|
||||||
|
where the sysroot may simply be `/usr`.
|
||||||
|
|
||||||
|
The output of `rustc -Vv` is a more reliable source, as it contains a
|
||||||
|
line like `host: x86_64-unknown-linux-gnu`. This should be enough to
|
||||||
|
identify the triple for any `rustc`, but just in case, the path-based
|
||||||
|
code is kept as a fallback.
|
||||||
|
---
|
||||||
|
src/loader.rs | 41 ++++++++++++++++++++++++++++++++++++++---
|
||||||
|
1 file changed, 38 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/loader.rs b/src/loader.rs
|
||||||
|
index 645c95139164..fe92bef1c596 100644
|
||||||
|
--- a/src/loader.rs
|
||||||
|
+++ b/src/loader.rs
|
||||||
|
@@ -108,9 +108,33 @@ impl AnalysisLoader for CargoAnalysisLoader {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+fn extract_target_triple(sys_root_path: &Path) -> String {
|
||||||
|
+ // First try to get the triple from the rustc version output,
|
||||||
|
+ // otherwise fall back on the rustup-style toolchain path.
|
||||||
|
+ extract_rustc_host_triple()
|
||||||
|
+ .unwrap_or_else(|| extract_rustup_target_triple(sys_root_path))
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+fn extract_rustc_host_triple() -> Option<String> {
|
||||||
|
+ let rustc = env::var("RUSTC").unwrap_or(String::from("rustc"));
|
||||||
|
+ let verbose_version = Command::new(rustc)
|
||||||
|
+ .arg("--verbose")
|
||||||
|
+ .arg("--version")
|
||||||
|
+ .output()
|
||||||
|
+ .ok()
|
||||||
|
+ .and_then(|out| String::from_utf8(out.stdout).ok())?;
|
||||||
|
+
|
||||||
|
+ // Extracts the triple from a line like `host: x86_64-unknown-linux-gnu`
|
||||||
|
+ verbose_version
|
||||||
|
+ .lines()
|
||||||
|
+ .find(|line| line.starts_with("host: "))
|
||||||
|
+ .and_then(|host| host.split_whitespace().nth(1))
|
||||||
|
+ .map(String::from)
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// FIXME: This can fail when using a custom toolchain in rustup (often linked to
|
||||||
|
// `/$rust_repo/build/$target/stage2`)
|
||||||
|
-fn extract_target_triple(sys_root_path: &Path) -> String {
|
||||||
|
+fn extract_rustup_target_triple(sys_root_path: &Path) -> String {
|
||||||
|
// Extracts nightly-x86_64-pc-windows-msvc from
|
||||||
|
// $HOME/.rustup/toolchains/nightly-x86_64-pc-windows-msvc
|
||||||
|
let toolchain = sys_root_path
|
||||||
|
@@ -169,7 +193,7 @@ mod tests {
|
||||||
|
r#"C:\Users\user\.rustup\toolchains\nightly-x86_64-pc-windows-msvc"#,
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
- extract_target_triple(path),
|
||||||
|
+ extract_rustup_target_triple(path),
|
||||||
|
String::from("x86_64-pc-windows-msvc")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
@@ -180,8 +204,19 @@ mod tests {
|
||||||
|
"/home/user/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu",
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
- extract_target_triple(path),
|
||||||
|
+ extract_rustup_target_triple(path),
|
||||||
|
String::from("x86_64-unknown-linux-gnu")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ #[test]
|
||||||
|
+ fn target_triple() {
|
||||||
|
+ let sys_root_path = sys_root_path();
|
||||||
|
+ let target_triple = extract_target_triple(&sys_root_path);
|
||||||
|
+ let target_path = sys_root_path
|
||||||
|
+ .join("lib")
|
||||||
|
+ .join("rustlib")
|
||||||
|
+ .join(&target_triple);
|
||||||
|
+ assert!(target_path.is_dir(), "{:?} is not a directory!", target_path);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
29
rust.spec
29
rust.spec
|
@ -9,10 +9,10 @@
|
||||||
# e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24
|
# e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24
|
||||||
# or nightly wants some beta-YYYY-MM-DD
|
# or nightly wants some beta-YYYY-MM-DD
|
||||||
# Note that cargo matches the program version here, not its crate version.
|
# Note that cargo matches the program version here, not its crate version.
|
||||||
%global bootstrap_rust 1.30.0
|
%global bootstrap_rust 1.31.1
|
||||||
%global bootstrap_cargo 1.30.0
|
%global bootstrap_cargo 1.31.0
|
||||||
%global bootstrap_channel %{bootstrap_rust}
|
%global bootstrap_channel %{bootstrap_rust}
|
||||||
%global bootstrap_date 2018-10-25
|
%global bootstrap_date 2018-12-20
|
||||||
|
|
||||||
# Only the specified arches will use bootstrap binaries.
|
# Only the specified arches will use bootstrap binaries.
|
||||||
#global bootstrap_arches %%{rust_arches}
|
#global bootstrap_arches %%{rust_arches}
|
||||||
|
@ -55,15 +55,15 @@
|
||||||
# Some sub-packages are versioned independently of the rust compiler and runtime itself.
|
# Some sub-packages are versioned independently of the rust compiler and runtime itself.
|
||||||
# Also beware that if any of these are not changed in a version bump, then the release
|
# Also beware that if any of these are not changed in a version bump, then the release
|
||||||
# number should still increase, not be reset to 1!
|
# number should still increase, not be reset to 1!
|
||||||
%global rustc_version 1.31.1
|
%global rustc_version 1.32.0
|
||||||
%global cargo_version 1.31.0
|
%global cargo_version 1.32.0
|
||||||
%global rustfmt_version 1.0.0
|
%global rustfmt_version 1.0.0
|
||||||
%global rls_version 1.31.7
|
%global rls_version 1.31.7
|
||||||
%global clippy_version 0.0.212
|
%global clippy_version 0.0.212
|
||||||
|
|
||||||
Name: rust
|
Name: rust
|
||||||
Version: %{rustc_version}
|
Version: %{rustc_version}
|
||||||
Release: 9%{?dist}
|
Release: 0.1.beta.12%{?dist}
|
||||||
Summary: The Rust Programming Language
|
Summary: The Rust Programming Language
|
||||||
License: (ASL 2.0 or MIT) and (BSD and MIT)
|
License: (ASL 2.0 or MIT) and (BSD and MIT)
|
||||||
# ^ written as: (rust itself) and (bundled libraries)
|
# ^ written as: (rust itself) and (bundled libraries)
|
||||||
|
@ -77,8 +77,8 @@ ExclusiveArch: %{rust_arches}
|
||||||
%endif
|
%endif
|
||||||
Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz
|
Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz
|
||||||
|
|
||||||
# https://github.com/rust-lang/rust/pull/56394
|
# https://github.com/rust-dev-tools/rls-analysis/pull/160
|
||||||
Patch1: 0001-Deal-with-EINTR-in-net-timeout-tests.patch
|
Patch1: 0001-Try-to-get-the-target-triple-from-rustc-itself.patch
|
||||||
|
|
||||||
# Get the Rust triple for any arch.
|
# Get the Rust triple for any arch.
|
||||||
%{lua: function rust_triple(arch)
|
%{lua: function rust_triple(arch)
|
||||||
|
@ -345,7 +345,6 @@ A tool for formatting Rust code according to style guidelines.
|
||||||
%package -n rls
|
%package -n rls
|
||||||
Summary: Rust Language Server for IDE integration
|
Summary: Rust Language Server for IDE integration
|
||||||
Version: %{rls_version}
|
Version: %{rls_version}
|
||||||
Provides: rls = %{rls_version}
|
|
||||||
%if %with bundled_libgit2
|
%if %with bundled_libgit2
|
||||||
Provides: bundled(libgit2) = 0.27
|
Provides: bundled(libgit2) = 0.27
|
||||||
%endif
|
%endif
|
||||||
|
@ -370,7 +369,6 @@ reformatting, and code completion, and enables renaming and refactorings.
|
||||||
%package -n clippy
|
%package -n clippy
|
||||||
Summary: Lints to catch common mistakes and improve your Rust code
|
Summary: Lints to catch common mistakes and improve your Rust code
|
||||||
Version: %{clippy_version}
|
Version: %{clippy_version}
|
||||||
Provides: clippy = %{clippy_version}
|
|
||||||
Requires: cargo
|
Requires: cargo
|
||||||
# /usr/bin/clippy-driver is dynamically linked against internal rustc libs
|
# /usr/bin/clippy-driver is dynamically linked against internal rustc libs
|
||||||
Requires: %{name}%{?_isa} = %{rustc_version}-%{release}
|
Requires: %{name}%{?_isa} = %{rustc_version}-%{release}
|
||||||
|
@ -414,15 +412,14 @@ test -f '%{local_rust_root}/bin/rustc'
|
||||||
|
|
||||||
%setup -q -n %{rustc_package}
|
%setup -q -n %{rustc_package}
|
||||||
|
|
||||||
|
pushd vendor/rls-analysis
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
|
popd
|
||||||
|
|
||||||
%if "%{python}" == "python3"
|
%if "%{python}" == "python3"
|
||||||
sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
|
sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# We're disabling jemalloc, but rust-src still wants it.
|
|
||||||
# rm -rf src/jemalloc/
|
|
||||||
|
|
||||||
%if %without bundled_llvm
|
%if %without bundled_llvm
|
||||||
rm -rf src/llvm/
|
rm -rf src/llvm/
|
||||||
%endif
|
%endif
|
||||||
|
@ -455,7 +452,7 @@ sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \
|
||||||
# The configure macro will modify some autoconf-related files, which upsets
|
# The configure macro will modify some autoconf-related files, which upsets
|
||||||
# cargo when it tries to verify checksums in those files. If we just truncate
|
# cargo when it tries to verify checksums in those files. If we just truncate
|
||||||
# that file list, cargo won't have anything to complain about.
|
# that file list, cargo won't have anything to complain about.
|
||||||
find src/vendor -name .cargo-checksum.json \
|
find vendor -name .cargo-checksum.json \
|
||||||
-exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+'
|
-exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+'
|
||||||
|
|
||||||
|
|
||||||
|
@ -501,7 +498,6 @@ export LIBSSH2_SYS_USE_PKG_CONFIG=1
|
||||||
%{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
|
%{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
|
||||||
%{!?llvm_has_filecheck: --disable-codegen-tests} \
|
%{!?llvm_has_filecheck: --disable-codegen-tests} \
|
||||||
%{!?with_llvm_static: --enable-llvm-link-shared } } \
|
%{!?with_llvm_static: --enable-llvm-link-shared } } \
|
||||||
--disable-jemalloc \
|
|
||||||
--disable-rpath \
|
--disable-rpath \
|
||||||
%{enable_debuginfo} \
|
%{enable_debuginfo} \
|
||||||
--enable-extended \
|
--enable-extended \
|
||||||
|
@ -699,6 +695,9 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py*
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jan 09 2019 Josh Stone <jistone@redhat.com> - 1.32.0-0.1.beta.12
|
||||||
|
- beta test
|
||||||
|
|
||||||
* Mon Jan 07 2019 Josh Stone <jistone@redhat.com> - 1.31.1-9
|
* Mon Jan 07 2019 Josh Stone <jistone@redhat.com> - 1.31.1-9
|
||||||
- Update to 1.31.1 for RLS fixes.
|
- Update to 1.31.1 for RLS fixes.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue