Auto merge of #123788 - bjorn3:disable_ctrlc_on_wasi, r=Nilstrieb,lcnr
Disable Ctrl-C handling on WASM WASM fundamentally doesn't support signals. If WASI ever gets support for notifying the guest process of a Ctrl-C that happened, this would have to be done through the guest process polling for the signal, which will require thread support in WASI too to be compatible with the api provided by the ctrlc crate.
This commit is contained in:
commit
72fe8a0f00
@ -5,7 +5,6 @@ edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
# tidy-alphabetical-start
|
||||
ctrlc = "3.4.4"
|
||||
rustc_ast = { path = "../rustc_ast" }
|
||||
rustc_ast_lowering = { path = "../rustc_ast_lowering" }
|
||||
rustc_ast_passes = { path = "../rustc_ast_passes" }
|
||||
@ -66,6 +65,11 @@ features = [
|
||||
"Win32_System_Diagnostics_Debug",
|
||||
]
|
||||
|
||||
[target.'cfg(not(target_family = "wasm"))'.dependencies]
|
||||
# tidy-alphabetical-start
|
||||
ctrlc = "3.4.4"
|
||||
# tidy-alphabetical-end
|
||||
|
||||
[features]
|
||||
# tidy-alphabetical-start
|
||||
llvm = ['rustc_interface/llvm']
|
||||
|
@ -1500,6 +1500,7 @@ pub fn init_logger(early_dcx: &EarlyDiagCtxt, cfg: rustc_log::LoggerConfig) {
|
||||
/// Install our usual `ctrlc` handler, which sets [`rustc_const_eval::CTRL_C_RECEIVED`].
|
||||
/// Making this handler optional lets tools can install a different handler, if they wish.
|
||||
pub fn install_ctrlc_handler() {
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
ctrlc::set_handler(move || {
|
||||
// Indicate that we have been signaled to stop. If we were already signaled, exit
|
||||
// immediately. In our interpreter loop we try to consult this value often, but if for
|
||||
|
@ -1,6 +1,6 @@
|
||||
//! Checks the licenses of third-party dependencies.
|
||||
|
||||
use cargo_metadata::{DepKindInfo, Metadata, Package, PackageId};
|
||||
use cargo_metadata::{Metadata, Package, PackageId};
|
||||
use std::collections::HashSet;
|
||||
use std::path::Path;
|
||||
|
||||
@ -191,6 +191,7 @@
|
||||
/// rustc. Please check with the compiler team before adding an entry.
|
||||
const PERMITTED_RUSTC_DEPENDENCIES: &[&str] = &[
|
||||
// tidy-alphabetical-start
|
||||
"addr2line",
|
||||
"adler",
|
||||
"ahash",
|
||||
"aho-corasick",
|
||||
@ -468,6 +469,7 @@
|
||||
"mach",
|
||||
"memchr",
|
||||
"object",
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"regalloc2",
|
||||
@ -668,27 +670,7 @@ fn check_permitted_dependencies(
|
||||
let mut deps = HashSet::new();
|
||||
for to_check in restricted_dependency_crates {
|
||||
let to_check = pkg_from_name(metadata, to_check);
|
||||
use cargo_platform::Cfg;
|
||||
use std::str::FromStr;
|
||||
// We don't expect the compiler to ever run on wasm32, so strip
|
||||
// out those dependencies to avoid polluting the permitted list.
|
||||
deps_of_filtered(metadata, &to_check.id, &mut deps, &|dep_kinds| {
|
||||
dep_kinds.iter().any(|dep_kind| {
|
||||
dep_kind
|
||||
.target
|
||||
.as_ref()
|
||||
.map(|target| {
|
||||
!target.matches(
|
||||
"wasm32-unknown-unknown",
|
||||
&[
|
||||
Cfg::from_str("target_arch=\"wasm32\"").unwrap(),
|
||||
Cfg::from_str("target_os=\"unknown\"").unwrap(),
|
||||
],
|
||||
)
|
||||
})
|
||||
.unwrap_or(true)
|
||||
})
|
||||
});
|
||||
deps_of(metadata, &to_check.id, &mut deps);
|
||||
}
|
||||
|
||||
// Check that the PERMITTED_DEPENDENCIES does not have unused entries.
|
||||
@ -740,18 +722,13 @@ fn compute_runtime_crates<'a>(metadata: &'a Metadata) -> HashSet<&'a PackageId>
|
||||
let mut result = HashSet::new();
|
||||
for name in RUNTIME_CRATES {
|
||||
let id = &pkg_from_name(metadata, name).id;
|
||||
deps_of_filtered(metadata, id, &mut result, &|_| true);
|
||||
deps_of(metadata, id, &mut result);
|
||||
}
|
||||
result
|
||||
}
|
||||
|
||||
/// Recursively find all dependencies.
|
||||
fn deps_of_filtered<'a>(
|
||||
metadata: &'a Metadata,
|
||||
pkg_id: &'a PackageId,
|
||||
result: &mut HashSet<&'a PackageId>,
|
||||
filter: &dyn Fn(&[DepKindInfo]) -> bool,
|
||||
) {
|
||||
fn deps_of<'a>(metadata: &'a Metadata, pkg_id: &'a PackageId, result: &mut HashSet<&'a PackageId>) {
|
||||
if !result.insert(pkg_id) {
|
||||
return;
|
||||
}
|
||||
@ -764,9 +741,6 @@ fn deps_of_filtered<'a>(
|
||||
.find(|n| &n.id == pkg_id)
|
||||
.unwrap_or_else(|| panic!("could not find `{pkg_id}` in resolve"));
|
||||
for dep in &node.deps {
|
||||
if !filter(&dep.dep_kinds) {
|
||||
continue;
|
||||
}
|
||||
deps_of_filtered(metadata, &dep.pkg, result, filter);
|
||||
deps_of(metadata, &dep.pkg, result);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user