From 9a7f65b4580726875a415d4006951bdfba092315 Mon Sep 17 00:00:00 2001 From: han0110 Date: Fri, 5 Jun 2026 04:09:47 +0000 Subject: [PATCH 1/5] fix: avoid set env GITHUB_TOKEN if secrete not mounted --- docker/risc0/Dockerfile.base | 5 ++++- docker/sp1/Dockerfile.base | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docker/risc0/Dockerfile.base b/docker/risc0/Dockerfile.base index 313325e1..150c9984 100644 --- a/docker/risc0/Dockerfile.base +++ b/docker/risc0/Dockerfile.base @@ -26,7 +26,10 @@ ENV RISC0_VERSION="3.0.5" \ # Run the Risc0 SDK installation script with secret mount # It will use the RISC0_VERSION, RISC0_CPP_VERSION and RISC0_RUST_VERSION defined above. -RUN --mount=type=secret,id=github_token,env=GITHUB_TOKEN \ +RUN --mount=type=secret,id=github_token \ + if [ -s /run/secrets/github_token ]; then \ + export GITHUB_TOKEN="$(cat /run/secrets/github_token)"; \ + fi && \ /tmp/install_risc0_sdk.sh && rm /tmp/install_risc0_sdk.sh # Verify Risc0 installation (script also does this, but good for Dockerfile sanity) diff --git a/docker/sp1/Dockerfile.base b/docker/sp1/Dockerfile.base index 6a97d3c8..fe95f16f 100644 --- a/docker/sp1/Dockerfile.base +++ b/docker/sp1/Dockerfile.base @@ -21,7 +21,10 @@ ENV SP1_DIR="/root/.sp1" \ # Run the SP1 SDK installation script with secret mount # It will use the SP1_DIR and SP1_VERSION defined above. -RUN --mount=type=secret,id=github_token,env=GITHUB_TOKEN \ +RUN --mount=type=secret,id=github_token \ + if [ -s /run/secrets/github_token ]; then \ + export GITHUB_TOKEN="$(cat /run/secrets/github_token)"; \ + fi && \ /tmp/install_sp1_sdk.sh && rm /tmp/install_sp1_sdk.sh # Update the image's persistent PATH to include SP1 binaries. From b36b4c7dc860fe3434126d2026a8d517a9fcff6a Mon Sep 17 00:00:00 2001 From: han0110 Date: Fri, 5 Jun 2026 04:10:00 +0000 Subject: [PATCH 2/5] fix: copy sp1-gpu-server for ere-server-sp1 --- docker/sp1/Dockerfile.server | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docker/sp1/Dockerfile.server b/docker/sp1/Dockerfile.server index b1839d16..f34c0b01 100644 --- a/docker/sp1/Dockerfile.server +++ b/docker/sp1/Dockerfile.server @@ -22,6 +22,12 @@ FROM $RUNTIME_IMAGE AS runtime FROM $RUNTIME_CUDA_IMAGE AS runtime_cuda FROM runtime${CUDA:+_cuda} AS runtime_stage +# Copy SP1 GPU server +COPY --from=build_stage /root/.sp1/bin/sp1-gpu-server /root/.sp1/bin/sp1-gpu-server + +# Add SP1 GPU server to path +ENV PATH=/root/.sp1/bin:$PATH + # Copy ere-server COPY --from=build_stage /ere/bin/ere-server /ere/bin/ere-server From 2d3cdaf7e887b6e58a39c8c7cf597e2212e35ebc Mon Sep 17 00:00:00 2001 From: han0110 Date: Fri, 5 Jun 2026 04:10:25 +0000 Subject: [PATCH 3/5] chore: sync sp1 guest cargo.lock --- tests/sp1/basic/Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/sp1/basic/Cargo.lock b/tests/sp1/basic/Cargo.lock index ee2b11cb..a87f7eed 100644 --- a/tests/sp1/basic/Cargo.lock +++ b/tests/sp1/basic/Cargo.lock @@ -363,15 +363,15 @@ dependencies = [ [[package]] name = "ere-codec" -version = "0.10.0" +version = "0.11.0" [[package]] name = "ere-platform-core" -version = "0.10.0" +version = "0.11.0" [[package]] name = "ere-platform-sp1" -version = "0.10.0" +version = "0.11.0" dependencies = [ "ere-platform-core", "sp1-zkvm", @@ -387,7 +387,7 @@ dependencies = [ [[package]] name = "ere-util-test" -version = "0.10.0" +version = "0.11.0" dependencies = [ "bincode 2.0.1", "ciborium", From f2519940693a510e0292981a13c22456dbf021d1 Mon Sep 17 00:00:00 2001 From: han0110 Date: Fri, 5 Jun 2026 08:15:13 +0000 Subject: [PATCH 4/5] fix --- docker/sp1/Dockerfile.base | 3 +++ docker/sp1/Dockerfile.server | 7 ++----- scripts/sdk_installers/install_sp1_sdk.sh | 10 ++++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docker/sp1/Dockerfile.base b/docker/sp1/Dockerfile.base index fe95f16f..ad99df2b 100644 --- a/docker/sp1/Dockerfile.base +++ b/docker/sp1/Dockerfile.base @@ -2,6 +2,9 @@ ARG BASE_IMAGE=ere-base:latest FROM $BASE_IMAGE +# Whether to enable CUDA feature or not. +ARG CUDA + # Install the well known proto files. RUN apt-get update && apt-get install -y --no-install-recommends \ libprotobuf-dev \ diff --git a/docker/sp1/Dockerfile.server b/docker/sp1/Dockerfile.server index f34c0b01..ed3b6b52 100644 --- a/docker/sp1/Dockerfile.server +++ b/docker/sp1/Dockerfile.server @@ -22,11 +22,8 @@ FROM $RUNTIME_IMAGE AS runtime FROM $RUNTIME_CUDA_IMAGE AS runtime_cuda FROM runtime${CUDA:+_cuda} AS runtime_stage -# Copy SP1 GPU server -COPY --from=build_stage /root/.sp1/bin/sp1-gpu-server /root/.sp1/bin/sp1-gpu-server - -# Add SP1 GPU server to path -ENV PATH=/root/.sp1/bin:$PATH +# Copy SP1 SDK +COPY --from=build_stage /root/.sp1/bin /root/.sp1/bin # Copy ere-server COPY --from=build_stage /ere/bin/ere-server /ere/bin/ere-server diff --git a/scripts/sdk_installers/install_sp1_sdk.sh b/scripts/sdk_installers/install_sp1_sdk.sh index 0a563c96..f54b5685 100755 --- a/scripts/sdk_installers/install_sp1_sdk.sh +++ b/scripts/sdk_installers/install_sp1_sdk.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -e # Exit immediately if a command exits with a non-zero status. +set -eo pipefail echo "Installing Succinct SP1 Toolchain..." @@ -52,6 +52,8 @@ echo " export PATH=\"${SP1_DIR}/bin:\$PATH\"" echo "Then source your profile or open a new terminal." # Download CUDA prover (supports CUDA compute capabilities 80, 86, 89, 90, 100, 120) -mkdir -p $HOME/.sp1/bin && \ - curl -L "https://github.com/succinctlabs/sp1/releases/download/${SP1_VERSION}/sp1_gpu_server_${SP1_VERSION}_x86_64.tar.gz" | \ - tar -xzf - -C $HOME/.sp1/bin +if [ -n "$CUDA" ]; then + mkdir -p $HOME/.sp1/bin && \ + curl -fL "https://github.com/succinctlabs/sp1/releases/download/${SP1_VERSION}/sp1_gpu_server_${SP1_VERSION}_x86_64.tar.gz" | \ + tar -xzf - -C $HOME/.sp1/bin +fi From 25e40cf0e6bc0016f73ca15b7eabf18b143bbc7f Mon Sep 17 00:00:00 2001 From: han0110 Date: Fri, 5 Jun 2026 11:06:12 +0000 Subject: [PATCH 5/5] fix: tweak zisk client --- crates/cluster-client/zisk/src/client.rs | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/crates/cluster-client/zisk/src/client.rs b/crates/cluster-client/zisk/src/client.rs index cf5cc2d6..496adb2f 100644 --- a/crates/cluster-client/zisk/src/client.rs +++ b/crates/cluster-client/zisk/src/client.rs @@ -118,20 +118,19 @@ impl ZiskClusterClient { let req = JobRequestMessage { job_kind: Some(job.clone()), }; - let status = match client.job_request(req).await { - Ok(res) => return Ok::<_, Error>(res.into_inner().job_id), + match client.job_request(req).await { + Ok(res) => return Ok(res.into_inner().job_id), + Err(status) if status.message().contains("setup not done") => { + setup(&mut client, self.elf.clone()).await?; + } + Err(status) if matches!(status.code(), Code::Unavailable | Code::Internal) => { + warn!(?status, "job submission failed, retrying..."); + sleep(Duration::from_secs(5)).await; + } Err(status) => { - if status.code() == Code::Unavailable - && status.message().contains("setup not done") - { - setup(&mut client, self.elf.clone()).await?; - continue; - } - status + return Err(Error::Grpc(status)); } }; - warn!(?status, "job submission failed, retrying..."); - sleep(Duration::from_secs(5)).await; } };