From b3ea6e5fc548fd03f1902f9abfe4e3f11d426d39 Mon Sep 17 00:00:00 2001 From: bgermann Date: Tue, 17 Oct 2017 15:53:18 +0200 Subject: [PATCH 01/11] Make Solaris builder compatible with Solaris 10 retry Unfortunately, #45255 does not quite cut it, so use a different approach to have Solaris 10 compatibility by tricking libbacktrace's autoconf tests. The sysroot download routine is slightly changed, too. --- .../docker/cross2/build-solaris-toolchain.sh | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/ci/docker/cross2/build-solaris-toolchain.sh b/src/ci/docker/cross2/build-solaris-toolchain.sh index 935cbe5d61b5..29d1d4414f2d 100755 --- a/src/ci/docker/cross2/build-solaris-toolchain.sh +++ b/src/ci/docker/cross2/build-solaris-toolchain.sh @@ -38,37 +38,38 @@ cd solaris dpkg --add-architecture $APT_ARCH apt-get update -apt-get download \ - libc:$APT_ARCH \ +apt-get download $(apt-cache depends --recurse --no-replaces \ libc-dev:$APT_ARCH \ - libm:$APT_ARCH \ libm-dev:$APT_ARCH \ - libpthread:$APT_ARCH \ libpthread-dev:$APT_ARCH \ - libresolv:$APT_ARCH \ libresolv-dev:$APT_ARCH \ - librt:$APT_ARCH \ librt-dev:$APT_ARCH \ - libsocket:$APT_ARCH \ libsocket-dev:$APT_ARCH \ system-crt:$APT_ARCH \ - system-header:$APT_ARCH + system-header:$APT_ARCH \ + | grep "^\w") for deb in *$APT_ARCH.deb; do dpkg -x $deb . done -# Strip Solaris 11 functions that are optionally used by libbacktrace. +# Remove Solaris 11 functions that are optionally used by libbacktrace. # This is for Solaris 10 compatibility. -$ARCH-sun-solaris2.10-strip -N dl_iterate_phdr -N strnlen lib/$LIB_ARCH/libc.so +rm usr/include/link.h +patch -p0 << 'EOF' +--- usr/include/string.h 2017-10-09 03:15:04.000000000 +0200 ++++ usr/include/string10.h 2017-10-16 11:27:26.498764422 +0200 +@@ -93 +92,0 @@ +-extern size_t strnlen(const char *, size_t); +EOF mkdir /usr/local/$ARCH-sun-solaris2.10/usr mv usr/include /usr/local/$ARCH-sun-solaris2.10/usr/include mv usr/lib/$LIB_ARCH/* /usr/local/$ARCH-sun-solaris2.10/lib mv lib/$LIB_ARCH/* /usr/local/$ARCH-sun-solaris2.10/lib -ln -s /usr/local/$ARCH-sun-solaris2.10/usr/include /usr/local/$ARCH-sun-solaris2.10/sys-include -ln -s /usr/local/$ARCH-sun-solaris2.10/usr/include /usr/local/$ARCH-sun-solaris2.10/include +ln -s usr/include /usr/local/$ARCH-sun-solaris2.10/sys-include +ln -s usr/include /usr/local/$ARCH-sun-solaris2.10/include cd .. rm -rf solaris @@ -97,8 +98,7 @@ hide_output ../gcc-$GCC/configure \ --disable-libada \ --disable-libsanitizer \ --disable-libquadmath-support \ - --disable-lto \ - --with-sysroot=/usr/local/$ARCH-sun-solaris2.10 + --disable-lto hide_output make -j10 hide_output make install From 0597bdabff5b8ee2d966c90b1836d67631327787 Mon Sep 17 00:00:00 2001 From: bgermann Date: Tue, 17 Oct 2017 16:39:15 +0200 Subject: [PATCH 02/11] Remove tabs --- src/ci/docker/cross2/build-solaris-toolchain.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ci/docker/cross2/build-solaris-toolchain.sh b/src/ci/docker/cross2/build-solaris-toolchain.sh index 29d1d4414f2d..71ab998aab20 100755 --- a/src/ci/docker/cross2/build-solaris-toolchain.sh +++ b/src/ci/docker/cross2/build-solaris-toolchain.sh @@ -57,8 +57,8 @@ done # This is for Solaris 10 compatibility. rm usr/include/link.h patch -p0 << 'EOF' ---- usr/include/string.h 2017-10-09 03:15:04.000000000 +0200 -+++ usr/include/string10.h 2017-10-16 11:27:26.498764422 +0200 +--- usr/include/string.h ++++ usr/include/string10.h @@ -93 +92,0 @@ -extern size_t strnlen(const char *, size_t); EOF From da7aab6e51fd06ea6628324b3be5ab88a4abda4f Mon Sep 17 00:00:00 2001 From: Christian Poveda Date: Tue, 17 Oct 2017 20:11:03 -0500 Subject: [PATCH 03/11] added examples of closures --- src/liballoc/str.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/liballoc/str.rs b/src/liballoc/str.rs index 830128f2b9fc..3e273a670006 100644 --- a/src/liballoc/str.rs +++ b/src/liballoc/str.rs @@ -959,13 +959,15 @@ impl str { /// assert_eq!(s.find("Léopard"), Some(13)); /// ``` /// - /// More complex patterns with closures: + /// More complex patterns using point-free style and closures: /// /// ``` /// let s = "Löwe 老虎 Léopard"; /// /// assert_eq!(s.find(char::is_whitespace), Some(5)); /// assert_eq!(s.find(char::is_lowercase), Some(1)); + /// assert_eq!(s.find(|c: char| c.is_whitespace()), Some(5)); + /// assert_eq!(s.find(|c: char| c.is_lowercase()), Some(1)); /// ``` /// /// Not finding the pattern: From d9ecdfe3a7a579b9ec89355168f13760c670d4d4 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 17 Oct 2017 18:45:42 -0700 Subject: [PATCH 04/11] test: Update Emscripten failures/passing All tests should now have annotation for *why* they're ignored on emscripten. A few tests no longer need such an annotation as well! Closes #41299 --- src/ci/docker/asmjs/Dockerfile | 8 ++++---- src/test/compile-fail/macro-expanded-include/test.rs | 2 +- src/test/run-pass/asm-concat-src.rs | 2 +- src/test/run-pass/command-before-exec.rs | 2 +- src/test/run-pass/command-exec.rs | 3 ++- src/test/run-pass/core-run-destroy.rs | 2 +- src/test/run-pass/env-args-reverse-iterator.rs | 2 +- src/test/run-pass/env-funky-keys.rs | 2 +- src/test/run-pass/env-home-dir.rs | 2 +- src/test/run-pass/extern-pass-empty.rs | 2 +- src/test/run-pass/fds-are-cloexec.rs | 2 +- src/test/run-pass/format-no-std.rs | 2 +- src/test/run-pass/generator/smoke.rs | 2 +- src/test/run-pass/i128.rs | 2 +- src/test/run-pass/issue-10626.rs | 2 +- src/test/run-pass/issue-13304.rs | 3 ++- src/test/run-pass/issue-14456.rs | 2 +- src/test/run-pass/issue-14940.rs | 2 +- src/test/run-pass/issue-16272.rs | 2 +- src/test/run-pass/issue-20091.rs | 3 ++- src/test/run-pass/issue-2190-1.rs | 2 +- src/test/run-pass/issue-24313.rs | 2 +- src/test/run-pass/issue-28950.rs | 2 +- src/test/run-pass/issue-29485.rs | 2 +- src/test/run-pass/issue-29663.rs | 2 -- src/test/run-pass/issue-30490.rs | 2 +- src/test/run-pass/issue-33770.rs | 2 +- src/test/run-pass/linkage1.rs | 2 +- src/test/run-pass/multi-panic.rs | 2 +- src/test/run-pass/no-stdio.rs | 2 +- src/test/run-pass/out-of-stack.rs | 2 +- src/test/run-pass/packed-struct-layout.rs | 2 -- src/test/run-pass/packed-tuple-struct-layout.rs | 2 -- .../panic-runtime/abort-link-to-unwinding-crates.rs | 2 +- src/test/run-pass/panic-runtime/abort.rs | 2 +- src/test/run-pass/panic-runtime/lto-abort.rs | 2 +- src/test/run-pass/panic-runtime/lto-unwind.rs | 2 +- src/test/run-pass/process-envs.rs | 2 +- src/test/run-pass/process-exit.rs | 2 +- src/test/run-pass/process-remove-from-env.rs | 2 +- src/test/run-pass/process-spawn-with-unicode-params.rs | 2 +- src/test/run-pass/process-status-inherits-stdin.rs | 3 ++- src/test/run-pass/running-with-no-runtime.rs | 2 +- src/test/run-pass/signal-exit-status.rs | 2 +- src/test/run-pass/sigpipe-should-be-ignored.rs | 2 +- src/test/run-pass/simd-intrinsic-generic-cast.rs | 3 ++- src/test/run-pass/stack-probes-lto.rs | 2 +- src/test/run-pass/stack-probes.rs | 2 +- src/test/run-pass/stdio-is-blocking.rs | 2 +- src/test/run-pass/thinlto/thin-lto-inlines.rs | 2 +- src/test/run-pass/thinlto/thin-lto-inlines2.rs | 2 +- src/test/run-pass/try-wait.rs | 2 +- src/test/run-pass/u128.rs | 2 +- src/test/run-pass/vec-macro-no-std.rs | 2 +- src/test/run-pass/wait-forked-but-failed-child.rs | 2 +- 55 files changed, 60 insertions(+), 61 deletions(-) diff --git a/src/ci/docker/asmjs/Dockerfile b/src/ci/docker/asmjs/Dockerfile index 28caf1fb57a4..c0bf689e39db 100644 --- a/src/ci/docker/asmjs/Dockerfile +++ b/src/ci/docker/asmjs/Dockerfile @@ -16,6 +16,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ COPY scripts/emscripten.sh /scripts/ RUN bash /scripts/emscripten.sh +COPY scripts/sccache.sh /scripts/ +RUN sh /scripts/sccache.sh + ENV PATH=$PATH:/emsdk-portable ENV PATH=$PATH:/emsdk-portable/clang/e1.37.13_64bit/ ENV PATH=$PATH:/emsdk-portable/emscripten/1.37.13/ @@ -28,7 +31,4 @@ ENV TARGETS=asmjs-unknown-emscripten ENV RUST_CONFIGURE_ARGS --target=$TARGETS -ENV SCRIPT python2.7 ../x.py test --target $TARGETS - -COPY scripts/sccache.sh /scripts/ -RUN sh /scripts/sccache.sh +ENV SCRIPT python2.7 ../x.py test --target $TARGETS src/test/run-pass diff --git a/src/test/compile-fail/macro-expanded-include/test.rs b/src/test/compile-fail/macro-expanded-include/test.rs index bcc2c10653f9..4afb61ab76cf 100644 --- a/src/test/compile-fail/macro-expanded-include/test.rs +++ b/src/test/compile-fail/macro-expanded-include/test.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no asm! support #![feature(asm, rustc_attrs)] #![allow(unused)] diff --git a/src/test/run-pass/asm-concat-src.rs b/src/test/run-pass/asm-concat-src.rs index fb257bf7b500..0380ccbdea47 100644 --- a/src/test/run-pass/asm-concat-src.rs +++ b/src/test/run-pass/asm-concat-src.rs @@ -9,7 +9,7 @@ // except according to those terms. // pretty-expanded FIXME #23616 -// ignore-emscripten +// ignore-emscripten no asm #![feature(asm)] diff --git a/src/test/run-pass/command-before-exec.rs b/src/test/run-pass/command-before-exec.rs index 5b83ce48e5da..9e782cca218f 100644 --- a/src/test/run-pass/command-before-exec.rs +++ b/src/test/run-pass/command-before-exec.rs @@ -9,7 +9,7 @@ // except according to those terms. // ignore-windows - this is a unix-specific test -// ignore-emscripten +// ignore-emscripten no processes #![feature(process_exec, libc)] diff --git a/src/test/run-pass/command-exec.rs b/src/test/run-pass/command-exec.rs index 5be9b97aac7e..e378f55dffa1 100644 --- a/src/test/run-pass/command-exec.rs +++ b/src/test/run-pass/command-exec.rs @@ -10,7 +10,8 @@ // ignore-windows - this is a unix-specific test // ignore-pretty issue #37199 -// ignore-emscripten +// ignore-emscripten no processes + #![feature(process_exec)] use std::env; diff --git a/src/test/run-pass/core-run-destroy.rs b/src/test/run-pass/core-run-destroy.rs index 22fbeb2d5d0e..863f3cf30e96 100644 --- a/src/test/run-pass/core-run-destroy.rs +++ b/src/test/run-pass/core-run-destroy.rs @@ -9,7 +9,7 @@ // except according to those terms. // compile-flags:--test -// ignore-emscripten +// ignore-emscripten no processes // NB: These tests kill child processes. Valgrind sees these children as leaking // memory, which makes for some *confusing* logs. That's why these are here diff --git a/src/test/run-pass/env-args-reverse-iterator.rs b/src/test/run-pass/env-args-reverse-iterator.rs index 89af1db7c78f..dddf1ae05465 100644 --- a/src/test/run-pass/env-args-reverse-iterator.rs +++ b/src/test/run-pass/env-args-reverse-iterator.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes use std::env::args; use std::process::Command; diff --git a/src/test/run-pass/env-funky-keys.rs b/src/test/run-pass/env-funky-keys.rs index 8b4a633d6135..86ffaf1e24f6 100644 --- a/src/test/run-pass/env-funky-keys.rs +++ b/src/test/run-pass/env-funky-keys.rs @@ -12,7 +12,7 @@ // ignore-android // ignore-windows -// ignore-emscripten +// ignore-emscripten no execve // no-prefer-dynamic #![feature(libc)] diff --git a/src/test/run-pass/env-home-dir.rs b/src/test/run-pass/env-home-dir.rs index bcb0c62d9fef..3693e86ba242 100644 --- a/src/test/run-pass/env-home-dir.rs +++ b/src/test/run-pass/env-home-dir.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten env vars don't work? #![feature(path)] diff --git a/src/test/run-pass/extern-pass-empty.rs b/src/test/run-pass/extern-pass-empty.rs index 2606c9286800..f4ee3b6e9e80 100644 --- a/src/test/run-pass/extern-pass-empty.rs +++ b/src/test/run-pass/extern-pass-empty.rs @@ -12,7 +12,7 @@ // pretty-expanded FIXME #23616 // ignore-msvc -// ignore-emscripten +// ignore-emscripten emcc asserts on an empty struct as an argument #[repr(C)] struct TwoU8s { diff --git a/src/test/run-pass/fds-are-cloexec.rs b/src/test/run-pass/fds-are-cloexec.rs index a1b7d42a196e..f55876115c09 100644 --- a/src/test/run-pass/fds-are-cloexec.rs +++ b/src/test/run-pass/fds-are-cloexec.rs @@ -10,7 +10,7 @@ // ignore-windows // ignore-android -// ignore-emscripten +// ignore-emscripten no processes // ignore-haiku #![feature(libc)] diff --git a/src/test/run-pass/format-no-std.rs b/src/test/run-pass/format-no-std.rs index 9e8a32185188..e23accfcc235 100644 --- a/src/test/run-pass/format-no-std.rs +++ b/src/test/run-pass/format-no-std.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten missing rust_begin_unwind +// ignore-emscripten no no_std executables #![feature(lang_items, start, alloc)] #![no_std] diff --git a/src/test/run-pass/generator/smoke.rs b/src/test/run-pass/generator/smoke.rs index e9bdfbf28ea9..8693964665d3 100644 --- a/src/test/run-pass/generator/smoke.rs +++ b/src/test/run-pass/generator/smoke.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no threads support // compile-flags: --test #![feature(generators, generator_trait)] diff --git a/src/test/run-pass/i128.rs b/src/test/run-pass/i128.rs index 7c14d34b0ee1..5369b138b0d5 100644 --- a/src/test/run-pass/i128.rs +++ b/src/test/run-pass/i128.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten i128 doesn't work #![feature(i128_type, test)] diff --git a/src/test/run-pass/issue-10626.rs b/src/test/run-pass/issue-10626.rs index b350bd1a4ccb..e9d37817ee2e 100644 --- a/src/test/run-pass/issue-10626.rs +++ b/src/test/run-pass/issue-10626.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes // Make sure that if a process doesn't have its stdio/stderr descriptors set up // that we don't die in a large ball of fire diff --git a/src/test/run-pass/issue-13304.rs b/src/test/run-pass/issue-13304.rs index 5a743d7b5478..9214d6b04bd2 100644 --- a/src/test/run-pass/issue-13304.rs +++ b/src/test/run-pass/issue-13304.rs @@ -8,7 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes + #![feature(io, process_capture)] use std::env; diff --git a/src/test/run-pass/issue-14456.rs b/src/test/run-pass/issue-14456.rs index 513ab91489c8..2edb45cc1c41 100644 --- a/src/test/run-pass/issue-14456.rs +++ b/src/test/run-pass/issue-14456.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes #![feature(io, process_capture)] diff --git a/src/test/run-pass/issue-14940.rs b/src/test/run-pass/issue-14940.rs index ffe6b646794e..588fa63cfdfb 100644 --- a/src/test/run-pass/issue-14940.rs +++ b/src/test/run-pass/issue-14940.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes use std::env; use std::process::Command; diff --git a/src/test/run-pass/issue-16272.rs b/src/test/run-pass/issue-16272.rs index f86be2d7c993..cd02cbf3dad3 100644 --- a/src/test/run-pass/issue-16272.rs +++ b/src/test/run-pass/issue-16272.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes use std::process::Command; use std::env; diff --git a/src/test/run-pass/issue-20091.rs b/src/test/run-pass/issue-20091.rs index 1ee47a69d0c8..c8ba5dbd84cd 100644 --- a/src/test/run-pass/issue-20091.rs +++ b/src/test/run-pass/issue-20091.rs @@ -8,7 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes + #![feature(std_misc, os)] #[cfg(unix)] diff --git a/src/test/run-pass/issue-2190-1.rs b/src/test/run-pass/issue-2190-1.rs index 393757035141..8cc23c883ed6 100644 --- a/src/test/run-pass/issue-2190-1.rs +++ b/src/test/run-pass/issue-2190-1.rs @@ -9,7 +9,7 @@ // except according to those terms. // pretty-expanded FIXME #23616 -// ignore-emscripten +// ignore-emscripten no threads use std::thread::Builder; diff --git a/src/test/run-pass/issue-24313.rs b/src/test/run-pass/issue-24313.rs index 9b2b474351df..ad385ee78e0c 100644 --- a/src/test/run-pass/issue-24313.rs +++ b/src/test/run-pass/issue-24313.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no threads use std::thread; use std::env; diff --git a/src/test/run-pass/issue-28950.rs b/src/test/run-pass/issue-28950.rs index a70c2b3ae1b7..4e4530789c8d 100644 --- a/src/test/run-pass/issue-28950.rs +++ b/src/test/run-pass/issue-28950.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no threads // compile-flags: -O // Tests that the `vec!` macro does not overflow the stack when it is diff --git a/src/test/run-pass/issue-29485.rs b/src/test/run-pass/issue-29485.rs index 9252762d1bda..828b495d4081 100644 --- a/src/test/run-pass/issue-29485.rs +++ b/src/test/run-pass/issue-29485.rs @@ -9,7 +9,7 @@ // except according to those terms. // aux-build:issue-29485.rs -// ignore-emscripten +// ignore-emscripten no threads #[feature(recover)] diff --git a/src/test/run-pass/issue-29663.rs b/src/test/run-pass/issue-29663.rs index cf925662fc3f..9a77be049fee 100644 --- a/src/test/run-pass/issue-29663.rs +++ b/src/test/run-pass/issue-29663.rs @@ -10,8 +10,6 @@ // write_volatile causes an LLVM assert with composite types -// ignore-emscripten See #41299: probably a bad optimization - #![feature(volatile)] use std::ptr::{read_volatile, write_volatile}; diff --git a/src/test/run-pass/issue-30490.rs b/src/test/run-pass/issue-30490.rs index 7658abc00c59..4296107dd457 100644 --- a/src/test/run-pass/issue-30490.rs +++ b/src/test/run-pass/issue-30490.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes // Previously libstd would set stdio descriptors of a child process // by `dup`ing the requested descriptors to inherit directly into the diff --git a/src/test/run-pass/issue-33770.rs b/src/test/run-pass/issue-33770.rs index 76728a0d354b..380627007078 100644 --- a/src/test/run-pass/issue-33770.rs +++ b/src/test/run-pass/issue-33770.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes use std::process::{Command, Stdio}; use std::env; diff --git a/src/test/run-pass/linkage1.rs b/src/test/run-pass/linkage1.rs index 591610e88b1a..f12a233f493e 100644 --- a/src/test/run-pass/linkage1.rs +++ b/src/test/run-pass/linkage1.rs @@ -10,7 +10,7 @@ // ignore-windows // ignore-macos -// ignore-emscripten +// ignore-emscripten doesn't support this linkage // aux-build:linkage1.rs #![feature(linkage)] diff --git a/src/test/run-pass/multi-panic.rs b/src/test/run-pass/multi-panic.rs index 86fe06b17653..c15b40d4dda2 100644 --- a/src/test/run-pass/multi-panic.rs +++ b/src/test/run-pass/multi-panic.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes fn check_for_no_backtrace(test: std::process::Output) { assert!(!test.status.success()); diff --git a/src/test/run-pass/no-stdio.rs b/src/test/run-pass/no-stdio.rs index 85c63e184fe2..7b6b711315af 100644 --- a/src/test/run-pass/no-stdio.rs +++ b/src/test/run-pass/no-stdio.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes // ignore-android #![feature(libc)] diff --git a/src/test/run-pass/out-of-stack.rs b/src/test/run-pass/out-of-stack.rs index 7e70c4a7ab38..485335a2d800 100644 --- a/src/test/run-pass/out-of-stack.rs +++ b/src/test/run-pass/out-of-stack.rs @@ -10,7 +10,7 @@ // ignore-android: FIXME (#20004) // ignore-musl -// ignore-emscripten +// ignore-emscripten no processes #![feature(asm)] #![feature(libc)] diff --git a/src/test/run-pass/packed-struct-layout.rs b/src/test/run-pass/packed-struct-layout.rs index d1e05e5a0184..a4a0055785f0 100644 --- a/src/test/run-pass/packed-struct-layout.rs +++ b/src/test/run-pass/packed-struct-layout.rs @@ -7,8 +7,6 @@ // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten Not sure what's happening here. - use std::mem; diff --git a/src/test/run-pass/packed-tuple-struct-layout.rs b/src/test/run-pass/packed-tuple-struct-layout.rs index ee4eb86ed0de..18f7eff280a8 100644 --- a/src/test/run-pass/packed-tuple-struct-layout.rs +++ b/src/test/run-pass/packed-tuple-struct-layout.rs @@ -7,8 +7,6 @@ // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten - use std::mem; diff --git a/src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs b/src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs index ebbb00a4a9f2..d1fdc8afa653 100644 --- a/src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs +++ b/src/test/run-pass/panic-runtime/abort-link-to-unwinding-crates.rs @@ -11,7 +11,7 @@ // compile-flags:-C panic=abort // aux-build:exit-success-if-unwind.rs // no-prefer-dynamic -// ignore-emscripten Function not implemented +// ignore-emscripten no processes extern crate exit_success_if_unwind; diff --git a/src/test/run-pass/panic-runtime/abort.rs b/src/test/run-pass/panic-runtime/abort.rs index 3ba3bd61c2e8..bb541b29d7c7 100644 --- a/src/test/run-pass/panic-runtime/abort.rs +++ b/src/test/run-pass/panic-runtime/abort.rs @@ -10,7 +10,7 @@ // compile-flags:-C panic=abort // no-prefer-dynamic -// ignore-emscripten Function not implemented. +// ignore-emscripten no processes use std::process::Command; use std::env; diff --git a/src/test/run-pass/panic-runtime/lto-abort.rs b/src/test/run-pass/panic-runtime/lto-abort.rs index e4cd4e809a4c..59e9474aab2e 100644 --- a/src/test/run-pass/panic-runtime/lto-abort.rs +++ b/src/test/run-pass/panic-runtime/lto-abort.rs @@ -10,7 +10,7 @@ // compile-flags:-C lto -C panic=abort // no-prefer-dynamic -// ignore-emscripten Function not implemented. +// ignore-emscripten no processes use std::process::Command; use std::env; diff --git a/src/test/run-pass/panic-runtime/lto-unwind.rs b/src/test/run-pass/panic-runtime/lto-unwind.rs index 768b88fd09e0..6d28b8d12f62 100644 --- a/src/test/run-pass/panic-runtime/lto-unwind.rs +++ b/src/test/run-pass/panic-runtime/lto-unwind.rs @@ -10,7 +10,7 @@ // compile-flags:-C lto -C panic=unwind // no-prefer-dynamic -// ignore-emscripten Function not implemented. +// ignore-emscripten no processes use std::process::Command; use std::env; diff --git a/src/test/run-pass/process-envs.rs b/src/test/run-pass/process-envs.rs index b3785d898baa..1622517198a2 100644 --- a/src/test/run-pass/process-envs.rs +++ b/src/test/run-pass/process-envs.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes use std::process::Command; use std::env; diff --git a/src/test/run-pass/process-exit.rs b/src/test/run-pass/process-exit.rs index a5d408448a03..5abc06b75e14 100644 --- a/src/test/run-pass/process-exit.rs +++ b/src/test/run-pass/process-exit.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes use std::env; use std::process::{self, Command, Stdio}; diff --git a/src/test/run-pass/process-remove-from-env.rs b/src/test/run-pass/process-remove-from-env.rs index b7f296a65c21..7a9b431d5709 100644 --- a/src/test/run-pass/process-remove-from-env.rs +++ b/src/test/run-pass/process-remove-from-env.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes use std::process::Command; use std::env; diff --git a/src/test/run-pass/process-spawn-with-unicode-params.rs b/src/test/run-pass/process-spawn-with-unicode-params.rs index 550c6d6ab670..7b8542072632 100644 --- a/src/test/run-pass/process-spawn-with-unicode-params.rs +++ b/src/test/run-pass/process-spawn-with-unicode-params.rs @@ -16,7 +16,7 @@ // non-ASCII characters. The child process ensures all the strings are // intact. -// ignore-emscripten +// ignore-emscripten no processes use std::io::prelude::*; use std::io; diff --git a/src/test/run-pass/process-status-inherits-stdin.rs b/src/test/run-pass/process-status-inherits-stdin.rs index ff389bec899e..5ea48a4ff33b 100644 --- a/src/test/run-pass/process-status-inherits-stdin.rs +++ b/src/test/run-pass/process-status-inherits-stdin.rs @@ -7,7 +7,8 @@ // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten Function not implemented. + +// ignore-emscripten no processes use std::env; use std::io; diff --git a/src/test/run-pass/running-with-no-runtime.rs b/src/test/run-pass/running-with-no-runtime.rs index f81c3f2e99d3..6f696c1c9cea 100644 --- a/src/test/run-pass/running-with-no-runtime.rs +++ b/src/test/run-pass/running-with-no-runtime.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten spawning processes is not supported #![feature(start)] diff --git a/src/test/run-pass/signal-exit-status.rs b/src/test/run-pass/signal-exit-status.rs index 8a2bbc83c424..0f6832acec81 100644 --- a/src/test/run-pass/signal-exit-status.rs +++ b/src/test/run-pass/signal-exit-status.rs @@ -9,7 +9,7 @@ // except according to those terms. // ignore-windows -// ignore-emscripten +// ignore-emscripten no processes use std::env; use std::process::Command; diff --git a/src/test/run-pass/sigpipe-should-be-ignored.rs b/src/test/run-pass/sigpipe-should-be-ignored.rs index 5aa4faa13656..465feb4b7790 100644 --- a/src/test/run-pass/sigpipe-should-be-ignored.rs +++ b/src/test/run-pass/sigpipe-should-be-ignored.rs @@ -11,7 +11,7 @@ // Be sure that when a SIGPIPE would have been received that the entire process // doesn't die in a ball of fire, but rather it's gracefully handled. -// ignore-emscripten +// ignore-emscripten no processes use std::env; use std::io::prelude::*; diff --git a/src/test/run-pass/simd-intrinsic-generic-cast.rs b/src/test/run-pass/simd-intrinsic-generic-cast.rs index ede2325b51c2..ed2786edf3a3 100644 --- a/src/test/run-pass/simd-intrinsic-generic-cast.rs +++ b/src/test/run-pass/simd-intrinsic-generic-cast.rs @@ -7,7 +7,8 @@ // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten linking with emcc failed + +// ignore-emscripten FIXME(#45351) hits an LLVM assert #![feature(repr_simd, platform_intrinsics, concat_idents, test)] #![allow(non_camel_case_types)] diff --git a/src/test/run-pass/stack-probes-lto.rs b/src/test/run-pass/stack-probes-lto.rs index f49320e4da4a..78a1019578e3 100644 --- a/src/test/run-pass/stack-probes-lto.rs +++ b/src/test/run-pass/stack-probes-lto.rs @@ -11,7 +11,7 @@ // ignore-arm // ignore-aarch64 // ignore-wasm -// ignore-emscripten +// ignore-emscripten no processes // ignore-musl FIXME #31506 // ignore-pretty // no-system-llvm diff --git a/src/test/run-pass/stack-probes.rs b/src/test/run-pass/stack-probes.rs index 1d66cb602076..bb9471e1b48b 100644 --- a/src/test/run-pass/stack-probes.rs +++ b/src/test/run-pass/stack-probes.rs @@ -11,7 +11,7 @@ // ignore-arm // ignore-aarch64 // ignore-wasm -// ignore-emscripten +// ignore-emscripten no processes // ignore-musl FIXME #31506 // no-system-llvm diff --git a/src/test/run-pass/stdio-is-blocking.rs b/src/test/run-pass/stdio-is-blocking.rs index 448bb7de7727..cce1077202c3 100644 --- a/src/test/run-pass/stdio-is-blocking.rs +++ b/src/test/run-pass/stdio-is-blocking.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes use std::env; use std::io::prelude::*; diff --git a/src/test/run-pass/thinlto/thin-lto-inlines.rs b/src/test/run-pass/thinlto/thin-lto-inlines.rs index 3135a682d869..7a71dd2bc512 100644 --- a/src/test/run-pass/thinlto/thin-lto-inlines.rs +++ b/src/test/run-pass/thinlto/thin-lto-inlines.rs @@ -10,7 +10,7 @@ // compile-flags: -Z thinlto -C codegen-units=8 -O // min-llvm-version 4.0 -// ignore-emscripten +// ignore-emscripten can't inspect instructions on emscripten // We want to assert here that ThinLTO will inline across codegen units. There's // not really a great way to do that in general so we sort of hack around it by diff --git a/src/test/run-pass/thinlto/thin-lto-inlines2.rs b/src/test/run-pass/thinlto/thin-lto-inlines2.rs index ed899d2b115b..0e8ad08a5f68 100644 --- a/src/test/run-pass/thinlto/thin-lto-inlines2.rs +++ b/src/test/run-pass/thinlto/thin-lto-inlines2.rs @@ -12,7 +12,7 @@ // aux-build:thin-lto-inlines-aux.rs // min-llvm-version 4.0 // no-prefer-dynamic -// ignore-emscripten +// ignore-emscripten can't inspect instructions on emscripten // We want to assert here that ThinLTO will inline across codegen units. There's // not really a great way to do that in general so we sort of hack around it by diff --git a/src/test/run-pass/try-wait.rs b/src/test/run-pass/try-wait.rs index be87b7b3c87e..0ee2cb9238c9 100644 --- a/src/test/run-pass/try-wait.rs +++ b/src/test/run-pass/try-wait.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes #![feature(process_try_wait)] diff --git a/src/test/run-pass/u128.rs b/src/test/run-pass/u128.rs index b16f6c7b6af5..bf506a712500 100644 --- a/src/test/run-pass/u128.rs +++ b/src/test/run-pass/u128.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten u128 not supported #![feature(i128_type, test)] diff --git a/src/test/run-pass/vec-macro-no-std.rs b/src/test/run-pass/vec-macro-no-std.rs index f21027afac31..56ff9cb24774 100644 --- a/src/test/run-pass/vec-macro-no-std.rs +++ b/src/test/run-pass/vec-macro-no-std.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten missing rust_begin_unwind +// ignore-emscripten no no_std executables #![feature(lang_items, start, libc, alloc)] #![no_std] diff --git a/src/test/run-pass/wait-forked-but-failed-child.rs b/src/test/run-pass/wait-forked-but-failed-child.rs index 1d1c83cf12a1..744f2989bcfc 100644 --- a/src/test/run-pass/wait-forked-but-failed-child.rs +++ b/src/test/run-pass/wait-forked-but-failed-child.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-emscripten +// ignore-emscripten no processes #![feature(libc)] From 2a889eb945cdae95fce33fbeb1b79093c456cadd Mon Sep 17 00:00:00 2001 From: Christian Poveda Date: Tue, 17 Oct 2017 23:51:27 -0500 Subject: [PATCH 05/11] added non trivial examples of closures for str::find --- src/liballoc/str.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/liballoc/str.rs b/src/liballoc/str.rs index 3e273a670006..895607ff8d4f 100644 --- a/src/liballoc/str.rs +++ b/src/liballoc/str.rs @@ -966,8 +966,8 @@ impl str { /// /// assert_eq!(s.find(char::is_whitespace), Some(5)); /// assert_eq!(s.find(char::is_lowercase), Some(1)); - /// assert_eq!(s.find(|c: char| c.is_whitespace()), Some(5)); - /// assert_eq!(s.find(|c: char| c.is_lowercase()), Some(1)); + /// assert_eq!(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), Some(1)); + /// assert_eq!(s.find(|c: char| (c < 'o') && (c > 'a')), Some(4)); /// ``` /// /// Not finding the pattern: From 0d6923d1b58ca325daf97cc9617651e812b14c54 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Thu, 19 Oct 2017 06:00:15 +0900 Subject: [PATCH 06/11] Remove --enable-rustbuild config option from example --- src/bootstrap/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bootstrap/README.md b/src/bootstrap/README.md index 6eb074605fc1..7c257682e4a5 100644 --- a/src/bootstrap/README.md +++ b/src/bootstrap/README.md @@ -129,7 +129,7 @@ configure your directory to use this build, like so: # configure to use local rust instead of downloading a beta. # `--local-rust-root` is optional here. If elided, we will # use whatever rustc we find on your PATH. -> configure --enable-rustbuild --local-rust-root=~/.cargo/ --enable-local-rebuild +> configure --local-rust-root=~/.cargo/ --enable-local-rebuild ``` After that, you can use the `--incremental` flag to actually do From e11abd15419b513500da07cf22e2b36ceb9b35a1 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Thu, 19 Oct 2017 06:02:13 +0900 Subject: [PATCH 07/11] Fix typos --- src/bootstrap/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bootstrap/README.md b/src/bootstrap/README.md index 7c257682e4a5..9ff681ac6808 100644 --- a/src/bootstrap/README.md +++ b/src/bootstrap/README.md @@ -129,14 +129,14 @@ configure your directory to use this build, like so: # configure to use local rust instead of downloading a beta. # `--local-rust-root` is optional here. If elided, we will # use whatever rustc we find on your PATH. -> configure --local-rust-root=~/.cargo/ --enable-local-rebuild +> ./configure --local-rust-root=~/.cargo/ --enable-local-rebuild ``` After that, you can use the `--incremental` flag to actually do incremental builds: ``` -> ../x.py build --incremental +> ./x.py build --incremental ``` The `--incremental` flag will store incremental compilation artifacts From 0dde8cdd40437f26bccfcbbf73a0dfa720702d2f Mon Sep 17 00:00:00 2001 From: topecongiro Date: Thu, 19 Oct 2017 06:22:32 +0900 Subject: [PATCH 08/11] Allow passing a path with tilde --- src/bootstrap/bootstrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index c441dc9acb85..0ab4c79e3b23 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -532,7 +532,7 @@ class RustBuild(object): """ config = self.get_toml(program) if config: - return config + return os.path.expanduser(config) return os.path.join(self.bin_root(), "bin", "{}{}".format( program, self.exe_suffix())) From 547743ec6adec83c1f8386d9eb2b692dabac4868 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Thu, 19 Oct 2017 08:49:07 +0900 Subject: [PATCH 09/11] Fix typos in src/librustc/README.md --- src/librustc/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/librustc/README.md b/src/librustc/README.md index 3ac2949b83e4..ddf71a06d607 100644 --- a/src/librustc/README.md +++ b/src/librustc/README.md @@ -98,7 +98,7 @@ entire program, and each did a particular check of transformation. We are gradually replacing this pass-based code with an alternative setup based on on-demand **queries**. In the query-model, we work backwards, executing a *query* that expresses our ultimate goal (e.g., -"compiler this crate"). This query in turn may make other queries +"compile this crate"). This query in turn may make other queries (e.g., "get me a list of all modules in the crate"). Those queries make other queries that ultimately bottom out in the base operations, like parsing the input, running the type-checker, and so forth. This @@ -162,7 +162,7 @@ The compiler uses a number of...idiosyncratic abbreviations and things. This glossary attempts to list them and give you a few pointers for understanding them better. -- AST -- the **abstract syntax tree** produced the `syntax` crate; reflects user syntax +- AST -- the **abstract syntax tree** produced by the `syntax` crate; reflects user syntax very closely. - codegen unit -- when we produce LLVM IR, we group the Rust code into a number of codegen units. Each of these units is processed by LLVM independently from one another, From 622d20a85ab234a24ab74ea4afcb4014909754af Mon Sep 17 00:00:00 2001 From: topecongiro Date: Thu, 19 Oct 2017 13:29:12 +0900 Subject: [PATCH 10/11] Fix typos in librustc/ty/README.md --- src/librustc/ty/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/librustc/ty/README.md b/src/librustc/ty/README.md index 4f63912a1e0d..3fd956ecfb87 100644 --- a/src/librustc/ty/README.md +++ b/src/librustc/ty/README.md @@ -42,7 +42,7 @@ wasteful. Often, we wish to write code that explicitly asserts that it is not taking place during inference. In that case, there is no "local" arena, and all the types that you can access are allocated in the -global arena. To express this, the idea is to us the same lifetime +global arena. To express this, the idea is to use the same lifetime for the `'gcx` and `'tcx` parameters of `TyCtxt`. Just to be a touch confusing, we tend to use the name `'tcx` in such contexts. Here is an example: @@ -100,10 +100,10 @@ fn test_type<'tcx>(ty: Ty<'tcx>) { The `sty` field (the origin of this name is unclear to me; perhaps structural type?) is of type `TypeVariants<'tcx>`, which is an enum -definined all of the different kinds of types in the compiler. +defining all of the different kinds of types in the compiler. > NB: inspecting the `sty` field on types during type inference can be -> risky, as there are may be inference variables and other things to +> risky, as there may be inference variables and other things to > consider, or sometimes types are not yet known that will become > known later.). @@ -132,7 +132,7 @@ a safe approximation, so that is what you get back. > you are going to be testing for type equality, you probably need to > start looking into the inference code to do it right. -You can also find various common types in the tcx itself by accessing +You can also find various common types in the `tcx` itself by accessing `tcx.types.bool`, `tcx.types.char`, etc (see `CommonTypes` for more). ### Beyond types: Other kinds of arena-allocated data structures @@ -143,7 +143,7 @@ module. Here are a few examples: - `Substs`, allocated with `mk_substs` -- this will intern a slice of types, often used to specify the values to be substituted for generics (e.g., `HashMap` - would be represented as a slice `&'tcx [tcx.types.i32, tcx.types.u32]`. + would be represented as a slice `&'tcx [tcx.types.i32, tcx.types.u32]`). - `TraitRef`, typically passed by value -- a **trait reference** consists of a reference to a trait along with its various type parameters (including `Self`), like `i32: Display` (here, the def-id From 27cc11931aee7674e4c295ada7d69e0af45f6989 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Perennou Date: Wed, 18 Oct 2017 21:55:12 +0200 Subject: [PATCH 11/11] rustbuild: fix dist in debug mode Signed-off-by: Marc-Antoine Perennou --- src/bootstrap/dist.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index 02dfa04d9203..38dca1080120 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -630,7 +630,7 @@ impl Step for Analysis { let image = tmpdir(build).join(format!("{}-{}-image", name, target)); let src = build.stage_out(compiler, Mode::Libstd) - .join(target).join("release").join("deps"); + .join(target).join(build.cargo_dir()).join("deps"); let image_src = src.join("save-analysis"); let dst = image.join("lib/rustlib").join(target).join("analysis");