I tested slipstream-rust on Fedora 43 and found that the current default native auto-build path is overbuilding unnecessary vendored targets.
Environment:
- Fedora Linux 43
- GCC 15.2.1
- CMake 3.31.10
- Rust 1.93.1
- OpenSSL 3.5.4
What I tested
- Fresh default build:
PICOQUIC_BUILD_DIR=$PWD/.picoquic-build-client-default \
CARGO_TARGET_DIR=$PWD/target-client-default \
cargo build -p slipstream-client -p slipstream-server
This failed after building the required libraries, because the full native build continued into vendored extras and then died in bundled picotls CLI/test code:
.picoquic-build-client-default/_deps/picotls-src/t/cli.c:45
fatal error: openssl/engine.h: No such file or directory
- Fresh minimal build:
PICOQUIC_BUILD_DIR=$PWD/.picoquic-build-client-min \
CARGO_TARGET_DIR=$PWD/target-client-min \
cargo build -p slipstream-client -p slipstream-server --features picoquic-minimal-build
This succeeded.
Why this looks like the right downstream default
The repo already contains the pieces for a smaller native build:
slipstream-client and slipstream-server expose picoquic-minimal-build
scripts/build_picoquic.sh already disables:
BUILD_DEMO
BUILD_HTTP
BUILD_LOGLIB
BUILD_LOGREADER
picoquic_BUILD_TESTS
- and builds only
picoquic-core
From the Rust side, slipstream-ffi only links the core library set:
picoquic-core
picotls-core
picotls-openssl
picotls-minicrypto
- optional
picotls-fusion
So slipstream-rust does not appear to need vendored picotls test/CLI targets, demos, or other extra executables for a normal release build.
I locally patched the build path so minimal mode becomes the default for auto-builds, with PICOQUIC_MINIMAL_BUILD=0 as an explicit opt-out, and after that a fresh plain default build succeeded on Fedora 43 without needing the Cargo feature.
Suggestion
Please consider making the existing minimal native build path the default for auto-builds, or otherwise recommending it as the normal build mode for Linux. The full native build can still remain available behind an explicit opt-out.
I tested
slipstream-ruston Fedora 43 and found that the current default native auto-build path is overbuilding unnecessary vendored targets.Environment:
What I tested
This failed after building the required libraries, because the full native build continued into vendored extras and then died in bundled picotls CLI/test code:
This succeeded.
Why this looks like the right downstream default
The repo already contains the pieces for a smaller native build:
slipstream-clientandslipstream-serverexposepicoquic-minimal-buildscripts/build_picoquic.shalready disables:BUILD_DEMOBUILD_HTTPBUILD_LOGLIBBUILD_LOGREADERpicoquic_BUILD_TESTSpicoquic-coreFrom the Rust side,
slipstream-ffionly links the core library set:picoquic-corepicotls-corepicotls-opensslpicotls-minicryptopicotls-fusionSo
slipstream-rustdoes not appear to need vendoredpicotlstest/CLI targets, demos, or other extra executables for a normal release build.I locally patched the build path so minimal mode becomes the default for auto-builds, with
PICOQUIC_MINIMAL_BUILD=0as an explicit opt-out, and after that a fresh plain default build succeeded on Fedora 43 without needing the Cargo feature.Suggestion
Please consider making the existing minimal native build path the default for auto-builds, or otherwise recommending it as the normal build mode for Linux. The full native build can still remain available behind an explicit opt-out.