about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-01-16 23:10:00 -0800
committerAlex Crichton <alex@alexcrichton.com>2017-01-19 13:54:19 -0800
commite8f9d2d43a190074d52a0df40725ebd2c0fb0a9e (patch)
tree3119680164eca5ef18b4ad27d4b964b3f365c002
parentaedebfe77de30675826505572f36767e77dfba90 (diff)
downloadrust-e8f9d2d43a190074d52a0df40725ebd2c0fb0a9e.tar.gz
rust-e8f9d2d43a190074d52a0df40725ebd2c0fb0a9e.zip
travis: Get an emscripten builder online
This commit adds a new entry to the Travis matrix which will execute emscripten
test suites. Along the way it updates a few bits of the test suite to continue
passing on emscripten, such as:

* Ignoring i128/u128 tests as they're presumably just not working (didn't
  investigate as to why)
* Disabling a few process tests (not working on emscripten)
* Ignore some num tests in libstd (#39119)
* Fix some warnings when compiling
-rw-r--r--src/bootstrap/sanity.rs2
-rw-r--r--src/ci/docker/emscripten/Dockerfile41
-rwxr-xr-xsrc/ci/docker/emscripten/build-emscripten.sh19
-rw-r--r--src/libstd/net/test.rs2
-rw-r--r--src/libstd/num.rs1
-rw-r--r--src/test/codegen/fastcall-inreg.rs1
-rw-r--r--src/test/compile-fail/asm-bad-clobber.rs1
-rw-r--r--src/test/compile-fail/asm-in-bad-modifier.rs1
-rw-r--r--src/test/compile-fail/asm-misplaced-option.rs1
-rw-r--r--src/test/compile-fail/asm-out-assign-imm.rs1
-rw-r--r--src/test/compile-fail/asm-out-no-modifier.rs1
-rw-r--r--src/test/compile-fail/asm-out-read-uninit.rs1
-rw-r--r--src/test/compile-fail/asm-src-loc-codegen-units.rs1
-rw-r--r--src/test/compile-fail/asm-src-loc.rs2
-rw-r--r--src/test/compile-fail/cdylib-deps-must-be-static.rs1
-rw-r--r--src/test/compile-fail/macro-expanded-include/test.rs2
-rw-r--r--src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs1
-rw-r--r--src/test/compile-fail/two-allocators-3.rs1
-rw-r--r--src/test/run-pass-valgrind/down-with-thread-dtors.rs1
-rw-r--r--src/test/run-pass-valgrind/exit-flushes.rs1
-rw-r--r--src/test/run-pass/i128-ffi.rs2
-rw-r--r--src/test/run-pass/i128.rs3
-rw-r--r--src/test/run-pass/stdio-is-blocking.rs2
-rw-r--r--src/test/run-pass/try-wait.rs2
-rw-r--r--src/test/run-pass/u128.rs3
25 files changed, 92 insertions, 2 deletions
diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs
index 66bdd5e00f4..8e79c2d27d1 100644
--- a/src/bootstrap/sanity.rs
+++ b/src/bootstrap/sanity.rs
@@ -45,7 +45,7 @@ pub fn check(build: &mut Build) {
             let target = path.join(cmd);
             let mut cmd_alt = cmd.to_os_string();
             cmd_alt.push(".exe");
-            if target.exists() ||
+            if target.is_file() ||
                target.with_extension("exe").exists() ||
                target.join(cmd_alt).exists() {
                 return Some(target);
diff --git a/src/ci/docker/emscripten/Dockerfile b/src/ci/docker/emscripten/Dockerfile
new file mode 100644
index 00000000000..84e12eb6c3e
--- /dev/null
+++ b/src/ci/docker/emscripten/Dockerfile
@@ -0,0 +1,41 @@
+FROM ubuntu:16.04
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+  g++ \
+  make \
+  file \
+  curl \
+  ca-certificates \
+  python \
+  git \
+  cmake \
+  sudo \
+  gdb \
+  xz-utils \
+  lib32stdc++6
+
+ENV SCCACHE_DIGEST=7237e38e029342fa27b7ac25412cb9d52554008b12389727320bd533fd7f05b6a96d55485f305caf95e5c8f5f97c3313e10012ccad3e752aba2518f3522ba783
+RUN curl -L https://api.pub.build.mozilla.org/tooltool/sha512/$SCCACHE_DIGEST | \
+      tar xJf - -C /usr/local/bin --strip-components=1
+
+RUN curl -OL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \
+    dpkg -i dumb-init_*.deb && \
+    rm dumb-init_*.deb
+ENTRYPOINT ["/usr/bin/dumb-init", "--"]
+
+WORKDIR /tmp
+COPY build-emscripten.sh /tmp/
+RUN ./build-emscripten.sh
+ENV PATH=$PATH:/tmp/emsdk_portable
+ENV PATH=$PATH:/tmp/emsdk_portable/clang/tag-e1.37.1/build_tag-e1.37.1_32/bin
+ENV PATH=$PATH:/tmp/emsdk_portable/node/4.1.1_32bit/bin
+ENV PATH=$PATH:/tmp/emsdk_portable/emscripten/tag-1.37.1
+ENV EMSCRIPTEN=/tmp/emsdk_portable/emscripten/tag-1.37.1
+
+ENV RUST_CONFIGURE_ARGS --target=asmjs-unknown-emscripten
+
+# Run `emcc` first as it's got a prompt and doesn't actually do anything, after
+# that's done with do the real build.
+ENV SCRIPT emcc && \
+      python2.7 ../x.py test --target asmjs-unknown-emscripten
+
diff --git a/src/ci/docker/emscripten/build-emscripten.sh b/src/ci/docker/emscripten/build-emscripten.sh
new file mode 100755
index 00000000000..2ce7a58ae66
--- /dev/null
+++ b/src/ci/docker/emscripten/build-emscripten.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+# file at the top-level directory of this distribution and at
+# http://rust-lang.org/COPYRIGHT.
+#
+# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+# option. This file may not be copied, modified, or distributed
+# except according to those terms.
+
+set -ex
+
+curl https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz | \
+      tar xzf -
+source emsdk_portable/emsdk_env.sh
+emsdk update
+emsdk install --build=Release sdk-tag-1.37.1-32bit
+emsdk activate --build=Release sdk-tag-1.37.1-32bit
diff --git a/src/libstd/net/test.rs b/src/libstd/net/test.rs
index 3f2eacda7d6..aec3d901ece 100644
--- a/src/libstd/net/test.rs
+++ b/src/libstd/net/test.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#[allow(dead_code)] // not used on emscripten
+#![allow(warnings)] // not used on emscripten
 
 use env;
 use net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
diff --git a/src/libstd/num.rs b/src/libstd/num.rs
index d1c2fc3d3fc..5f83d077a13 100644
--- a/src/libstd/num.rs
+++ b/src/libstd/num.rs
@@ -172,6 +172,7 @@ mod tests {
 
     macro_rules! test_checked_next_power_of_two {
         ($test_name:ident, $T:ident) => (
+            #[cfg_attr(target_os = "emscripten", ignore)] // FIXME(#39119)
             fn $test_name() {
                 #![test]
                 assert_eq!((0 as $T).checked_next_power_of_two(), Some(1));
diff --git a/src/test/codegen/fastcall-inreg.rs b/src/test/codegen/fastcall-inreg.rs
index e1dda4d2be0..1cbde9b1a7c 100644
--- a/src/test/codegen/fastcall-inreg.rs
+++ b/src/test/codegen/fastcall-inreg.rs
@@ -53,6 +53,7 @@
 // ignore-shave
 // ignore-wasm32
 // ignore-wasm64
+// ignore-emscripten
 
 // compile-flags: -C no-prepopulate-passes
 
diff --git a/src/test/compile-fail/asm-bad-clobber.rs b/src/test/compile-fail/asm-bad-clobber.rs
index 85832ddefe2..cb931329051 100644
--- a/src/test/compile-fail/asm-bad-clobber.rs
+++ b/src/test/compile-fail/asm-bad-clobber.rs
@@ -12,6 +12,7 @@
 // ignore-arm
 // ignore-aarch64
 // ignore-s390x
+// ignore-emscripten
 
 #![feature(asm, rustc_attrs)]
 
diff --git a/src/test/compile-fail/asm-in-bad-modifier.rs b/src/test/compile-fail/asm-in-bad-modifier.rs
index a4d076fc90d..7ba5beac213 100644
--- a/src/test/compile-fail/asm-in-bad-modifier.rs
+++ b/src/test/compile-fail/asm-in-bad-modifier.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // ignore-s390x
+// ignore-emscripten
 
 #![feature(asm)]
 
diff --git a/src/test/compile-fail/asm-misplaced-option.rs b/src/test/compile-fail/asm-misplaced-option.rs
index fbfc20f8d04..bafbf625e35 100644
--- a/src/test/compile-fail/asm-misplaced-option.rs
+++ b/src/test/compile-fail/asm-misplaced-option.rs
@@ -12,6 +12,7 @@
 // ignore-arm
 // ignore-aarch64
 // ignore-s390x
+// ignore-emscripten
 
 #![feature(asm, rustc_attrs)]
 
diff --git a/src/test/compile-fail/asm-out-assign-imm.rs b/src/test/compile-fail/asm-out-assign-imm.rs
index 1329959fe49..161c0b977ff 100644
--- a/src/test/compile-fail/asm-out-assign-imm.rs
+++ b/src/test/compile-fail/asm-out-assign-imm.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // ignore-s390x
+// ignore-emscripten
 
 #![feature(asm)]
 
diff --git a/src/test/compile-fail/asm-out-no-modifier.rs b/src/test/compile-fail/asm-out-no-modifier.rs
index d610f9e3440..cb8fb19a7c7 100644
--- a/src/test/compile-fail/asm-out-no-modifier.rs
+++ b/src/test/compile-fail/asm-out-no-modifier.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // ignore-s390x
+// ignore-emscripten
 
 #![feature(asm)]
 
diff --git a/src/test/compile-fail/asm-out-read-uninit.rs b/src/test/compile-fail/asm-out-read-uninit.rs
index 360f89dda9c..42bff4c633a 100644
--- a/src/test/compile-fail/asm-out-read-uninit.rs
+++ b/src/test/compile-fail/asm-out-read-uninit.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // ignore-s390x
+// ignore-emscripten
 
 #![feature(asm)]
 
diff --git a/src/test/compile-fail/asm-src-loc-codegen-units.rs b/src/test/compile-fail/asm-src-loc-codegen-units.rs
index 79f0c436759..df1a6d52f57 100644
--- a/src/test/compile-fail/asm-src-loc-codegen-units.rs
+++ b/src/test/compile-fail/asm-src-loc-codegen-units.rs
@@ -12,6 +12,7 @@
 // ignore-stage1
 // compile-flags: -C codegen-units=2
 // error-pattern: build without -C codegen-units for more exact errors
+// ignore-emscripten
 
 #![feature(asm)]
 
diff --git a/src/test/compile-fail/asm-src-loc.rs b/src/test/compile-fail/asm-src-loc.rs
index e3cece7c8f0..59b47c2408d 100644
--- a/src/test/compile-fail/asm-src-loc.rs
+++ b/src/test/compile-fail/asm-src-loc.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten
+
 #![feature(asm)]
 
 fn main() {
diff --git a/src/test/compile-fail/cdylib-deps-must-be-static.rs b/src/test/compile-fail/cdylib-deps-must-be-static.rs
index 4b160f26e92..853507cbc6d 100644
--- a/src/test/compile-fail/cdylib-deps-must-be-static.rs
+++ b/src/test/compile-fail/cdylib-deps-must-be-static.rs
@@ -11,6 +11,7 @@
 // error-pattern: dependency `cdylib_dep` not found in rlib format
 // aux-build:cdylib-dep.rs
 // ignore-musl
+// ignore-emscripten
 
 #![crate_type = "cdylib"]
 
diff --git a/src/test/compile-fail/macro-expanded-include/test.rs b/src/test/compile-fail/macro-expanded-include/test.rs
index e1e85ddb2c1..bcc2c10653f 100644
--- a/src/test/compile-fail/macro-expanded-include/test.rs
+++ b/src/test/compile-fail/macro-expanded-include/test.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten
+
 #![feature(asm, rustc_attrs)]
 #![allow(unused)]
 
diff --git a/src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs b/src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs
index c3242a5082b..1fd60b15a72 100644
--- a/src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs
+++ b/src/test/compile-fail/panic-runtime/abort-link-to-unwind-dylib.rs
@@ -10,6 +10,7 @@
 
 // compile-flags:-C panic=abort -C prefer-dynamic
 // ignore-musl - no dylibs here
+// ignore-emscripten
 // error-pattern:`panic_unwind` is not compiled with this crate's panic strategy
 
 // This is a test where the local crate, compiled with `panic=abort`, links to
diff --git a/src/test/compile-fail/two-allocators-3.rs b/src/test/compile-fail/two-allocators-3.rs
index 7782d0e338e..965e4e0e2ea 100644
--- a/src/test/compile-fail/two-allocators-3.rs
+++ b/src/test/compile-fail/two-allocators-3.rs
@@ -11,6 +11,7 @@
 // aux-build:allocator1.rs
 // error-pattern: cannot link together two allocators
 // ignore-musl no dylibs on musl yet
+// ignore-emscripten
 
 // We're linking std dynamically (via -C prefer-dynamic for this test) which
 // has an allocator and then we're also linking in a new allocator (allocator1)
diff --git a/src/test/run-pass-valgrind/down-with-thread-dtors.rs b/src/test/run-pass-valgrind/down-with-thread-dtors.rs
index 0bf10c67d9f..90c20444842 100644
--- a/src/test/run-pass-valgrind/down-with-thread-dtors.rs
+++ b/src/test/run-pass-valgrind/down-with-thread-dtors.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // no-prefer-dynamic
+// ignore-emscripten
 
 thread_local!(static FOO: Foo = Foo);
 thread_local!(static BAR: Bar = Bar(1));
diff --git a/src/test/run-pass-valgrind/exit-flushes.rs b/src/test/run-pass-valgrind/exit-flushes.rs
index 1897b921401..b72d2659967 100644
--- a/src/test/run-pass-valgrind/exit-flushes.rs
+++ b/src/test/run-pass-valgrind/exit-flushes.rs
@@ -11,6 +11,7 @@
 // no-prefer-dynamic
 // ignore-macos this needs valgrind 3.11 or higher; see
 // https://github.com/rust-lang/rust/pull/30365#issuecomment-165763679
+// ignore-emscripten
 
 use std::env;
 use std::process::{exit, Command};
diff --git a/src/test/run-pass/i128-ffi.rs b/src/test/run-pass/i128-ffi.rs
index 3b5f4884d21..222f32754fb 100644
--- a/src/test/run-pass/i128-ffi.rs
+++ b/src/test/run-pass/i128-ffi.rs
@@ -20,6 +20,8 @@
 // Ignore 32 bit targets:
 // ignore-x86, ignore-arm
 
+// ignore-emscripten
+
 #![feature(i128_type)]
 
 #[link(name = "rust_test_helpers", kind = "static")]
diff --git a/src/test/run-pass/i128.rs b/src/test/run-pass/i128.rs
index a4ff36d20e4..3eb1c950502 100644
--- a/src/test/run-pass/i128.rs
+++ b/src/test/run-pass/i128.rs
@@ -10,6 +10,9 @@
 
 // ignore-stage0
 // ignore-stage1
+
+// ignore-emscripten
+
 #![feature(i128_type, test)]
 
 extern crate test;
diff --git a/src/test/run-pass/stdio-is-blocking.rs b/src/test/run-pass/stdio-is-blocking.rs
index 74170ca6506..448bb7de772 100644
--- a/src/test/run-pass/stdio-is-blocking.rs
+++ b/src/test/run-pass/stdio-is-blocking.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten
+
 use std::env;
 use std::io::prelude::*;
 use std::process::Command;
diff --git a/src/test/run-pass/try-wait.rs b/src/test/run-pass/try-wait.rs
index fdaf0cfd5b0..d9826373cce 100644
--- a/src/test/run-pass/try-wait.rs
+++ b/src/test/run-pass/try-wait.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten
+
 #![feature(process_try_wait)]
 
 use std::env;
diff --git a/src/test/run-pass/u128.rs b/src/test/run-pass/u128.rs
index 53d726f1f66..139d42e3a35 100644
--- a/src/test/run-pass/u128.rs
+++ b/src/test/run-pass/u128.rs
@@ -10,6 +10,9 @@
 
 // ignore-stage0
 // ignore-stage1
+
+// ignore-emscripten
+
 #![feature(i128_type, test)]
 
 extern crate test;