diff --git a/Cargo.lock b/Cargo.lock index 64bb7f3..a07b451 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,6 +169,27 @@ dependencies = [ "libc", ] +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys", +] + [[package]] name = "errno" version = "0.3.14" @@ -201,6 +222,17 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + [[package]] name = "getrandom" version = "0.3.4" @@ -220,6 +252,7 @@ dependencies = [ "anyhow", "blake3", "clap", + "dirs", "lager", "named-lock", ] @@ -248,7 +281,7 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom", + "getrandom 0.3.4", "libc", ] @@ -270,6 +303,15 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "libredox" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +dependencies = [ + "libc", +] + [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -310,6 +352,12 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "parking_lot" version = "0.12.5" @@ -409,6 +457,17 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + [[package]] name = "remove_dir_all" version = "0.5.3" @@ -558,6 +617,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + [[package]] name = "wasip2" version = "1.0.3+wasi-0.2.9" diff --git a/halide-cache/Cargo.toml b/halide-cache/Cargo.toml index a8acd18..d045a62 100644 --- a/halide-cache/Cargo.toml +++ b/halide-cache/Cargo.toml @@ -9,3 +9,4 @@ blake3 = "1.8.2" clap = { version = "4.5.53", features = ["derive"] } named-lock = "0.4.1" anyhow = "1.0.102" +dirs = "6.0.0" diff --git a/halide-cache/src/main.rs b/halide-cache/src/main.rs index 085055a..5f20788 100644 --- a/halide-cache/src/main.rs +++ b/halide-cache/src/main.rs @@ -1,9 +1,10 @@ use clap::Parser; +use dirs::home_dir; use lager::{Address, LRU, Lager}; use named_lock::NamedLock; +use std::fs; use std::path::{Path, PathBuf}; use std::process::Command; -use std::{env, fs}; #[derive(Parser, Debug)] struct Args { @@ -15,6 +16,8 @@ struct Args { generated_header: PathBuf, #[arg(long)] base_dir: Option, + #[arg(long, default_value_os_t = home_dir().unwrap().join(".cache/halide-cache"))] + cache_dir: PathBuf, #[arg(last = true)] builder: Vec, } @@ -64,9 +67,9 @@ impl<'a> Dependencies<'a> { fn main() -> anyhow::Result<()> { let args = Args::parse(); - let cache_dir = env::var("HALIDE_CACHE_DIR")?; + let cache_dir = args.cache_dir; - if !Path::new(&cache_dir).exists() { + if !cache_dir.exists() { fs::create_dir_all(&cache_dir)?; }