Warn about assets being stripped if strip is true and the current package depends on manganis (#4400)
* warn if we both find manganis in the dependencies and strip is enabled in the current profile * bump node --------- Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
This commit is contained in:
1 parent
9bfde632f9
commit
b9b847c3f8
1 file changed
+47
@@ -593,6 +593,15 @@ impl BuildRequest {
|
|||||||
None => platform.profile_name(args.release),
|
None => platform.profile_name(args.release),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Warn if the user is trying to build with strip and using manganis
|
||||||
|
Self::warn_manganis_strip(
|
||||||
|
&workspace.krates,
|
||||||
|
&workspace.cargo_toml,
|
||||||
|
main_package,
|
||||||
|
&profile,
|
||||||
|
args.release,
|
||||||
|
);
|
||||||
|
|
||||||
// Determining release mode is based on the profile, actually, so we need to check that
|
// Determining release mode is based on the profile, actually, so we need to check that
|
||||||
let release = workspace.is_release_profile(&profile);
|
let release = workspace.is_release_profile(&profile);
|
||||||
|
|
||||||
@@ -3126,6 +3135,44 @@ impl BuildRequest {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return the platforms that are enabled for the package
|
||||||
|
///
|
||||||
|
/// Ideally only one platform is enabled but we need to be able to
|
||||||
|
pub(crate) fn warn_manganis_strip(
|
||||||
|
krates: &krates::Krates,
|
||||||
|
cargo_toml: &cargo_toml::Manifest,
|
||||||
|
main_package: &krates::cm::Package,
|
||||||
|
profile: &str,
|
||||||
|
release: bool,
|
||||||
|
) {
|
||||||
|
let Some(id) = krates.nid_for_kid(&main_package.id.clone().into()) else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
let dependencies = krates.direct_dependencies(id);
|
||||||
|
if !dependencies.iter().any(|dep| dep.krate.name == "manganis") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let (profile_name, profile) = match (cargo_toml.profile.custom.get(profile), release) {
|
||||||
|
(Some(custom_profile), _) => (profile, Some(custom_profile)),
|
||||||
|
(_, true) => ("release", cargo_toml.profile.release.as_ref()),
|
||||||
|
(_, false) => ("dev", cargo_toml.profile.dev.as_ref()),
|
||||||
|
};
|
||||||
|
|
||||||
|
let Some(profile) = profile else { return };
|
||||||
|
|
||||||
|
let Some(strip) = profile.strip.as_ref() else {
|
||||||
|
// If the profile doesn't have a strip option, we don't need to warn
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
if matches!(strip, cargo_toml::StripSetting::Symbols) {
|
||||||
|
tracing::warn!(
|
||||||
|
"The `strip` option is enabled in the `{profile_name}` profile. This may cause manganis assets to be stripped from the final binary.",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Return the platforms that are enabled for the package
|
/// Return the platforms that are enabled for the package
|
||||||
///
|
///
|
||||||
/// Ideally only one platform is enabled but we need to be able to
|
/// Ideally only one platform is enabled but we need to be able to
|
||||||
|
|||||||
Reference in new issue
Block a user