We build most Bottlerocket binaries with RUSTFLAGS=-Cprefer-dynamic so that we can dynamically link to the Rust std library and reduce the size of our binaries.
Hyper 0.14.3 adds this line to its Cargo.toml to emit a c interface in a dynamic library:
https://github.com/hyperium/hyper/blob/48d4594930da4e227039cfa254411b85c98b63c5/Cargo.toml#L23
This, in conjunction with reqwest and prefer-dynamic causes cargo/rustc to try to link using the emitted hyper c library and the linker fails with missing symbols. The problem is described precisely here: rust-lang/rust#82151 (comment)
As it stands right now, this means that the highest version of hyper we can use with Bottlerocket is 0.14.2.
We build most Bottlerocket binaries with
RUSTFLAGS=-Cprefer-dynamicso that we can dynamically link to the Rust std library and reduce the size of our binaries.Hyper 0.14.3 adds this line to its Cargo.toml to emit a c interface in a dynamic library:
https://github.com/hyperium/hyper/blob/48d4594930da4e227039cfa254411b85c98b63c5/Cargo.toml#L23
This, in conjunction with
reqwestandprefer-dynamiccauses cargo/rustc to try to link using the emitted hyper c library and the linker fails with missing symbols. The problem is described precisely here: rust-lang/rust#82151 (comment)As it stands right now, this means that the highest version of hyper we can use with Bottlerocket is 0.14.2.