From 387214612b0791a670fbbbb9b5f091f3e8b1222e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabor=20K=C3=B6rber?= Date: Tue, 22 Sep 2026 11:07:55 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=B0=EF=B8=8F=20export=20from=20upstrea?= =?UTF-8?q?m=20(a18006f)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/sandcage/src/docker.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/crates/sandcage/src/docker.rs b/crates/sandcage/src/docker.rs index 9525e48..d011d9b 100644 --- a/crates/sandcage/src/docker.rs +++ b/crates/sandcage/src/docker.rs @@ -879,6 +879,11 @@ async fn run_docker_build( let mut cmd = Command::new(docker); cmd.args(["build", "-t", &format!("{image}:latest")]); + let uid = id_flag("-u").await.unwrap_or_else(|_| "1000".into()); + let gid = id_flag("-g").await.unwrap_or_else(|_| "1000".into()); + cmd.args(["--build-arg", &format!("SANDCAGE_UID={uid}")]); + cmd.args(["--build-arg", &format!("SANDCAGE_GID={gid}")]); + if no_cache { cmd.arg("--no-cache"); } @@ -1000,15 +1005,20 @@ pub async fn build_images(force: bool, service_filter: &[String]) -> Result<()> let hashes_path = build_hashes_path()?; let mut stored = read_stored_hashes(&hashes_path)?; + let uid = id_flag("-u").await.unwrap_or_else(|_| "1000".into()); + let gid = id_flag("-g").await.unwrap_or_else(|_| "1000".into()); + let uid_suffix = format!("\n# uid={uid} gid={gid}"); + for (image, bundled_dockerfile) in images { let short_name = image.strip_prefix("sandcage-").unwrap_or(image); let override_path = overrides.get(short_name); - let current_hash = if let Some(path) = override_path { - sha256_hex(&read_dockerfile_at(path)?) + let dockerfile_content = if let Some(path) = override_path { + read_dockerfile_at(path)? } else { - sha256_hex(bundled_dockerfile) + bundled_dockerfile.to_string() }; + let current_hash = sha256_hex(&format!("{dockerfile_content}{uid_suffix}")); let needs_build = force || stored.get(image) != Some(¤t_hash);