mirror of
https://github.com/eth-act/ere.git
synced 2026-04-03 03:00:17 -04:00
Refactor platform impls a bit (#261)
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
use crate::{
|
||||
CompilerKind,
|
||||
image::{base_image, base_zkvm_image, compiler_zkvm_image},
|
||||
image::{base_image, base_zkvm_image, compiler_zkvm_image, image_registry},
|
||||
util::{
|
||||
docker::{DockerBuildCmd, DockerRunCmd, docker_image_exists, force_rebuild},
|
||||
docker::{
|
||||
DockerBuildCmd, DockerRunCmd, docker_image_exists, docker_pull_image, force_rebuild,
|
||||
},
|
||||
workspace_dir,
|
||||
},
|
||||
zkVMKind,
|
||||
@@ -34,9 +36,19 @@ fn build_compiler_image(zkvm_kind: zkVMKind) -> Result<(), Error> {
|
||||
let base_zkvm_image = base_zkvm_image(zkvm_kind, false);
|
||||
let compiler_zkvm_image = compiler_zkvm_image(zkvm_kind);
|
||||
|
||||
if !force_rebuild && docker_image_exists(&compiler_zkvm_image)? {
|
||||
info!("Image {compiler_zkvm_image} exists, skip building");
|
||||
return Ok(());
|
||||
if !force_rebuild {
|
||||
if docker_image_exists(&compiler_zkvm_image)? {
|
||||
info!("Image {compiler_zkvm_image} exists, skip building");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
if image_registry().is_some()
|
||||
&& docker_pull_image(&compiler_zkvm_image).is_ok()
|
||||
&& docker_image_exists(&compiler_zkvm_image)?
|
||||
{
|
||||
info!("Image {compiler_zkvm_image} pulled, skip building");
|
||||
return Ok(());
|
||||
}
|
||||
}
|
||||
|
||||
let workspace_dir = workspace_dir()?;
|
||||
|
||||
@@ -281,6 +281,25 @@ pub fn docker_container_exists(container_name: impl AsRef<str>) -> Result<bool,
|
||||
Ok(stdout.trim() == container_name.as_ref())
|
||||
}
|
||||
|
||||
pub fn docker_pull_image(image: impl AsRef<str>) -> Result<(), CommonError> {
|
||||
let mut cmd = Command::new("docker");
|
||||
let output = cmd
|
||||
.args(["image", "pull", image.as_ref()])
|
||||
.stdout(Stdio::inherit())
|
||||
.output()
|
||||
.map_err(|err| CommonError::command(&cmd, err))?;
|
||||
|
||||
if !output.status.success() {
|
||||
Err(CommonError::command_exit_non_zero(
|
||||
&cmd,
|
||||
output.status,
|
||||
Some(&output),
|
||||
))?
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn docker_image_exists(image: impl AsRef<str>) -> Result<bool, CommonError> {
|
||||
let mut cmd = Command::new("docker");
|
||||
let output = cmd
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
use crate::{
|
||||
compiler::SerializedProgram,
|
||||
image::{base_image, base_zkvm_image, server_zkvm_image},
|
||||
image::{base_image, base_zkvm_image, image_registry, server_zkvm_image},
|
||||
util::{
|
||||
cuda::cuda_arch,
|
||||
docker::{
|
||||
DockerBuildCmd, DockerRunCmd, docker_container_exists, docker_image_exists,
|
||||
force_rebuild, stop_docker_container,
|
||||
docker_pull_image, force_rebuild, stop_docker_container,
|
||||
},
|
||||
home_dir, workspace_dir,
|
||||
},
|
||||
@@ -45,9 +45,19 @@ fn build_server_image(zkvm_kind: zkVMKind, gpu: bool) -> Result<(), Error> {
|
||||
let base_zkvm_image = base_zkvm_image(zkvm_kind, gpu);
|
||||
let server_zkvm_image = server_zkvm_image(zkvm_kind, gpu);
|
||||
|
||||
if !force_rebuild && docker_image_exists(&server_zkvm_image)? {
|
||||
info!("Image {server_zkvm_image} exists, skip building");
|
||||
return Ok(());
|
||||
if !force_rebuild {
|
||||
if docker_image_exists(&server_zkvm_image)? {
|
||||
info!("Image {server_zkvm_image} exists, skip building");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
if image_registry().is_some()
|
||||
&& docker_pull_image(&server_zkvm_image).is_ok()
|
||||
&& docker_image_exists(&server_zkvm_image)?
|
||||
{
|
||||
info!("Image {server_zkvm_image} pulled, skip building");
|
||||
return Ok(());
|
||||
}
|
||||
}
|
||||
|
||||
let workspace_dir = workspace_dir()?;
|
||||
|
||||
Reference in New Issue
Block a user