+include /usr/share/dpkg/pkg-info.mk
+
# howto add rule updates:
-# edit paths ($srcdir) in changes.pl
-# update changes.diff - verify changes!
-
-# dig -t any 2.4.3.updates.spamassassin.org
-# wget http://spamassassin.kluge.net/updates/501214.tar.gz
-# wget http://spamassassin.kluge.net/updates/501214.tar.gz.asc
-# gpg --verify 501214.tar.gz.asc 501214.tar.gz
-#
-# or just use: make sa-updates.tgz (from the last stable version)
-# warning: start with an empty sa-updates.tgz, install the package,
-# the run sa-update to generate the updates
-#
-# Note: we also add KAM.cf from
-# http://www.pccc.com/downloads/SpamAssassin/contrib/KAM.cf
-#
-# edit debin/rules to apply updates
-
-PKGREL=3
-SAVER=3.4.2
-OPKGNAME = Mail-SpamAssassin-${SAVER}
-NPKGNAME = proxmox-spamassassin_${SAVER}
-DEB = proxmox-spamassassin_${SAVER}-${PKGREL}_amd64.deb
-
-EXTRA_RULES = KAM.cf
+
+# running `make update-sa` updates the core SA rules (in the sa-updates directory)
+# running `make update-kam` updates the KAM ruleset (in the kam-updates directory)
+
+
+OPKGNAME = Mail-SpamAssassin-$(DEB_VERSION_UPSTREAM)
+NPKGNAME = proxmox-spamassassin_$(DEB_VERSION_UPSTREAM)
+DEB = proxmox-spamassassin_$(DEB_VERSION_UPSTREAM_REVISION)_amd64.deb
+DBG_DEB = proxmox-spamassassin-dbgsym_$(DEB_VERSION_UPSTREAM_REVISION)_amd64.deb
+DEBS = $(DEB) $(DBG_DEB)
+DSC = proxmox-spamassassin_$(DEB_VERSION_UPSTREAM_REVISION).dsc
+
+KAM_CHANNEL_FILE = debian/tree/etc/mail/spamassassin/channel.d/KAM_channel.conf
+KAM_KEYID = $(shell awk -F '=' '/^KEYID/ { print $$2 }' $(KAM_CHANNEL_FILE))
+
SA_UPDATE_GPG_DIR = .sa-update-gpghome
-#${DEB}: ${OPKGNAME}.tar.gz
-${DEB}: ${OPKGNAME}.tar.gz sa-updates.tgz ${EXTRA_RULES}
- -rm -rf ${OPKGNAME} ${NPKGNAME}
- tar xzf ${OPKGNAME}.tar.gz
- mv ${OPKGNAME} ${NPKGNAME}
- cp -a debian ${NPKGNAME}
- mkdir ${NPKGNAME}/extra_rules
- cp ${EXTRA_RULES} ${NPKGNAME}/extra_rules
- cd ${NPKGNAME}; dpkg-buildpackage -us -uc -rfakeroot
- -rm -rf ${OPKGNAME} ${NPKGNAME}
- lintian ${DEB}
-
-KAM.cf:
- wget http://www.pccc.com/downloads/SpamAssassin/contrib/KAM.cf -O $@.tmp
- mv KAM.cf.tmp $@
-
-${SA_UPDATE_GPG_DIR}/.prepared: ${OPKGNAME}.tar.gz
- rm -rf ${SA_UPDATE_GPG_DIR}
- mkdir --mode=0700 -p ${SA_UPDATE_GPG_DIR}
- tar --strip-components 2 -xzf ${OPKGNAME}.tar.gz ${OPKGNAME}/rules/sa-update-pubkey.txt
- sa-update --gpghomedir ${SA_UPDATE_GPG_DIR} --import sa-update-pubkey.txt
+deb: $(DEB)
+
+$(DEB) $(DBG_DEB): $(NPKGNAME)
+ cd $(NPKGNAME); dpkg-buildpackage -b -us -uc -rfakeroot
+ lintian $(DEB)
+
+dsc: $(DSC)
+
+$(DSC): $(NPKGNAME)
+ cd $(NPKGNAME); dpkg-buildpackage -S -us -uc -rfakeroot -d
+ lintian $(DSC)
+
+.PHONY: update-upstream
+update-upstream: $(OPKGNAME).tar.gz
+ rm -rf upstream
+ tar -xzf $<
+ mv $(OPKGNAME) upstream
+
+$(NPKGNAME).orig.tar.gz: upstream/
+ rm -rf $(NPKGNAME)
+ cp -a upstream $(NPKGNAME)
+ tar -czf $@ $(NPKGNAME)
+
+$(NPKGNAME): sa-updates kam-updates $(NPKGNAME).orig.tar.gz
+ cp -a debian $@
+ mkdir -p $@/debian/tree/usr/share/spamassassin
+ rsync -av sa-updates/ $@/debian/tree/usr/share/spamassassin
+ mkdir -p $@/debian/tree/usr/share/spamassassin-extra
+ rsync -av kam-updates/ $@/debian/tree/usr/share/spamassassin-extra
+
+$(OPKGNAME).tar.gz:
+ rm -f $@*
+ curl -L -o '$@#1.tmp' 'https://www-eu.apache.org/dist/spamassassin/source/$@{,.asc}'
+ mv $@.tmp $@
+ mv $@.asc.tmp $@.asc
+ gpgv --keyring ./sa-releasekey.gpg $@.asc $@
+
+$(SA_UPDATE_GPG_DIR)/.prepared: $(OPKGNAME).tar.gz
+ rm -rf $(SA_UPDATE_GPG_DIR)
+ mkdir --mode=0700 -p $(SA_UPDATE_GPG_DIR)
+ tar --strip-components 2 -xzf $(OPKGNAME).tar.gz $(OPKGNAME)/rules/sa-update-pubkey.txt
+ sa-update --gpghomedir $(SA_UPDATE_GPG_DIR) --import sa-update-pubkey.txt
+ sa-update --gpghomedir $(SA_UPDATE_GPG_DIR) --import $(KAM_CHANNEL_FILE)
rm sa-update-pubkey.txt
touch $@
-sa-updates.tgz: | ${SA_UPDATE_GPG_DIR}/.prepared
+.PHONY: update-sa
+update-sa: $(SA_UPDATE_GPG_DIR)/.prepared
rm -rf updates.tmp
- sa-update --gpghomedir ${SA_UPDATE_GPG_DIR} --updatedir updates.tmp --channel updates.spamassassin.org
- tar cvzf sa-updates.tgz --exclude=local.cf --exclude=regression_tests.cf --exclude=*.txt --exclude=MIRRORED.BY -C updates.tmp/updates_spamassassin_org/ .
+ sa-update --gpghomedir $(SA_UPDATE_GPG_DIR) --updatedir updates.tmp --channel updates.spamassassin.org
+ rsync -av --delete --exclude=local.cf --exclude=regression_tests.cf --exclude=*.txt --exclude=MIRRORED.BY updates.tmp/updates_spamassassin_org/ sa-updates
+
+.PHONY: update-kam
+update-kam: $(SA_UPDATE_GPG_DIR)/.prepared
+ rm -rf kam-updates.tmp
+ sa-update --gpghomedir $(SA_UPDATE_GPG_DIR) --gpgkey $(KAM_KEYID) --updatedir kam-updates.tmp --channel kam.sa-channels.mcgrail.com
+ rm -rf kam-updates.tmp/kam_sa-channels_mcgrail_com/MIRRORED.BY
+ mv kam-updates.tmp kam-updates
.PHONY: upload
-upload: ${DEB}
- tar cf - ${DEB} | ssh -X repoman@repo.proxmox.com -- upload --product pmg --dist stretch
+upload: $(DEBS)
+ tar cf - $(DEBS) | ssh -X repoman@repo.proxmox.com -- upload --product pmg --dist bullseye
-CLEANFILES = *~ debian/*~ *.deb proxmox-spamassassin_* updates.tmp ${SA_UPDATE_GPG_DIR}
+.PHONY: clean distclean
+clean:
+ rm -rf *~ debian/*~ *.deb proxmox-spamassassin_* updates.tmp kam-updates.tmp $(SA_UPDATE_GPG_DIR) $(OPKGNAME).tar.gz.*
-.PHONY: clean
-clean:
- rm -rf ${CLEANFILES}
+distclean: clean
+ rm -rf $(OPKGNAME).*
.PHONY: dinstall
-dinstall: ${DEB}
- dpkg -i ${DEB}
+dinstall: $(DEB)
+ dpkg -i $(DEB)