diff --git a/.github/workflows/CI.Dockerfile b/.github/workflows/CI.Dockerfile index 2acbac3..740c4b0 100644 --- a/.github/workflows/CI.Dockerfile +++ b/.github/workflows/CI.Dockerfile @@ -1,3 +1,4 @@ FROM ubuntu:latest RUN apt update && apt install openssl libssl-dev curl pkg-config software-properties-common -y && add-apt-repository ppa:deadsnakes/ppa && apt update && apt install python3.7 python3.8 python3.9 python3.10 python3.11 python3.12 python3.13 python3-pip python3 -y -ENV PIP_BREAK_SYSTEM_PACKAGES=1 \ No newline at end of file +ENV PIP_BREAK_SYSTEM_PACKAGES=1 +RUN mkdir -p /root/.cache/sbv2 && curl https://huggingface.co/neody/sbv2-api-assets/resolve/main/dic/all.bin -o /root/.cache/sbv2/all.bin -L \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 6135203..1d01897 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,7 +155,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide", "object", @@ -255,6 +255,12 @@ dependencies = [ "shlex", ] +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" @@ -311,7 +317,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -561,7 +567,7 @@ version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -644,7 +650,7 @@ version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "libredox", "windows-sys 0.59.0", @@ -745,7 +751,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -758,7 +764,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.13.3+wasi-0.2.2", "windows-targets", @@ -801,7 +807,7 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crunchy", ] @@ -823,6 +829,16 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "home-dir" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572c4f9690c3ac7058775be826d1b508ca20fd6633261435c27ac30ad0598212" +dependencies = [ + "nix", + "thiserror 1.0.69", +] + [[package]] name = "hound" version = "3.5.1" @@ -1315,7 +1331,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "windows-targets", ] @@ -1540,6 +1556,18 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "nix" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" +dependencies = [ + "bitflags 1.3.2", + "cc", + "cfg-if 0.1.10", + "libc", +] + [[package]] name = "nom" version = "7.1.3" @@ -1658,7 +1686,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ "bitflags 2.8.0", - "cfg-if", + "cfg-if 1.0.0", "foreign-types", "libc", "once_cell", @@ -1735,7 +1763,7 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "redox_syscall", "smallvec", @@ -1921,7 +1949,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57fe09249128b3173d092de9523eaa75136bf7ba85e0d69eca241c7939c933cc" dependencies = [ "anyhow", - "cfg-if", + "cfg-if 1.0.0", "indoc", "libc", "memoffset", @@ -2143,7 +2171,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34b5020fcdea098ef7d95e9f89ec15952123a4a039badd09fabebe9e963e839" dependencies = [ "cc", - "cfg-if", + "cfg-if 1.0.0", "getrandom 0.2.15", "libc", "untrusted", @@ -2256,6 +2284,7 @@ dependencies = [ "base64 0.22.1", "dotenvy", "env_logger", + "home-dir", "hound", "jpreprocess", "ndarray", @@ -2396,7 +2425,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest", ] @@ -2585,7 +2614,7 @@ version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "fastrand", "getrandom 0.3.1", "once_cell", @@ -3032,7 +3061,7 @@ version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "once_cell", "rustversion", "wasm-bindgen-macro", @@ -3058,7 +3087,7 @@ version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "once_cell", "wasm-bindgen", diff --git a/crates/sbv2_core/Cargo.toml b/crates/sbv2_core/Cargo.toml index 852cf32..c2dda4d 100644 --- a/crates/sbv2_core/Cargo.toml +++ b/crates/sbv2_core/Cargo.toml @@ -43,4 +43,5 @@ aivmx = ["npyz", "base64"] base64 = ["dep:base64"] [build-dependencies] -ureq = "3.0.6" \ No newline at end of file +home-dir = "0.1.0" +ureq = "3.0.6" diff --git a/crates/sbv2_core/build.rs b/crates/sbv2_core/build.rs index 62e0a65..467a8bc 100644 --- a/crates/sbv2_core/build.rs +++ b/crates/sbv2_core/build.rs @@ -3,10 +3,15 @@ use std::fs; use std::io::copy; use std::path::PathBuf; +use home_dir::HomeDirExt; + fn main() -> Result<(), Box> { - let out_dir = PathBuf::from(&env::var("OUT_DIR").unwrap()); - let out_path = out_dir.join("all.bin"); - if !out_path.exists() { + let static_path = "~/.cache/sbv2/all.bin".expand_home().unwrap(); + let out_path = PathBuf::from(&env::var("OUT_DIR").unwrap()).join("all.bin"); + println!("cargo:rerun-if-changed=build.rs"); + if static_path.exists() { + fs::hard_link(static_path, out_path).unwrap(); + } else { println!("cargo:warning=Downloading dictionary file..."); let mut response = ureq::get("https://huggingface.co/neody/sbv2-api-assets/resolve/main/dic/all.bin") @@ -15,6 +20,5 @@ fn main() -> Result<(), Box> { let mut file = fs::File::create(&out_path)?; copy(&mut response, &mut file)?; } - println!("cargo:rerun-if-changed=build.rs"); Ok(()) }