feat(quickget): add ARM64 (aarch64) download support#1820
Merged
flexiondotorg merged 11 commits intomasterfrom Jan 25, 2026
Merged
feat(quickget): add ARM64 (aarch64) download support#1820flexiondotorg merged 11 commits intomasterfrom
flexiondotorg merged 11 commits intomasterfrom
Conversation
- 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>
- 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>
- 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 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>
- 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>
Signed-off-by: Martin Wimpress <martin@wimpress.org>
Contributor
There was a problem hiding this comment.
1 issue found across 2 files
Confidence score: 3/5
- There is some risk:
arch_fedora()does not filter by edition, so ARM64 could be offered for non-Server editions contrary to the PR’s intended behavior andarch_debian()consistency. - This is a user-facing selection issue rather than a crash, but it can lead to incorrect architecture choices, which justifies a moderate caution score.
- Pay close attention to
quickget- alignarch_fedora()with edition-specific ARM64 filtering to match the PR description.
Prompt for AI agents (all issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name="quickget">
<violation number="1" location="quickget:1376">
P2: `arch_fedora()` should filter by edition to only allow ARM64 for Server, consistent with the PR description and how `arch_debian()` handles edition-specific architecture support.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
- 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>
874d8f0 to
efd0d6d
Compare
Member
Author
Contributor
|
@flexiondotorg I have started the AI code review. It will take a few minutes to complete. |
Contributor
There was a problem hiding this comment.
1 issue found across 2 files
Confidence score: 3/5
- There is a concrete user-facing risk: early architecture validation fails for edition-dependent distros because
EDITIONisn't parsed yet, so commands likequickget --arch arm64 debian 12.5 netinstcan break. - Given the severity (7/10) and high confidence, this introduces some regression risk and makes the merge less safe without adjustment.
- Pay close attention to
quickget- ensureEDITIONis parsed before architecture validation for edition-dependent distros.
Prompt for AI agents (all issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name="quickget">
<violation number="1" location="quickget:576">
P1: Early architecture validation fails for edition-dependent distros (Debian, Fedora) because `EDITION` hasn't been parsed yet from command line args. Commands like `quickget --arch arm64 debian 12.5 netinst` will incorrectly fail even though Debian netinst supports ARM64.
The fix should skip early validation for OSes that have an `editions_*` function, deferring to the later edition-aware checks.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
- 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>
Contributor
There was a problem hiding this comment.
1 issue found across 1 file (changes from recent commits).
Prompt for AI agents (all issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name="quickget">
<violation number="1" location="quickget:4074">
P2: Missing test/show operation handling causes inconsistent behavior for OSes with editions. When `--check` or `--url` is used on an OS with editions that doesn't support the target architecture, this will exit with an error instead of outputting a SKIP result like non-edition OSes do.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
- 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>
- 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>
- 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>
This was referenced Jan 25, 2026
This was referenced Feb 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements ARM64 (aarch64) download support to quickget and several related quickemu runtime improvements.
Changes
--archflag and host architecture auto-detectionarch="aarch64"for ARM64 guest configsarch_*()functions declaring supported architectures(Alpine, AlmaLinux, Ubuntu Server, Fedora Server, Debian (netinst))
--check-all-archflag for CI to test amd64 and arm64combinations; unsupported combinations are SKIPPED (not FAIL)
qemu share path fixes, and other small fixes for macOS/CPU handling
Testing
./quickget --check <distro>for supported distros on both arches./quickget --check-all-archin CI to verify amd64 and arm64 pathsarch="aarch64")Notes
Fixes #916