rust: silence unknown warnings for the sake of old compilers
Occasionally, we may need to silence warnings and clippy lints that were only introduced in newer Rust compiler versions. However, this would fail when compiling with an older rustc: error: unknown lint: `non_local_definitions` --> rust/qemu-api/rust-qemu-api-tests.p/structured/offset_of.rs:79:17 So by default we need to block the unknown_lints warning. To avoid misspelled lints or other similar issues, re-enable it in the CI job that uses nightly rust. Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
718e255f0a
commit
c6ea723da9
@ -128,7 +128,7 @@ build-system-fedora-rust-nightly:
|
||||
job: amd64-fedora-rust-nightly-container
|
||||
variables:
|
||||
IMAGE: fedora-rust-nightly
|
||||
CONFIGURE_ARGS: --disable-docs --enable-rust
|
||||
CONFIGURE_ARGS: --disable-docs --enable-rust --enable-strict-rust-lints
|
||||
TARGETS: aarch64-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
allow_failure: true
|
||||
|
@ -3346,6 +3346,14 @@ if have_rust and have_system
|
||||
# Prohibit code that is forbidden in Rust 2024
|
||||
rustc_args += ['-D', 'unsafe_op_in_unsafe_fn']
|
||||
|
||||
# Occasionally, we may need to silence warnings and clippy lints that
|
||||
# were only introduced in newer Rust compiler versions. Do not croak
|
||||
# in that case; a CI job with rust_strict_lints == true ensures that
|
||||
# we do not have misspelled allow() attributes.
|
||||
if not get_option('strict_rust_lints')
|
||||
rustc_args += ['-A', 'unknown_lints']
|
||||
endif
|
||||
|
||||
# Apart from procedural macros, our Rust executables will often link
|
||||
# with C code, so include all the libraries that C code needs. This
|
||||
# is safe; https://github.com/rust-lang/rust/pull/54675 says that
|
||||
|
@ -378,3 +378,5 @@ option('x86_version', type : 'combo', choices : ['0', '1', '2', '3', '4'], value
|
||||
|
||||
option('rust', type: 'feature', value: 'disabled',
|
||||
description: 'Rust support')
|
||||
option('strict_rust_lints', type: 'boolean', value: false,
|
||||
description: 'Enable stricter set of Rust warnings')
|
||||
|
@ -47,6 +47,8 @@ meson_options_help() {
|
||||
printf "%s\n" ' getrandom()'
|
||||
printf "%s\n" ' --enable-safe-stack SafeStack Stack Smash Protection (requires'
|
||||
printf "%s\n" ' clang/llvm and coroutine backend ucontext)'
|
||||
printf "%s\n" ' --enable-strict-rust-lints'
|
||||
printf "%s\n" ' Enable stricter set of Rust warnings'
|
||||
printf "%s\n" ' --enable-strip Strip targets on install'
|
||||
printf "%s\n" ' --enable-tcg-interpreter TCG with bytecode interpreter (slow)'
|
||||
printf "%s\n" ' --enable-trace-backends=CHOICES'
|
||||
@ -493,6 +495,8 @@ _meson_option_parse() {
|
||||
--disable-spice-protocol) printf "%s" -Dspice_protocol=disabled ;;
|
||||
--enable-stack-protector) printf "%s" -Dstack_protector=enabled ;;
|
||||
--disable-stack-protector) printf "%s" -Dstack_protector=disabled ;;
|
||||
--enable-strict-rust-lints) printf "%s" -Dstrict_rust_lints=true ;;
|
||||
--disable-strict-rust-lints) printf "%s" -Dstrict_rust_lints=false ;;
|
||||
--enable-strip) printf "%s" -Dstrip=true ;;
|
||||
--disable-strip) printf "%s" -Dstrip=false ;;
|
||||
--sysconfdir=*) quote_sh "-Dsysconfdir=$2" ;;
|
||||
|
Loading…
Reference in New Issue
Block a user