mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-04-22 16:08:00 +00:00
Build LLVM for Windows (#248)
This PR changes the CI build scripts to also build LLVM for windows. **It doesn't build `revive` itself for windows**. This will come in a follow up. But once we have a LLVM binary release the turn around time will be much quicker for experimenting with the revive windows build. I manually uploaded the release those changes produce [here](https://github.com/paritytech/revive-alex-workflowtest/releases/tag/llvm-18.1.8-revive.22f3ceb). This enables this PR's CI to find the proper release. This is necessary because I am also making changes to the folder structure and artifact naming that the other CI jobs are depending on. Releases generated from this branch can be inspected here: https://github.com/paritytech/revive-alex-workflowtest/releases/tag/v0.1.0-dev.12 Summary of changes: - Change `llvm-builder` to use MSVC toolchain on windows - Fix `llvm-builder` to work with `.exe` files - Unify the llvm release jobs into a single one. This removed a lot of copy pasted code and also speeds up the build by giving each their own runner. - Use the LLVM target triple to name the binary releases instead of an ad-hoc naming convention - Remove the nested folder hierarchy inside the llvm release. Its just now a single folder `llvm-<target>` that contains the toolchain. - Give jobs and workflows consistent names - Replace all runners bei their `*-latest` counterpart - Only use `parity-large` to build llvm now. All other jobs use github runners
This commit is contained in:
committed by
GitHub
parent
93788e72e9
commit
2fb8beee62
@@ -7,6 +7,7 @@ use std::process::Command;
|
||||
use std::process::Stdio;
|
||||
use std::time::Duration;
|
||||
|
||||
use anyhow::Context;
|
||||
use path_slash::PathBufExt;
|
||||
|
||||
/// The LLVM host repository URL.
|
||||
@@ -131,11 +132,8 @@ pub fn path_windows_to_unix<P: AsRef<Path> + PathBufExt>(path: P) -> anyhow::Res
|
||||
|
||||
/// Checks if the tool exists in the system.
|
||||
pub fn check_presence(name: &str) -> anyhow::Result<()> {
|
||||
let description = &format!("checking the `{name}` executable");
|
||||
log::info!("{description}");
|
||||
|
||||
command(Command::new("which").arg(name), description)
|
||||
.map_err(|_| anyhow::anyhow!("Tool `{}` is missing. Please install", name))
|
||||
which::which(name).with_context(|| format!("Tool `{name}` is missing. Please install"))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Identify XCode version using `pkgutil`.
|
||||
|
||||
Reference in New Issue
Block a user