- Remove integrated OpenCore creation/extraction code from quickget:
require_mtools/sgdisk helpers, create_macos_disk_with_opencore,
download_opencore and related logic
- Simplify quickemu macOS boot flow to expect a separate OpenCore.qcow2
or ESP.qcow2; streamline device/drive argument construction
- Remove mtools and gptfdisk from devshell.nix and package.nix
- Always download OpenCore.qcow2 via legacy method and update status
messages
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Display supported architectures when running ./quickget <os> (shows
"Archs: amd64 arm64")
- Add get_supported_archs() helper to enumerate available architectures
- Add arch_suffix() helper and append architecture suffix to VM
dir/config names
for foreign architectures (e.g., alpine-v3.23-arm64/)
- Add NORMALISED_HOST_ARCH variable to detect foreign vs native
architecture
- Include arch="x86_64" or arch="aarch64" in config files for foreign
downloads
- Add os_info() case entry with a description for Azure Linux
- Add Azure Linux to os_support() list
- Implement releases_azurelinux() returning "3.0"
- Implement arch_azurelinux() returning "amd64 arm64"
- Implement get_azurelinux() using stable aka.ms download URLs:
- https://aka.ms/azurelinux-3.0-x86_64.iso
- https://aka.ms/azurelinux-3.0-aarch64.isoFixes#1459
Signed-off-by: Martin Wimpress <martin@wimpress.org>
Add exit 1 after curl failure handling in web_get
- Exit immediately when a download via curl fails
- Prevent continuing to build invalid VM configs after failed download
Fixes#1625
- Quote URL argument passed to web_pipe in quickget to prevent
word-splitting
- Quote echoed variables in quickget (echo "${...}") for safe output
when values contain whitespace
- Add shellcheck disable=SC2054 in quickemu vm_boot to silence a
spurious ShellCheck warning
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Prefer GNU coreutils g* hash commands on macOS when available; fall
back to native shasum/md5 otherwise
- Handle MD5 on macOS using 'md5 -r' and parse its output for comparison
- Warn and skip b2sum verification when GNU b2sum is not installed on
macOS
- Use a selected hash command variable when printing status and
performing checks
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add arch_ubuntu() to enumerate supported architectures and gate ARM64
by release
- Validate architecture once RELEASE is known and exit/skip if
unsupported
- Use UBUNTU_ARCH when selecting ISO lines and hashes instead of
hardcoded amd64
- Use cdimage.ubuntu.com releases path for Ubuntu ARM64 desktop ISOs
- Default non-numeric releases (daily, dvd, etc.) to amd64 only
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- If architecture is unsupported and OPERATION is "test" or "show",
call test_result with SKIP and exit 0
- Keep existing error and exit 1 for non-test/show operations
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Skip early architecture check for OSes with editions_<os> to avoid
rejecting valid edition-specific combinations
- Perform architecture validation after EDITION is known and show a
descriptive error when the chosen edition isn't available on ARCH
- Preserve test/show behaviour (report SKIP) and keep previous flow for
OSes without editions_<os>
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Remove the OPERATION == "test" guard so is_arch_supported() is
evaluated
unconditionally
- Apply the unconditional arch check in test_all() for editions loop,
ubuntu-server, ubuntu desktop (ubuntu*), and the default case
- Skip generating URLs / running further logic when an OS is not
available
for the requested ARCH
IMPACT: quickget will no longer attempt to generate or test downloads
for
architectures that the distro does not support, preventing incorrect URL
generation and false-positive test attempts.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add CLI flag --check-all-arch with help text and CHECK_ALL_ARCH var
- Implement loop to run checks for both amd64 and arm64, setting ARCH
per run
- Validate architecture and release/edition before generating URLs; skip
Windows
- Generate and check URLs per-arch, reporting PASS / FAIL / SKIP per
entry
- Update CI workflow to call ./quickget --check-all-arch for distro
matrix tests
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add arch_*() functions declaring supported architectures for several
distros
- Add is_arch_supported() helper; default to amd64 when no arch_* exists
- Validate architecture before generating URLs or running tests
(web_get, zsync_get, test_all)
- Update test_result() to accept and display an optional reason when
skipping
- Prevent false failures by skipping tests for unsupported architectures
IMPACT: quickget now respects requested architectures and reports clear
SKIP reasons for distros that do not support the selected arch.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Use ARCH as DEBIAN_ARCH when constructing ISO filename and cdimage URL
- Update DEBCURRENT handling to select arch-specific iso-hybrid path
- Add explicit error and exit if arm64 is requested with a non-netinst
edition
(Debian provides netinst images only for ARM64)
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add FEDORA_ARCH and set to aarch64 when ARCH == arm64
- Use FEDORA_ARCH in jq filter to pick the correct Fedora ISO/sha256
- Add UBUNTU_ARCH and switch Ubuntu daily/releases URL for arm64
- Use UBUNTU_ARCH when parsing SHA256SUMS/MD5SUMS instead of hardcoded
amd64
Fixes incorrect ISO selection on ARM64 hosts and enables arm64
downloads.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add HOST_ARCH detection and set ARCH default (arm64 → arm64, others →
amd64)
- Add parse_arch_flag() and support --arch/-arch before or after
operation args
- Inject arch="aarch64" into generated VM configs when ARCH=arm64
- Use QEMU_ARCH in distro helpers (AlmaLinux, Alpine, etc.) to build
correct ISO names/URLs
- Update help text to document --arch and reorder flags display
- Tidy Alpine release parsing (use first match) and simplify Rocky URL
assignment
Note: quickget now defaults ARCH from the host; pass --arch to override
if you
need a different target architecture.
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Accept hashes in the form "algo:hash" and normalise prefix to
lowercase
- Map common prefixes (md5, sha1, sha256, sha512, b2sum|blake2|blake2b)
to tools
- Warn and skip verification for unknown prefixes
- Add macOS GNU coreutils mapping for gb2sum when using b2sum
- Use printf '%s %s\n' to produce a stable "hash filename" input for
--check
Signed-off-by: Martin Wimpress <martin@wimpress.org>
Create macOS VMs with OpenCore embedded in the EFI partition of disk.qcow2
instead of using a separate OpenCore.qcow2 file. This simplifies VM management
by reducing from two disk images to one.
Implementation:
- Add create_macos_disk_with_opencore() using mtools/sgdisk for cross-platform
EFI partition creation without mounting or root privileges
- Add download_opencore() to extract OpenCore files from OSX-KVM image
- Use LC_ALL='' with mcopy to prevent FAT directory name mangling
- Adjust disk size threshold for macOS integrated mode (1GB vs 1.5MB)
Backwards compatibility:
- If OpenCore.qcow2 exists, use legacy two-disk boot method
- If mtools/sgdisk unavailable, fall back to legacy method automatically
New dependencies: mtools, gptfdisk (added to devshell.nix and package.nix)
Closes#1720
The hash URL was incorrectly using 'v${RELEASE}' (e.g., 'vlatest')
instead of extracting the actual version folder from the redirect URL.
Since releases_archcraft returns 'latest', the download redirect goes
to a versioned folder like 'v25.10', but the hash file lookup used
'vlatest' which doesn't exist.
Extract the version folder from the redirect URL to construct the
correct hash file path.
- Use direct mirror URL instead of unreliable shortlink redirects
- Remove lite64 edition from Zorin 18 (now Pro-only)
- Automatically detect latest revision for each version
Fixes:
- slint: Update version from 15.0-5 to 15.0-10
- blendos: Replace dead mirror with official GitLab build server
- void: Filter out directories without standard base ISOs (fixes
20250401)
Removals:
- holoiso: Project archived Feb 2024, download server returns 404
- truenas-core: Discontinued, merged into TrueNAS Community Edition
- truenas-scale: Rebranded to TrueNAS Community Edition
- Replace mirror.bytemark.co.uk with mirrors.kernel.org in get_gentoo,
get_linuxmint and get_lmde
- Prefer kernel.org mirrors for improved availability and fresher
releases
- No change to ISO selection or hash verification logic; behaviour
unchanged
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Remove Devuan 'beowulf' from the release list
- Drop Mageia '8' from the release list
- Filter Fedora releases JSON and exclude Fedora 41 (prevent EOL
entries)
- Restrict GNOME OS parsing to stable numeric versions and keep
"nightly"
- Rationale: avoid presenting EOL or alpha/beta/rc images to users and
reduce failed downloads
Signed-off-by: Martin Wimpress <martin@wimpress.org>
- Add require_qemu_img() to detect qemu-img and print a clear error if
missing
- Call require_qemu_img before any qemu-img operations (RecoveryImage,
.img conversions)
- Remove duplicate global qemu-img existence check to avoid repetition
Signed-off-by: Martin Wimpress <martin@wimpress.org>