From 8dd0d46c3c5d05d93a51ad6aded3dbeff8a9aacd Mon Sep 17 00:00:00 2001 From: Claw Date: Tue, 28 Jul 2026 12:33:53 -0500 Subject: [PATCH] =?UTF-8?q?build:=20pin=20rustc=201.94.0=20=E2=80=94=20the?= =?UTF-8?q?=20workspace=20only=20builds=20in=20a=20narrow=20band?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Established empirically in a clean Debian 13 container (2026-07-28), not inferred from the dev host: 1.85.0 (apt install rustc, Debian trixie) -> FAILS, aws-sdk-* need >= 1.91.1 1.97.1 (rustup default stable, today) -> FAILS, ethnum E0512 transmute 1.94.0 -> builds clean, workspace, 2m39s Both obvious reviewer paths break: the distro compiler is too old and current rustup stable is too new. Before this pin the build reproduced on our host only because the toolchain had been restored from the previous machine — reproducible by accident rather than by construction. Verified the pin works: set the shell default to the BROKEN stable, and the repo still resolved 1.94.0 and built. Minimal native prerequisites, also tested in the clean container: protobuf-compiler (lance-encoding/lance-file build scripts need protoc), pkg-config, libssl-dev. NOT required despite being installed on the dev host: cmake, clang, libclang-dev. --- rust-toolchain.toml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 rust-toolchain.toml diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..d5502a4 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,27 @@ +# Pinned toolchain — this workspace only builds inside a NARROW rustc band. +# +# Established empirically 2026-07-28 in a clean Debian 13 container: +# +# rustc 1.85.0 (what `apt install rustc` gives on Debian trixie) +# -> FAILS: "rustc 1.85.0 is not supported by the following packages" +# aws-config, aws-sdk-*, aws-smithy-* all require >= 1.91.1 +# +# rustc 1.97.1 (what `rustup default stable` gives today) +# -> FAILS: ethnum, error[E0512] "cannot transmute between types of +# different sizes, or dependently-sized types" +# +# rustc 1.94.0 -> builds clean (2m39s, workspace, exit 0) +# +# So BOTH obvious reviewer paths break: distro rustc is too old, rustup stable +# is too new. Without this pin the build reproduced on our host only because the +# toolchain happened to be restored from the previous machine. Pinning makes it +# reproducible by construction rather than by accident. +# +# Native prerequisites (also verified in the clean container, minimal set): +# protobuf-compiler -- lance-encoding / lance-file build scripts need protoc +# pkg-config +# libssl-dev +# NOT required, despite being installed on the dev host: cmake, clang, libclang-dev. +[toolchain] +channel = "1.94.0" +profile = "minimal"