bootc-202603021209.g7a5ce1e3f0-1

List of Findings

Error: SHELLCHECK_WARNING (CWE-457): [#def1]
/usr/lib/dracut/modules.d/51bootc/module-setup.sh:16:18: warning[SC2154]: systemdsystemunitdir is referenced but not assigned.
#   14|       local service=bootc-root-setup.service
#   15|       dracut_install /usr/lib/bootc/initramfs-setup
#   16|->     inst_simple "${systemdsystemunitdir}/${service}"
#   17|       mkdir -p "${initdir}${systemdsystemconfdir}/initrd-root-fs.target.wants"
#   18|       ln_r "${systemdsystemunitdir}/${service}" \

Error: SHELLCHECK_WARNING (CWE-457): [#def2]
/usr/lib/dracut/modules.d/51bootc/module-setup.sh:17:15: warning[SC2154]: initdir is referenced but not assigned.
#   15|       dracut_install /usr/lib/bootc/initramfs-setup
#   16|       inst_simple "${systemdsystemunitdir}/${service}"
#   17|->     mkdir -p "${initdir}${systemdsystemconfdir}/initrd-root-fs.target.wants"
#   18|       ln_r "${systemdsystemunitdir}/${service}" \
#   19|           "${systemdsystemconfdir}/initrd-root-fs.target.wants/${service}"

Error: SHELLCHECK_WARNING (CWE-457): [#def3]
/usr/lib/dracut/modules.d/51bootc/module-setup.sh:17:25: warning[SC2154]: systemdsystemconfdir is referenced but not assigned.
#   15|       dracut_install /usr/lib/bootc/initramfs-setup
#   16|       inst_simple "${systemdsystemunitdir}/${service}"
#   17|->     mkdir -p "${initdir}${systemdsystemconfdir}/initrd-root-fs.target.wants"
#   18|       ln_r "${systemdsystemunitdir}/${service}" \
#   19|           "${systemdsystemconfdir}/initrd-root-fs.target.wants/${service}"

Error: COMPILER_WARNING (CWE-704): [#def4]
bootc-202603021209.g7a5ce1e3f0/vendor/libz-sys/src/smoke.c: scope_hint: In function 'main'
bootc-202603021209.g7a5ce1e3f0/vendor/libz-sys/src/smoke.c:4:10: warning[-Wpointer-to-int-cast]: cast from pointer to integer of different size
#    4 |   return (int) adler32;
#      |          ^
#    2|   
#    3|   int main() {
#    4|->   return (int) adler32;
#    5|   }

Error: CLIPPY_WARNING: [#def5]
crates/etc-merge/src/lib.rs:78:5: warning: unneeded `return` statement
#     |
#  78 |     return true;
#     |     ^^^^^^^^^^^
#     |
#     = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#     = note: `#[warn(clippy::needless_return)]` on by default
#  help: remove `return`
#     |
#  78 -     return true;
#  78 +     true
#     |

Error: CLIPPY_WARNING: [#def6]
crates/etc-merge/src/lib.rs:310:5: warning: doc list item without indentation
#      |
#  310 | /// Usually this will be obtained by remounting the EROFS image to a temporary location
#      |     ^
#      |
#      = help: if this is supposed to be its own paragraph, add a blank line
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#doc_lazy_continuation
#      = note: `#[warn(clippy::doc_lazy_continuation)]` on by default
#  help: indent this line
#      |
#  310 | ///   Usually this will be obtained by remounting the EROFS image to a temporary location
#      |     ++

Error: CLIPPY_WARNING: [#def7]
crates/etc-merge/src/lib.rs:315:5: warning: doc list item without indentation
#      |
#  315 | /// again be usually obtained by mounting the new EROFS image to a temporary location. If merging
#      |     ^
#      |
#      = help: if this is supposed to be its own paragraph, add a blank line
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#doc_lazy_continuation
#  help: indent this line
#      |
#  315 | ///   again be usually obtained by mounting the new EROFS image to a temporary location. If merging
#      |     ++

Error: CLIPPY_WARNING: [#def8]
crates/etc-merge/src/lib.rs:316:5: warning: doc list item without indentation
#      |
#  316 | /// it will be necessary to make the `/etc` for the deployment writeable
#      |     ^
#      |
#      = help: if this is supposed to be its own paragraph, add a blank line
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#doc_lazy_continuation
#  help: indent this line
#      |
#  316 | ///   it will be necessary to make the `/etc` for the deployment writeable
#      |     ++

Error: CLIPPY_WARNING: [#def9]
crates/etc-merge/src/lib.rs:329:6: warning: very complex type used. Consider factoring parts into `type` definitions
#      |
#  329 |   ) -> anyhow::Result<(
#      |  ______^
#  330 | |     Directory<CustomMetadata>,
#  331 | |     Directory<CustomMetadata>,
#  332 | |     Option<Directory<CustomMetadata>>,
#  333 | | )> {
#      | |__^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#type_complexity
#      = note: `#[warn(clippy::type_complexity)]` on by default

Error: CLIPPY_WARNING: [#def10]
crates/etc-merge/src/lib.rs:353:5: warning: unneeded `return` statement
#      |
#  353 |     return Ok((pristine_etc_files, current_etc_files, new_etc_files));
#      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#  help: remove `return`
#      |
#  353 -     return Ok((pristine_etc_files, current_etc_files, new_etc_files));
#  353 +     Ok((pristine_etc_files, current_etc_files, new_etc_files))
#      |

Error: CLIPPY_WARNING: [#def11]
crates/etc-merge/src/lib.rs:458:35: warning: useless use of `format!`
#      |
#  458 |         let entry = entry.context(format!("Getting entry"))?;
#      |                                   ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Getting entry".to_string()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#useless_format
#      = note: `#[warn(clippy::useless_format)]` on by default

Error: CLIPPY_WARNING: [#def12]
crates/kernel_cmdline/src/utf8.rs:371:9: warning: this `if` statement can be collapsed
#      |
#  371 | /         if let Some(value) = bytes.value() {
#  372 | |             if str::from_utf8(value).is_err() {
#  373 | |                 anyhow::bail!("Parameter value is not valid UTF-8");
#  374 | |             }
#  375 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#      = note: `#[warn(clippy::collapsible_if)]` on by default
#  help: collapse nested if block
#      |
#  371 ~         if let Some(value) = bytes.value()
#  372 ~             && str::from_utf8(value).is_err() {
#  373 |                 anyhow::bail!("Parameter value is not valid UTF-8");
#  374 ~             }
#      |

Error: CLIPPY_WARNING: [#def13]
crates/lib/src/bootc_composefs/boot.rs:425:6: warning: very complex type used. Consider factoring parts into `type` definitions
#      |
#  425 | ) -> Result<Option<(String, Option<String>, Option<String>)>> {
#      |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#type_complexity
#      = note: `#[warn(clippy::type_complexity)]` on by default

Error: CLIPPY_WARNING: [#def14]
crates/lib/src/bootc_composefs/boot.rs:530:21: warning: useless conversion to the same type: `bootc_kernel_cmdline::utf8::Cmdline<'_>`
#      |
#  530 |                     Cmdline::from(options)
#      |                     ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Cmdline::from()`: `options`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#useless_conversion
#      = note: `#[warn(clippy::useless_conversion)]` on by default

Error: CLIPPY_WARNING: [#def15]
crates/lib/src/bootc_composefs/boot.rs:788:1: warning: this function has too many arguments (8/7)
#      |
#  788 | / fn write_pe_to_esp(
#  789 | |     repo: &crate::store::ComposefsRepository,
#  790 | |     file: &RegularFile<Sha512HashValue>,
#  791 | |     file_path: &Utf8Path,
#  ...   |
#  796 | |     bootloader: &Bootloader,
#  797 | | ) -> Result<Option<UKIInfo>> {
#      | |____________________________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#too_many_arguments
#      = note: `#[warn(clippy::too_many_arguments)]` on by default

Error: CLIPPY_WARNING: [#def16]
crates/lib/src/bootc_composefs/boot.rs:884:29: warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator
#      |
#  884 |           PEType::UkiAddon => file_path
#      |  _____________________________^
#  885 | |             .components()
#  886 | |             .last()
#      | |______________-----^
#      |                |
#      |                help: try: `next_back()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#double_ended_iterator_last
#      = note: `#[warn(clippy::double_ended_iterator_last)]` on by default

Error: CLIPPY_WARNING: [#def17]
crates/lib/src/bootc_composefs/boot.rs:1117:38: warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator
#       |
#  1117 |                       let addon_name = entry
#       |  ______________________________________^
#  1118 | |                         .file_path
#  1119 | |                         .components()
#  1120 | |                         .last()
#       | |__________________________-----^
#       |                            |
#       |                            help: try: `next_back()`
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#double_ended_iterator_last

Error: CLIPPY_WARNING: [#def18]
crates/lib/src/bootc_composefs/boot.rs:1214:5: warning: unneeded `return` statement
#       |
#  1214 | /     return Ok(Some(SecurebootKeys {
#  1215 | |         dir: keys_dir,
#  1216 | |         keys: entries,
#  1217 | |     }));
#       | |_______^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#       = note: `#[warn(clippy::needless_return)]` on by default
#  help: remove `return`
#       |
#  1214 ~     Ok(Some(SecurebootKeys {
#  1215 +         dir: keys_dir,
#  1216 +         keys: entries,
#  1217 ~     }))
#       |

Error: CLIPPY_WARNING: [#def19]
crates/lib/src/bootc_composefs/boot.rs:1276:23: warning: using `.iter().next()` on an array
#       |
#  1276 |     let Some(entry) = entries.iter().next() else {
#       |                       ^^^^^^^^^^^^^^^^^^^^^ help: try calling: `entries.first()`
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#iter_next_slice
#       = note: `#[warn(clippy::iter_next_slice)]` on by default

Error: CLIPPY_WARNING: [#def20]
crates/lib/src/bootc_composefs/delete.rs:333:8: warning: taken reference of right operand
#      |
#  333 |     if deployment_id == &booted.verity {
#      |        ^^^^^^^^^^^^^^^^^--------------
#      |                         |
#      |                         help: use the right value directly: `booted.verity`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#op_ref
#      = note: `#[warn(clippy::op_ref)]` on by default

Error: CLIPPY_WARNING: [#def21]
crates/lib/src/bootc_composefs/delete.rs:347:27: warning: this `map_or` can be simplified
#      |
#  347 |       let deleting_staged = host
#      |  ___________________________^
#  348 | |         .status
#  349 | |         .staged
#  350 | |         .as_ref()
#  351 | |         .and_then(|s| s.composefs.as_ref())
#  352 | |         .map_or(false, |cfs| cfs.verity == deployment_id);
#      | |_________________________________________________________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#unnecessary_map_or
#      = note: `#[warn(clippy::unnecessary_map_or)]` on by default
#  help: use is_some_and instead
#      |
#  352 -         .map_or(false, |cfs| cfs.verity == deployment_id);
#  352 +         .is_some_and(|cfs| cfs.verity == deployment_id);
#      |

Error: CLIPPY_WARNING: [#def22]
crates/lib/src/bootc_composefs/export.rs:169:36: warning: using `clone` on type `Option<&History>` which implements the `Copy` trait
#      |
#  169 |           let previous_description = history_entry
#      |  ____________________________________^
#  170 | |             .clone()
#      | |____________________^ help: try removing the `clone` call: `history_entry`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#clone_on_copy
#      = note: `#[warn(clippy::clone_on_copy)]` on by default

Error: CLIPPY_WARNING: [#def23]
crates/lib/src/bootc_composefs/state.rs:128:5: warning: returning the result of a `let` binding from a block
#      |
#  119 | /     let cp_ret = Command::new("cp")
#  120 | |         .args([
#  121 | |             "-a",
#  122 | |             "--remove-destination",
#  ...   |
#  125 | |         ])
#  126 | |         .run_capture_stderr();
#      | |______________________________- unnecessary `let` binding
#  127 |
#  128 |       cp_ret
#      |       ^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#let_and_return
#      = note: `#[warn(clippy::let_and_return)]` on by default
#  help: return the expression directly
#      |
#  119 ~     
#  120 |
#  121 ~     Command::new("cp")
#  122 +         .args([
#  123 +             "-a",
#  124 +             "--remove-destination",
#  125 +             &format!("{}/etc/.", tempdir.dir.path().as_str()?),
#  126 +             &format!("{state_path}/etc/."),
#  127 +         ])
#  128 +         .run_capture_stderr()
#      |

Error: CLIPPY_WARNING: [#def24]
crates/lib/src/bootc_composefs/state.rs:234:1: warning: this function has too many arguments (8/7)
#      |
#  234 | / pub(crate) async fn write_composefs_state(
#  235 | |     root_path: &Utf8PathBuf,
#  236 | |     deployment_id: &Sha512HashValue,
#  237 | |     target_imgref: &ImageReference,
#  ...   |
#  242 | |     allow_missing_fsverity: bool,
#  243 | | ) -> Result<()> {
#      | |_______________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#too_many_arguments

Error: CLIPPY_WARNING: [#def25]
crates/lib/src/bootc_composefs/status.rs:242:19: warning: slow zero-filling initialization
#      |
#  242 |       let mut buf = Vec::with_capacity(manifest.config().size() as usize);
#      |  ___________________^
#  243 | |     buf.resize(manifest.config().size() as usize, 0);
#      | |____________________________________________________^ help: consider replacing this with: `vec![0; manifest.config().size() as usize]`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#slow_vector_initialization
#      = note: `#[warn(clippy::slow_vector_initialization)]` on by default

Error: CLIPPY_WARNING: [#def26]
crates/lib/src/bootc_composefs/status.rs:455:5: warning: unneeded `return` statement
#      |
#  455 |     return true;
#      |     ^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#  help: remove `return`
#      |
#  455 -     return true;
#  455 +     true
#      |

Error: CLIPPY_WARNING: [#def27]
crates/lib/src/bootc_composefs/status.rs:473:43: warning: deref which would be done by auto-deref
#      |
#  473 |     let booted_bls_entry = find_bls_entry(&*booted_cmdline.digest, &bls_entries)?
#      |                                           ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&booted_cmdline.digest`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#explicit_auto_deref
#      = note: `#[warn(clippy::explicit_auto_deref)]` on by default

Error: CLIPPY_WARNING: [#def28]
crates/lib/src/bootc_composefs/status.rs:531:8: warning: needless call to `as_bytes`
#      |
#  531 |     if target.full_cmdline.as_bytes().len() != booted.full_cmdline.as_bytes().len() {
#      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `target.full_cmdline.len()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_as_bytes
#      = note: `#[warn(clippy::needless_as_bytes)]` on by default

Error: CLIPPY_WARNING: [#def29]
crates/lib/src/bootc_composefs/status.rs:531:48: warning: needless call to `as_bytes`
#      |
#  531 |     if target.full_cmdline.as_bytes().len() != booted.full_cmdline.as_bytes().len() {
#      |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `booted.full_cmdline.len()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_as_bytes

Error: CLIPPY_WARNING: [#def30]
crates/lib/src/bootc_composefs/status.rs:542:5: warning: unneeded `return` statement
#      |
#  542 |     return Ok(cmdline_eq && selinux_compatible);
#      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#  help: remove `return`
#      |
#  542 -     return Ok(cmdline_eq && selinux_compatible);
#  542 +     Ok(cmdline_eq && selinux_compatible)
#      |

Error: CLIPPY_WARNING: [#def31]
crates/lib/src/bootc_composefs/update.rs:101:5: warning: doc list item overindented
#      |
#  101 | ///    /run/composefs/staged-deployment which is the last thing we create while upgrading
#      |     ^^^ help: try using `  ` (2 spaces)
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#doc_overindented_list_items
#      = note: `#[warn(clippy::doc_overindented_list_items)]` on by default

Error: CLIPPY_WARNING: [#def32]
crates/lib/src/bootc_composefs/update.rs:106:5: warning: doc list item overindented
#      |
#  106 | ///    point
#      |     ^^^ help: try using `  ` (2 spaces)
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#doc_overindented_list_items

Error: CLIPPY_WARNING: [#def33]
crates/lib/src/bootc_composefs/update.rs:111:5: warning: doc list item overindented
#      |
#  111 | ///    was created, or at any other point in time, or it's a new one.
#      |     ^^^ help: try using `  ` (2 spaces)
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#doc_overindented_list_items

Error: CLIPPY_WARNING: [#def34]
crates/lib/src/bootc_composefs/update.rs:112:5: warning: doc list item overindented
#      |
#  112 | ///    Any which way, we can overwrite everything
#      |     ^^^ help: try using `  ` (2 spaces)
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#doc_overindented_list_items

Error: CLIPPY_WARNING: [#def35]
crates/lib/src/bootc_composefs/update.rs:221:14: warning: writing `&String` instead of `&str` involves a new object where a slice will do
#      |
#  221 |     depl_id: &String,
#      |              ^^^^^^^ help: change this to: `&str`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#ptr_arg
#      = note: `#[warn(clippy::ptr_arg)]` on by default

Error: CLIPPY_WARNING: [#def36]
crates/lib/src/bootc_composefs/update.rs:261:23: warning: using `.iter().next()` on an array
#      |
#  261 |     let Some(entry) = entries.iter().next() else {
#      |                       ^^^^^^^^^^^^^^^^^^^^^ help: try calling: `entries.first()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#iter_next_slice

Error: CLIPPY_WARNING: [#def37]
crates/lib/src/bootc_composefs/update.rs:487:34: warning: deref which would be done by auto-deref
#      |
#  487 |             get_imginfo(storage, &*composefs.cmdline.digest, Some(booted_imgref)).await?;
#      |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&composefs.cmdline.digest`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#explicit_auto_deref

Error: CLIPPY_WARNING: [#def38]
crates/lib/src/cli.rs:1179:5: warning: unneeded `return` statement
#       |
#  1179 |     return Ok(target);
#       |     ^^^^^^^^^^^^^^^^^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#  help: remove `return`
#       |
#  1179 -     return Ok(target);
#  1179 +     Ok(target)
#       |

Error: CLIPPY_WARNING: [#def39]
crates/lib/src/deploy.rs:796:13: warning: field assignment outside of initializer for an instance created with Default::default()
#      |
#  796 |             opts.locked = lock_finalization;
#      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      |
#  note: consider initializing the variable with `SysrootDeployTreeOpts::<'_> { locked: lock_finalization, ..Default::default() }` and removing relevant reassignments
#     --> crates/lib/src/deploy.rs:793:13
#      |
#  793 |             let mut opts = ostree::SysrootDeployTreeOpts::default();
#      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#field_reassign_with_default
#      = note: `#[warn(clippy::field_reassign_with_default)]` on by default

Error: CLIPPY_WARNING: [#def40]
crates/lib/src/image.rs:188:5: warning: unneeded `return` statement
#      |
#  188 |     return Ok((src_imgref, dest_imgref));
#      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#  help: remove `return`
#      |
#  188 -     return Ok((src_imgref, dest_imgref));
#  188 +     Ok((src_imgref, dest_imgref))
#      |

Error: CLIPPY_WARNING: [#def41]
crates/lib/src/install.rs:1681:5: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
#       |
#  1681 | /     match kernel {
#  1682 | |         Some(k) => match k.k_type {
#  1683 | |             crate::kernel::KernelType::Uki { cmdline, .. } => {
#  1684 | |                 let allow_missing_fsverity = cmdline.is_some_and(|cmd| {
#  ...    |
#  1703 | |         None => {}
#  1704 | |     }
#       | |_____^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#single_match
#       = note: `#[warn(clippy::single_match)]` on by default
#  help: try
#       |
#  1681 ~     if let Some(k) = kernel { match k.k_type {
#  1682 +         crate::kernel::KernelType::Uki { cmdline, .. } => {
#  1683 +             let allow_missing_fsverity = cmdline.is_some_and(|cmd| {
#  1684 +                 ComposefsCmdline::find_in_cmdline(&cmd)
#  1685 +                     .is_some_and(|cfs_cmdline| cfs_cmdline.allow_missing_fsverity)
#  1686 +             });
#  1687 + 
#  1688 +             if !allow_missing_fsverity {
#  1689 +                 anyhow::ensure!(
#  1690 +                     root_filesystem.supports_fsverity(),
#  1691 +                     "Specified filesystem {root_filesystem} does not support fs-verity"
#  1692 +                 );
#  1693 +             }
#  1694 + 
#  1695 +             composefs_options.allow_missing_verity = allow_missing_fsverity;
#  1696 +             is_uki = true;
#  1697 +         }
#  1698 + 
#  1699 +         crate::kernel::KernelType::Vmlinuz { .. } => {}
#  1700 +     } }
#       |

Error: CLIPPY_WARNING: [#def42]
crates/lib/src/install.rs:1774:20: warning: this `else { if .. }` block can be collapsed
#       |
#  1774 |               } else {
#       |  ____________________^
#  1775 | |                 if crate::bootloader::supports_bootupd(d)? {
#  1776 | |                     crate::spec::Bootloader::Grub
#  1777 | |                 } else {
#  ...    |
#  1780 | |             }
#       | |_____________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_else_if
#       = note: `#[warn(clippy::collapsible_else_if)]` on by default
#  help: collapse nested if block
#       |
#  1774 ~             } else if crate::bootloader::supports_bootupd(d)? {
#  1775 +                 crate::spec::Bootloader::Grub
#  1776 +             } else {
#  1777 +                 crate::spec::Bootloader::Systemd
#  1778 +             }
#       |

Error: CLIPPY_WARNING: [#def43]
crates/lib/src/install.rs:2017:24: warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value
#       |
#  2017 |       let source_image = opts
#       |  ________________________^
#  2018 | |         .source_opts
#  2019 | |         .source_imgref
#  2020 | |         .as_ref()
#  2021 | |         .map(|s| s.as_str())
#       | |____________________________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#option_as_ref_deref
#       = note: `#[warn(clippy::option_as_ref_deref)]` on by default
#  help: consider using as_deref
#       |
#  2017 ~     let source_image = opts
#  2018 +         .source_opts
#  2019 +         .source_imgref.as_deref()
#       |

Error: CLIPPY_WARNING: [#def44]
crates/lib/src/install.rs:2345:24: warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value
#       |
#  2345 |       let source_image = opts
#       |  ________________________^
#  2346 | |         .source_opts
#  2347 | |         .source_imgref
#  2348 | |         .as_ref()
#  2349 | |         .map(|s| s.as_str())
#       | |____________________________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#option_as_ref_deref
#  help: consider using as_deref
#       |
#  2345 ~     let source_image = opts
#  2346 +         .source_opts
#  2347 +         .source_imgref.as_deref()
#       |

Error: CLIPPY_WARNING: [#def45]
crates/lib/src/install.rs:2626:24: warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value
#       |
#  2626 |       let source_image = opts
#       |  ________________________^
#  2627 | |         .source_opts
#  2628 | |         .source_imgref
#  2629 | |         .as_ref()
#  2630 | |         .map(|s| s.as_str())
#       | |____________________________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#option_as_ref_deref
#  help: consider using as_deref
#       |
#  2626 ~     let source_image = opts
#  2627 +         .source_opts
#  2628 +         .source_imgref.as_deref()
#       |

Error: CLIPPY_WARNING: [#def46]
crates/lib/src/lints.rs:773:43: warning: useless conversion to the same type: `cap_std_ext::cap_std::fs::ReadDir`
#      |
#  773 |       let entries: Result<BTreeSet<_>, _> = d
#      |  ___________________________________________^
#  774 | |         .entries()?
#  775 | |         .into_iter()
#      | |____________________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#useless_conversion
#  help: consider removing `.into_iter()`
#      |
#  773 ~     let entries: Result<BTreeSet<_>, _> = d
#  774 +         .entries()?
#      |

Error: CLIPPY_WARNING: [#def47]
crates/lib/src/parsers/bls_config.rs:21:5: warning: name `EFI` contains a capitalized acronym
#     |
#  21 |     EFI {
#     |     ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Efi`
#     |
#     = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#upper_case_acronyms
#     = note: `#[warn(clippy::upper_case_acronyms)]` on by default

Error: CLIPPY_WARNING: [#def48]
crates/lib/src/parsers/bls_config.rs:177:46: warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator
#      |
#  177 |               BLSConfigType::EFI { efi } => Ok(efi
#      |  ______________________________________________^
#  178 | |                 .components()
#  179 | |                 .last()
#      | |__________________-----^
#      |                    |
#      |                    help: try: `next_back()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#double_ended_iterator_last

Error: CLIPPY_WARNING: [#def49]
crates/lib/src/parsers/grub_menuconfig.rs:109:12: warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator
#      |
#  109 |           Ok(to_path
#      |  ____________^
#  110 | |             .components()
#  111 | |             .last()
#      | |______________-----^
#      |                |
#      |                help: try: `next_back()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#double_ended_iterator_last

Error: CLIPPY_WARNING: [#def50]
crates/lib/src/parsers/grub_menuconfig.rs:134:22: warning: redundant guard
#      |
#  134 |                 c if c == '\\' => {
#      |                      ^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#redundant_guards
#      = note: `#[warn(clippy::redundant_guards)]` on by default
#  help: try
#      |
#  134 -                 c if c == '\\' => {
#  134 +                 '\\' => {
#      |

Error: CLIPPY_WARNING: [#def51]
crates/lib/src/podstorage.rs:165:35: warning: the following explicit lifetimes could be elided: 'c
#      |
#  165 | pub fn set_additional_image_store<'c>(
#      |                                   ^^
#  166 |     cmd: &'c mut Command,
#      |           ^^
#  167 |     ais: impl AsRef<Utf8Path>,
#  168 | ) -> &'c mut Command {
#      |       ^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_lifetimes
#      = note: `#[warn(clippy::needless_lifetimes)]` on by default
#  help: elide the lifetimes
#      |
#  165 ~ pub fn set_additional_image_store(
#  166 ~     cmd: &mut Command,
#  167 |     ais: impl AsRef<Utf8Path>,
#  168 ~ ) -> &mut Command {
#      |

Error: CLIPPY_WARNING: [#def52]
crates/lib/src/utils.rs:246:13: warning: unneeded `return` statement
#      |
#  246 |             return Ok(loader);
#      |             ^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#  help: remove `return`
#      |
#  246 -             return Ok(loader);
#  246 +             Ok(loader)
#      |

Error: CLIPPY_WARNING: [#def53]
crates/lib/src/utils.rs:250:13: warning: unneeded `return` statement
#      |
#  250 |             return Err(EfiError::MissingVar);
#      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#  help: remove `return`
#      |
#  250 -             return Err(EfiError::MissingVar);
#  250 +             Err(EfiError::MissingVar)
#      |

Error: CLIPPY_WARNING: [#def54]
crates/lib/src/utils.rs:270:14: warning: this `repeat().take()` can be written more concisely
#      |
#  270 |     let up = std::iter::repeat(Component::ParentDir).take(from.len() - common);
#      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(Component::ParentDir, from.len() - common)`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#manual_repeat_n
#      = note: `#[warn(clippy::manual_repeat_n)]` on by default

Error: CLIPPY_WARNING: [#def55]
crates/lib/src/utils.rs:276:5: warning: unneeded `return` statement
#      |
#  276 |     return Ok(final_path);
#      |     ^^^^^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_return
#  help: remove `return`
#      |
#  276 -     return Ok(final_path);
#  276 +     Ok(final_path)
#      |

Error: CLIPPY_WARNING: [#def56]
crates/ostree-ext/src/cli.rs:797:9: warning: this `if` statement can be collapsed
#      |
#  797 | /         if let Some(ordered) = raw.ordered {
#  798 | |             if ordered {
#  799 | |                 return Err(anyhow::anyhow!("Ordered mapping not currently supported."));
#  800 | |             }
#  801 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#      = note: `#[warn(clippy::collapsible_if)]` on by default
#  help: collapse nested if block
#      |
#  797 ~         if let Some(ordered) = raw.ordered
#  798 ~             && ordered {
#  799 |                 return Err(anyhow::anyhow!("Ordered mapping not currently supported."));
#  800 ~             }
#      |

Error: CLIPPY_WARNING: [#def57]
crates/ostree-ext/src/container/store.rs:605:9: warning: this `if` statement can be collapsed
#      |
#  605 | /         if let Some(meta) = root.symlink_metadata_optional(ent)? {
#  606 | |             if meta.is_file() && meta.size() == 0 {
#  607 | |                 tracing::debug!("Removing {ent}");
#  608 | |                 root.remove_file(ent)?;
#  609 | |             }
#  610 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  605 ~         if let Some(meta) = root.symlink_metadata_optional(ent)?
#  606 ~             && meta.is_file() && meta.size() == 0 {
#  607 |                 tracing::debug!("Removing {ent}");
#  608 |                 root.remove_file(ent)?;
#  609 ~             }
#      |

Error: CLIPPY_WARNING: [#def58]
crates/ostree-ext/src/container/store.rs:1069:5: warning: this function has too many arguments (10/7)
#       |
#  1069 | /     fn write_merge_commit_impl(
#  1070 | |         repo: &ostree::Repo,
#  1071 | |         base_commit: Option<&str>,
#  1072 | |         layer_commits: &[String],
#  ...    |
#  1079 | |         cancellable: Option<&gio::Cancellable>,
#  1080 | |     ) -> Result<Box<LayeredImageState>> {
#       | |_______________________________________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#too_many_arguments
#       = note: `#[warn(clippy::too_many_arguments)]` on by default

Error: CLIPPY_WARNING: [#def59]
crates/ostree-ext/src/container/store.rs:1168:22: warning: derefed type is same as origin
#       |
#  1168 |         let parent = base_commit.as_deref();
#       |                      ^^^^^^^^^^^^^^^^^^^^^^ help: try: `base_commit`
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_option_as_deref
#       = note: `#[warn(clippy::needless_option_as_deref)]` on by default

Error: CLIPPY_WARNING: [#def60]
crates/ostree-ext/src/container/store.rs:1708:36: warning: using `clone` on type `Option<&History>` which implements the `Copy` trait
#       |
#  1708 |           let previous_description = history_entry
#       |  ____________________________________^
#  1709 | |             .clone()
#       | |____________________^ help: try removing the `clone` call: `history_entry`
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#clone_on_copy
#       = note: `#[warn(clippy::clone_on_copy)]` on by default

Error: CLIPPY_WARNING: [#def61]
crates/ostree-ext/src/container/unencapsulate.rs:224:13: warning: this `if` statement can be collapsed
#      |
#  224 | /             if transport_src == Transport::DockerDaemon {
#  225 | |                 if let oci_image::MediaType::Other(t) = &media_type {
#  226 | |                     if t.as_str() == "application/vnd.docker.image.rootfs.diff.tar.gzip" {
#  227 | |                         media_type = oci_image::MediaType::Other(
#  ...   |
#  232 | |             }
#      | |_____________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  224 ~             if transport_src == Transport::DockerDaemon
#  225 ~                 && let oci_image::MediaType::Other(t) = &media_type {
#  226 |                     if t.as_str() == "application/vnd.docker.image.rootfs.diff.tar.gzip" {
#  ...
#  230 |                     }
#  231 ~                 }
#      |

Error: CLIPPY_WARNING: [#def62]
crates/ostree-ext/src/container/unencapsulate.rs:225:17: warning: this `if` statement can be collapsed
#      |
#  225 | /                 if let oci_image::MediaType::Other(t) = &media_type {
#  226 | |                     if t.as_str() == "application/vnd.docker.image.rootfs.diff.tar.gzip" {
#  227 | |                         media_type = oci_image::MediaType::Other(
#  228 | |                             "application/vnd.docker.image.rootfs.diff.tar".to_string(),
#  ...   |
#  231 | |                 }
#      | |_________________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  225 ~                 if let oci_image::MediaType::Other(t) = &media_type
#  226 ~                     && t.as_str() == "application/vnd.docker.image.rootfs.diff.tar.gzip" {
#  227 |                         media_type = oci_image::MediaType::Other(
#  228 |                             "application/vnd.docker.image.rootfs.diff.tar".to_string(),
#  229 |                         );
#  230 ~                     }
#      |

Error: CLIPPY_WARNING: [#def63]
crates/ostree-ext/src/logging.rs:24:5: warning: this `if` statement can be collapsed
#     |
#  24 | /     if let Err(e) = libsystemd::logging::journal_send(priority, msg, vars) {
#  25 | |         if !EMITTED_JOURNAL_ERROR.swap(true, Ordering::SeqCst) {
#  26 | |             eprintln!("failed to write to journal: {e}");
#  27 | |         }
#  28 | |     }
#     | |_____^
#     |
#     = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#     |
#  24 ~     if let Err(e) = libsystemd::logging::journal_send(priority, msg, vars)
#  25 ~         && !EMITTED_JOURNAL_ERROR.swap(true, Ordering::SeqCst) {
#  26 |             eprintln!("failed to write to journal: {e}");
#  27 ~         }
#     |

Error: CLIPPY_WARNING: [#def64]
crates/ostree-ext/src/ostree_prepareroot.rs:105:1: warning: this `impl` can be derived
#      |
#  105 | / impl Default for Tristate {
#  106 | |     fn default() -> Self {
#  107 | |         Self::Disabled
#  108 | |     }
#  109 | | }
#      | |_^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#derivable_impls
#      = note: `#[warn(clippy::derivable_impls)]` on by default
#  help: replace the manual implementation with a derive attribute and mark the default variant
#      |
#   81 + #[derive(Default)]
#   82 | pub enum Tristate {
#   83 |     /// Enabled
#   84 |     Enabled,
#   85 |     /// Disabled
#   86 ~     #[default]
#   87 ~     Disabled,
#      |

Error: CLIPPY_WARNING: [#def65]
crates/ostree-ext/src/sysroot.rs:107:5: warning: this `let...else` may be rewritten with the `?` operator
#      |
#  107 | /     let Some(statename) = name.strip_prefix(AUTO_STATEROOT_PREFIX) else {
#  108 | |         return None;
#  109 | |     };
#      | |______^ help: replace it with: `let statename = name.strip_prefix(AUTO_STATEROOT_PREFIX)?;`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#question_mark
#      = note: `#[warn(clippy::question_mark)]` on by default

Error: CLIPPY_WARNING: [#def66]
crates/ostree-ext/src/sysroot.rs:110:5: warning: this `let...else` may be rewritten with the `?` operator
#      |
#  110 | /     let Some((year, serial)) = statename.split_once("-") else {
#  111 | |         return None;
#  112 | |     };
#      | |______^ help: replace it with: `let (year, serial) = statename.split_once("-")?;`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#question_mark

Error: CLIPPY_WARNING: [#def67]
crates/tests-integration/src/container.rs:53:5: warning: matching on `Some` with `ok()` is redundant
#     |
#  53 |     if let Some(variant) = std::env::var("BOOTC_variant").ok() {
#     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#     |
#     = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#match_result_ok
#     = note: `#[warn(clippy::match_result_ok)]` on by default
#  help: consider matching on `Ok(variant)` and removing the call to `ok` instead
#     |
#  53 -     if let Some(variant) = std::env::var("BOOTC_variant").ok() {
#  53 +     if let Ok(variant) = std::env::var("BOOTC_variant") {
#     |

Error: CLIPPY_WARNING: [#def68]
crates/tests-integration/src/container.rs:158:5: warning: matching on `Some` with `ok()` is redundant
#      |
#  158 |     if let Some(variant) = std::env::var("BOOTC_variant").ok() {
#      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#match_result_ok
#  help: consider matching on `Ok(variant)` and removing the call to `ok` instead
#      |
#  158 -     if let Some(variant) = std::env::var("BOOTC_variant").ok() {
#  158 +     if let Ok(variant) = std::env::var("BOOTC_variant") {
#      |

Error: CLIPPY_WARNING: [#def69]
crates/tests-integration/src/container.rs:171:5: warning: matching on `Some` with `ok()` is redundant
#      |
#  171 |     if let Some(base) = std::env::var("BOOTC_base").ok() {
#      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#match_result_ok
#  help: consider matching on `Ok(base)` and removing the call to `ok` instead
#      |
#  171 -     if let Some(base) = std::env::var("BOOTC_base").ok() {
#  171 +     if let Ok(base) = std::env::var("BOOTC_base") {
#      |

Error: CLIPPY_WARNING: [#def70]
crates/tests-integration/src/container.rs:220:9: warning: needless call to `as_bytes`
#      |
#  220 |         digest.as_bytes().len(),
#      |         ^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `digest.len()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_as_bytes
#      = note: `#[warn(clippy::needless_as_bytes)]` on by default

Error: CLIPPY_WARNING: [#def71]
crates/tests-integration/src/container.rs:223:9: warning: needless call to `as_bytes`
#      |
#  223 |         digest.as_bytes().len()
#      |         ^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `digest.len()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#needless_as_bytes

Error: CLIPPY_WARNING: [#def72]
crates/tmpfiles/src/lib.rs:86:5: warning: this `if` statement can be collapsed
#     |
#  86 | /     if let Ok(s) = path.as_os_str().as_str() {
#  87 | |         if s.chars().all(|c| c.is_ascii_alphanumeric() || c == '/') {
#  88 | |             return write!(out, "{s}");
#  89 | |         }
#  90 | |     }
#     | |_____^
#     |
#     = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#     = note: `#[warn(clippy::collapsible_if)]` on by default
#  help: collapse nested if block
#     |
#  86 ~     if let Ok(s) = path.as_os_str().as_str()
#  87 ~         && s.chars().all(|c| c.is_ascii_alphanumeric() || c == '/') {
#  88 |             return write!(out, "{s}");
#  89 ~         }
#     |

Error: CLIPPY_WARNING: [#def73]
crates/tmpfiles/src/lib.rs:252:5: warning: this `if` statement can be collapsed
#      |
#  252 | /     if let Some(meta) = rootfs.symlink_metadata_optional("var/run")? {
#  253 | |         if !meta.is_symlink() {
#  254 | |             return Err(Error::FoundVarRunNonSymlink {});
#  255 | |         }
#  256 | |     }
#      | |_____^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  252 ~     if let Some(meta) = rootfs.symlink_metadata_optional("var/run")?
#  253 ~         && !meta.is_symlink() {
#  254 |             return Err(Error::FoundVarRunNonSymlink {});
#  255 ~         }
#      |

Error: CLIPPY_WARNING: [#def74]
crates/tmpfiles/src/lib.rs:477:9: warning: this `if` statement can be collapsed
#      |
#  477 | /         if let Ok(s) = stem.as_str() {
#  478 | |             if s.starts_with(BOOTC_GENERATED_PREFIX) {
#  479 | |                 generation.increment();
#  480 | |             }
#  481 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  477 ~         if let Ok(s) = stem.as_str()
#  478 ~             && s.starts_with(BOOTC_GENERATED_PREFIX) {
#  479 |                 generation.increment();
#  480 ~             }
#      |

Error: CLIPPY_WARNING: [#def75]
crates/utils/src/path.rs:24:9: warning: this `if` statement can be collapsed
#     |
#  24 | /         if let Some(s) = self.path.to_str() {
#  25 | |             if s.chars().all(is_shellsafe) {
#  26 | |                 return f.write_str(s);
#  27 | |             }
#  28 | |         }
#     | |_________^
#     |
#     = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#     = note: `#[warn(clippy::collapsible_if)]` on by default
#  help: collapse nested if block
#     |
#  24 ~         if let Some(s) = self.path.to_str()
#  25 ~             && s.chars().all(is_shellsafe) {
#  26 |                 return f.write_str(s);
#  27 ~             }
#     |

Error: CLIPPY_WARNING: [#def76]
crates/xtask/src/man.rs:309:13: warning: returning the result of a `let` binding from a block
#      |
#  308 |             let path = find_command_path_for_filename(cli_structure, cmd_part);
#      |             ------------------------------------------------------------------- unnecessary `let` binding
#  309 |             path
#      |             ^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#let_and_return
#      = note: `#[warn(clippy::let_and_return)]` on by default
#  help: return the expression directly
#      |
#  308 ~             
#  309 ~             find_command_path_for_filename(cli_structure, cmd_part)
#      |

Error: CLIPPY_WARNING: [#def77]
crates/xtask/src/man.rs:606:5: warning: empty string literal in `println!`
#      |
#  606 |     println!("");
#      |     ^^^^^^^^^--^
#      |              |
#      |              help: remove the empty string
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#println_empty_string
#      = note: `#[warn(clippy::println_empty_string)]` on by default

Error: CLIPPY_WARNING: [#def78]
crates/xtask/src/man.rs:622:12: warning: this `map_or` can be simplified
#      |
#  622 |           if path
#      |  ____________^
#  623 | |             .extension()
#  624 | |             .and_then(|s| s.to_str())
#  625 | |             .map_or(false, |e| e.chars().all(|c| c.is_numeric()))
#      | |_________________________________________________________________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#unnecessary_map_or
#      = note: `#[warn(clippy::unnecessary_map_or)]` on by default
#  help: use is_some_and instead
#      |
#  625 -             .map_or(false, |e| e.chars().all(|c| c.is_numeric()))
#  625 +             .is_some_and(|e| e.chars().all(|c| c.is_numeric()))
#      |

Error: CLIPPY_WARNING: [#def79]
crates/xtask/src/tmt.rs:182:9: warning: this `if` statement can be collapsed
#      |
#  182 | /         if let Ok(json_output) = cmd!(sh, "bcvk libvirt inspect {vm_name} --format=json")
#  183 | |             .ignore_stderr()
#  184 | |             .read()
#  ...   |
#  195 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#      = note: `#[warn(clippy::collapsible_if)]` on by default
#  help: collapse nested if block
#      |
#  184 ~             .read()
#  185 ~             && let Ok(json) = serde_json::from_str::<serde_json::Value>(&json_output) {
#  186 |                 if let (Some(ssh_port), Some(ssh_key)) = (
#  ...
#  192 |                 }
#  193 ~             }
#      |

Error: CLIPPY_WARNING: [#def80]
crates/xtask/src/tmt.rs:186:13: warning: this `if` statement can be collapsed
#      |
#  186 | /             if let Ok(json) = serde_json::from_str::<serde_json::Value>(&json_output) {
#  187 | |                 if let (Some(ssh_port), Some(ssh_key)) = (
#  188 | |                     json.get("ssh_port").and_then(|v| v.as_u64()),
#  189 | |                     json.get("ssh_private_key").and_then(|v| v.as_str()),
#  ...   |
#  194 | |             }
#      | |_____________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  186 ~             if let Ok(json) = serde_json::from_str::<serde_json::Value>(&json_output)
#  187 ~                 && let (Some(ssh_port), Some(ssh_key)) = (
#  188 |                     json.get("ssh_port").and_then(|v| v.as_u64()),
#  ...
#  192 |                     return Ok((ssh_port, ssh_key.to_string()));
#  193 ~                 }
#      |

Error: CLIPPY_WARNING: [#def81]
crates/xtask/src/tmt.rs:286:9: warning: this `if` statement can be collapsed
#      |
#  286 | /         if let Some(try_bind) = plan_data.get(&serde_yaml::Value::String(format!(
#  287 | |             "extra-{}",
#  288 | |             FIELD_TRY_BIND_STORAGE
#  289 | |         ))) {
#  ...   |
#  299 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  289 ~         )))
#  290 ~             && let Some(b) = try_bind.as_bool() {
#  291 |                 plan_metadata
#  ...
#  297 |                     });
#  298 ~             }
#      |

Error: CLIPPY_WARNING: [#def82]
crates/xtask/src/tmt.rs:301:9: warning: this `if` statement can be collapsed
#      |
#  301 | /         if let Some(works_for_composefs) = plan_data.get(&serde_yaml::Value::String(format!(
#  302 | |             "extra-{}",
#  303 | |             FIELD_FIXME_SKIP_IF_COMPOSEFS
#  304 | |         ))) {
#  ...   |
#  314 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  304 ~         )))
#  305 ~             && let Some(b) = works_for_composefs.as_bool() {
#  306 |                 plan_metadata
#  ...
#  312 |                     });
#  313 ~             }
#      |

Error: CLIPPY_WARNING: [#def83]
crates/xtask/src/tmt.rs:340:32: warning: useless use of `format!`
#      |
#  340 |         .chain(std::iter::once(format!("--context=running_env=image_mode")))
#      |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"--context=running_env=image_mode".to_string()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#useless_format
#      = note: `#[warn(clippy::useless_format)]` on by default

Error: CLIPPY_WARNING: [#def84]
crates/xtask/src/tmt.rs:373:26: warning: useless use of `format!`
#      |
#  373 |         .with_context(|| format!("Saving container image to tar"))?;
#      |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Saving container image to tar".to_string()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#useless_format

Error: CLIPPY_WARNING: [#def85]
crates/xtask/src/tmt.rs:481:13: warning: this `if` statement can be collapsed
#      |
#  481 | /             if variant_id == "coreos" {
#  482 | |                 if distro.starts_with("fedora") {
#  483 | |                     opts.push("--filesystem=xfs".to_string());
#  484 | |                 }
#  485 | |             }
#      | |_____________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  481 ~             if variant_id == "coreos"
#  482 ~                 && distro.starts_with("fedora") {
#  483 |                     opts.push("--filesystem=xfs".to_string());
#  484 ~                 }
#      |

Error: CLIPPY_WARNING: [#def86]
crates/xtask/src/tmt.rs:1071:5: warning: calling `push_str()` using a single-character string literal
#       |
#  1071 |     tests_content.push_str("\n");
#       |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `tests_content.push('\n')`
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#single_char_add_str
#       = note: `#[warn(clippy::single_char_add_str)]` on by default

Error: CLIPPY_WARNING: [#def87]
crates/xtask/src/tmt.rs:1094:9: warning: this `if` statement can be collapsed
#       |
#  1094 | /         if let serde_yaml::Value::Mapping(map) = &test.tmt {
#  1095 | |             if let Some(summary) = map.get(&serde_yaml::Value::String(FIELD_SUMMARY.to_string())) {
#  1096 | |                 plan_value.insert(
#  1097 | |                     serde_yaml::Value::String(FIELD_SUMMARY.to_string()),
#  ...    |
#  1101 | |         }
#       | |_________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#       |
#  1094 ~         if let serde_yaml::Value::Mapping(map) = &test.tmt
#  1095 ~             && let Some(summary) = map.get(&serde_yaml::Value::String(FIELD_SUMMARY.to_string())) {
#  1096 |                 plan_value.insert(
#   ...
#  1099 |                 );
#  1100 ~             }
#       |

Error: CLIPPY_WARNING: [#def88]
crates/xtask/src/tmt.rs:1120:9: warning: this `if` statement can be collapsed
#       |
#  1120 | /         if let serde_yaml::Value::Mapping(map) = &test.tmt {
#  1121 | |             if let Some(adjust) = map.get(&serde_yaml::Value::String(FIELD_ADJUST.to_string())) {
#  1122 | |                 plan_value.insert(
#  1123 | |                     serde_yaml::Value::String(FIELD_ADJUST.to_string()),
#  ...    |
#  1127 | |         }
#       | |_________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#       |
#  1120 ~         if let serde_yaml::Value::Mapping(map) = &test.tmt
#  1121 ~             && let Some(adjust) = map.get(&serde_yaml::Value::String(FIELD_ADJUST.to_string())) {
#  1122 |                 plan_value.insert(
#   ...
#  1125 |                 );
#  1126 ~             }
#       |

Error: CLIPPY_WARNING: [#def89]
crates/xtask/src/xtask.rs:161:9: warning: this `if` statement can be collapsed
#      |
#  161 | /         if let Ok(toplevel_path) = Command::new("git")
#  162 | |             .args(["rev-parse", "--show-toplevel"])
#  163 | |             .output()
#  ...   |
#  169 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  163 ~             .output()
#  164 ~             && toplevel_path.status.success() {
#  165 |                 let path = String::from_utf8(toplevel_path.stdout)?;
#  166 |                 std::env::set_current_dir(path.trim()).context("Changing to toplevel")?;
#  167 ~             }
#      |

Error: CLIPPY_WARNING: [#def90]
crates/xtask/src/xtask.rs:355:13: warning: this `if` statement can be collapsed
#      |
#  355 | /             if let Some(name) = name.to_str() {
#  356 | |                 if name.ends_with(".src.rpm") {
#  357 | |                     sh.remove_path(name)?;
#  358 | |                 }
#  359 | |             }
#      | |_____________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  355 ~             if let Some(name) = name.to_str()
#  356 ~                 && name.ends_with(".src.rpm") {
#  357 |                     sh.remove_path(name)?;
#  358 ~                 }
#      |

Scan Properties

analyzer-version-clippy1.93.1
analyzer-version-cppcheck2.19.1
analyzer-version-gcc16.0.1
analyzer-version-gcc-analyzer16.0.1
analyzer-version-shellcheck0.11.0
analyzer-version-unicontrol0.0.2
enabled-pluginsclippy, cppcheck, gcc, shellcheck, unicontrol
exit-code0
hostip-172-16-1-20.us-west-2.compute.internal
known-false-positives/usr/share/csmock/known-false-positives.js
known-false-positives-rpmknown-false-positives-0.0.0.20260225.110632.gf6ecc5a.main-1.el9.noarch
mock-configfedora-rawhide-x86_64
project-namebootc-202603021209.g7a5ce1e3f0-1
store-results-to/tmp/tmpndr0vir8/bootc-202603021209.g7a5ce1e3f0-1.tar.xz
time-created2026-03-02 15:50:44
time-finished2026-03-02 16:13:42
toolcsmock
tool-args'/usr/bin/csmock' '-r' 'fedora-rawhide-x86_64' '-t' 'unicontrol,clippy,cppcheck,shellcheck,gcc' '-o' '/tmp/tmpndr0vir8/bootc-202603021209.g7a5ce1e3f0-1.tar.xz' '--gcc-analyze' '--unicontrol-notests' '--unicontrol-bidi-only' '--install' 'pam' '/tmp/tmpndr0vir8/bootc-202603021209.g7a5ce1e3f0-1.src.rpm'
tool-versioncsmock-3.8.4.20260225.081022.gb9390cd-1.el9