bootc-202604032009.g8d51fbed9e-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-202604032009.g8d51fbed9e/vendor/libz-sys/src/smoke.c: scope_hint: In function 'main'
bootc-202604032009.g8d51fbed9e/vendor/libz-sys/src/smoke.c:4:10: warning[-Wpointer-to-int-cast]: cast from pointer to integer of different size
#    2|   
#    3|   int main() {
#    4|->   return (int) adler32;
#    5|   }

Error: CLIPPY_WARNING: [#def5]
crates/blockdev/src/blockdev.rs:109:9: warning: this `if` statement can be collapsed
#      |
#  109 | /         if self.is_mpath()? {
#  110 | |             if let Some(partn) = esp_device.partn {
#  111 | |                 return Ok(partn.to_string());
#  112 | |             }
#  113 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#      = note: `#[warn(clippy::collapsible_if)]` on by default
#  help: collapse nested if block
#      |
#  109 ~         if self.is_mpath()?
#  110 ~             && let Some(partn) = esp_device.partn {
#  111 |                 return Ok(partn.to_string());
#  112 ~             }
#      |

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

Error: CLIPPY_WARNING: [#def7]
crates/etc-merge/src/lib.rs:311:5: warning: doc list item without indentation
#      |
#  311 | /// 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.94.0/index.html#doc_lazy_continuation
#      = note: `#[warn(clippy::doc_lazy_continuation)]` on by default
#  help: indent this line
#      |
#  311 | ///   Usually this will be obtained by remounting the EROFS image to a temporary location
#      |     ++

Error: CLIPPY_WARNING: [#def8]
crates/etc-merge/src/lib.rs:316:5: warning: doc list item without indentation
#      |
#  316 | /// 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.94.0/index.html#doc_lazy_continuation
#  help: indent this line
#      |
#  316 | ///   again be usually obtained by mounting the new EROFS image to a temporary location. If merging
#      |     ++

Error: CLIPPY_WARNING: [#def9]
crates/etc-merge/src/lib.rs:317:5: warning: doc list item without indentation
#      |
#  317 | /// 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.94.0/index.html#doc_lazy_continuation
#  help: indent this line
#      |
#  317 | ///   it will be necessary to make the `/etc` for the deployment writeable
#      |     ++

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

Error: CLIPPY_WARNING: [#def11]
crates/etc-merge/src/lib.rs:354:5: warning: unneeded `return` statement
#      |
#  354 |     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.94.0/index.html#needless_return
#  help: remove `return`
#      |
#  354 -     return Ok((pristine_etc_files, current_etc_files, new_etc_files));
#  354 +     Ok((pristine_etc_files, current_etc_files, new_etc_files))
#      |

Error: CLIPPY_WARNING: [#def12]
crates/etc-merge/src/lib.rs:459:35: warning: useless use of `format!`
#      |
#  459 |         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.94.0/index.html#useless_format
#      = note: `#[warn(clippy::useless_format)]` on by default

Error: CLIPPY_WARNING: [#def13]
crates/initramfs/src/lib.rs:216:9: warning: this `if` statement can be collapsed
#      |
#  216 | /         if let Some(label) = base_dir.getxattr(".", "security.selinux")? {
#  217 | |             if let Ok(cstr) = CString::new(label) {
#  218 | |                 fsconfig_set_string(tmpfs.as_fd(), "rootcontext", &cstr)?;
#  219 | |             }
#  220 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#      = note: `#[warn(clippy::collapsible_if)]` on by default
#  help: collapse nested if block
#      |
#  216 ~         if let Some(label) = base_dir.getxattr(".", "security.selinux")?
#  217 ~             && let Ok(cstr) = CString::new(label) {
#  218 |                 fsconfig_set_string(tmpfs.as_fd(), "rootcontext", &cstr)?;
#  219 ~             }
#      |

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

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

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

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

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

Error: CLIPPY_WARNING: [#def20]
crates/lib/src/bootc_composefs/boot.rs:1309:23: warning: using `.iter().next()` on an array
#       |
#  1309 |     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.94.0/index.html#iter_next_slice
#       = note: `#[warn(clippy::iter_next_slice)]` on by default

Error: CLIPPY_WARNING: [#def21]
crates/lib/src/bootc_composefs/delete.rs:240:8: warning: taken reference of right operand
#      |
#  240 |     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.94.0/index.html#op_ref
#      = note: `#[warn(clippy::op_ref)]` on by default

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

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

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

Error: CLIPPY_WARNING: [#def25]
crates/lib/src/bootc_composefs/state.rs:229:1: warning: this function has too many arguments (8/7)
#      |
#  229 | / pub(crate) async fn write_composefs_state(
#  230 | |     root_path: &Utf8PathBuf,
#  231 | |     deployment_id: &Sha512HashValue,
#  232 | |     target_imgref: &ImageReference,
#  ...   |
#  237 | |     allow_missing_fsverity: bool,
#  238 | | ) -> Result<()> {
#      | |_______________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#too_many_arguments
#      = note: `#[warn(clippy::too_many_arguments)]` on by default

Error: CLIPPY_WARNING: [#def26]
crates/lib/src/bootc_composefs/status.rs:369:19: warning: slow zero-filling initialization
#      |
#  369 |       let mut buf = Vec::with_capacity(manifest.config().size() as usize);
#      |  ___________________^
#  370 | |     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.94.0/index.html#slow_vector_initialization
#      = note: `#[warn(clippy::slow_vector_initialization)]` on by default

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

Error: CLIPPY_WARNING: [#def28]
crates/lib/src/bootc_composefs/status.rs:600:43: warning: deref which would be done by auto-deref
#      |
#  600 |     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.94.0/index.html#explicit_auto_deref
#      = note: `#[warn(clippy::explicit_auto_deref)]` on by default

Error: CLIPPY_WARNING: [#def29]
crates/lib/src/bootc_composefs/status.rs:658:8: warning: needless call to `as_bytes`
#      |
#  658 |     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.94.0/index.html#needless_as_bytes
#      = note: `#[warn(clippy::needless_as_bytes)]` on by default

Error: CLIPPY_WARNING: [#def30]
crates/lib/src/bootc_composefs/status.rs:658:48: warning: needless call to `as_bytes`
#      |
#  658 |     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.94.0/index.html#needless_as_bytes

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

Error: CLIPPY_WARNING: [#def32]
crates/lib/src/bootc_composefs/update.rs:105:5: warning: doc list item overindented
#      |
#  105 | ///    /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.94.0/index.html#doc_overindented_list_items
#      = note: `#[warn(clippy::doc_overindented_list_items)]` on by default

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

Error: CLIPPY_WARNING: [#def34]
crates/lib/src/bootc_composefs/update.rs:115:5: warning: doc list item overindented
#      |
#  115 | ///    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.94.0/index.html#doc_overindented_list_items

Error: CLIPPY_WARNING: [#def35]
crates/lib/src/bootc_composefs/update.rs:116:5: warning: doc list item overindented
#      |
#  116 | ///    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.94.0/index.html#doc_overindented_list_items

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

Error: CLIPPY_WARNING: [#def37]
crates/lib/src/bootc_composefs/update.rs:272:23: warning: using `.iter().next()` on an array
#      |
#  272 |     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.94.0/index.html#iter_next_slice

Error: CLIPPY_WARNING: [#def38]
crates/lib/src/bootc_composefs/update.rs:511:34: warning: deref which would be done by auto-deref
#      |
#  511 |             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.94.0/index.html#explicit_auto_deref

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

Error: CLIPPY_WARNING: [#def40]
crates/lib/src/deploy.rs:395:23: warning: manual saturating arithmetic
#      |
#  395 |     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.94.0/index.html#manual_saturating_arithmetic
#      = note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default

Error: CLIPPY_WARNING: [#def41]
crates/lib/src/deploy.rs:894:13: warning: field assignment outside of initializer for an instance created with Default::default()
#      |
#  894 |             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:891:13
#      |
#  891 |             let mut opts = ostree::SysrootDeployTreeOpts::default();
#      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#field_reassign_with_default
#      = note: `#[warn(clippy::field_reassign_with_default)]` on by default

Error: CLIPPY_WARNING: [#def42]
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.94.0/index.html#needless_return
#  help: remove `return`
#      |
#  188 -     return Ok((src_imgref, dest_imgref));
#  188 +     Ok((src_imgref, dest_imgref))
#      |

Error: CLIPPY_WARNING: [#def43]
crates/lib/src/install.rs:1710:5: warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
#       |
#  1710 | /     match kernel {
#  1711 | |         Some(k) => match k.k_type {
#  1712 | |             crate::kernel::KernelType::Uki { cmdline, .. } => {
#  1713 | |                 let allow_missing_fsverity = cmdline.is_some_and(|cmd| {
#  ...    |
#  1732 | |         None => {}
#  1733 | |     }
#       | |_____^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#single_match
#       = note: `#[warn(clippy::single_match)]` on by default
#  help: try
#       |
#  1710 ~     if let Some(k) = kernel { match k.k_type {
#  1711 +         crate::kernel::KernelType::Uki { cmdline, .. } => {
#  1712 +             let allow_missing_fsverity = cmdline.is_some_and(|cmd| {
#  1713 +                 ComposefsCmdline::find_in_cmdline(&cmd)
#  1714 +                     .is_some_and(|cfs_cmdline| cfs_cmdline.allow_missing_fsverity)
#  1715 +             });
#  1716 + 
#  1717 +             if !allow_missing_fsverity {
#  1718 +                 anyhow::ensure!(
#  1719 +                     root_filesystem.supports_fsverity(),
#  1720 +                     "Specified filesystem {root_filesystem} does not support fs-verity"
#  1721 +                 );
#  1722 +             }
#  1723 + 
#  1724 +             composefs_options.allow_missing_verity = allow_missing_fsverity;
#  1725 +             is_uki = true;
#  1726 +         }
#  1727 + 
#  1728 +         crate::kernel::KernelType::Vmlinuz { .. } => {}
#  1729 +     } }
#       |

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

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

Error: CLIPPY_WARNING: [#def46]
crates/lib/src/install.rs:2701:24: warning: called `.as_ref().map(|s| s.as_str())` on an `Option` value
#       |
#  2701 |       let source_image = opts
#       |  ________________________^
#  2702 | |         .source_opts
#  2703 | |         .source_imgref
#  2704 | |         .as_ref()
#  2705 | |         .map(|s| s.as_str())
#       | |____________________________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#option_as_ref_deref
#  help: consider using as_deref
#       |
#  2701 ~     let source_image = opts
#  2702 +         .source_opts
#  2703 +         .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.94.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:20:5: warning: name `EFI` contains a capitalized acronym
#     |
#  20 |     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.94.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:180:28: warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator
#      |
#  180 |                   let name = efi
#      |  ____________________________^
#  181 | |                     .components()
#  182 | |                     .last()
#      | |______________________-----^
#      |                        |
#      |                        help: try: `next_back()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#double_ended_iterator_last

Error: CLIPPY_WARNING: [#def50]
crates/lib/src/parsers/grub_menuconfig.rs:112:20: warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator
#      |
#  112 |           let name = to_path
#      |  ____________________^
#  113 | |             .components()
#  114 | |             .last()
#      | |______________-----^
#      |                |
#      |                help: try: `next_back()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#double_ended_iterator_last

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

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.94.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/store/mod.rs:396:17: warning: returning the result of a `let` binding from a block
#      |
#  392 | /                 let boot_dir = boot_dir
#  393 | |                     .open_dir(EFI_LINUX)
#  394 | |                     .with_context(|| format!("Opening {EFI_LINUX}"))?;
#      | |______________________________________________________________________- unnecessary `let` binding
#  395 |
#  396 |                   boot_dir
#      |                   ^^^^^^^^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#let_and_return
#  help: return the expression directly
#      |
#  392 ~                 
#  393 |
#  394 ~                 boot_dir
#  395 +                     .open_dir(EFI_LINUX)
#  396 +                     .with_context(|| format!("Opening {EFI_LINUX}"))?
#      |

Error: CLIPPY_WARNING: [#def54]
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.94.0/index.html#needless_return
#  help: remove `return`
#      |
#  246 -             return Ok(loader);
#  246 +             Ok(loader)
#      |

Error: CLIPPY_WARNING: [#def55]
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.94.0/index.html#needless_return
#  help: remove `return`
#      |
#  250 -             return Err(EfiError::MissingVar);
#  250 +             Err(EfiError::MissingVar)
#      |

Error: CLIPPY_WARNING: [#def56]
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.94.0/index.html#manual_repeat_n
#      = note: `#[warn(clippy::manual_repeat_n)]` on by default

Error: CLIPPY_WARNING: [#def57]
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.94.0/index.html#needless_return
#  help: remove `return`
#      |
#  276 -     return Ok(final_path);
#  276 +     Ok(final_path)
#      |

Error: CLIPPY_WARNING: [#def58]
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.94.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: [#def59]
crates/ostree-ext/src/container/store.rs:615:9: warning: this `if` statement can be collapsed
#      |
#  615 | /         if let Some(meta) = root.symlink_metadata_optional(ent)? {
#  616 | |             if meta.is_file() && meta.size() == 0 {
#  617 | |                 tracing::debug!("Removing {ent}");
#  618 | |                 root.remove_file(ent)?;
#  619 | |             }
#  620 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  615 ~         if let Some(meta) = root.symlink_metadata_optional(ent)?
#  616 ~             && meta.is_file() && meta.size() == 0 {
#  617 |                 tracing::debug!("Removing {ent}");
#  618 |                 root.remove_file(ent)?;
#  619 ~             }
#      |

Error: CLIPPY_WARNING: [#def60]
crates/ostree-ext/src/container/store.rs:1206:5: warning: this function has too many arguments (10/7)
#       |
#  1206 | /     fn write_merge_commit_impl(
#  1207 | |         repo: &ostree::Repo,
#  1208 | |         base_commit: Option<&str>,
#  1209 | |         layer_commits: &[LayerRef],
#  ...    |
#  1216 | |         cancellable: Option<&gio::Cancellable>,
#  1217 | |     ) -> Result<Box<LayeredImageState>> {
#       | |_______________________________________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#too_many_arguments
#       = note: `#[warn(clippy::too_many_arguments)]` on by default

Error: CLIPPY_WARNING: [#def61]
crates/ostree-ext/src/container/store.rs:1283:30: warning: this `map_or` can be simplified
#       |
#  1283 |             should_relabel = sepolicy.name().map_or(false, |s| !s.is_empty());
#       |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#unnecessary_map_or
#       = note: `#[warn(clippy::unnecessary_map_or)]` on by default
#  help: use is_some_and instead
#       |
#  1283 -             should_relabel = sepolicy.name().map_or(false, |s| !s.is_empty());
#  1283 +             should_relabel = sepolicy.name().is_some_and(|s| !s.is_empty());
#       |

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

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

Error: CLIPPY_WARNING: [#def64]
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.94.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: [#def65]
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.94.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: [#def66]
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.94.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: [#def67]
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.94.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: [#def68]
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.94.0/index.html#question_mark
#      = note: `#[warn(clippy::question_mark)]` on by default

Error: CLIPPY_WARNING: [#def69]
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.94.0/index.html#question_mark

Error: CLIPPY_WARNING: [#def70]
crates/tests-integration/src/anaconda.rs:728:26: warning: needless call to `as_bytes`
#      |
#  728 |     let mut end = (idx + pattern.as_bytes().len() + 200).min(content.as_bytes().len());
#      |                          ^^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `pattern.len()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#needless_as_bytes
#      = note: `#[warn(clippy::needless_as_bytes)]` on by default

Error: CLIPPY_WARNING: [#def71]
crates/tests-integration/src/anaconda.rs:728:62: warning: needless call to `as_bytes`
#      |
#  728 |     let mut end = (idx + pattern.as_bytes().len() + 200).min(content.as_bytes().len());
#      |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `content.len()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#needless_as_bytes

Error: CLIPPY_WARNING: [#def72]
crates/tests-integration/src/anaconda.rs:729:17: warning: needless call to `as_bytes`
#      |
#  729 |     while end < content.as_bytes().len() && !content.is_char_boundary(end) {
#      |                 ^^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `content.len()`
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#needless_as_bytes

Error: CLIPPY_WARNING: [#def73]
crates/tests-integration/src/container.rs:56:5: warning: matching on `Some` with `ok()` is redundant
#     |
#  56 |     if let Some(variant) = std::env::var("BOOTC_variant").ok() {
#     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#     |
#     = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.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
#     |
#  56 -     if let Some(variant) = std::env::var("BOOTC_variant").ok() {
#  56 +     if let Ok(variant) = std::env::var("BOOTC_variant") {
#     |

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

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

Error: CLIPPY_WARNING: [#def76]
crates/tests-integration/src/container.rs:312:9: warning: needless call to `as_bytes`
#      |
#  312 |         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.94.0/index.html#needless_as_bytes

Error: CLIPPY_WARNING: [#def77]
crates/tests-integration/src/container.rs:315:9: warning: needless call to `as_bytes`
#      |
#  315 |         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.94.0/index.html#needless_as_bytes

Error: CLIPPY_WARNING: [#def78]
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.94.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: [#def79]
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.94.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: [#def80]
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.94.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: [#def81]
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.94.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: [#def82]
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.94.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: [#def83]
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.94.0/index.html#println_empty_string
#      = note: `#[warn(clippy::println_empty_string)]` on by default

Error: CLIPPY_WARNING: [#def84]
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.94.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: [#def85]
crates/xtask/src/tmt.rs:175:9: warning: this `if` statement can be collapsed
#      |
#  175 | /         if let Ok(json_output) = cmd!(sh, "bcvk libvirt inspect {vm_name} --format=json")
#  176 | |             .ignore_stderr()
#  177 | |             .read()
#  ...   |
#  188 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#      = note: `#[warn(clippy::collapsible_if)]` on by default
#  help: collapse nested if block
#      |
#  177 ~             .read()
#  178 ~             && let Ok(json) = serde_json::from_str::<serde_json::Value>(&json_output) {
#  179 |                 if let (Some(ssh_port), Some(ssh_key)) = (
#  ...
#  185 |                 }
#  186 ~             }
#      |

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

Error: CLIPPY_WARNING: [#def87]
crates/xtask/src/tmt.rs:279:9: warning: this `if` statement can be collapsed
#      |
#  279 | /         if let Some(try_bind) = plan_data.get(&serde_yaml::Value::String(format!(
#  280 | |             "extra-{}",
#  281 | |             FIELD_TRY_BIND_STORAGE
#  282 | |         ))) {
#  ...   |
#  292 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  282 ~         )))
#  283 ~             && let Some(b) = try_bind.as_bool() {
#  284 |                 plan_metadata
#  ...
#  290 |                     });
#  291 ~             }
#      |

Error: CLIPPY_WARNING: [#def88]
crates/xtask/src/tmt.rs:294:9: warning: this `if` statement can be collapsed
#      |
#  294 | /         if let Some(works_for_composefs) = plan_data.get(&serde_yaml::Value::String(format!(
#  295 | |             "extra-{}",
#  296 | |             FIELD_FIXME_SKIP_IF_COMPOSEFS
#  297 | |         ))) {
#  ...   |
#  307 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  297 ~         )))
#  298 ~             && let Some(b) = works_for_composefs.as_bool() {
#  299 |                 plan_metadata
#  ...
#  305 |                     });
#  306 ~             }
#      |

Error: CLIPPY_WARNING: [#def89]
crates/xtask/src/tmt.rs:333:32: warning: useless use of `format!`
#      |
#  333 |         .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.94.0/index.html#useless_format
#      = note: `#[warn(clippy::useless_format)]` on by default

Error: CLIPPY_WARNING: [#def90]
crates/xtask/src/tmt.rs:371:26: warning: useless use of `format!`
#      |
#  371 |         .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.94.0/index.html#useless_format

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

Error: CLIPPY_WARNING: [#def92]
crates/xtask/src/tmt.rs:1072:5: warning: calling `push_str()` using a single-character string literal
#       |
#  1072 |     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.94.0/index.html#single_char_add_str
#       = note: `#[warn(clippy::single_char_add_str)]` on by default

Error: CLIPPY_WARNING: [#def93]
crates/xtask/src/tmt.rs:1084:5: warning: calling `push_str()` using a single-character string literal
#       |
#  1084 |     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.94.0/index.html#single_char_add_str

Error: CLIPPY_WARNING: [#def94]
crates/xtask/src/tmt.rs:1107:9: warning: this `if` statement can be collapsed
#       |
#  1107 | /         if let serde_yaml::Value::Mapping(map) = &test.tmt {
#  1108 | |             if let Some(summary) = map.get(&serde_yaml::Value::String(FIELD_SUMMARY.to_string())) {
#  1109 | |                 plan_value.insert(
#  1110 | |                     serde_yaml::Value::String(FIELD_SUMMARY.to_string()),
#  ...    |
#  1114 | |         }
#       | |_________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#  help: collapse nested if block
#       |
#  1107 ~         if let serde_yaml::Value::Mapping(map) = &test.tmt
#  1108 ~             && let Some(summary) = map.get(&serde_yaml::Value::String(FIELD_SUMMARY.to_string())) {
#  1109 |                 plan_value.insert(
#   ...
#  1112 |                 );
#  1113 ~             }
#       |

Error: CLIPPY_WARNING: [#def95]
crates/xtask/src/tmt.rs:1133:9: warning: this `if` statement can be collapsed
#       |
#  1133 | /         if let serde_yaml::Value::Mapping(map) = &test.tmt {
#  1134 | |             if let Some(adjust) = map.get(&serde_yaml::Value::String(FIELD_ADJUST.to_string())) {
#  1135 | |                 plan_value.insert(
#  1136 | |                     serde_yaml::Value::String(FIELD_ADJUST.to_string()),
#  ...    |
#  1140 | |         }
#       | |_________^
#       |
#       = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#  help: collapse nested if block
#       |
#  1133 ~         if let serde_yaml::Value::Mapping(map) = &test.tmt
#  1134 ~             && let Some(adjust) = map.get(&serde_yaml::Value::String(FIELD_ADJUST.to_string())) {
#  1135 |                 plan_value.insert(
#   ...
#  1138 |                 );
#  1139 ~             }
#       |

Error: CLIPPY_WARNING: [#def96]
crates/xtask/src/xtask.rs:224:9: warning: this `if` statement can be collapsed
#      |
#  224 | /         if let Ok(toplevel_path) = Command::new("git")
#  225 | |             .args(["rev-parse", "--show-toplevel"])
#  226 | |             .output()
#  ...   |
#  232 | |         }
#      | |_________^
#      |
#      = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.94.0/index.html#collapsible_if
#  help: collapse nested if block
#      |
#  226 ~             .output()
#  227 ~             && toplevel_path.status.success() {
#  228 |                 let path = String::from_utf8(toplevel_path.stdout)?;
#  229 |                 std::env::set_current_dir(path.trim()).context("Changing to toplevel")?;
#  230 ~             }
#      |

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

Scan Properties

analyzer-version-clippy1.94.1
analyzer-version-cppcheck2.20.0
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-36.us-west-2.compute.internal
known-false-positives/usr/share/csmock/known-false-positives.js
known-false-positives-rpmknown-false-positives-0.0.0.20260320.200800.gd35503f.main-1.el9.noarch
mock-configfedora-rawhide-x86_64
project-namebootc-202604032009.g8d51fbed9e-1
store-results-to/tmp/tmpuaom99cj/bootc-202604032009.g8d51fbed9e-1.tar.xz
time-created2026-04-05 01:35:46
time-finished2026-04-05 01:57:46
toolcsmock
tool-args'/usr/bin/csmock' '-r' 'fedora-rawhide-x86_64' '-t' 'cppcheck,gcc,shellcheck,clippy,unicontrol' '-o' '/tmp/tmpuaom99cj/bootc-202604032009.g8d51fbed9e-1.tar.xz' '--gcc-analyze' '--unicontrol-notests' '--unicontrol-bidi-only' '--install' 'pam' '/tmp/tmpuaom99cj/bootc-202604032009.g8d51fbed9e-1.src.rpm'
tool-versioncsmock-3.8.4.20260302.153719.g8203630-1.el9