From 19da5b960c0cebe70b3bf6dcfa4391e320fafaf4 Mon Sep 17 00:00:00 2001 From: SFG545 Date: Sun, 22 Mar 2026 21:53:23 -0500 Subject: [PATCH] feat: update depot version to 0.31.0, enhance shell helper functions for primary staging support --- Cargo.lock | 2 +- Cargo.toml | 2 +- meson.build | 2 +- src/shell_helpers.rs | 67 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 211c4a8..1f436e3 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -418,7 +418,7 @@ checksum = "807800ff3288b621186fe0a8f3392c4652068257302709c24efd918c3dffcdc2" [[package]] name = "depot" -version = "0.30.1" +version = "0.31.0" dependencies = [ "anyhow", "ar", diff --git a/Cargo.toml b/Cargo.toml index 4578d04..6d70f30 100755 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "depot" -version = "0.30.1" +version = "0.31.0" edition = "2024" [lints.rust] diff --git a/meson.build b/meson.build index ef3684d..c5a5b85 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project( 'depot', - version: '0.30.1', + version: '0.31.0', meson_version: '>=0.60.0', default_options: ['buildtype=release'], ) diff --git a/src/shell_helpers.rs b/src/shell_helpers.rs index 4af138a..7564eb0 100644 --- a/src/shell_helpers.rs +++ b/src/shell_helpers.rs @@ -227,11 +227,15 @@ esac [ "${DEPOT_OUTPUTS_DIR:-}" != "" ] || fail "DEPOT_OUTPUTS_DIR is not set" src_root=$DESTDIR +primary_root=${DEPOT_PRIMARY_DESTDIR:-$DESTDIR} out_root=$DEPOT_OUTPUTS_DIR/$out_pkg case "$src_root" in */) src_root=${src_root%/} ;; esac +case "$primary_root" in + */) primary_root=${primary_root%/} ;; +esac case "$out_root" in */) out_root=${out_root%/} ;; esac @@ -320,6 +324,10 @@ collect_matches_for_pattern() { scan_root_for_pattern "$src_root" "$pattern" + if [ "$primary_root" != "$src_root" ]; then + scan_root_for_pattern "$primary_root" "$pattern" + fi + for candidate_root in "$DEPOT_OUTPUTS_DIR"/*; do [ -d "$candidate_root" ] || continue [ "$candidate_root" = "$out_root" ] && continue @@ -435,9 +443,21 @@ mod tests { use tempfile::tempdir; fn run_haul(helpers: &ShellHelpers, destdir: &Path, args: &[&str]) { + run_haul_with_env(helpers, destdir, &[], args); + } + + fn run_haul_with_env( + helpers: &ShellHelpers, + destdir: &Path, + extra_envs: &[(&str, &Path)], + args: &[&str], + ) { let mut envs = Vec::new(); helpers.apply_to_env_vars(&mut envs); envs.push(("DESTDIR".into(), destdir.to_string_lossy().into_owned())); + for (key, value) in extra_envs { + envs.push(((*key).into(), value.to_string_lossy().into_owned())); + } let mut cmd = Command::new("sh"); cmd.arg(&helpers.haul_path); @@ -588,4 +608,51 @@ mod tests { .exists() ); } + + #[test] + fn haul_scans_primary_staging_when_running_in_split_output_destdir() { + let temp = tempdir().unwrap(); + let primary_destdir = temp.path().join("dest"); + std::fs::create_dir_all(primary_destdir.join("usr/lib")).unwrap(); + std::fs::write( + primary_destdir.join("usr/lib/libRusticlOpenCL.so.1.0.0"), + "rusticl", + ) + .unwrap(); + std::os::unix::fs::symlink( + "libRusticlOpenCL.so.1.0.0", + primary_destdir.join("usr/lib/libRusticlOpenCL.so.1"), + ) + .unwrap(); + std::os::unix::fs::symlink( + "libRusticlOpenCL.so.1", + primary_destdir.join("usr/lib/libRusticlOpenCL.so"), + ) + .unwrap(); + + let helpers = ShellHelpers::new(&primary_destdir).unwrap(); + let split_destdir = primary_destdir.join(".depot/outputs/opencl-mesa"); + std::fs::create_dir_all(&split_destdir).unwrap(); + + run_haul_with_env( + &helpers, + &split_destdir, + &[("DEPOT_PRIMARY_DESTDIR", &primary_destdir)], + &["opencl-mesa", "usr/lib/libRusticlOpenCL*"], + ); + + assert!( + !primary_destdir + .join("usr/lib/libRusticlOpenCL.so.1.0.0") + .exists() + ); + assert!( + split_destdir + .join("usr/lib/libRusticlOpenCL.so.1.0.0") + .exists() + ); + let link_meta = + std::fs::symlink_metadata(split_destdir.join("usr/lib/libRusticlOpenCL.so")).unwrap(); + assert!(link_meta.file_type().is_symlink()); + } }