Skip to content

pyo3 feature force-includes transport-reticulum → Unix-only reticulum-std blocks Windows wheels (edge + all pyo3 consumers) #87

@emooreatx

Description

@emooreatx

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)

  1. 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
  2. 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions