about summary refs log tree commit diff
path: root/src/tools
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2018-04-05 11:36:01 -0700
committerAlex Crichton <alex@alexcrichton.com>2018-04-05 11:38:03 -0700
commit59059f2ed1d9ee6d23a8aba0507bac7ac6d40e48 (patch)
tree68c5948853f1e95216d84b77bdbc16469226a08e /src/tools
parent56714acc5eb0687ed9a7566fdebe5528657fc5b3 (diff)
downloadrust-59059f2ed1d9ee6d23a8aba0507bac7ac6d40e48.tar.gz
rust-59059f2ed1d9ee6d23a8aba0507bac7ac6d40e48.zip
Filter out missing components from manifests
This commit updates our manifest generation for rustup to filter out any
components/extensions which are actually missing. This is intended to help
mitigate #49462 by making the manifests reflect reality, that many targets now
are missing a `rust-docs` component rather than requiring it exists.
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/build-manifest/src/main.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
index 49b054f8b9e..0f482c95e05 100644
--- a/src/tools/build-manifest/src/main.rs
+++ b/src/tools/build-manifest/src/main.rs
@@ -356,6 +356,28 @@ impl Builder {
                 target: "*".to_string(),
             });
 
+            // If the components/extensions don't actually exist for this
+            // particular host/target combination then nix it entirely from our
+            // lists.
+            {
+                let has_component = |c: &Component| {
+                    if c.target == "*" {
+                        return true
+                    }
+                    let pkg = match manifest.pkg.get(&c.pkg) {
+                        Some(p) => p,
+                        None => return false,
+                    };
+                    let target = match pkg.target.get(&c.target) {
+                        Some(t) => t,
+                        None => return false,
+                    };
+                    target.available
+                };
+                extensions.retain(&has_component);
+                components.retain(&has_component);
+            }
+
             pkg.target.insert(host.to_string(), Target {
                 available: true,
                 url: Some(self.url(&filename)),