Commit c844fa64 authored by Miguel Ojeda's avatar Miguel Ojeda
Browse files

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: default avatarBenno Lossin <benno.lossin@proton.me>
Tested-by: default avatarAndreas Hindborg <a.hindborg@samsung.com>
Link: https://lore.kernel.org/r/20240709160615.998336-10-ojeda@kernel.org


Signed-off-by: default avatarMiguel Ojeda <ojeda@kernel.org>
parent 9e98db17
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -107,11 +107,12 @@ bindgen
*******

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
may be linked statically, dynamically or loaded at runtime). By default, the
+0 −8
Original line number Diff line number Diff line
@@ -161,14 +161,6 @@ if [ "$rust_bindings_generator_cversion" -lt "$rust_bindings_generator_min_cvers
	echo >&2 "***"
	exit 1
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.
#
+0 −5
Original line number Diff line number Diff line
@@ -231,11 +231,6 @@ else:
        result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen })
        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):
        bindgen = self.generate_bindgen_libclang_failure()
        result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen })