From 3d7856838647238341b156b4224d96ef16c6d7d9 Mon Sep 17 00:00:00 2001 From: Alvin Vilaythong Date: Mon, 14 Sep 2026 17:24:16 +1000 Subject: [PATCH] Fix check-packages: use docker run for Arch instead of container directive --- .gitea/workflows/check-packages.yml | 219 ++++++++++++++-------------- 1 file changed, 111 insertions(+), 108 deletions(-) diff --git a/.gitea/workflows/check-packages.yml b/.gitea/workflows/check-packages.yml index 10205be..6811a3d 100644 --- a/.gitea/workflows/check-packages.yml +++ b/.gitea/workflows/check-packages.yml @@ -11,123 +11,126 @@ on: jobs: check-packages: - runs-on: archlinux + runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v4 - - name: Install prerequisites - run: | - pacman -Syu --noconfirm --needed pacman pacman-contrib curl gnupg - - - name: Set up official repos (extra, multilib) - run: | - printf '%s\n' \ - '[options]' \ - 'Architecture = auto' \ - 'SigLevel = Required DatabaseOptional' \ - 'LocalFileSigLevel = Optional' \ - '' \ - '[core]' \ - 'Include = /etc/pacman.d/mirrorlist' \ - '' \ - '[extra]' \ - 'Include = /etc/pacman.d/mirrorlist' \ - '' \ - '[multilib]' \ - 'Include = /etc/pacman.d/mirrorlist' \ - > /etc/pacman.conf - - # Generate a basic mirrorlist - curl -fsSL "https://archlinux.org/mirrorlist/all/status/" \ - | sed 's/^#Server/Server/' | head -20 > /etc/pacman.d/mirrorlist - - pacman -Syu --noconfirm - - - name: Set up CachyOS repo - run: | - # Import CachyOS keyring - curl -fsSL https://mirror.cachyos.org/cachyos-keyring.pkg.tar.zst \ - -o /tmp/cachyos-keyring.pkg.tar.zst - pacman -U --noconfirm /tmp/cachyos-keyring.pkg.tar.zst || true - - # Add CachyOS mirrorlist - printf '%s\n' \ - 'Server = https://mirror.cachyos.org/$repo/$arch' \ - > /etc/pacman.d/cachyos-mirrorlist - - # Add CachyOS repo to pacman.conf - printf '\n[cachyos]\nSigLevel = Optional TrustAll\nInclude = /etc/pacman.d/cachyos-mirrorlist\n' \ - >> /etc/pacman.conf - - pacman -Syu --noconfirm - - - name: Set up chaotic-aur repo - run: | - # Import chaotic-aur keyring - pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com - pacman-key --lsign-key FBA220DFC880C036 || true - - # Add chaotic-aur mirrorlist - printf '%s\n' \ - 'Server = https://chaotic.archlinux.org/$repo/$arch' \ - > /etc/pacman.d/chaotic-mirrorlist - - # Add chaotic-aur repo to pacman.conf - printf '\n[chaotic-aur]\nSigLevel = Optional TrustAll\nInclude = /etc/pacman.d/chaotic-mirrorlist\n' \ - >> /etc/pacman.conf - - pacman -Syu --noconfirm - - name: Check all packages run: | - echo "═══════════════════════════════════════════════════════════════" - echo " Checking packages.x86_64 against repos" - echo " Allowed repos: cachyos, extra, multilib, chaotic-aur" - echo "═══════════════════════════════════════════════════════════════" + docker run --rm \ + -v "${{ github.workspace }}:/workspace" \ + -w /workspace \ + archlinux:latest \ + bash -c ' + set -e - ALLOWED_REPOS="^(cachyos|extra|multilib|chaotic-aur)$" - MISSING=() - FOUND=0 - TOTAL=0 + echo "═══════════════════════════════════════════════════════════════" + echo " Installing prerequisites" + echo "═══════════════════════════════════════════════════════════════" + pacman -Syu --noconfirm --needed pacman pacman-contrib curl gnupg - while IFS= read -r pkg; do - # Skip empty lines and comments - [[ -z "$pkg" || "$pkg" =~ ^# ]] && continue - TOTAL=$((TOTAL + 1)) + echo "═══════════════════════════════════════════════════════════════" + echo " Setting up official repos (extra, multilib)" + echo "═══════════════════════════════════════════════════════════════" + printf "%s\n" \ + "[options]" \ + "Architecture = auto" \ + "SigLevel = Required DatabaseOptional" \ + "LocalFileSigLevel = Optional" \ + "" \ + "[core]" \ + "Include = /etc/pacman.d/mirrorlist" \ + "" \ + "[extra]" \ + "Include = /etc/pacman.d/mirrorlist" \ + "" \ + "[multilib]" \ + "Include = /etc/pacman.d/mirrorlist" \ + > /etc/pacman.conf - # Query pacman for the package's repository - repo=$(pacman -Si "$pkg" 2>/dev/null | grep "^Repository" | awk '{print $3}') + curl -fsSL "https://archlinux.org/mirrorlist/all/status/" \ + | sed "s/^#Server/Server/" | head -20 > /etc/pacman.d/mirrorlist - if [[ -z "$repo" ]]; then - echo "❌ MISSING: $pkg" - MISSING+=("$pkg") - elif [[ "$repo" =~ $ALLOWED_REPOS ]]; then - FOUND=$((FOUND + 1)) - else - echo "⚠️ WRONG REPO: $pkg (found in: $repo)" - MISSING+=("$pkg") - fi - done < packages.x86_64 + pacman -Syu --noconfirm - echo "" - echo "═══════════════════════════════════════════════════════════════" - echo " Results: $FOUND / $TOTAL packages found in allowed repos" - echo "═══════════════════════════════════════════════════════════════" + echo "═══════════════════════════════════════════════════════════════" + echo " Setting up CachyOS repo" + echo "═══════════════════════════════════════════════════════════════" + curl -fsSL https://mirror.cachyos.org/cachyos-keyring.pkg.tar.zst \ + -o /tmp/cachyos-keyring.pkg.tar.zst + pacman -U --noconfirm /tmp/cachyos-keyring.pkg.tar.zst || true - if [[ ${#MISSING[@]} -gt 0 ]]; then - echo "" - echo "⚠️ ${#MISSING[@]} package(s) NOT in allowed repos:" - for p in "${MISSING[@]}"; do - echo " • $p" - done - echo "" - echo "These packages must be in:" - echo " • cachyos, extra, multilib, or chaotic-aur" - echo " • OR pre-built in localrepo/" - echo " • OR added to build-end4-deps.sh" - exit 1 - else - echo "" - echo "✅ All packages verified successfully!" - fi \ No newline at end of file + printf "%s\n" \ + "Server = https://mirror.cachyos.org/\$repo/\$arch" \ + > /etc/pacman.d/cachyos-mirrorlist + + printf "\n[cachyos]\nSigLevel = Optional TrustAll\nInclude = /etc/pacman.d/cachyos-mirrorlist\n" \ + >> /etc/pacman.conf + + pacman -Syu --noconfirm + + echo "═══════════════════════════════════════════════════════════════" + echo " Setting up chaotic-aur repo" + echo "═══════════════════════════════════════════════════════════════" + pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com + pacman-key --lsign-key FBA220DFC880C036 || true + + printf "%s\n" \ + "Server = https://chaotic.archlinux.org/\$repo/\$arch" \ + > /etc/pacman.d/chaotic-mirrorlist + + printf "\n[chaotic-aur]\nSigLevel = Optional TrustAll\nInclude = /etc/pacman.d/chaotic-mirrorlist\n" \ + >> /etc/pacman.conf + + pacman -Syu --noconfirm + + echo "═══════════════════════════════════════════════════════════════" + echo " Checking packages.x86_64 against repos" + echo " Allowed repos: cachyos, extra, multilib, chaotic-aur" + echo "═══════════════════════════════════════════════════════════════" + + ALLOWED_REPOS="^(cachyos|extra|multilib|chaotic-aur)$" + MISSING=() + FOUND=0 + TOTAL=0 + + while IFS= read -r pkg; do + [[ -z "$pkg" || "$pkg" =~ ^# ]] && continue + TOTAL=$((TOTAL + 1)) + + repo=$(pacman -Si "$pkg" 2>/dev/null | grep "^Repository" | awk "{print \$3}") + + if [[ -z "$repo" ]]; then + echo "❌ MISSING: $pkg" + MISSING+=("$pkg") + elif [[ "$repo" =~ $ALLOWED_REPOS ]]; then + FOUND=$((FOUND + 1)) + else + echo "⚠️ WRONG REPO: $pkg (found in: $repo)" + MISSING+=("$pkg") + fi + done < packages.x86_64 + + echo "" + echo "═══════════════════════════════════════════════════════════════" + echo " Results: $FOUND / $TOTAL packages found in allowed repos" + echo "═══════════════════════════════════════════════════════════════" + + if [[ ${#MISSING[@]} -gt 0 ]]; then + echo "" + echo "⚠️ ${#MISSING[@]} package(s) NOT in allowed repos:" + for p in "${MISSING[@]}"; do + echo " • $p" + done + echo "" + echo "These packages must be in:" + echo " • cachyos, extra, multilib, or chaotic-aur" + echo " • OR pre-built in localrepo/" + echo " • OR added to build-end4-deps.sh" + exit 1 + else + echo "" + echo "✅ All packages verified successfully!" + fi + '