name: Build raveos packages and publish to raveos-core-repo (SAFE) on: push: branches: ["main"] workflow_dispatch: concurrency: group: raveos-theme-module-build-publish cancel-in-progress: true jobs: build: runs-on: iso-builder steps: - name: Checkout PKGBUILDs repo uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install build tools run: | sudo pacman -S --needed --noconfirm \ base-devel git pacman-contrib cmake qt6-tools go - name: Clone core repo run: | rm -rf /tmp/raveos-core-repo git clone git@git.rp1.hu:RaveOS/raveos-core-repo.git /tmp/raveos-core-repo mkdir -p /tmp/builtpkgs - name: Build raveos-calamares-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-calamares-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-calamares-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-calamares-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -f *.pkg.tar.zst || true makepkg -s --noconfirm -f cp -v raveos-calamares-theme-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-calamares-module run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-calamares-module PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-calamares-module-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-calamares-module ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -f *.pkg.tar.zst || true makepkg -s --noconfirm -f cp -v raveos-calamares-module-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-calamares run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-calamares PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/calamares-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-calamares ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -f *.pkg.tar.zst || true makepkg -s --noconfirm -f PKG=$(ls -t *.pkg.tar.zst | grep -v -- '-debug-' | head -n 1) cp -v "$PKG" /tmp/builtpkgs/ - name: Build raveos-plasma-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-plasma-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-plasma-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-plasma-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-plasma-theme-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-gnome-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-gnome-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-gnome-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-gnome-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-gnome-theme-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-hyprland-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-hyprland-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-hyprland-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-hyprland-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-hyprland-theme-*.pkg.tar.zst /tmp/builtpkgs/ rm -f /tmp/builtpkgs/raveos-hyprland-theme-debug-*.pkg.tar.zst || true - name: Build raveos-cosmic-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-cosmic-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-cosmic-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-cosmic-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-cosmic-theme-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-tools run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-tools PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-tools-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-tools ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-tools-*.pkg.tar.zst /tmp/builtpkgs/ - name: Publish packages to raveos-core-repo (only if changed) run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" mkdir -p "$CORE" BUILT=$(ls /tmp/builtpkgs/*.pkg.tar.zst 2>/dev/null || true) if [ -z "$BUILT" ]; then echo "No packages built -> nothing to publish" exit 0 fi cd /tmp/raveos-core-repo git config user.name "Forgejo Actions" git config user.email "actions@forgejo.local" for pkg in $BUILT; do PKGFILE=$(basename "$pkg") PKGNAME=$(echo "$PKGFILE" | sed 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//') rm -f "$CORE/${PKGNAME}-"*.pkg.tar.zst* 2>/dev/null || true cp -v "$pkg" "$CORE/" done git add -A git commit -m "Publish packages ${GITHUB_SHA:0:7}" git push origin main TAG="vrepo-$(date +%Y%m%d-%H%M%S)" git tag -a "$TAG" -m "Trigger repo-add (${GITHUB_SHA:0:7})" git push origin "$TAG" echo "::notice title=Published packages::Tag $TAG" - name: Cleanup (SAFE) if: always() run: | sudo rm -rf /tmp/builtpkgs || true sudo rm -rf /tmp/raveos-core-repo || true sudo rm -rf /var/cache/pacman/pkg/* || true df -h