New upstream version 2018.6
This commit is contained in:
commit
8125d7d0dd
200 files changed
+51719
-2229
No files matched your search
@@ -0,0 +1,10 @@
|
||||
FROM mato/rumprun-toolchain-hw-x86_64
|
||||
USER root
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y --no-install-recommends \
|
||||
qemu
|
||||
ENV PATH=$PATH:/rust/bin \
|
||||
CARGO_TARGET_X86_64_RUMPRUN_NETBSD_RUNNER=/tmp/runtest
|
||||
|
||||
ADD docker/x86_64-rumprun-netbsd/runtest.rs /tmp/
|
||||
ENTRYPOINT ["sh", "-c", "rustc /tmp/runtest.rs -o /tmp/runtest && exec \"$@\"", "--"]
|
||||
@@ -0,0 +1,54 @@
|
||||
use std::env;
|
||||
use std::process::{Command, Stdio};
|
||||
use std::sync::mpsc;
|
||||
use std::thread;
|
||||
use std::time::Duration;
|
||||
use std::io::{BufRead, BufReader, Read};
|
||||
|
||||
fn main() {
|
||||
assert_eq!(env::args().len(), 2);
|
||||
|
||||
let status = Command::new("rumprun-bake")
|
||||
.arg("hw_virtio")
|
||||
.arg("/tmp/libc-test.img")
|
||||
.arg(env::args().nth(1).unwrap())
|
||||
.status()
|
||||
.expect("failed to run rumprun-bake");
|
||||
assert!(status.success());
|
||||
|
||||
let mut child = Command::new("qemu-system-x86_64")
|
||||
.arg("-nographic")
|
||||
.arg("-vga").arg("none")
|
||||
.arg("-m").arg("64")
|
||||
.arg("-kernel").arg("/tmp/libc-test.img")
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::piped())
|
||||
.spawn()
|
||||
.expect("failed to spawn qemu");
|
||||
|
||||
let mut stdout = child.stdout.take().unwrap();
|
||||
let mut stderr = child.stderr.take().unwrap();
|
||||
let (tx, rx) = mpsc::channel();
|
||||
let tx2 = tx.clone();
|
||||
let t1 = thread::spawn(move || find_ok(&mut stdout, tx));
|
||||
let t2 = thread::spawn(move || find_ok(&mut stderr, tx2));
|
||||
|
||||
let res = rx.recv_timeout(Duration::new(5, 0));
|
||||
child.kill().unwrap();
|
||||
t1.join().unwrap();
|
||||
t2.join().unwrap();
|
||||
|
||||
if res.is_err() {
|
||||
panic!("didn't find success");
|
||||
}
|
||||
}
|
||||
|
||||
fn find_ok(input: &mut Read, tx: mpsc::Sender<()>) {
|
||||
for line in BufReader::new(input).lines() {
|
||||
let line = line.unwrap();
|
||||
println!("{}", line);
|
||||
if line.starts_with("PASSED ") && line.contains(" tests") {
|
||||
tx.send(()).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user