all: test lists

# we write to output.tmp first so output.{old,new} are left untouched in case
# jenkins-jobs aborts
test:
	@echo "*** Testing pgapt-jobs.yaml ***"
	rm -rf output.tmp
	mkdir output.tmp
	jenkins-jobs test --config-xml -o output.tmp pgapt-jobs.yaml
	if test -d output.new; then rm -rf output.old; mv output.new output.old; fi
	mv output.tmp output.new
	test -d output.old && diff -urp output.old output.new || true

update: $(HOME)/.config/jenkins_jobs/jenkins_jobs.ini
	@echo "*** Updating Jenkins from pgapt-jobs.yaml ***"
	jenkins-jobs update pgapt-jobs.yaml $(JOBS)

# package lists
lists: packages packages.modules packages.tests packages.betatests packages.backports packages.backports_runtime
packages: pgapt-jobs.yaml # all packages that we build normally
	yq -r '.[].project | select (.jobs) | select (.jobs.[] | match("git-packages|postgresql-server")) | .name' $< | LC_COLLATE=C sort > $@
packages.modules: pgapt-jobs.yaml # packages that build PG modules for "beta"
	yq -r '.[].project | select (.jobs) | select (.jobs.[] | . == "git-packages-with-beta") | .name' $< | LC_COLLATE=C sort > $@
packages.tests: pgapt-jobs.yaml # packages to be tested
	yq -r '.[].project | select (.jobs) | select (.jobs.[] | match("git-packages|autopkgtest-only")) | .name' $< | LC_COLLATE=C sort > $@
packages.betatests: pgapt-jobs.yaml # packages to be tested for beta releases
	yq -r '.[].project | select (.jobs) | select (.jobs.[] | match("git-packages(-with-beta)?$$|autopkgtest-only")) | .name' $< | LC_COLLATE=C sort > $@
packages.backports: pgapt-jobs.yaml # used by builddebcheck-pgapt
	yq -r '.[].project | select (.backports) | .name' $< | LC_COLLATE=C sort > $@
packages.backports_runtime: pgapt-jobs.yaml # used by builddebcheck-pgapt
	yq -r '.[].project | select (.backports_runtime) | .name' $< | LC_COLLATE=C sort > $@

clean:
	rm -rf output output.old

# schroot config
install: /etc/schroot/chroot.d/sbuild.conf

/etc/schroot/chroot.d/sbuild.conf: ../pgapt.conf schroot-config.sh
	sudo ./schroot-config.sh
