Third Android run got further than either before it — all four ABIs cross-compiled, vendored OpenSSL and all — then the generator died: error: failed to run custom build command for `openssl-sys v0.9.117` That is the HOST build. The generator was a [[bin]] inside thoughtsync-ffi, so building it compiled that crate and therefore the core, reqwest, native-tls and openssl-sys for linux. The vendored-OpenSSL block is scoped to `cfg(target_os = "android")`, so the host build went looking for a system OpenSSL that ci-rust-android has no reason to carry. Adding libssl-dev to the image would have fixed it and been wrong: a code generator has no business linking the app's TLS stack to emit Kotlin. Splitting it into thoughtsync-uniffi-bindgen, whose only dependency is uniffi, removes the entire chain. Verified from the dependency graph rather than from a build that happened to succeed — `cargo tree -p thoughtsync-uniffi-bindgen` contains none of openssl-sys, native-tls, reqwest, thoughtsync-core or rusqlite. It stays a WORKSPACE MEMBER on purpose. Sharing one lockfile is what keeps uniffi here and uniffi linked into the .so at one version; they are two halves of one ABI, and a separate lockfile is precisely how they would drift apart. The cost is that the desktop lane now compiles ~15 generator crates it never runs — cheap next to Tauri, and better than leaving the crate unlinted. Drops the `bindgen` feature and required-features bin from thoughtsync-ffi, which existed only to keep those crates off the desktop lane and now have nothing to gate. Local fmt + clippy + test all green before pushing (107 tests). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
26 lines
1.2 KiB
TOML
26 lines
1.2 KiB
TOML
[package]
|
|
name = "thoughtsync-uniffi-bindgen"
|
|
version = "0.1.0"
|
|
description = "Generates the Kotlin bindings for thoughtsync-ffi"
|
|
authors = ["bvandeusen"]
|
|
edition = "2021"
|
|
|
|
# A crate whose ONLY dependency is uniffi itself.
|
|
#
|
|
# This started life as a `[[bin]]` inside thoughtsync-ffi, which failed: building
|
|
# it compiled that crate and therefore the core, reqwest, native-tls and
|
|
# openssl-sys — for the HOST. The vendored-OpenSSL block in core/Cargo.toml is
|
|
# scoped to `cfg(target_os = "android")`, so a host build looks for a system
|
|
# OpenSSL that ci-rust-android has no reason to carry, and the generator died
|
|
# with "failed to run custom build command for openssl-sys".
|
|
#
|
|
# Adding libssl-dev to the image would have worked and been wrong: a code
|
|
# generator should not link the app's TLS stack to emit Kotlin. Splitting it out
|
|
# means the generator compiles ~15 small crates and nothing else.
|
|
#
|
|
# Still a WORKSPACE MEMBER, deliberately. That is what keeps `uniffi` here and
|
|
# `uniffi` linked into the .so on one version from one lockfile — they are two
|
|
# halves of one ABI, and a separate lockfile is exactly how they would drift.
|
|
[dependencies]
|
|
uniffi = { version = "0.32", features = ["cli"] }
|