Skip to content

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 10 May 17:56
· 56 commits to main since this release

FloppyBootCD v1.1.0 — bundled xorriso + ARM64 prebuilts

The headline change in v1.1.0: every prebuilt binary now ships with xorriso already inside, and we now publish prebuilts for both Linux ARM64 and Windows ARM64.

If you've been hitting "install xorriso first" friction on Windows or macOS, or running FloppyBootCD on a Raspberry Pi 4/5 / AWS Graviton / Apple Silicon Linux / Windows on ARM device — this release is for you.


What's new

🚀 Bundled xorriso on every platform

Prior versions required a separate brew install xorriso / apt install xorriso / scoop install xorriso step before the prebuilt binary could do anything useful. With v1.1.0:

Platform xorriso bundled?
macOS arm64 (Apple Silicon) ✅ native arm64 build (Homebrew + dylibbundler)
macOS x86_64 (Intel) ✅ native x86_64 build (Homebrew + dylibbundler)
Windows x86_64 ✅ native build (MSYS2 mingw-w64 libisoburn)
Windows ARM64 ✅ x86_64 build, runs under Windows 11's built-in x64 emulator
Linux x86_64 ✅ native build (apt + patchelf RPATH $ORIGIN/lib)
Linux ARM64 ✅ native build (apt + patchelf RPATH $ORIGIN/lib)

xorriso is shipped under GPLv3 — see THIRD_PARTY_NOTICES.md for the upstream source URL, the mere-aggregation rationale, and the 3-year written source-offer. FloppyBootCD itself remains MIT.

🔌 New: ARM64 prebuilts

Two new artifacts:

Bundle Targets
floppybootcd-1.1.0-linux-arm64.tar.gz Raspberry Pi 3 / 4 / 5 / CM3+ / CM4 / Zero 2 W (64-bit OS), AWS Graviton, Ampere Altra, Apple Silicon under Linux, any other aarch64 box
floppybootcd-1.1.0-windows-arm64.zip Surface Pro X / Pro 9 / Snapdragon X / Copilot+ PCs running Windows 11 on ARM

📋 Crystal-clear OS support

The README now has an explicit Supported operating systems table with concrete minimum versions per artifact, plus a Raspberry Pi compatibility table mapping each Pi model to the right download.

Bundle Minimum supported version
macos-arm64 / macos-x86_64 macOS 13 (Ventura)
windows-x86_64 Windows 10 1809 (Oct 2018)
windows-arm64 Windows 11 22H2
linux-x86_64 glibc 2.34 (Ubuntu 22.04 / Debian 12 / RHEL 9 / Fedora 36+ / Raspberry Pi OS Bookworm)
linux-arm64 glibc 2.39 (Ubuntu 24.04 / Debian 13 Trixie / Fedora 40+ / RHEL 10)

The linux-arm64 glibc 2.39 floor comes from PySide6's manylinux_2_39_aarch64 wheel — for older ARM64 distros (notably Raspberry Pi OS Bookworm with glibc 2.36), install from source via uv, which uses piwheels for PySide6.

🛣️ Roadmap section

The README has a new Roadmap section with the concrete blockers for:

  • 32-bit ARM Linux (armhf / armv7l) for older Raspberry Pis
  • 32-bit Windows (Win32) and 32-bit Linux (i686 / i386)
  • Native ARM64 Windows xorriso build
  • Code-signed / notarized macOS / Windows binaries
  • AppImage / Flatpak Linux distributions

Short version: the blocker for 32-bit support is upstream PySide6 wheel availability (PyPI ships only x86_64 + aarch64 + Windows x86_64 + Windows ARM64). Building Qt + PySide6 from source for 32-bit targets is multi-hour CI work and not on the table for v1.1.x.


Download

Self-contained bundles for every supported platform:

Platform File
macOS (Apple Silicon) floppybootcd-1.1.0-macos-arm64.zip
macOS (Intel) floppybootcd-1.1.0-macos-x86_64.zip
Windows (x86_64) floppybootcd-1.1.0-windows-x86_64.zip
Windows (ARM64) floppybootcd-1.1.0-windows-arm64.zip
Linux (x86_64) floppybootcd-1.1.0-linux-x86_64.tar.gz
Linux (ARM64) floppybootcd-1.1.0-linux-arm64.tar.gz

Or install from source:

uv tool install git+https://github.com/pacnpal/floppybootcd

See the README for per-platform setup and the macOS Gatekeeper workaround.


How the bundling works under the hood

Each platform has its own staging recipe in .github/workflows/release.yml:

  • Linux — apt install xorriso patchelf, then cp /usr/bin/xorriso bin/, ldd to find non-glibc deps, copy them into bin/lib/, and patchelf --set-rpath '$ORIGIN/lib' so the bundled binary finds its libs without LD_LIBRARY_PATH. glibc-family libs (libc, ld-linux, libpthread, libdl, libm, librt, libnsl, linux-vdso) are deliberately not copied — those load from the host so we don't ship a glibc that mismatches the kernel.
  • macOS — brew install xorriso dylibbundler, then dylibbundler -od -b -x bin/xorriso -d bin/libs -p '@executable_path/libs/' rewrites every dylib reference to @executable_path/libs/<dylib>. At runtime, @executable_path resolves to the directory of xorriso (inside the .app bundle's Contents/Resources/bin/), and the loader finds everything next door.
  • Windows — mingw-w64-x86_64-libisoburn from MSYS2, then ldd over xorriso.exe to find every MinGW DLL it depends on, copy them next to xorriso.exe. Windows DLL search order finds them automatically because they share the directory.
  • Windows ARM64 — uses the same x86_64 staging output. Windows 11 on ARM ships an x64 emulator that runs the bundled binary fine for our subprocess use case. A native ARM64 xorriso build is on the Roadmap once mingw-w64-aarch64-libisoburn lands upstream.

At runtime, floppybootcd/core/iso_builder.py searches for the bundled xorriso first (in sys._MEIPASS/bin, beside sys.executable, and inside the macOS .app's Contents/Resources/bin and Contents/Frameworks/bin) before falling back to the system PATH. The Linux burner backend uses the same lookup so the bundled xorriso also drives the xorriso -as cdrecord burn path.


License

FloppyBootCD: MIT.

Bundled third-party software:

Both files are included inside every release artifact.


Upgrade notes from v1.0.0

  • If you previously installed xorriso just for FloppyBootCD, you can brew uninstall xorriso / scoop uninstall xorriso / sudo apt remove xorriso — the new prebuilts include their own copy. (You can keep the system one too; FloppyBootCD will prefer the bundled one but doesn't conflict.)
  • macOS users on macOS 12 (Monterey) or earlier need to install from source — v1.1.0 prebuilts now baseline macOS 13.
  • Linux ARM64 users on Raspberry Pi OS Bookworm (glibc 2.36) cannot run the prebuilt — install from source via uv. This was a hidden constraint in v1.0.0 (which had no ARM64 prebuilt at all); now it's documented.