Build armv8-a packages for Arch Linux
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-07 10:12:09 -07:00
build Build armv8-a packages for Arch Linux 2026-07-19 18:20:15 -07:00
pkglist fix build order. adjust package lists 2026-08-07 10:12:09 -07:00
.gitignore Build armv8-a packages for Arch Linux 2026-07-19 18:20:15 -07:00
check.py rework build order determination 2026-08-06 15:17:24 -07:00
core.py fix build order. adjust package lists 2026-08-07 10:12:09 -07:00
dispatcher.py refactor and add script for staging specific packages 2026-07-20 12:45:03 -07:00
fetch.py refactor and add script for staging specific packages 2026-07-20 12:45:03 -07:00
LICENSE Build armv8-a packages for Arch Linux 2026-07-19 18:20:15 -07:00
prune.py add script to prune packages removed from upstream 2026-07-20 13:37:12 -07:00
README.md Build armv8-a packages for Arch Linux 2026-07-19 18:20:15 -07:00
release.py refactor and add script for staging specific packages 2026-07-20 12:45:03 -07:00
requirements.txt Build armv8-a packages for Arch Linux 2026-07-19 18:20:15 -07:00
stage.py refactor and add script for staging specific packages 2026-07-20 12:45:03 -07:00
status.py refactor and add script for staging specific packages 2026-07-20 12:45:03 -07:00
sync.py refactor and add script for staging specific packages 2026-07-20 12:45:03 -07:00

Arch Linux AArch64 Builder (arch-armv8)

Build pipeline for tracking, synchronizing, and building Arch Linux packages for the aarch64 (armv8-a instruction set) architecture. We compare an x86_64 package database ("upstream") with a local aarch64 repository ("downstream") to identify outdated and missing packages.

Project Structure

  • dispatcher.py — The core build orchestrator. Analyzes the state, determines the build order, and executes the Git/build pipeline.
  • status.py — A CLI dashboard that calculates database age and provides a tabulated breakdown of package states.
  • sync.py — Generates and refreshes the downstream state database.
  • pkglist/ — Configuration directory containing plain-text files to manage package targeting:
    • haskell: Rules to isolate Haskell packages.
    • ignored: Packages to completely ignore.
    • hold: Packages that are intentionally held back from building.

Requirements

  • Python 3.9+
  • Python Packages: pyalpm
  • System Tools: devtools (for pkgctl), pacman (for repo-add, vercmp), git, gpg

Workflow

  1. State Generation: ./fetch.py generates upstream.json
  2. Review Status: Run ./status.py to view a breakdown of packages that are outdated, missing, or staged.
  3. Execute Build: Run ./dispatcher.py. The dispatcher will:
    • Sync architecture-independent (any) packages directly to staging.
    • Determine the build order for architecture-dependent packages.
    • Pull the PKGBUILD, inject aarch64, build the package in a chroot, and move the artifacts to a {repo}-staging directory.
  4. Release: Run ./release.py to promote packages from staging.