From 4940697153473ae0ef9b0244ef9e1442df39a5f9 Mon Sep 17 00:00:00 2001 From: hosted-fornet Date: Thu, 3 Apr 2025 15:51:15 -0700 Subject: [PATCH] setup: dont bail on fake broadcast sender drop --- src/setup/mod.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/setup/mod.rs b/src/setup/mod.rs index 196544e2..0cf66ab4 100644 --- a/src/setup/mod.rs +++ b/src/setup/mod.rs @@ -204,7 +204,7 @@ fn call_with_nvm(arg: &str, verbose: bool) -> Result<()> { #[instrument(level = "trace", skip_all)] fn call_rustup(arg: &str, verbose: bool) -> Result<()> { run_command( - Command::new("bash").args(&["-c", &format!("rustup {}", arg)]), + Command::new("bash").args(&["-c", &format!("rustup +stable {}", arg)]), verbose, )?; Ok(()) @@ -453,7 +453,18 @@ pub async fn get_deps( // Process the response let response = tokio::select! { Some(response) = receiver.recv() => response, - _ = recv_kill.recv() => return Err(eyre!("got exit code")), + k = recv_kill.recv() => { + match k { + Err(tokio::sync::broadcast::error::RecvError::Closed) => { + // some systems drop the fake sender produced in build/mod.rs:57 + // make_fake_kill_chan() and so we handle this by ignoring the + // Closed message that comes through + // https://docs.rs/tokio/latest/tokio/sync/broadcast/struct.Receiver.html#method.recv + receiver.recv().await.unwrap() + } + _ => return Err(eyre!("got exit code")), + } + } }; let response = response.trim().to_lowercase(); match response.as_str() {