]> git.lizzy.rs Git - rust.git/commitdiff
x.py: do not build Miri by default
authorRalf Jung <post@ralfj.de>
Thu, 11 Jun 2020 07:25:06 +0000 (09:25 +0200)
committerRalf Jung <post@ralfj.de>
Fri, 12 Jun 2020 07:41:27 +0000 (09:41 +0200)
src/bootstrap/builder.rs
src/bootstrap/tool.rs

index ffdd8485181f4665d4f25c54ab66bfda8c161077..c4f29927cf4a8d9c644c999f0a3401db05291067 100644 (file)
@@ -52,6 +52,8 @@ pub trait Step: 'static + Clone + Debug + PartialEq + Eq + Hash {
     /// it's been assembled.
     type Output: Clone;
 
+    /// Whether this step is run by default as part of its respective phase.
+    /// `true` here can still be overwritten by `should_run` calling `default_condition`.
     const DEFAULT: bool = false;
 
     /// If true, then this rule should be skipped if --target was specified, but --host was not
index 6cd9f9029c948ac6996af4f193dc4e18107228aa..9c95de0a81eae7ff53db0368a960e0eb9f9a6041 100644 (file)
@@ -595,6 +595,7 @@ macro_rules! tool_extended {
        $toolstate:ident,
        $path:expr,
        $tool_name:expr,
+       stable = $stable:expr,
        $extra_deps:block;)+) => {
         $(
             #[derive(Debug, Clone, Hash, PartialEq, Eq)]
@@ -606,17 +607,22 @@ pub struct $name {
 
         impl Step for $name {
             type Output = Option<PathBuf>;
-            const DEFAULT: bool = true;
+            const DEFAULT: bool = true; // Overwritten below
             const ONLY_HOSTS: bool = true;
 
             fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
                 let builder = run.builder;
                 run.path($path).default_condition(
                     builder.config.extended
-                        && builder.config.tools.as_ref().map_or(true, |tools| {
-                            tools.iter().any(|tool| match tool.as_ref() {
-                                "clippy" => $tool_name == "clippy-driver",
-                                x => $tool_name == x,
+                        && builder.config.tools.as_ref().map_or(
+                            // By default, on nightly/dev enable all tools, else only
+                            // build stable tools.
+                            $stable || builder.build.unstable_features(),
+                            // If `tools` is set, search list for this tool.
+                            |tools| {
+                                tools.iter().any(|tool| match tool.as_ref() {
+                                    "clippy" => $tool_name == "clippy-driver",
+                                    x => $tool_name == x,
                             })
                         }),
                 )
@@ -652,12 +658,12 @@ fn run(mut $sel, $builder: &Builder<'_>) -> Option<PathBuf> {
 // Note: tools need to be also added to `Builder::get_step_descriptions` in `build.rs`
 // to make `./x.py build <tool>` work.
 tool_extended!((self, builder),
-    Cargofmt, rustfmt, "src/tools/rustfmt", "cargo-fmt", {};
-    CargoClippy, clippy, "src/tools/clippy", "cargo-clippy", {};
-    Clippy, clippy, "src/tools/clippy", "clippy-driver", {};
-    Miri, miri, "src/tools/miri", "miri", {};
-    CargoMiri, miri, "src/tools/miri/cargo-miri", "cargo-miri", {};
-    Rls, rls, "src/tools/rls", "rls", {
+    Cargofmt, rustfmt, "src/tools/rustfmt", "cargo-fmt", stable=true, {};
+    CargoClippy, clippy, "src/tools/clippy", "cargo-clippy", stable=true, {};
+    Clippy, clippy, "src/tools/clippy", "clippy-driver", stable=true, {};
+    Miri, miri, "src/tools/miri", "miri", stable=false, {};
+    CargoMiri, miri, "src/tools/miri/cargo-miri", "cargo-miri", stable=false, {};
+    Rls, rls, "src/tools/rls", "rls", stable=true, {
         builder.ensure(Clippy {
             compiler: self.compiler,
             target: self.target,
@@ -665,7 +671,7 @@ fn run(mut $sel, $builder: &Builder<'_>) -> Option<PathBuf> {
         });
         self.extra_features.push("clippy".to_owned());
     };
-    Rustfmt, rustfmt, "src/tools/rustfmt", "rustfmt", {};
+    Rustfmt, rustfmt, "src/tools/rustfmt", "rustfmt", stable=true, {};
 );
 
 impl<'a> Builder<'a> {