Add manifest docs fallback.
This commit is contained in:
parent
a34c079752
commit
3c0fb7f36d
@ -155,17 +155,19 @@ static TARGETS: &[&str] = &[
|
|||||||
"x86_64-unknown-hermit",
|
"x86_64-unknown-hermit",
|
||||||
];
|
];
|
||||||
|
|
||||||
static DOCS_TARGETS: &[&str] = &[
|
/// This allows the manifest to contain rust-docs for hosts that don't build
|
||||||
"aarch64-unknown-linux-gnu",
|
/// docs.
|
||||||
"i686-apple-darwin",
|
///
|
||||||
"i686-pc-windows-gnu",
|
/// Tuples of `(host_partial, host_instead)`. If the host does not have the
|
||||||
"i686-pc-windows-msvc",
|
/// rust-docs component available, then if the host name contains
|
||||||
"i686-unknown-linux-gnu",
|
/// `host_partial`, it will use the docs from `host_instead` instead.
|
||||||
"x86_64-apple-darwin",
|
///
|
||||||
"x86_64-pc-windows-gnu",
|
/// The order here matters, more specific entries should be first.
|
||||||
"x86_64-pc-windows-msvc",
|
static DOCS_FALLBACK: &[(&str, &str)] = &[
|
||||||
"x86_64-unknown-linux-gnu",
|
("-apple-", "x86_64-apple-darwin"),
|
||||||
"x86_64-unknown-linux-musl",
|
("aarch64", "aarch64-unknown-linux-gnu"),
|
||||||
|
("arm-", "aarch64-unknown-linux-gnu"),
|
||||||
|
("", "x86_64-unknown-linux-gnu"),
|
||||||
];
|
];
|
||||||
|
|
||||||
static MSI_INSTALLERS: &[&str] = &[
|
static MSI_INSTALLERS: &[&str] = &[
|
||||||
@ -301,23 +303,27 @@ impl Builder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn add_packages_to(&mut self, manifest: &mut Manifest) {
|
fn add_packages_to(&mut self, manifest: &mut Manifest) {
|
||||||
let mut package = |name, targets| self.package(name, &mut manifest.pkg, targets);
|
macro_rules! package {
|
||||||
package("rustc", HOSTS);
|
($name:expr, $targets:expr) => {
|
||||||
package("rustc-dev", HOSTS);
|
self.package($name, &mut manifest.pkg, $targets, &[])
|
||||||
package("reproducible-artifacts", HOSTS);
|
};
|
||||||
package("rustc-docs", HOSTS);
|
}
|
||||||
package("cargo", HOSTS);
|
package!("rustc", HOSTS);
|
||||||
package("rust-mingw", MINGW);
|
package!("rustc-dev", HOSTS);
|
||||||
package("rust-std", TARGETS);
|
package!("reproducible-artifacts", HOSTS);
|
||||||
package("rust-docs", DOCS_TARGETS);
|
package!("rustc-docs", HOSTS);
|
||||||
package("rust-src", &["*"]);
|
package!("cargo", HOSTS);
|
||||||
package("rls-preview", HOSTS);
|
package!("rust-mingw", MINGW);
|
||||||
package("rust-analyzer-preview", HOSTS);
|
package!("rust-std", TARGETS);
|
||||||
package("clippy-preview", HOSTS);
|
self.package("rust-docs", &mut manifest.pkg, HOSTS, DOCS_FALLBACK);
|
||||||
package("miri-preview", HOSTS);
|
package!("rust-src", &["*"]);
|
||||||
package("rustfmt-preview", HOSTS);
|
package!("rls-preview", HOSTS);
|
||||||
package("rust-analysis", TARGETS);
|
package!("rust-analyzer-preview", HOSTS);
|
||||||
package("llvm-tools-preview", TARGETS);
|
package!("clippy-preview", HOSTS);
|
||||||
|
package!("miri-preview", HOSTS);
|
||||||
|
package!("rustfmt-preview", HOSTS);
|
||||||
|
package!("rust-analysis", TARGETS);
|
||||||
|
package!("llvm-tools-preview", TARGETS);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_artifacts_to(&mut self, manifest: &mut Manifest) {
|
fn add_artifacts_to(&mut self, manifest: &mut Manifest) {
|
||||||
@ -500,7 +506,13 @@ impl Builder {
|
|||||||
.extend(pkgs.iter().map(|s| (*s).to_owned()));
|
.extend(pkgs.iter().map(|s| (*s).to_owned()));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn package(&mut self, pkgname: &str, dst: &mut BTreeMap<String, Package>, targets: &[&str]) {
|
fn package(
|
||||||
|
&mut self,
|
||||||
|
pkgname: &str,
|
||||||
|
dst: &mut BTreeMap<String, Package>,
|
||||||
|
targets: &[&str],
|
||||||
|
fallback: &[(&str, &str)],
|
||||||
|
) {
|
||||||
let version_info = self
|
let version_info = self
|
||||||
.versions
|
.versions
|
||||||
.version(&PkgType::from_component(pkgname))
|
.version(&PkgType::from_component(pkgname))
|
||||||
@ -512,16 +524,29 @@ impl Builder {
|
|||||||
is_present = false; // Pretend the component is entirely missing.
|
is_present = false; // Pretend the component is entirely missing.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! tarball_name {
|
||||||
|
($target_name:expr) => {
|
||||||
|
self.versions.tarball_name(&PkgType::from_component(pkgname), $target_name).unwrap()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let mut target_from_compressed_tar = |target_name| {
|
||||||
|
let target = Target::from_compressed_tar(self, &tarball_name!(target_name));
|
||||||
|
if target.available {
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
for (substr, fallback_target) in fallback {
|
||||||
|
if target_name.contains(substr) {
|
||||||
|
return Target::from_compressed_tar(self, &tarball_name!(fallback_target));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Target::unavailable()
|
||||||
|
};
|
||||||
|
|
||||||
let targets = targets
|
let targets = targets
|
||||||
.iter()
|
.iter()
|
||||||
.map(|name| {
|
.map(|name| {
|
||||||
let target = if is_present {
|
let target = if is_present {
|
||||||
let filename = self
|
target_from_compressed_tar(name)
|
||||||
.versions
|
|
||||||
.tarball_name(&PkgType::from_component(pkgname), name)
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
Target::from_compressed_tar(self, &filename)
|
|
||||||
} else {
|
} else {
|
||||||
// If the component is not present for this build add it anyway but mark it as
|
// If the component is not present for this build add it anyway but mark it as
|
||||||
// unavailable -- this way rustup won't allow upgrades without --force
|
// unavailable -- this way rustup won't allow upgrades without --force
|
||||||
|
@ -169,7 +169,7 @@ impl Versions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn archive_name(
|
pub(crate) fn archive_name(
|
||||||
&mut self,
|
&self,
|
||||||
package: &PkgType,
|
package: &PkgType,
|
||||||
target: &str,
|
target: &str,
|
||||||
extension: &str,
|
extension: &str,
|
||||||
@ -189,11 +189,7 @@ impl Versions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn tarball_name(
|
pub(crate) fn tarball_name(&self, package: &PkgType, target: &str) -> Result<String, Error> {
|
||||||
&mut self,
|
|
||||||
package: &PkgType,
|
|
||||||
target: &str,
|
|
||||||
) -> Result<String, Error> {
|
|
||||||
self.archive_name(package, target, "tar.gz")
|
self.archive_name(package, target, "tar.gz")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user