@@ -28,7 +28,7 @@ use {Build, Compiler, Mode};
28
28
use dist;
29
29
use util:: { self , dylib_path, dylib_path_var, exe} ;
30
30
31
- const ADB_TEST_DIR : & ' static str = "/data/tmp" ;
31
+ const ADB_TEST_DIR : & ' static str = "/data/tmp/work " ;
32
32
33
33
/// The two modes of the test runner; tests or benchmarks.
34
34
#[ derive( Copy , Clone ) ]
@@ -243,10 +243,10 @@ pub fn compiletest(build: &Build,
243
243
. arg ( "--llvm-cxxflags" ) . arg ( "" ) ;
244
244
}
245
245
246
- if build. qemu_rootfs ( target) . is_some ( ) {
247
- cmd. arg ( "--qemu -test-client" )
246
+ if build. remote_tested ( target) {
247
+ cmd. arg ( "--remote -test-client" )
248
248
. arg ( build. tool ( & Compiler :: new ( 0 , & build. config . build ) ,
249
- "qemu -test-client" ) ) ;
249
+ "remote -test-client" ) ) ;
250
250
}
251
251
252
252
// Running a C compiler on MSVC requires a few env vars to be set, to be
@@ -445,9 +445,7 @@ pub fn krate(build: &Build,
445
445
dylib_path. insert ( 0 , build. sysroot_libdir ( & compiler, target) ) ;
446
446
cargo. env ( dylib_path_var ( ) , env:: join_paths ( & dylib_path) . unwrap ( ) ) ;
447
447
448
- if target. contains ( "android" ) ||
449
- target. contains ( "emscripten" ) ||
450
- build. qemu_rootfs ( target) . is_some ( ) {
448
+ if target. contains ( "emscripten" ) || build. remote_tested ( target) {
451
449
cargo. arg ( "--no-run" ) ;
452
450
}
453
451
@@ -459,75 +457,24 @@ pub fn krate(build: &Build,
459
457
460
458
let _time = util:: timeit ( ) ;
461
459
462
- if target. contains ( "android" ) {
463
- build. run ( & mut cargo) ;
464
- krate_android ( build, & compiler, target, mode) ;
465
- } else if target. contains ( "emscripten" ) {
460
+ if target. contains ( "emscripten" ) {
466
461
build. run ( & mut cargo) ;
467
462
krate_emscripten ( build, & compiler, target, mode) ;
468
- } else if build. qemu_rootfs ( target) . is_some ( ) {
463
+ } else if build. remote_tested ( target) {
469
464
build. run ( & mut cargo) ;
470
- krate_qemu ( build, & compiler, target, mode) ;
465
+ krate_remote ( build, & compiler, target, mode) ;
471
466
} else {
472
467
cargo. args ( & build. flags . cmd . test_args ( ) ) ;
473
468
build. run ( & mut cargo) ;
474
469
}
475
470
}
476
471
477
- fn krate_android ( build : & Build ,
478
- compiler : & Compiler ,
479
- target : & str ,
480
- mode : Mode ) {
481
- let mut tests = Vec :: new ( ) ;
482
- let out_dir = build. cargo_out ( compiler, mode, target) ;
483
- find_tests ( & out_dir, target, & mut tests) ;
484
- find_tests ( & out_dir. join ( "deps" ) , target, & mut tests) ;
485
-
486
- for test in tests {
487
- build. run ( Command :: new ( "adb" ) . arg ( "push" ) . arg ( & test) . arg ( ADB_TEST_DIR ) ) ;
488
-
489
- let test_file_name = test. file_name ( ) . unwrap ( ) . to_string_lossy ( ) ;
490
- let log = format ! ( "{}/check-stage{}-T-{}-H-{}-{}.log" ,
491
- ADB_TEST_DIR ,
492
- compiler. stage,
493
- target,
494
- compiler. host,
495
- test_file_name) ;
496
- let quiet = if build. config . quiet_tests { "--quiet" } else { "" } ;
497
- let program = format ! ( "(cd {dir}; \
498
- LD_LIBRARY_PATH=./{target} ./{test} \
499
- --logfile {log} \
500
- {quiet} \
501
- {args})",
502
- dir = ADB_TEST_DIR ,
503
- target = target,
504
- test = test_file_name,
505
- log = log,
506
- quiet = quiet,
507
- args = build. flags. cmd. test_args( ) . join( " " ) ) ;
508
-
509
- let output = output ( Command :: new ( "adb" ) . arg ( "shell" ) . arg ( & program) ) ;
510
- println ! ( "{}" , output) ;
511
-
512
- t ! ( fs:: create_dir_all( build. out. join( "tmp" ) ) ) ;
513
- build. run ( Command :: new ( "adb" )
514
- . arg ( "pull" )
515
- . arg ( & log)
516
- . arg ( build. out . join ( "tmp" ) ) ) ;
517
- build. run ( Command :: new ( "adb" ) . arg ( "shell" ) . arg ( "rm" ) . arg ( & log) ) ;
518
- if !output. contains ( "result: ok" ) {
519
- panic ! ( "some tests failed" ) ;
520
- }
521
- }
522
- }
523
-
524
472
fn krate_emscripten ( build : & Build ,
525
473
compiler : & Compiler ,
526
474
target : & str ,
527
475
mode : Mode ) {
528
476
let mut tests = Vec :: new ( ) ;
529
477
let out_dir = build. cargo_out ( compiler, mode, target) ;
530
- find_tests ( & out_dir, target, & mut tests) ;
531
478
find_tests ( & out_dir. join ( "deps" ) , target, & mut tests) ;
532
479
533
480
for test in tests {
@@ -543,17 +490,16 @@ fn krate_emscripten(build: &Build,
543
490
}
544
491
}
545
492
546
- fn krate_qemu ( build : & Build ,
547
- compiler : & Compiler ,
548
- target : & str ,
549
- mode : Mode ) {
493
+ fn krate_remote ( build : & Build ,
494
+ compiler : & Compiler ,
495
+ target : & str ,
496
+ mode : Mode ) {
550
497
let mut tests = Vec :: new ( ) ;
551
498
let out_dir = build. cargo_out ( compiler, mode, target) ;
552
- find_tests ( & out_dir, target, & mut tests) ;
553
499
find_tests ( & out_dir. join ( "deps" ) , target, & mut tests) ;
554
500
555
501
let tool = build. tool ( & Compiler :: new ( 0 , & build. config . build ) ,
556
- "qemu -test-client" ) ;
502
+ "remote -test-client" ) ;
557
503
for test in tests {
558
504
let mut cmd = Command :: new ( & tool) ;
559
505
cmd. arg ( "run" )
@@ -566,7 +512,6 @@ fn krate_qemu(build: &Build,
566
512
}
567
513
}
568
514
569
-
570
515
fn find_tests ( dir : & Path ,
571
516
target : & str ,
572
517
dst : & mut Vec < PathBuf > ) {
@@ -585,59 +530,28 @@ fn find_tests(dir: &Path,
585
530
}
586
531
587
532
pub fn emulator_copy_libs ( build : & Build , compiler : & Compiler , target : & str ) {
588
- if target. contains ( "android" ) {
589
- android_copy_libs ( build, compiler, target)
590
- } else if let Some ( s) = build. qemu_rootfs ( target) {
591
- qemu_copy_libs ( build, compiler, target, s)
592
- }
593
- }
594
-
595
- fn android_copy_libs ( build : & Build , compiler : & Compiler , target : & str ) {
596
- println ! ( "Android copy libs to emulator ({})" , target) ;
597
- build. run ( Command :: new ( "adb" ) . arg ( "wait-for-device" ) ) ;
598
- build. run ( Command :: new ( "adb" ) . arg ( "remount" ) ) ;
599
- build. run ( Command :: new ( "adb" ) . args ( & [ "shell" , "rm" , "-r" , ADB_TEST_DIR ] ) ) ;
600
- build. run ( Command :: new ( "adb" ) . args ( & [ "shell" , "mkdir" , ADB_TEST_DIR ] ) ) ;
601
- build. run ( Command :: new ( "adb" )
602
- . arg ( "push" )
603
- . arg ( build. src . join ( "src/etc/adb_run_wrapper.sh" ) )
604
- . arg ( ADB_TEST_DIR ) ) ;
605
-
606
- let target_dir = format ! ( "{}/{}" , ADB_TEST_DIR , target) ;
607
- build. run ( Command :: new ( "adb" ) . args ( & [ "shell" , "mkdir" , & target_dir] ) ) ;
608
-
609
- for f in t ! ( build. sysroot_libdir( compiler, target) . read_dir( ) ) {
610
- let f = t ! ( f) ;
611
- let name = f. file_name ( ) . into_string ( ) . unwrap ( ) ;
612
- if util:: is_dylib ( & name) {
613
- build. run ( Command :: new ( "adb" )
614
- . arg ( "push" )
615
- . arg ( f. path ( ) )
616
- . arg ( & target_dir) ) ;
617
- }
533
+ if !build. remote_tested ( target) {
534
+ return
618
535
}
619
- }
620
536
621
- fn qemu_copy_libs ( build : & Build ,
622
- compiler : & Compiler ,
623
- target : & str ,
624
- rootfs : & Path ) {
625
- println ! ( "QEMU copy libs to emulator ({})" , target) ;
626
- assert ! ( target. starts_with( "arm" ) , "only works with arm for now" ) ;
537
+ println ! ( "REMOTE copy libs to emulator ({})" , target) ;
627
538
t ! ( fs:: create_dir_all( build. out. join( "tmp" ) ) ) ;
628
539
629
- // Copy our freshly compiled test server over to the rootfs
630
540
let server = build. cargo_out ( compiler, Mode :: Tool , target)
631
- . join ( exe ( "qemu-test-server" , target) ) ;
632
- t ! ( fs:: copy( & server, rootfs. join( "testd" ) ) ) ;
541
+ . join ( exe ( "remote-test-server" , target) ) ;
633
542
634
543
// Spawn the emulator and wait for it to come online
635
544
let tool = build. tool ( & Compiler :: new ( 0 , & build. config . build ) ,
636
- "qemu-test-client" ) ;
637
- build. run ( Command :: new ( & tool)
638
- . arg ( "spawn-emulator" )
639
- . arg ( rootfs)
640
- . arg ( build. out . join ( "tmp" ) ) ) ;
545
+ "remote-test-client" ) ;
546
+ let mut cmd = Command :: new ( & tool) ;
547
+ cmd. arg ( "spawn-emulator" )
548
+ . arg ( target)
549
+ . arg ( & server)
550
+ . arg ( build. out . join ( "tmp" ) ) ;
551
+ if let Some ( rootfs) = build. qemu_rootfs ( target) {
552
+ cmd. arg ( rootfs) ;
553
+ }
554
+ build. run ( & mut cmd) ;
641
555
642
556
// Push all our dylibs to the emulator
643
557
for f in t ! ( build. sysroot_libdir( compiler, target) . read_dir( ) ) {
0 commit comments