about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorTyler Mandry <tmandry@google.com>2020-09-25 00:42:20 +0000
committerTyler Mandry <tmandry@google.com>2020-09-28 19:32:46 +0000
commit52ca5ca7b71a041bfb9a08fa143847581fce4843 (patch)
tree8e85ce0f1d179da1bf26ad8b170730b601e46dd8 /src/bootstrap
parente715c7f234ba25c25b98894c822de9e7cf87558c (diff)
downloadrust-52ca5ca7b71a041bfb9a08fa143847581fce4843.tar.gz
rust-52ca5ca7b71a041bfb9a08fa143847581fce4843.zip
Remove skip_only_host_steps
And make tests explicitly list their hosts and targets.
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/builder.rs10
-rw-r--r--src/bootstrap/builder/tests.rs67
-rw-r--r--src/bootstrap/config.rs4
3 files changed, 23 insertions, 58 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index 4aaaeb8a93b..4beeb9c87c4 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -172,15 +172,7 @@ impl StepDescription {
         }
 
         // Determine the targets participating in this rule.
-        let targets = if self.only_hosts {
-            if builder.config.skip_only_host_steps {
-                return; // don't run anything
-            } else {
-                &builder.hosts
-            }
-        } else {
-            &builder.targets
-        };
+        let targets = if self.only_hosts { &builder.hosts } else { &builder.targets };
 
         for target in targets {
             let run = RunConfig { builder, path: pathset.path(builder), target: *target };
diff --git a/src/bootstrap/builder/tests.rs b/src/bootstrap/builder/tests.rs
index 3ca41be0a9f..a367aa53496 100644
--- a/src/bootstrap/builder/tests.rs
+++ b/src/bootstrap/builder/tests.rs
@@ -6,7 +6,6 @@ fn configure(cmd: &str, host: &[&str], target: &[&str]) -> Config {
     let mut config = Config::parse(&[cmd.to_owned()]);
     // don't save toolstates
     config.save_toolstates = None;
-    config.skip_only_host_steps = false;
     config.dry_run = true;
     config.ninja_in_file = false;
     // try to avoid spurious failures in dist where we create/delete each others file
@@ -20,16 +19,8 @@ fn configure(cmd: &str, host: &[&str], target: &[&str]) -> Config {
     t!(fs::create_dir_all(&dir));
     config.out = dir;
     config.build = TargetSelection::from_user("A");
-    config.hosts = vec![config.build]
-        .into_iter()
-        .chain(host.iter().map(|s| TargetSelection::from_user(s)))
-        .collect::<Vec<_>>();
-    config.targets = config
-        .hosts
-        .clone()
-        .into_iter()
-        .chain(target.iter().map(|s| TargetSelection::from_user(s)))
-        .collect::<Vec<_>>();
+    config.hosts = host.iter().map(|s| TargetSelection::from_user(s)).collect();
+    config.targets = target.iter().map(|s| TargetSelection::from_user(s)).collect();
     config
 }
 
@@ -45,7 +36,7 @@ mod defaults {
 
     #[test]
     fn build_default() {
-        let build = Build::new(configure("build", &[], &[]));
+        let build = Build::new(configure("build", &["A"], &["A"]));
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Build), &[]);
 
@@ -73,7 +64,7 @@ mod defaults {
 
     #[test]
     fn build_stage_0() {
-        let config = Config { stage: 0, ..configure("build", &[], &[]) };
+        let config = Config { stage: 0, ..configure("build", &["A"], &["A"]) };
         let build = Build::new(config);
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Build), &[]);
@@ -95,7 +86,7 @@ mod defaults {
 
     #[test]
     fn build_cross_compile() {
-        let config = Config { stage: 1, ..configure("build", &["B"], &["B"]) };
+        let config = Config { stage: 1, ..configure("build", &["A", "B"], &["A", "B"]) };
         let build = Build::new(config);
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Build), &[]);
@@ -143,7 +134,7 @@ mod defaults {
 
     #[test]
     fn doc_default() {
-        let mut config = configure("doc", &[], &[]);
+        let mut config = configure("doc", &["A"], &["A"]);
         config.compiler_docs = true;
         config.cmd = Subcommand::Doc { paths: Vec::new(), open: false };
         let build = Build::new(config);
@@ -182,7 +173,7 @@ mod dist {
 
     #[test]
     fn dist_baseline() {
-        let build = Build::new(configure(&[], &[]));
+        let build = Build::new(configure(&["A"], &["A"]));
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Dist), &[]);
 
@@ -208,7 +199,7 @@ mod dist {
 
     #[test]
     fn dist_with_targets() {
-        let build = Build::new(configure(&[], &["B"]));
+        let build = Build::new(configure(&["A"], &["A", "B"]));
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Dist), &[]);
 
@@ -239,7 +230,7 @@ mod dist {
 
     #[test]
     fn dist_with_hosts() {
-        let build = Build::new(configure(&["B"], &[]));
+        let build = Build::new(configure(&["A", "B"], &["A", "B"]));
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Dist), &[]);
 
@@ -285,7 +276,7 @@ mod dist {
     fn dist_only_cross_host() {
         let a = TargetSelection::from_user("A");
         let b = TargetSelection::from_user("B");
-        let mut build = Build::new(configure(&["B"], &[]));
+        let mut build = Build::new(configure(&["A", "B"], &["A", "B"]));
         build.config.docs = false;
         build.config.extended = true;
         build.hosts = vec![b];
@@ -307,7 +298,7 @@ mod dist {
 
     #[test]
     fn dist_with_targets_and_hosts() {
-        let build = Build::new(configure(&["B"], &["C"]));
+        let build = Build::new(configure(&["A", "B"], &["A", "B", "C"]));
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Dist), &[]);
 
@@ -343,8 +334,7 @@ mod dist {
 
     #[test]
     fn dist_with_empty_host() {
-        let mut config = configure(&[], &["C"]);
-        config.skip_only_host_steps = true;
+        let config = configure(&[], &["C"]);
         let build = Build::new(config);
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Dist), &[]);
@@ -352,28 +342,17 @@ mod dist {
         let a = TargetSelection::from_user("A");
         let c = TargetSelection::from_user("C");
 
-        assert_eq!(
-            first(builder.cache.all::<dist::Docs>()),
-            &[dist::Docs { host: a }, dist::Docs { host: c },]
-        );
-        assert_eq!(
-            first(builder.cache.all::<dist::Mingw>()),
-            &[dist::Mingw { host: a }, dist::Mingw { host: c },]
-        );
-        assert_eq!(first(builder.cache.all::<dist::Rustc>()), &[]);
+        assert_eq!(first(builder.cache.all::<dist::Docs>()), &[dist::Docs { host: c },]);
+        assert_eq!(first(builder.cache.all::<dist::Mingw>()), &[dist::Mingw { host: c },]);
         assert_eq!(
             first(builder.cache.all::<dist::Std>()),
-            &[
-                dist::Std { compiler: Compiler { host: a, stage: 1 }, target: a },
-                dist::Std { compiler: Compiler { host: a, stage: 2 }, target: c },
-            ]
+            &[dist::Std { compiler: Compiler { host: a, stage: 2 }, target: c },]
         );
-        assert_eq!(first(builder.cache.all::<dist::Src>()), &[]);
     }
 
     #[test]
     fn dist_with_same_targets_and_hosts() {
-        let build = Build::new(configure(&["B"], &["B"]));
+        let build = Build::new(configure(&["A", "B"], &["A", "B"]));
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Dist), &[]);
 
@@ -426,7 +405,7 @@ mod dist {
 
     #[test]
     fn build_all() {
-        let build = Build::new(configure(&["B"], &["C"]));
+        let build = Build::new(configure(&["A", "B"], &["A", "B", "C"]));
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(
             &Builder::get_step_descriptions(Kind::Build),
@@ -463,8 +442,7 @@ mod dist {
 
     #[test]
     fn build_with_empty_host() {
-        let mut config = configure(&[], &["C"]);
-        config.skip_only_host_steps = true;
+        let config = configure(&[], &["C"]);
         let build = Build::new(config);
         let mut builder = Builder::new(&build);
         builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Build), &[]);
@@ -477,7 +455,6 @@ mod dist {
             &[
                 compile::Std { compiler: Compiler { host: a, stage: 0 }, target: a },
                 compile::Std { compiler: Compiler { host: a, stage: 1 }, target: a },
-                compile::Std { compiler: Compiler { host: a, stage: 2 }, target: a },
                 compile::Std { compiler: Compiler { host: a, stage: 2 }, target: c },
             ]
         );
@@ -500,7 +477,7 @@ mod dist {
 
     #[test]
     fn test_with_no_doc_stage0() {
-        let mut config = configure(&[], &[]);
+        let mut config = configure(&["A"], &["A"]);
         config.stage = 0;
         config.cmd = Subcommand::Test {
             paths: vec!["library/std".into()],
@@ -540,7 +517,7 @@ mod dist {
 
     #[test]
     fn test_exclude() {
-        let mut config = configure(&[], &[]);
+        let mut config = configure(&["A"], &["A"]);
         config.exclude = vec!["src/tools/tidy".into()];
         config.cmd = Subcommand::Test {
             paths: Vec::new(),
@@ -567,7 +544,7 @@ mod dist {
 
     #[test]
     fn doc_ci() {
-        let mut config = configure(&[], &[]);
+        let mut config = configure(&["A"], &["A"]);
         config.compiler_docs = true;
         config.cmd = Subcommand::Doc { paths: Vec::new(), open: false };
         let build = Build::new(config);
@@ -596,7 +573,7 @@ mod dist {
     #[test]
     fn test_docs() {
         // Behavior of `x.py test` doing various documentation tests.
-        let mut config = configure(&[], &[]);
+        let mut config = configure(&["A"], &["A"]);
         config.cmd = Subcommand::Test {
             paths: vec![],
             test_args: vec![],
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
index 942d1178a64..9c6b88243e2 100644
--- a/src/bootstrap/config.rs
+++ b/src/bootstrap/config.rs
@@ -66,8 +66,6 @@ pub struct Config {
     pub test_compare_mode: bool,
     pub llvm_libunwind: bool,
 
-    pub skip_only_host_steps: bool,
-
     pub on_fail: Option<String>,
     pub stage: u32,
     pub keep_stage: Vec<u32>,
@@ -593,8 +591,6 @@ impl Config {
         } else {
             vec![config.build]
         };
-        // If host was explicitly given an empty list, don't run any host-only steps.
-        config.skip_only_host_steps = config.hosts.is_empty();
         config.targets = if let Some(arg_target) = flags.target {
             arg_target
         } else if let Some(file_target) = build.target {