Skip to content

feat(arch-repo): publish aarch64 packages alongside x86_64 (#6334)#6358

Merged
houko merged 2 commits into
mainfrom
ci/arch-repo-aarch64
Jun 29, 2026
Merged

feat(arch-repo): publish aarch64 packages alongside x86_64 (#6334)#6358
houko merged 2 commits into
mainfrom
ci/arch-repo-aarch64

Conversation

@houko

@houko houko commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

What

Extends the project-maintained pacman repository (#6352) to aarch64 (Arch Linux ARM).

It was x86_64-only. Now librefang-bin and librefang-docker are also published for aarch64 under arch/aarch64/. librefang-desktop-bin stays x86_64-only because upstream ships no ARM Linux desktop bundle (the arm64 release assets are Windows/macOS only).

How

publish-arch-repo.sh loops over ARCHES (default x86_64 aarch64), publishing one signed pacman repo per arch under arch/<arch>/. Clients pick the right one automatically through pacman's $arch in the existing Server = …/arch/$arch line — no install-doc change.

These packages repackage prebuilt release binaries (no compile), so aarch64 builds on the x86_64 runner:

  • librefang-bin: repoint the source tarball to the aarch64-unknown-linux-gnu asset, set arch=('aarch64') + CARCH (via ~/.makepkg.conf), and !strip — the host strip can't process foreign binaries, and the release tarball is already stripped upstream.
  • librefang-docker: arch=any, lands in every arch path.

No change to action.yml / release.yml / secrets — the multi-arch loop is entirely inside the script.

Verification

Local amd64 container (file is the decisive evidence that we shipped a real ARM package, not a mislabeled x86_64 one):

  • updpkgsums pulls librefang-aarch64-unknown-linux-gnu.tar.gz, sha passes
  • produces librefang-bin-…-aarch64.pkg.tar.zst; pacman -QipArchitecture: aarch64
  • file on the bundled /usr/bin/librefangELF 64-bit LSB pie executable, ARM aarch64 … stripped
  • bash -n clean on the rewritten script

The x86_64 path is unchanged from the merged #6352 (already verified end-to-end: real pacman -S librefang-bin install + signature check on a live Arch container). The first CI release confirms the aarch64 path on the native amd64 runner.

Refs #6334

The pacman repository published only x86_64. Extend it to aarch64 (Arch Linux ARM) for librefang-bin and librefang-docker. librefang-desktop-bin stays x86_64-only because upstream ships no ARM Linux desktop bundle (the arm64 release assets are Windows/macOS only).

publish-arch-repo.sh now loops over ARCHES (default "x86_64 aarch64"), publishing one signed pacman repo per arch under arch/<arch>/. Clients select it automatically via pacman's $arch in the existing Server line, so the install docs are unchanged.

These packages repackage prebuilt release binaries (no compile), so aarch64 is built on the x86_64 runner: librefang-bin repoints its source tarball to the aarch64-unknown-linux-gnu asset, sets arch=('aarch64') and CARCH via ~/.makepkg.conf (the arch field is metadata only), and disables !strip since the host strip cannot process foreign binaries (the release tarball is already stripped upstream). librefang-docker is arch=any and lands in every arch path.

No change to action.yml / release.yml / secrets — the multi-arch loop is internal to the script.

Verified locally (amd64 container): the aarch64 librefang-bin package builds, reports Architecture: aarch64, and file confirms the bundled binary is ARM aarch64 ELF.
@github-actions github-actions Bot added area/docs Documentation and guides size/M 50-249 lines changed labels Jun 29, 2026
@houko
houko merged commit e71f4ad into main Jun 29, 2026
31 checks passed
@houko
houko deleted the ci/arch-repo-aarch64 branch June 29, 2026 06:28
@houko houko mentioned this pull request Jun 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/docs Documentation and guides size/M 50-249 lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants