From d3e3208589fcdf1aaf44c94d6afeb857ce60c68b Mon Sep 17 00:00:00 2001 From: Stefan Kerkmann Date: Sat, 1 Feb 2025 22:43:16 +0100 Subject: [PATCH 1/3] rustfmt: add group_imports rule group_imports requires a nightly toolchain, running cargo fmt without the nightly channel prints a warning but doesn't fail the formatting. [1]: https://rust-lang.github.io/rustfmt/?version=v1.8.0&search=import#group_imports Signed-off-by: Stefan Kerkmann --- rustfmt.toml | 1 + 1 file changed, 1 insertion(+) create mode 100644 rustfmt.toml diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..2d8aa38 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1 @@ +group_imports = "StdExternalCrate" # requires nightly toolchain: cargo +nightly fmt From 0fafa99425c5e66a06063da2c998c258a668fd53 Mon Sep 17 00:00:00 2001 From: Stefan Kerkmann Date: Sat, 1 Feb 2025 22:49:51 +0100 Subject: [PATCH 2/3] actions: run fmt check with nightly toolchain group_imports fmt rule requires the nightly toolchain, thus install and run the fmt check step with this toolchain. Signed-off-by: Stefan Kerkmann --- .github/workflows/rust.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index e669740..1ef27a7 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -53,5 +53,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - run: rustup toolchain install stable - - run: cargo fmt --all -- --check + - run: rustup toolchain install nightly + - run: rustup component add --toolchain nightly rustfmt + - run: cargo +nightly fmt --all -- --check From 6dd5af36649f7aa8f91dfceb512966a1daf351c1 Mon Sep 17 00:00:00 2001 From: Stefan Kerkmann Date: Thu, 30 Jan 2025 09:52:14 +0100 Subject: [PATCH 3/3] treewide: group import statements std, external, crate This was done using the unstable rustfmt option[1] group_imports that requires a nightly toolchain, thus it was run manually. [1]: https://rust-lang.github.io/rustfmt/?version=v1.8.0&search=import#group_imports Signed-off-by: Stefan Kerkmann --- src/cmdline.rs | 4 +++- src/dmverity.rs | 15 +++++++++------ src/main.rs | 20 +++++++++++--------- src/mount.rs | 11 +++++++---- src/systemd.rs | 13 ++++++++----- src/usbg_9pfs.rs | 11 +++++++---- 6 files changed, 45 insertions(+), 29 deletions(-) diff --git a/src/cmdline.rs b/src/cmdline.rs index 8417a4f..29008cb 100644 --- a/src/cmdline.rs +++ b/src/cmdline.rs @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-2.0-only -use crate::{read_file, Result}; + use nix::mount::MsFlags; +use crate::{read_file, Result}; + #[derive(Debug, PartialEq)] pub struct CmdlineOptions { pub root: Option, diff --git a/src/dmverity.rs b/src/dmverity.rs index 3690c7f..ad9fc98 100644 --- a/src/dmverity.rs +++ b/src/dmverity.rs @@ -1,15 +1,18 @@ // SPDX-License-Identifier: GPL-2.0-only -use crate::cmdline::CmdlineOptions; -use crate::{read_file, Result}; + +use std::fs::OpenOptions; +use std::mem::size_of; +use std::os::fd::IntoRawFd; +use std::path::Path; + use getrandom::getrandom; use log::debug; use nix::ioctl_readwrite; use nix::libc::dev_t; use nix::sys::stat::minor; -use std::fs::OpenOptions; -use std::mem::size_of; -use std::os::fd::IntoRawFd; -use std::path::Path; + +use crate::cmdline::CmdlineOptions; +use crate::{read_file, Result}; const DM_VERSION_MAJOR: u32 = 4; diff --git a/src/main.rs b/src/main.rs index ffee72a..60c41bf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -use cmdline::{parse_cmdline, CmdlineOptions}; -#[cfg(feature = "dmverity")] -use dmverity::prepare_dmverity; -use log::{debug, Level, LevelFilter, Metadata, Record}; -use mount::{mount_move_special, mount_root, mount_special}; -#[cfg(feature = "reboot-on-failure")] -use nix::sys::reboot::{reboot, RebootMode}; -use nix::sys::termios::tcdrain; -use nix::unistd::{chdir, chroot, dup2, execv, unlink}; + use std::borrow::Borrow; use std::env; use std::env::current_exe; @@ -19,6 +11,16 @@ use std::io::Write as _; use std::os::fd::{AsFd, AsRawFd, RawFd}; use std::os::unix::ffi::OsStrExt; use std::panic::set_hook; + +use cmdline::{parse_cmdline, CmdlineOptions}; +#[cfg(feature = "dmverity")] +use dmverity::prepare_dmverity; +use log::{debug, Level, LevelFilter, Metadata, Record}; +use mount::{mount_move_special, mount_root, mount_special}; +#[cfg(feature = "reboot-on-failure")] +use nix::sys::reboot::{reboot, RebootMode}; +use nix::sys::termios::tcdrain; +use nix::unistd::{chdir, chroot, dup2, execv, unlink}; #[cfg(feature = "systemd")] use systemd::{mount_systemd, shutdown}; #[cfg(feature = "usb9pfs")] diff --git a/src/mount.rs b/src/mount.rs index 8b20dd3..43a55f8 100644 --- a/src/mount.rs +++ b/src/mount.rs @@ -1,11 +1,14 @@ // SPDX-License-Identifier: GPL-2.0-only -use crate::cmdline::CmdlineOptions; -use crate::{mkdir, Result}; -use log::debug; -use nix::mount::{mount, MsFlags}; + use std::fs::remove_dir; use std::path::Path; +use log::debug; +use nix::mount::{mount, MsFlags}; + +use crate::cmdline::CmdlineOptions; +use crate::{mkdir, Result}; + pub fn do_mount( src: Option<&str>, dst: &str, diff --git a/src/systemd.rs b/src/systemd.rs index 7866fd2..8469a09 100644 --- a/src/systemd.rs +++ b/src/systemd.rs @@ -1,14 +1,17 @@ // SPDX-License-Identifier: GPL-2.0-only -use crate::cmdline::CmdlineOptions; -use crate::mount::do_mount; -use crate::{mkdir, Result}; -use nix::mount::{umount, MsFlags}; -use nix::sys::reboot::{reboot, RebootMode}; + use std::collections::BinaryHeap; use std::env; use std::fs::read_to_string; use std::path::Path; +use nix::mount::{umount, MsFlags}; +use nix::sys::reboot::{reboot, RebootMode}; + +use crate::cmdline::CmdlineOptions; +use crate::mount::do_mount; +use crate::{mkdir, Result}; + pub fn mount_systemd(options: &mut CmdlineOptions) -> Result<()> { do_mount( Option::<&str>::None, diff --git a/src/usbg_9pfs.rs b/src/usbg_9pfs.rs index c108a43..601a925 100644 --- a/src/usbg_9pfs.rs +++ b/src/usbg_9pfs.rs @@ -1,13 +1,16 @@ // SPDX-License-Identifier: GPL-2.0-only -use crate::cmdline::CmdlineOptions; -use crate::mount::mount_apivfs; -use crate::{mkdir, Result}; -use log::debug; + use std::fs::{read_dir, write}; use std::os::unix::ffi::OsStrExt; use std::os::unix::fs::symlink; use std::{thread, time}; +use log::debug; + +use crate::cmdline::CmdlineOptions; +use crate::mount::mount_apivfs; +use crate::{mkdir, Result}; + fn write_file>(path: &str, content: C) -> Result<()> { write(path, content).map_err(|e| format!("Failed to write to {path}: {e}").into()) }