mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
rust: rust_is_available: remove warning for bindgen < 0.69.5 && libclang >= 19.1
It is not possible anymore to fall into the issue that this warning was alerting about given the `bindgen` version bump. Thus simplify by removing the machinery behind it, including tests. Reviewed-by: Tamir Duberstein <tamird@kernel.org> Link: https://patch.msgid.link/20260405235309.418950-20-ojeda@kernel.org Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
@@ -214,21 +214,6 @@ if [ "$bindgen_libclang_cversion" -lt "$bindgen_libclang_min_cversion" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$bindgen_libclang_cversion" -ge 1900100 ] &&
|
||||
[ "$rust_bindings_generator_cversion" -lt 6905 ]; then
|
||||
# Distributions may have patched the issue (e.g. Debian did).
|
||||
if ! "$BINDGEN" $(dirname $0)/rust_is_available_bindgen_libclang_concat.h | grep -q foofoo; then
|
||||
echo >&2 "***"
|
||||
echo >&2 "*** Rust bindings generator '$BINDGEN' < 0.69.5 together with libclang >= 19.1"
|
||||
echo >&2 "*** may not work due to a bug (https://github.com/rust-lang/rust-bindgen/pull/2824),"
|
||||
echo >&2 "*** unless patched (like Debian's)."
|
||||
echo >&2 "*** Your bindgen version: $rust_bindings_generator_version"
|
||||
echo >&2 "*** Your libclang version: $bindgen_libclang_version"
|
||||
echo >&2 "***"
|
||||
warning=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# If the C compiler is Clang, then we can also check whether its version
|
||||
# matches the `libclang` version used by the Rust bindings generator.
|
||||
#
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#define F(x) int x##x
|
||||
F(foo);
|
||||
@@ -54,23 +54,16 @@ else:
|
||||
""")
|
||||
|
||||
@classmethod
|
||||
def generate_bindgen(cls, version_stdout, libclang_stderr, libclang_concat_patched=False):
|
||||
def generate_bindgen(cls, version_stdout, libclang_stderr):
|
||||
if libclang_stderr is None:
|
||||
libclang_case = f"raise SystemExit({cls.bindgen_default_bindgen_libclang_failure_exit_code})"
|
||||
else:
|
||||
libclang_case = f"print({repr(libclang_stderr)}, file=sys.stderr)"
|
||||
|
||||
if libclang_concat_patched:
|
||||
libclang_concat_case = "print('pub static mut foofoo: ::std::os::raw::c_int;')"
|
||||
else:
|
||||
libclang_concat_case = "pass"
|
||||
|
||||
return cls.generate_executable(f"""#!/usr/bin/env python3
|
||||
import sys
|
||||
if "rust_is_available_bindgen_libclang.h" in " ".join(sys.argv):
|
||||
{libclang_case}
|
||||
elif "rust_is_available_bindgen_libclang_concat.h" in " ".join(sys.argv):
|
||||
{libclang_concat_case}
|
||||
else:
|
||||
print({repr(version_stdout)})
|
||||
""")
|
||||
@@ -255,31 +248,6 @@ else:
|
||||
result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen })
|
||||
self.assertIn(f"libclang (used by the Rust bindings generator '{bindgen}') is too old.", result.stderr)
|
||||
|
||||
def test_bindgen_bad_libclang_concat(self):
|
||||
for (bindgen_version, libclang_version, expected_not_patched) in (
|
||||
("0.69.4", "18.0.0", self.Expected.SUCCESS),
|
||||
("0.69.4", "19.1.0", self.Expected.SUCCESS_WITH_WARNINGS),
|
||||
("0.69.4", "19.2.0", self.Expected.SUCCESS_WITH_WARNINGS),
|
||||
|
||||
("0.69.5", "18.0.0", self.Expected.SUCCESS),
|
||||
("0.69.5", "19.1.0", self.Expected.SUCCESS),
|
||||
("0.69.5", "19.2.0", self.Expected.SUCCESS),
|
||||
|
||||
("0.70.0", "18.0.0", self.Expected.SUCCESS),
|
||||
("0.70.0", "19.1.0", self.Expected.SUCCESS),
|
||||
("0.70.0", "19.2.0", self.Expected.SUCCESS),
|
||||
):
|
||||
with self.subTest(bindgen_version=bindgen_version, libclang_version=libclang_version):
|
||||
cc = self.generate_clang(f"clang version {libclang_version}")
|
||||
libclang_stderr = f"scripts/rust_is_available_bindgen_libclang.h:2:9: warning: clang version {libclang_version} [-W#pragma-messages], err: false"
|
||||
bindgen = self.generate_bindgen(f"bindgen {bindgen_version}", libclang_stderr)
|
||||
result = self.run_script(expected_not_patched, { "BINDGEN": bindgen, "CC": cc })
|
||||
if expected_not_patched == self.Expected.SUCCESS_WITH_WARNINGS:
|
||||
self.assertIn(f"Rust bindings generator '{bindgen}' < 0.69.5 together with libclang >= 19.1", result.stderr)
|
||||
|
||||
bindgen = self.generate_bindgen(f"bindgen {bindgen_version}", libclang_stderr, libclang_concat_patched=True)
|
||||
result = self.run_script(self.Expected.SUCCESS, { "BINDGEN": bindgen, "CC": cc })
|
||||
|
||||
def test_clang_matches_bindgen_libclang_different_bindgen(self):
|
||||
bindgen = self.generate_bindgen_libclang("scripts/rust_is_available_bindgen_libclang.h:2:9: warning: clang version 999.0.0 [-W#pragma-messages], err: false")
|
||||
result = self.run_script(self.Expected.SUCCESS_WITH_WARNINGS, { "BINDGEN": bindgen })
|
||||
|
||||
Reference in New Issue
Block a user