mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-06-14 20:21:07 +00:00
revive llvm builder utility (#154)
Pre-eliminary support for LLVM releases and resolc binary releases by streamlining the build process for all supported hosts platforms. - Introduce the revive-llvm-builder crate with the revive-llvm builder utilty. - Do not rely on the LLVM dependency in $PATH to decouple the system LLVM installation from the LLVM host dependency. - Fix the emscripten build by decoupling the host and native LLVM dependencies. Thus allowing a single LLVM emscripten release that can be used on any host platform. - An example Dockerfile building an alpine container with a fully statically linked resolc ELF binary. - Remove the Debian builder utilities and workflow.
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
//! The revive LLVM builder lock file.
|
||||
|
||||
use anyhow::Context;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
|
||||
/// The default lock file location.
|
||||
pub const LLVM_LOCK_DEFAULT_PATH: &str = "LLVM.lock";
|
||||
|
||||
/// The lock file data.
|
||||
///
|
||||
/// This file describes the exact reference of the LLVM framework.
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
pub struct Lock {
|
||||
/// The LLVM repository URL.
|
||||
pub url: String,
|
||||
/// The LLVM repository branch.
|
||||
pub branch: String,
|
||||
/// The LLVM repository commit reference.
|
||||
pub r#ref: Option<String>,
|
||||
}
|
||||
|
||||
impl TryFrom<&PathBuf> for Lock {
|
||||
type Error = anyhow::Error;
|
||||
|
||||
fn try_from(path: &PathBuf) -> Result<Self, Self::Error> {
|
||||
let mut config_str = String::new();
|
||||
let mut config_file =
|
||||
File::open(path).with_context(|| format!("Error opening {:?} file", path))?;
|
||||
config_file.read_to_string(&mut config_str)?;
|
||||
Ok(toml::from_str(&config_str)?)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user