Surfaced building CIRISLensCore's Windows wheel (CIRISLensCore#43.3, "no deferring Windows"). Blocks Windows for edge's own pyo3 wheel and every pyo3 consumer (lens-core, and anything enabling ciris-edge/pyo3).
Root cause
Edge's pyo3 feature hard-includes transport-reticulum:
pyo3 = [ "dep:pyo3", "dep:pyo3-async-runtimes", "dep:pyo3-stub-gen",
"ciris-persist/pyo3", "transport-reticulum", ... ]
transport-reticulum pulls reticulum-std (Leviculum, optional=true), which is Unix-only — on windows-x86_64 the build fails with:
error[E0433]: cannot find `UnixListener` in `net`
error[E0433]: cannot find `unix` in `os` (std::os::unix::net::UnixListener)
error[E0425]: cannot find function `if_nametoindex` in crate `libc`
error: could not compile `reticulum-std` (lib) due to 12 previous errors
A consumer enabling ciris-edge/pyo3 cannot subtract transport-reticulum (Cargo features are additive), so this is not fixable downstream. lens-core needs ciris-edge/pyo3 for the frozen install_relay API, so it can't drop it either.
Ask (either fixes it)
- Decouple
pyo3 from transport-reticulum — a pyo3 wheel shouldn't force the Reticulum transport. Let consumers opt into transport-reticulum separately (it's already a feature). The PyEdge surface (engine/capsules/handler dispatch) doesn't need the Reticulum interface compiled to exist. OR
- Make
reticulum-std Windows-portable (Leviculum) — gate the Unix-socket/if_nametoindex paths behind cfg(unix) with a Windows TCP-only path, so the crate compiles (Reticulum AutoInterface/Unix features no-op on Windows).
(1) is the lighter cut and unblocks Windows pyo3 wheels immediately. Edge's own Windows pyo3 wheel hits this too (if edge ships one).
Context
- Does edge currently ship a Windows pyo3 wheel? If so it should be failing on the same reticulum-std error; if not, that's the same gap.
- lens-core already bundles OpenSSL on Windows (
target.'cfg(windows)' openssl/vendored — the other transitive Windows blocker, via reqwest); that part builds. reticulum-std is the remaining wall.
cc CIRISLensCore#43.3, CIRISEdge#85 (cohabitation handshake).
Surfaced building CIRISLensCore's Windows wheel (CIRISLensCore#43.3, "no deferring Windows"). Blocks Windows for edge's own pyo3 wheel and every pyo3 consumer (lens-core, and anything enabling
ciris-edge/pyo3).Root cause
Edge's
pyo3feature hard-includestransport-reticulum:transport-reticulumpullsreticulum-std(Leviculum,optional=true), which is Unix-only — onwindows-x86_64the build fails with:A consumer enabling
ciris-edge/pyo3cannot subtracttransport-reticulum(Cargo features are additive), so this is not fixable downstream. lens-core needsciris-edge/pyo3for the frozeninstall_relayAPI, so it can't drop it either.Ask (either fixes it)
pyo3fromtransport-reticulum— a pyo3 wheel shouldn't force the Reticulum transport. Let consumers opt intotransport-reticulumseparately (it's already a feature). The PyEdge surface (engine/capsules/handler dispatch) doesn't need the Reticulum interface compiled to exist. ORreticulum-stdWindows-portable (Leviculum) — gate the Unix-socket/if_nametoindexpaths behindcfg(unix)with a Windows TCP-only path, so the crate compiles (Reticulum AutoInterface/Unix features no-op on Windows).(1) is the lighter cut and unblocks Windows pyo3 wheels immediately. Edge's own Windows pyo3 wheel hits this too (if edge ships one).
Context
target.'cfg(windows)'openssl/vendored — the other transitive Windows blocker, via reqwest); that part builds. reticulum-std is the remaining wall.cc CIRISLensCore#43.3, CIRISEdge#85 (cohabitation handshake).