diff --git a/.gitea/workflows/check-packages.yaml b/.gitea/workflows/check-packages.yaml deleted file mode 100644 index b730629..0000000 --- a/.gitea/workflows/check-packages.yaml +++ /dev/null @@ -1,129 +0,0 @@ -name: Check Packages - -on: - push: - pull_request: - workflow_dispatch: - -jobs: - check-packages: - runs-on: archlinux - 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 "═══════════════════════════════════════════════════════════════" - - ALLOWED_REPOS="^(cachyos|extra|multilib|chaotic-aur)$" - MISSING=() - FOUND=0 - TOTAL=0 - - while IFS= read -r pkg; do - # Skip empty lines and comments - [[ -z "$pkg" || "$pkg" =~ ^# ]] && continue - TOTAL=$((TOTAL + 1)) - - # Query pacman for the package's repository - 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 \ No newline at end of file diff --git a/.gitea/workflows/syntax-check.yaml b/.gitea/workflows/checks.yaml similarity index 58% rename from .gitea/workflows/syntax-check.yaml rename to .gitea/workflows/checks.yaml index 7847127..24c2eb4 100644 --- a/.gitea/workflows/syntax-check.yaml +++ b/.gitea/workflows/checks.yaml @@ -1,22 +1,79 @@ -name: Syntax Check +name: Checks on: push: - branches: - - "**" + pull_request: + workflow_dispatch: jobs: - syntax-check: - runs-on: ubuntu-latest + checks: + runs-on: archlinux steps: - - name: Checkout repository + - name: Checkout repo uses: actions/checkout@v4 - - name: Install linting tools + - name: Install prerequisites run: | - sudo apt-get update - sudo apt-get install -y shellcheck - pip install --break-system-packages yamllint + pacman -Syu --noconfirm --needed pacman pacman-contrib curl gnupg shellcheck python-yamllint + + - 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: Lint shell scripts with ShellCheck run: | @@ -135,3 +192,56 @@ jobs: echo "═══════════════════════════════════════════════════════════════" echo " ✅ packages.x86_64 syntax is valid" echo "═══════════════════════════════════════════════════════════════" + + - name: Check all packages + run: | + 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 + # Skip empty lines and comments + [[ -z "$pkg" || "$pkg" =~ ^# ]] && continue + TOTAL=$((TOTAL + 1)) + + # Query pacman for the package's repository + 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 \ No newline at end of file