Skip to content

Commit

Permalink
Add a hard coded fallback download url for msvc sysroot
Browse files Browse the repository at this point in the history
  • Loading branch information
messense committed Dec 21, 2024
1 parent e5d2f66 commit 5370208
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions src/compiler/clang.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ use crate::common::{

const MSVC_SYSROOT_REPOSITORY: &str = "trcrsired/windows-msvc-sysroot";
const MSVC_SYSROOT_ASSET_NAME: &str = "windows-msvc-sysroot.tar.xz";
const FALLBACK_DOWNLOAD_URL: &str = "https://github.com/trcrsired/windows-msvc-sysroot/releases/download/20241217/windows-msvc-sysroot.tar.xz";

#[derive(Debug)]
pub struct Clang<'a> {
Expand Down Expand Up @@ -159,15 +160,23 @@ impl<'a> Clang<'a> {
}

let agent = http_agent()?;
let gh_token = env::var("GITHUB_TOKEN").ok();
// fetch release info to get download url
let download_url = self
.get_latest_msvc_sysroot_download_url(agent.clone())
.unwrap_or_else(|_| FALLBACK_DOWNLOAD_URL.to_string());
self.download_msvc_sysroot(&cache_dir, agent, &download_url)
.context("Failed to unpack msvc sysroot")?;
Ok(msvc_sysroot_dir)
}

fn get_latest_msvc_sysroot_download_url(&self, agent: ureq::Agent) -> Result<String> {
let mut request = agent
.get(&format!(
"https://api.github.com/repos/{}/releases/latest",
MSVC_SYSROOT_REPOSITORY
))
.set("X-GitHub-Api-Version", "2022-11-28");
if let Some(token) = &gh_token {
if let Ok(token) = env::var("GITHUB_TOKEN") {
request = request.set("Authorization", &format!("Bearer {token}"));
}
let response = request.call().context("Failed to get GitHub release")?;
Expand All @@ -181,10 +190,8 @@ impl<'a> Clang<'a> {
.with_context(|| {
format!("Failed to find {MSVC_SYSROOT_ASSET_NAME} in GitHub release")
})?;
let download_url = &asset.browser_download_url;
self.download_msvc_sysroot(&cache_dir, agent, download_url)
.context("Failed to unpack msvc sysroot")?;
Ok(msvc_sysroot_dir)
let download_url = asset.browser_download_url.clone();
Ok(download_url)
}

fn download_msvc_sysroot(
Expand Down

0 comments on commit 5370208

Please sign in to comment.