]> www.infradead.org Git - users/dwmw2/linux.git/commit
rust: warn about `bindgen` versions 0.66.0 and 0.66.1
authorMiguel Ojeda <ojeda@kernel.org>
Tue, 9 Jul 2024 16:06:05 +0000 (18:06 +0200)
committerMiguel Ojeda <ojeda@kernel.org>
Wed, 10 Jul 2024 08:28:52 +0000 (10:28 +0200)
commit981ad93c89a3c600dee9795d3ead105acc805483
tree7bbfa7e09549745a452406db109f03fe17ce3595
parentc844fa64a2d46982fe75e834f4a46c46d2b3b2e5
rust: warn about `bindgen` versions 0.66.0 and 0.66.1

`bindgen` versions 0.66.0 and 0.66.1 panic due to C string literals with
NUL characters [1]:

    panicked at .cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-0.66.0/codegen/mod.rs:717:71:
    called `Result::unwrap()` on an `Err` value: FromBytesWithNulError { kind: InteriorNul(4) }

Thus, in preparation for supporting several `bindgen` versions, add a
version check to warn the user about it.

Since some distributions may have patched it (e.g. Debian did [2]),
check if that seems to be the case (after the version check matches),
in order to avoid printing a warning in that case.

We could make it an error, but 1) it is going to fail anyway later
in the build, 2) we would disable `RUST`, which is also painful, 3)
someone could have patched it in a way that still makes our extra check
fail (however unlikely), 4) the interior NUL may go away in the headers
(however unlikely). Thus just warn about it so that users know why it
is failing.

In addition, add a couple tests for the new cases.

Link: https://github.com/rust-lang/rust-bindgen/pull/2567
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1069047
Link: https://lore.kernel.org/r/20240709160615.998336-11-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
scripts/rust_is_available.sh
scripts/rust_is_available_bindgen_0_66.h [new file with mode: 0644]
scripts/rust_is_available_test.py