From 513fc80bbd3b13eddc20b4822ed25b05d7f55194 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Sat, 24 Sep 2022 12:51:18 -0500 Subject: [PATCH 1/2] Package `rust-docs-json` into nightly components (take 3) `dist` creates a `rust-docs-json.tar.xz` tarfile. But build-manifest expected it to be named `rust-docs-json-preview.tar.xz`. Change build-manifest to allow the name without the `-preview` suffix. This also adds `rust-docs-json` to the `rust` component. I'm not quite sure why it exists, but rustup uses it to determine which components are available. --- src/bootstrap/dist.rs | 1 + src/tools/build-manifest/src/main.rs | 2 +- src/tools/build-manifest/src/versions.rs | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index 563e67a326f19..a9a9be9950f11 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -1365,6 +1365,7 @@ impl Step for Extended { } add_component!("rust-docs" => Docs { host: target }); + add_component!("rust-json-docs" => JsonDocs { host: target }); add_component!("rust-demangler"=> RustDemangler { compiler, target }); add_component!("cargo" => Cargo { compiler, target }); add_component!("rustfmt" => Rustfmt { compiler, target }); diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index 14311cff5c8c5..1ea07e9fefb74 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -437,7 +437,7 @@ impl Builder { host_component("rustfmt-preview"), host_component("llvm-tools-preview"), host_component("rust-analysis"), - host_component("rust-docs-json"), + host_component("rust-docs-json-preview"), ]); extensions.extend( diff --git a/src/tools/build-manifest/src/versions.rs b/src/tools/build-manifest/src/versions.rs index 92ef9968fe525..4da62fa67b408 100644 --- a/src/tools/build-manifest/src/versions.rs +++ b/src/tools/build-manifest/src/versions.rs @@ -20,6 +20,7 @@ pub(crate) enum PkgType { Rustfmt, LlvmTools, Miri, + JsonDocs, Other(String), } @@ -36,6 +37,7 @@ impl PkgType { "rustfmt" | "rustfmt-preview" => PkgType::Rustfmt, "llvm-tools" | "llvm-tools-preview" => PkgType::LlvmTools, "miri" | "miri-preview" => PkgType::Miri, + "rust-docs-json" | "rust-docs-json-preview" => PkgType::JsonDocs, other => PkgType::Other(other.into()), } } @@ -53,6 +55,7 @@ impl PkgType { PkgType::Rustfmt => "rustfmt", PkgType::LlvmTools => "llvm-tools", PkgType::Miri => "miri", + PkgType::JsonDocs => "rust-docs-json", PkgType::Other(component) => component, } } @@ -72,6 +75,7 @@ impl PkgType { PkgType::Rust => true, PkgType::RustSrc => true, PkgType::Rustc => true, + PkgType::JsonDocs => true, PkgType::Other(_) => true, } } From d44e14225ab00e164aa9ea9e8d9e1bee40f96b3e Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Sat, 1 Oct 2022 15:38:27 -0500 Subject: [PATCH 2/2] Give better errors when build-manifest fails --- src/tools/build-manifest/src/main.rs | 8 +++++++- src/tools/build-manifest/src/versions.rs | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index 1ea07e9fefb74..b0006cb90bdd6 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -193,6 +193,12 @@ macro_rules! t { Err(e) => panic!("{} failed with {}", stringify!($e), e), } }; + ($e:expr, $extra:expr) => { + match $e { + Ok(e) => e, + Err(e) => panic!("{} failed with {}: {}", stringify!($e), e, $extra), + } + }; } struct Builder { @@ -584,7 +590,7 @@ impl Builder { self.shipped_files.insert(name.clone()); let dst = self.output.join(name); - t!(fs::write(&dst, contents)); + t!(fs::write(&dst, contents), format!("failed to create manifest {}", dst.display())); } fn write_shipped_files(&self, path: &Path) { diff --git a/src/tools/build-manifest/src/versions.rs b/src/tools/build-manifest/src/versions.rs index 4da62fa67b408..0186194a41f55 100644 --- a/src/tools/build-manifest/src/versions.rs +++ b/src/tools/build-manifest/src/versions.rs @@ -117,6 +117,9 @@ impl Versions { Some(version) => Ok(version.clone()), None => { let version_info = self.load_version_from_tarball(package)?; + if *package == PkgType::Rust && version_info.version.is_none() { + panic!("missing version info for toolchain"); + } self.versions.insert(package.clone(), version_info.clone()); Ok(version_info) } @@ -131,6 +134,7 @@ impl Versions { Ok(file) => file, Err(err) if err.kind() == std::io::ErrorKind::NotFound => { // Missing tarballs do not return an error, but return empty data. + println!("warning: missing tarball {}", tarball.display()); return Ok(VersionInfo::default()); } Err(err) => return Err(err.into()),