# bootc-202603031234.g864b7f063f-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-202603031234.g864b7f063f/vendor/libz-sys/src/smoke.c: scope_hint: In function 'main'
    bootc-202603031234.g864b7f063f/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:374:23: warning: manual saturating arithmetic
    #      |
    #  374 |     let bytes_avail = stat.f_bsize.checked_mul(stat.f_bavail).unwrap_or(u64::MAX);
    #      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_mul`: `stat.f_bsize.saturating_mul(stat.f_bavail)`
    #      |
    #      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.93.0/index.html#manual_saturating_arithmetic
    #      = note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default

    Error: CLIPPY_WARNING: [#def40]
    crates/lib/src/deploy.rs:853:13: warning: field assignment outside of initializer for an instance created with Default::default()
    #      |
    #  853 |             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:850:13
    #      |
    #  850 |             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: [#def41]
    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: [#def42]
    crates/lib/src/install.rs:1658:5: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
    #       |
    #  1658 | /     match kernel {
    #  1659 | |         Some(k) => match k.k_type {
    #  1660 | |             crate::kernel::KernelType::Uki { cmdline, .. } => {
    #  1661 | |                 let allow_missing_fsverity = cmdline.is_some_and(|cmd| {
    #  ...    |
    #  1680 | |         None => {}
    #  1681 | |     }
    #       | |_____^
    #       |
    #       = 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
    #       |
    #  1658 ~     if let Some(k) = kernel { match k.k_type {
    #  1659 +         crate::kernel::KernelType::Uki { cmdline, .. } => {
    #  1660 +             let allow_missing_fsverity = cmdline.is_some_and(|cmd| {
    #  1661 +                 ComposefsCmdline::find_in_cmdline(&cmd)
    #  1662 +                     .is_some_and(|cfs_cmdline| cfs_cmdline.allow_missing_fsverity)
    #  1663 +             });
    #  1664 +
    #  1665 +             if !allow_missing_fsverity {
    #  1666 +                 anyhow::ensure!(
    #  1667 +                     root_filesystem.supports_fsverity(),
    #  1668 +                     "Specified filesystem {root_filesystem} does not support fs-verity"
    #  1669 +                 );
    #  1670 +             }
    #  1671 +
    #  1672 +             composefs_options.allow_missing_verity = allow_missing_fsverity;
    #  1673 +             is_uki = true;
    #  1674 +         }
    #  1675 +
    #  1676 +         crate::kernel::KernelType::Vmlinuz { .. } => {}
    #  1677 +     } }
    #       |

    Error: CLIPPY_WARNING: [#def43]
    crates/lib/src/install.rs:1751:20: warning: this `else { if .. }` block can be collapsed
    #       |
    #  1751 |               } else {
    #       |  ____________________^
    #  1752 | |                 if crate::bootloader::supports_bootupd(d)? {
    #  1753 | |                     crate::spec::Bootloader::Grub
    #  1754 | |                 } else {
    #  ...    |
    #  1757 | |             }
    #       | |_____________^
    #       |
    #       = 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
    #       |
    #  1751 ~             } else if crate::bootloader::supports_bootupd(d)? {
    #  1752 +                 crate::spec::Bootloader::Grub
    #  1753 +             } else {
    #  1754 +                 crate::spec::Bootloader::Systemd
    #  1755 +             }
    #       |

    Error: CLIPPY_WARNING: [#def44]
    crates/lib/src/install.rs:1994:24: warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value
    #       |
    #  1994 |       let source_image = opts
    #       |  ________________________^
    #  1995 | |         .source_opts
    #  1996 | |         .source_imgref
    #  1997 | |         .as_ref()
    #  1998 | |         .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
    #       |
    #  1994 ~     let source_image = opts
    #  1995 +         .source_opts
    #  1996 +         .source_imgref.as_deref()
    #       |

    Error: CLIPPY_WARNING: [#def45]
    crates/lib/src/install.rs:2322:24: warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value
    #       |
    #  2322 |       let source_image = opts
    #       |  ________________________^
    #  2323 | |         .source_opts
    #  2324 | |         .source_imgref
    #  2325 | |         .as_ref()
    #  2326 | |         .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
    #       |
    #  2322 ~     let source_image = opts
    #  2323 +         .source_opts
    #  2324 +         .source_imgref.as_deref()
    #       |

    Error: CLIPPY_WARNING: [#def46]
    crates/lib/src/install.rs:2603:24: warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value
    #       |
    #  2603 |       let source_image = opts
    #       |  ________________________^
    #  2604 | |         .source_opts
    #  2605 | |         .source_imgref
    #  2606 | |         .as_ref()
    #  2607 | |         .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
    #       |
    #  2603 ~     let source_image = opts
    #  2604 +         .source_opts
    #  2605 +         .source_imgref.as_deref()
    #       |

    Error: CLIPPY_WARNING: [#def47]
    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: [#def48]
    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: [#def49]
    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: [#def50]
    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: [#def51]
    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: [#def52]
    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: [#def53]
    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: [#def54]
    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: [#def55]
    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: [#def56]
    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: [#def57]
    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: [#def58]
    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: [#def59]
    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: [#def60]
    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: [#def61]
    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: [#def62]
    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: [#def63]
    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: [#def64]
    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: [#def65]
    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: [#def66]
    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: [#def67]
    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: [#def68]
    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: [#def69]
    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: [#def70]
    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: [#def71]
    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: [#def72]
    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: [#def73]
    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: [#def74]
    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: [#def75]
    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: [#def76]
    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: [#def77]
    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: [#def78]
    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: [#def79]
    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: [#def80]
    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: [#def81]
    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: [#def82]
    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: [#def83]
    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: [#def84]
    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: [#def85]
    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: [#def86]
    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: [#def87]
    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: [#def88]
    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: [#def89]
    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: [#def90]
    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: [#def91]
    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-clippy | 1.93.1
analyzer-version-cppcheck | 2.19.1
analyzer-version-gcc | 16.0.1
analyzer-version-gcc-analyzer | 16.0.1
analyzer-version-shellcheck | 0.11.0
analyzer-version-unicontrol | 0.0.2
enabled-plugins | clippy, cppcheck, gcc, shellcheck, unicontrol
exit-code | 0
host | ip-172-16-1-241.us-west-2.compute.internal
known-false-positives | /usr/share/csmock/known-false-positives.js
known-false-positives-rpm | known-false-positives-0.0.0.20260225.110632.gf6ecc5a.main-1.el9.noarch
mock-config | fedora-rawhide-x86_64
project-name | bootc-202603031234.g864b7f063f-1
store-results-to | /tmp/tmpyshmsfyu/bootc-202603031234.g864b7f063f-1.tar.xz
time-created | 2026-03-03 14:55:39
time-finished | 2026-03-03 15:18:26
tool | csmock
tool-args | '/usr/bin/csmock' '-r' 'fedora-rawhide-x86_64' '-t' 'unicontrol,clippy,cppcheck,shellcheck,gcc' '-o' '/tmp/tmpyshmsfyu/bootc-202603031234.g864b7f063f-1.tar.xz' '--gcc-analyze' '--unicontrol-notests' '--unicontrol-bidi-only' '--install' 'pam' '/tmp/tmpyshmsfyu/bootc-202603031234.g864b7f063f-1.src.rpm'
tool-version | csmock-3.8.4.20260302.153719.g8203630-1.el9