From 057e235237454c9109f1b5cc1c66cd4ec333a495 Mon Sep 17 00:00:00 2001 From: Seto Date: Fri, 16 Oct 2026 23:38:45 +0200 Subject: [PATCH] build(watchos): move embed's reqwest to 0.13 with native-tls on watchOS The optional reqwest dependency was 0.12 with rustls-tls-native-roots, which pulls in ring. ring fails its pointer-size asserts on arm64_32-apple-watchos. It also left two reqwest versions in the graph, since ed-acp and rmcp are already on 0.13. reqwest is now 0.13 everywhere: rustls on most targets, native-tls (Security.framework) on watchOS. embed::fetch_key needed no source changes; cargo check --features embed passes. Co-Authored-By: Claude Sonnet 5.5 --- Cargo.lock | 193 ++++++++++++++++++++++++++++++++++------------------- Cargo.toml | 15 +++-- 2 files changed, 136 insertions(+), 72 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3dfb65a..e27fbab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -220,12 +220,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - [[package]] name = "base64" version = "0.23.1" @@ -648,11 +642,11 @@ dependencies = [ "agent-client-protocol", "anyhow", "async-trait", - "base64 0.23.1", + "base64", "directories", "ed-mcp", "futures", - "reqwest 0.13.5", + "reqwest", "serde", "serde_json", "tokio", @@ -776,6 +770,21 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -1053,19 +1062,34 @@ dependencies = [ "hyper", "hyper-util", "rustls", - "rustls-native-certs", "tokio", "tokio-rustls", "tower-service", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff" dependencies = [ - "base64 0.23.1", + "base64", "bytes", "futures-channel", "futures-util", @@ -1529,6 +1553,23 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "native-tls" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + [[package]] name = "nix" version = "0.31.3" @@ -1598,12 +1639,49 @@ version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +[[package]] +name = "openssl" +version = "0.10.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" +dependencies = [ + "bitflags 2.13.2", + "cfg-if", + "foreign-types", + "libc", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "openssl-probe" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +[[package]] +name = "openssl-sys" +version = "0.9.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -2033,51 +2111,13 @@ version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "reqwest" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16a1cfa75cc186dd73d5818e510e042e40927bccc9c236b061cea97e1eb08029" dependencies = [ - "base64 0.23.1", + "base64", "bytes", "futures-core", "futures-util", @@ -2086,9 +2126,11 @@ dependencies = [ "http-body-util", "hyper", "hyper-rustls", + "hyper-tls", "hyper-util", "js-sys", "log", + "native-tls", "percent-encoding", "pin-project-lite", "quinn", @@ -2099,6 +2141,7 @@ dependencies = [ "serde_json", "sync_wrapper", "tokio", + "tokio-native-tls", "tokio-rustls", "tokio-util", "tower", @@ -2131,7 +2174,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5023804cbe0304cbe06197ac16e645a0a0d0ffa2953bf735c15c2fa0213350" dependencies = [ - "base64 0.23.1", + "base64", "bytes", "chrono", "futures", @@ -2139,7 +2182,7 @@ dependencies = [ "indexmap 2.14.2", "pin-project-lite", "process-wrap", - "reqwest 0.13.5", + "reqwest", "serde", "serde_json", "sse-stream", @@ -2200,7 +2243,6 @@ checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" dependencies = [ "aws-lc-rs", "once_cell", - "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -2425,25 +2467,13 @@ dependencies = [ "zmij", ] -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - [[package]] name = "serde_with" version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df9adc193c780ef8f159aee8b61e2d5801aaa555e6eb0947fe45530ec506296f" dependencies = [ - "base64 0.23.1", + "base64", "bs58", "chrono", "hex", @@ -2567,7 +2597,7 @@ dependencies = [ "agent-client-protocol", "anyhow", "async-trait", - "base64 0.23.1", + "base64", "directories", "ebur128", "ed-acp", @@ -2576,7 +2606,7 @@ dependencies = [ "ed-mcp", "hound", "realfft", - "reqwest 0.12.28", + "reqwest", "serde", "serde_json", "symphonia", @@ -2877,6 +2907,19 @@ dependencies = [ "syn 3.0.6", ] +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.52.0", +] + [[package]] name = "thiserror" version = "2.0.21" @@ -2982,6 +3025,16 @@ dependencies = [ "syn 3.0.6", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.6" @@ -3215,6 +3268,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "walkdir" version = "2.5.0" diff --git a/Cargo.toml b/Cargo.toml index 2d399f4..5ea2326 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,11 +37,6 @@ async-trait = "0.1" directories = "6.0.0" ebur128 = "0.1.10" realfft = "3.5.0" -# Only for `embed::fetch_key` and `embed::splitfire_mcp`, gated behind the `embed` feature. -reqwest = { version = "0.12", default-features = false, features = [ - "json", - "rustls-tls-native-roots", -], optional = true } serde = { version = "1.0.229", features = ["derive"] } serde_json = "1.0.151" symphonia = { version = "0.6.1", features = ["mp3", "flac", "ogg", "vorbis", "wav", "pcm", "aac", "isomp4", "aiff", "alac", "mkv"] } @@ -53,3 +48,13 @@ uuid = { version = "1.27.0", features = ["v4"] } ed-acp-testkit = { version = "1.3.0" } base64 = "0.23.1" hound = "3.5.1" + +# Only for `embed::fetch_key` and `embed::splitfire_mcp`, gated behind the `embed` feature. +# reqwest 0.13's `rustls` is the aws-lc provider, whose C code doesn't build for arm64_32 +# (and `ring` asserts 64-bit pointers on aarch64), so watchOS uses `native-tls`, which is +# Security.framework. +[target.'cfg(not(target_os = "watchos"))'.dependencies] +reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"], optional = true } + +[target.'cfg(target_os = "watchos")'.dependencies] +reqwest = { version = "0.13", default-features = false, features = ["json", "native-tls"], optional = true }