This document collects the build, packaging, and platform-specific details that are intentionally kept out of the main README.
| Path | Purpose |
|---|---|
crates/driveck-core |
Shared target discovery, validation engine, report generation |
crates/driveck-ffi |
C ABI bridge used by native frontends |
crates/driveck-cli |
Rust CLI frontend |
crates/driveck-gtk |
Linux GTK frontend |
crates/driveck-win32 |
Native Win32 frontend |
macos/DriveCkMacCLI |
Native macOS CLI target |
macos/DriveCkMacApp |
Native macOS app target |
macos/DriveCkMac.xcodeproj |
Xcode project for the macOS native frontends |
resources/ |
Shared screenshots and application assets |
script/ |
Local build, run, verification, and packaging helpers |
The primary local build command is:
./script/build.sh <target> <debug|release>Supported targets:
workspacecorefficligtkwin32macos-climacos-app
Examples:
./script/build.sh workspace
./script/build.sh cli release
./script/build.sh gtk release
./script/build.sh win32 release
./script/build.sh macos-cli debug
./script/build.sh macos-app releaseCompatibility wrappers still exist:
script/build_rust.shscript/build_macos_cli.shscript/build_macos_app.sh
Use the shared verification script:
./script/verify_all.shIt runs:
cargo test --workspace- the macOS CLI build when running on macOS with
xcodebuild - the macOS app build when running on macOS with
xcodebuild - the Windows GNU cross-check when
x86_64-pc-windows-gnuis installed
Use:
./script/package_release.sh <target>On Windows PowerShell, prefer the wrapper:
.\script\package_release.ps1 win32
.\script\package_release.ps1 cliSupported packaging targets:
cligtkwin32macos-climacos-app
Examples:
./script/package_release.sh cli
./script/package_release.sh gtk
./script/package_release.sh win32
./script/package_release.sh macos-app
./script/package_release.sh macos-app --snapshotArchive naming:
- CLI packages:
DriveCk-cli-<platform>-<arch>-v<version> - GUI packages:
DriveCk-gui-<platform>-<arch>-v<version>
Examples:
DriveCk-cli-linux-x86_64-v0.1.0.tar.gzDriveCk-gui-linux-x86_64-v0.1.0.tar.gzDriveCk-cli-windows-x86_64-v0.1.0.zipDriveCk-gui-windows-x86_64-v0.1.0.zipDriveCk-cli-macos-arm64-v0.1.0.zipDriveCk-gui-macos-arm64-v0.1.0.zip
Pass --snapshot to append +<shortsha> from a clean checkout or
+<shortsha>.dirty from a dirty checkout.
Packaging also standardizes staged product names:
- CLI packages expose
driveckon Unix-like hosts anddriveck.exeon Windows - Linux GUI packages expose
driveckplusresources/icon/linux/ - Windows GUI packages expose
DriveCk.exe, which can launch the GUI or run the embedded CLI mode - macOS GUI packages expose
DriveCk.appplus thedriveckhelper
Release archives intentionally omit README.md and only stage the runtime
artifacts needed by that target.
The repository now includes a Linux installer script:
./script/install_linux.sh --user target/release/DriveCk-gui-linux-x86_64-v0.1.0.tar.gz
./script/install_linux.sh --system target/release/DriveCk-cli-linux-x86_64-v0.1.0.tar.gzInstall locations follow standard local paths instead of writing arbitrary files:
| Mode | Payload root | Executable entry | Desktop / icon data |
|---|---|---|---|
--user |
~/.local/lib/driveck |
~/.local/bin/driveck for CLI |
~/.local/share/applications, ~/.local/share/icons |
--system |
/usr/local/lib/driveck |
/usr/local/bin/driveck for CLI |
/usr/local/share/applications, /usr/local/share/icons |
Behavior:
- GUI installs keep the application binary under the managed payload root and
install a
.desktoplauncher plus hicolor icons. - GUI installs also expose a
driveck-guisymlink so the same binary can be used in GUI mode or CLI mode. - CLI installs keep the payload versioned under the managed root and expose a
drivecksymlink in the standard bin directory. - Existing unmanaged files are never overwritten.
The matching uninstaller is:
./script/uninstall_linux.sh --user --all
./script/uninstall_linux.sh --system --guiIt removes only DriveCk-managed GUI/CLI installs from the selected scope and leaves unrelated files alone.
cargo run -p driveck-cli -- --list
cargo run -p driveck-cli -- --yes /dev/sdb
cargo run -p driveck-cli -- --yes --output report.txt /dev/sdbcargo run -p driveck-gtkThe GTK binary now behaves like this on Linux:
- no arguments: start the GUI
- CLI arguments such as
--listor--yes /dev/sdb: run in CLI mode --validate-helper: reserved for the internal privileged helper flow
Run these from a Windows shell initialized with the MSVC environment:
cargo run -p driveck-win32
cargo build --release -p driveck-win32The Win32 executable also supports the embedded CLI mode when launched with arguments:
cargo run -p driveck-win32 -- --list
.\target\release\driveck-win32.exe --yes \\.\PhysicalDrive2
.\target\release\driveck-win32.exe --guixcodebuild -project macos/DriveCkMac.xcodeproj -scheme DriveCkMacCLI -configuration Debug build
./macos/Build/Debug/driveck --list
./macos/Build/Debug/driveck --yes disk2
./macos/Build/Debug/driveck --yes --output report.txt /dev/rdisk2xcodebuild -project macos/DriveCkMac.xcodeproj -scheme DriveCkMacApp -configuration Debug build
open ./macos/Build/Debug/DriveCk.app-
Validation targets must be whole block devices. Regular files and partitions are rejected.
-
The shared Rust validation engine rejects mounted targets before opening the device.
-
On Linux, the GTK frontend requests elevated access through
pkexec --disable-internal-agentwhen it is not already running as root. -
On macOS, validation runs through
driveck-ffi, and the app expects the native CLI helper (driveck) beside the app bundle when packaged. -
On Windows, the Win32 frontend is a native Rust app layered on
driveck-ffi. -
Windows release builds are intended to use the
x86_64-pc-windows-msvctoolchain. -
Linux can run a Windows GNU cross-check with:
cargo check --target x86_64-pc-windows-gnu -p driveck-core -p driveck-win32
That cross-check does not replace a native Windows/MSVC release build.