Remove the overcomplicated two-job dynamic matrix setup.
Now a single job determines changed specs with git diff and loops
over them sequentially. Much simpler and less error-prone.
Add a 'changed' job that determines which .spec files were modified
using git diff between push before/after SHAs. The build job now
uses a dynamic matrix (fromJSON) so only changed specs are built.
For workflow_dispatch, all specs are still built.
Cancelled jobs can leave the mock chroot in a corrupted state, causing
either 'Failed to resolve user mockbuild' or missing directories like
/var/lib/mock/custom/root/var. Add --scrub=chroot before build and
--clean flag to --rebuild to always start from a fresh chroot.
GitHub archive URLs without a filename fragment download as just the
version number (e.g. 6.6.4.tar.gz), which confuses %setup when it tries
to cd into the expected %{name}-%{version} directory. Add
#/%{name}-%{version}.tar.gz suffix to ensure correct local filenames
matching the extracted directory names.
The included alma+epel-10-x86_64.cfg sets config_opts['root'], which
overrides --root custom and causes mock to reuse the old cached chroot
where mockbuild user was missing. Explicitly set config_opts['root'] after
the include to force a fresh custom root.
When using -r /path/to/custom.cfg, mock fails to resolve the mockbuild
user because the config isn't in the standard /etc/mock/ directory.
Copy the generated config to /etc/mock/custom.cfg and reference it with
--root custom instead.
The --init/--shell/--no-clean approach caused a corrupted RPM database
in the chroot. Instead, generate a custom mock config that includes
both the Forgejo package registry and the xlibre Copr repos directly
in config_opts['yum.conf'] before the chroot is created. This is the
standard, reliable way to add extra repositories to mock.
sonic-win.spec requires xlibre-xserver-devel which is only available in
the xlibre Copr repository. Download and inject this alongside the
existing Forgejo package registry repo before mock --rebuild.
- Build all three spec files on push via matrix strategy
- Use mock (alma+epel-10-x86_64) for clean isolated buildroot
- Inject Forgejo Package Registry as DNF repo inside mock chroot
- Derive exact SRPM path from rpmspec to avoid stale package matches
- Upload built RPMs to Forgejo Package Registry
- Clean up mock-results after each job (always)
- Bump all specs to 6.6.4-1 and fix Source0 tag (drop v-prefix)