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>
This commit is contained in:
parent
9e98db1783
commit
c844fa64a2
@ -107,11 +107,12 @@ bindgen
|
|||||||
*******
|
*******
|
||||||
|
|
||||||
The bindings to the C side of the kernel are generated at build time using
|
The bindings to the C side of the kernel are generated at build time using
|
||||||
the ``bindgen`` tool. A particular version is required.
|
the ``bindgen`` tool.
|
||||||
|
|
||||||
Install it via (note that this will download and build the tool from source)::
|
Install it, for instance, via (note that this will download and build the tool
|
||||||
|
from source)::
|
||||||
|
|
||||||
cargo install --locked --version $(scripts/min-tool-version.sh bindgen) bindgen-cli
|
cargo install --locked bindgen-cli
|
||||||
|
|
||||||
``bindgen`` uses the ``clang-sys`` crate to find a suitable ``libclang`` (which
|
``bindgen`` uses the ``clang-sys`` crate to find a suitable ``libclang`` (which
|
||||||
may be linked statically, dynamically or loaded at runtime). By default, the
|
may be linked statically, dynamically or loaded at runtime). By default, the
|
||||||
|
@ -161,14 +161,6 @@ if [ "$rust_bindings_generator_cversion" -lt "$rust_bindings_generator_min_cvers
|
|||||||
echo >&2 "***"
|
echo >&2 "***"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ "$rust_bindings_generator_cversion" -gt "$rust_bindings_generator_min_cversion" ]; then
|
|
||||||
echo >&2 "***"
|
|
||||||
echo >&2 "*** Rust bindings generator '$BINDGEN' is too new. This may or may not work."
|
|
||||||
echo >&2 "*** Your version: $rust_bindings_generator_version"
|
|
||||||
echo >&2 "*** Expected version: $rust_bindings_generator_min_version"
|
|
||||||
echo >&2 "***"
|
|
||||||
warning=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that the `libclang` used by the Rust bindings generator is suitable.
|
# Check that the `libclang` used by the Rust bindings generator is suitable.
|
||||||
#
|
#
|
||||||
|
@ -231,11 +231,6 @@ else:
|
|||||||
result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen })
|
result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen })
|
||||||
self.assertIn(f"Rust bindings generator '{bindgen}' is too old.", result.stderr)
|
self.assertIn(f"Rust bindings generator '{bindgen}' is too old.", result.stderr)
|
||||||
|
|
||||||
def test_bindgen_new_version(self):
|
|
||||||
bindgen = self.generate_bindgen_version("bindgen 0.999.0")
|
|
||||||
result = self.run_script(self.Expected.SUCCESS_WITH_WARNINGS, { "BINDGEN": bindgen })
|
|
||||||
self.assertIn(f"Rust bindings generator '{bindgen}' is too new. This may or may not work.", result.stderr)
|
|
||||||
|
|
||||||
def test_bindgen_libclang_failure(self):
|
def test_bindgen_libclang_failure(self):
|
||||||
bindgen = self.generate_bindgen_libclang_failure()
|
bindgen = self.generate_bindgen_libclang_failure()
|
||||||
result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen })
|
result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen })
|
||||||
|
Loading…
Reference in New Issue
Block a user