Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

rust: start supporting several `bindgen` versions

With both the workaround for `bindgen` 0.69.0 and the warning about
0.66.0 and 0.66.1 in place, start supporting several `bindgen` versions,
like it was done for the Rust compiler in a previous patch.

All other versions, including the latest 0.69.4, build without errors.

The `bindgen` project, like Rust, has also agreed to have the kernel
in their CI [1] -- thanks! This should help both projects: `bindgen`
will be able to detect early issues like those mentioned above, and the
kernel will be very likely build with new releases (at least for the
basic configuration being tested).

Link: https://github.com/rust-lang/rust-bindgen/pull/2851 [1]
Tested-by: Benno Lossin <benno.lossin@proton.me>
Tested-by: Andreas Hindborg <a.hindborg@samsung.com>
Link: https://lore.kernel.org/r/20240709160615.998336-10-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>

+4 -16
+4 -3
Documentation/rust/quick-start.rst
··· 107 107 ******* 108 108 109 109 The bindings to the C side of the kernel are generated at build time using 110 - the ``bindgen`` tool. A particular version is required. 110 + the ``bindgen`` tool. 111 111 112 - Install it via (note that this will download and build the tool from source):: 112 + Install it, for instance, via (note that this will download and build the tool 113 + from source):: 113 114 114 - cargo install --locked --version $(scripts/min-tool-version.sh bindgen) bindgen-cli 115 + cargo install --locked bindgen-cli 115 116 116 117 ``bindgen`` uses the ``clang-sys`` crate to find a suitable ``libclang`` (which 117 118 may be linked statically, dynamically or loaded at runtime). By default, the
-8
scripts/rust_is_available.sh
··· 161 161 echo >&2 "***" 162 162 exit 1 163 163 fi 164 - if [ "$rust_bindings_generator_cversion" -gt "$rust_bindings_generator_min_cversion" ]; then 165 - echo >&2 "***" 166 - echo >&2 "*** Rust bindings generator '$BINDGEN' is too new. This may or may not work." 167 - echo >&2 "*** Your version: $rust_bindings_generator_version" 168 - echo >&2 "*** Expected version: $rust_bindings_generator_min_version" 169 - echo >&2 "***" 170 - warning=1 171 - fi 172 164 173 165 # Check that the `libclang` used by the Rust bindings generator is suitable. 174 166 #
-5
scripts/rust_is_available_test.py
··· 231 231 result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen }) 232 232 self.assertIn(f"Rust bindings generator '{bindgen}' is too old.", result.stderr) 233 233 234 - def test_bindgen_new_version(self): 235 - bindgen = self.generate_bindgen_version("bindgen 0.999.0") 236 - result = self.run_script(self.Expected.SUCCESS_WITH_WARNINGS, { "BINDGEN": bindgen }) 237 - self.assertIn(f"Rust bindings generator '{bindgen}' is too new. This may or may not work.", result.stderr) 238 - 239 234 def test_bindgen_libclang_failure(self): 240 235 bindgen = self.generate_bindgen_libclang_failure() 241 236 result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen })