From 051272ad71a806d6cec9f01f90e0f8371d63c57d Mon Sep 17 00:00:00 2001 From: Hakan Seven Date: Sat, 8 Aug 2026 13:11:33 +0300 Subject: [PATCH] build: reach the CAD stack through acadifc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The DWG/DXF/ACIS codec now lives in its own crate and acadifc re-exports it alongside the geometry kernel, so this is the single dependency: OpenCADStudio -> acadifc -> { cadcodec, cadkernel } acadifc is aliased to `acadrust`, which leaves the 2569 `use acadrust::…` paths across 253 files untouched — the alias is a manifest-level rename, not a source change. The old `[patch.crates-io]` entry goes away with it: the dependency is a git revision now rather than a crates.io version being redirected. Co-Authored-By: Claude Opus 5 --- Cargo.lock | 29 ++++++++++++++++++++++++----- Cargo.toml | 6 ++++-- crates/ocs_plugin_api/Cargo.toml | 2 +- crates/ocs_web_worker/Cargo.toml | 2 +- 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a605a3f35..60d13ff9e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16,7 +16,7 @@ dependencies = [ name = "OpenCADStudio" version = "0.9.4" dependencies = [ - "acadrust", + "acadifc", "ashpd", "bincode", "bytemuck", @@ -83,10 +83,24 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" +[[package]] +name = "acadifc" +version = "0.5.0" +source = "git+https://github.com/OpenAEC-Foundation/acadifc.git?rev=08a3d71#08a3d71f567cd72ee1ae3e7a8099054646756747" +dependencies = [ + "acadrust", + "base64 0.22.1", + "cadkernel", + "serde", + "serde_json", + "sha2 0.10.9", + "thiserror 1.0.69", +] + [[package]] name = "acadrust" -version = "0.4.0" -source = "git+https://github.com/OpenAEC-Foundation/acadifc.git?rev=9ecaffc#9ecaffc3f5c32bad61c9624b6acb03afe97a2863" +version = "0.4.1" +source = "git+https://github.com/HakanSeven12/cadcodec.git?rev=f226110#f226110a5b272838f9eeca4e3330ace827817db4" dependencies = [ "ahash 0.8.12", "anyhow", @@ -929,6 +943,11 @@ version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" +[[package]] +name = "cadkernel" +version = "0.1.0" +source = "git+https://github.com/HakanSeven12/cadkernel.git#53e15eccfb5c476a04c49cbea2809c5c4e13b691" + [[package]] name = "calloop" version = "0.13.0" @@ -3965,7 +3984,7 @@ dependencies = [ name = "ocs_plugin_api" version = "0.1.0" dependencies = [ - "acadrust", + "acadifc", "bincode", "getrandom 0.2.17", "interprocess", @@ -3980,7 +3999,7 @@ dependencies = [ name = "ocs_web_worker" version = "0.1.0" dependencies = [ - "acadrust", + "acadifc", "bincode", "console_error_panic_hook", "getrandom 0.3.4", diff --git a/Cargo.toml b/Cargo.toml index d2477faad..ec4addc0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,10 @@ truck-polymesh = "0.6" rfd = "0.17" clap = { version = "4", features = ["derive"] } env_logger = "0.11" -acadrust = { version = "0.4", features = ["serde"] } +# The CAD stack is reached through acadifc, which re-exports the codec and +# the geometry kernel. Aliased to `acadrust` so existing `use acadrust::…` +# paths keep resolving. +acadrust = { package = "acadifc", git = "https://github.com/OpenAEC-Foundation/acadifc.git", rev = "08a3d71", features = ["serde"] } dwg-thumbnailer = { path = "crates/dwg-thumbnailer" } flate2 = "1" image = { version = "0.25", default-features = false, features = ["png", "jpeg", "bmp", "tiff"] } @@ -66,7 +69,6 @@ windows-sys = { version = "0.61", features = ["Win32_UI_Shell", "Win32_UI_Window ashpd = { version = "0.13.13", default-features = false, features = ["async-io", "wayland"] } [patch.crates-io] -acadrust = { git = "https://github.com/OpenAEC-Foundation/acadifc.git", rev = "9ecaffc" } iced_core = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39" } iced_widget = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39" } diff --git a/crates/ocs_plugin_api/Cargo.toml b/crates/ocs_plugin_api/Cargo.toml index e6f86e5bc..ecdd761d6 100644 --- a/crates/ocs_plugin_api/Cargo.toml +++ b/crates/ocs_plugin_api/Cargo.toml @@ -9,7 +9,7 @@ license = "GPL-3.0-only" # Pulled in only by the `host` feature, which adds the `acadrust`-typed # `HostApi` runtime surface. The default crate stays dependency-free so engine # crates and external tooling can depend on the manifest/ribbon contract cheaply. -acadrust = { version = "0.4", optional = true, features = ["serde"] } +acadrust = { package = "acadifc", git = "https://github.com/OpenAEC-Foundation/acadifc.git", rev = "08a3d71", optional = true, features = ["serde"] } # Runtime IPC and serialization (host feature only). interprocess = { version = "2", optional = true } diff --git a/crates/ocs_web_worker/Cargo.toml b/crates/ocs_web_worker/Cargo.toml index 2eb877b8f..d217c29e9 100644 --- a/crates/ocs_web_worker/Cargo.toml +++ b/crates/ocs_web_worker/Cargo.toml @@ -8,7 +8,7 @@ publish = false crate-type = ["cdylib"] [dependencies] -acadrust = { version = "0.4", features = ["serde"] } +acadrust = { package = "acadifc", git = "https://github.com/OpenAEC-Foundation/acadifc.git", rev = "08a3d71", features = ["serde"] } bincode = "1.3" console_error_panic_hook = "0.1" getrandom = { version = "0.3", features = ["wasm_js"] }