From b8ce415551e55ac70cd34e07940944feddfbecc6 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Sat, 18 Apr 2026 01:14:02 -0400 Subject: [PATCH] fix(musl): vendor openssl for musl targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit daytona-sdk transitively pulls native-tls via reqwest (its own reqwest v0.12, separate from our rustls-configured workspace reqwest v0.13). native-tls requires libssl headers at build time, which musl-gcc cannot satisfy from the host's glibc libssl-dev. Add a target-specific openssl dep with the vendored feature so openssl-sys compiles openssl from source for musl builds. glibc builds are unaffected — they continue to link against the system libssl that CI runners already have. Verified end-to-end: aarch64-unknown-linux-musl binary built locally runs on Alpine 3.20 (pure musl userspace). Co-Authored-By: Claude Opus 4.7 (1M context) --- lib/crates/fabro-cli/Cargo.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/crates/fabro-cli/Cargo.toml b/lib/crates/fabro-cli/Cargo.toml index b8654eef2..eb18dc17f 100644 --- a/lib/crates/fabro-cli/Cargo.toml +++ b/lib/crates/fabro-cli/Cargo.toml @@ -92,6 +92,12 @@ tokio-util.workspace = true [target.'cfg(target_os = "macos")'.dependencies] core-foundation = { version = "0.9", optional = true } +# Vendor openssl only for musl targets. daytona-sdk transitively pulls +# native-tls via reqwest, which needs libssl. On glibc runners the system +# libssl is used; on musl runners we compile openssl from source. +[target.'cfg(target_env = "musl")'.dependencies] +openssl = { version = "0.10", features = ["vendored"] } + [build-dependencies] chrono = { workspace = true }