From 6ba6add03d695794e7a266e76b41ffeeeb8bb196 Mon Sep 17 00:00:00 2001 From: Hunter Bown Date: Mon, 4 May 2026 11:00:54 -0500 Subject: [PATCH] fix(release): switch TUI reqwest from native-tls to rustls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The aarch64-unknown-linux-gnu release build for `deepseek-tui` failed in release.yml run 25327475634 with: openssl-sys v0.9.111: 'openssl/opensslconf.h' file not found `crates/tui/src/main.rs` was the only crate in the workspace pulling `reqwest` with `default-features = false, features = ["native-tls", ...]` — every other crate (including the dispatcher in `crates/cli`) already inherits the workspace default `["json", "rustls"]`. The aarch64 leg builds with `cargo zigbuild --target aarch64-unknown-linux-gnu.2.28`, whose zig sysroot does not ship openssl headers; the matching native-tls job for v0.8.9 succeeded by chance against an earlier runner image but the current `ubuntu-24.04-arm` image no longer satisfies openssl-sys's header probe under zigbuild. Switching the TUI's reqwest features from `native-tls` to `rustls` brings it in line with the rest of the workspace and removes nine crates from the build graph entirely (`openssl`, `openssl-sys`, `openssl-probe`, `openssl-macros`, `native-tls`, `hyper-tls`, `tokio-native-tls`, `foreign-types`, `foreign-types-shared`). reqwest 0.13.1 already uses `rustls-platform-verifier` for OS trust-store integration, so end-user TLS behavior against api.deepseek.com remains equivalent. Verified locally: - cargo clippy --workspace --all-targets --all-features --locked passes - cargo build --release -p deepseek-tui --locked succeeds - cargo fmt --all -- --check is clean - no source code in `crates/` references native-tls / openssl directly This is a release-pipeline-only fix; no user-visible feature changes. --- Cargo.lock | 107 +----------------------------------------- crates/tui/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 107 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d9e5b0ef..91000014 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1789,21 +1789,6 @@ 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" @@ -2209,22 +2194,6 @@ dependencies = [ "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.19" @@ -2986,23 +2955,6 @@ dependencies = [ "serde", ] -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe 0.1.6", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -3256,56 +3208,12 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "openssl" -version = "0.10.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "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.114", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - [[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.111" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "option-ext" version = "0.2.0" @@ -3930,12 +3838,10 @@ dependencies = [ "http-body-util", "hyper", "hyper-rustls", - "hyper-tls", "hyper-util", "js-sys", "log", "mime_guess", - "native-tls", "percent-encoding", "pin-project-lite", "quinn", @@ -3946,7 +3852,6 @@ dependencies = [ "serde_json", "sync_wrapper", "tokio", - "tokio-native-tls", "tokio-rustls", "tokio-util", "tower", @@ -4048,7 +3953,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe 0.2.1", + "openssl-probe", "rustls-pki-types", "schannel", "security-framework 3.5.1", @@ -5040,16 +4945,6 @@ dependencies = [ "syn 2.0.114", ] -[[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.4" diff --git a/crates/tui/Cargo.toml b/crates/tui/Cargo.toml index 344f04af..518be328 100644 --- a/crates/tui/Cargo.toml +++ b/crates/tui/Cargo.toml @@ -37,7 +37,7 @@ dirs = "6.0.0" futures-util = "0.3.31" ratatui = "0.29" regex = "1.11" -reqwest = { version = "0.13.1", default-features = false, features = ["blocking", "json", "stream", "multipart", "native-tls", "http2"] } +reqwest = { version = "0.13.1", default-features = false, features = ["blocking", "json", "stream", "multipart", "rustls", "http2"] } similar = "2" rustyline = "15.0.0" serde = { version = "1.0.228", features = ["derive"] }