diff --git a/projects/ArchR/packages/archr/package.mk b/projects/ArchR/packages/archr/package.mk index 0d603a0152..ce4503910a 100644 --- a/projects/ArchR/packages/archr/package.mk +++ b/projects/ArchR/packages/archr/package.mk @@ -3,7 +3,15 @@ # Copyright (C) 2024-present Arch R PKG_NAME="archr" -PKG_VERSION="" +# archr is a local meta package with no upstream, so it carried an empty +# PKG_VERSION. That made the install_pkg dir "archr-" and gen-pacman-repo +# synthesize the constant version "archr.", so the package version never +# changed and pacman never saw an update for it (the main system config +# package). Stamp it with the build timestamp instead: the literal text +# here is stable (no rebuild churn), but each actual rebuild evaluates a +# fresh, monotonically increasing version, so changes to system.cfg, +# runemu, wifictl, governors etc. ship as real `pacman -Syu` updates. +PKG_VERSION="$(date +%Y%m%d%H%M%S)" PKG_LICENSE="GPLv2" PKG_SITE="" PKG_URL="" diff --git a/projects/ArchR/packages/emulators/libretro/retroarch/retroarch-joypads/package.mk b/projects/ArchR/packages/emulators/libretro/retroarch/retroarch-joypads/package.mk index ccd66a1bda..adf4a674e0 100644 --- a/projects/ArchR/packages/emulators/libretro/retroarch/retroarch-joypads/package.mk +++ b/projects/ArchR/packages/emulators/libretro/retroarch/retroarch-joypads/package.mk @@ -3,6 +3,11 @@ PKG_NAME="retroarch-joypads" PKG_VERSION="38cf938bba0adbde375972053068f10d955a9d14" +# PKG_VERSION pins the upstream autoconfig db. The local gamepads/ overlay +# (e.g. the corrected GO-Super Gamepad.cfg) does not change that hash, so +# bump PKG_REV to ship overlay-only fixes as a pacman update. gen-pacman-repo +# now maps PKG_REV to the package release. +PKG_REV="2" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/retroarch-joypad-autoconfig" PKG_URL="https://github.com/libretro/retroarch-joypad-autoconfig/archive/${PKG_VERSION}.tar.gz" diff --git a/scripts/repo/gen-pacman-repo b/scripts/repo/gen-pacman-repo index 496e057975..d2f6410887 100755 --- a/scripts/repo/gen-pacman-repo +++ b/scripts/repo/gen-pacman-repo @@ -96,7 +96,20 @@ build_one_pkg() { # turned into a stray '.' by tr -c. version="$(printf '%s' "${version}" | tr -c 'a-zA-Z0-9.+_' '.')" + # pkgrel comes from the package's PKG_REV (the standard knob for "same + # upstream version, new package build", e.g. a changed local overlay + # like a joypad autoconfig). Hardcoding 1 here meant any local-only + # change never produced a newer package, so pacman never saw it as an + # update. Default to 1 when PKG_REV is unset or dynamic. local pkgrel=1 + if [ -n "${pkgmk}" ]; then + local rev + rev="$(awk -F'"' '/^PKG_REV/ {print $2; exit}' "${pkgmk}")" + case "${rev}" in + ''|*'$('* | *'${'* ) : ;; + *) pkgrel="${rev}" ;; + esac + fi local outfile="${OUT_DIR}/${name}-${version}-${pkgrel}-${ARCH}.pkg.tar.zst" # .PKGINFO sidecar that pacman reads on install. pkgbase is