X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=Makefile;h=37c0739a06c883a2cf9256efceb8be0530f8b30f;hb=22b7ba385434a1efb7de566be67788ceafda38c5;hp=4186e125f97519fcab755398b1ae2755761bbe76;hpb=e2278c83a98e576c895c7e3c699ffaa962168ddb;p=pmg-api.git diff --git a/Makefile b/Makefile index 4186e12..37c0739 100644 --- a/Makefile +++ b/Makefile @@ -1,222 +1,50 @@ -PACKAGE=pmg-api -PKGVER=5.0 -PKGREL=28 - -# this requires package pmg-doc-generator -export NOVIEW=1 -include /usr/share/pmg-doc-generator/pmg-doc-generator.mk - - -DEB=${PACKAGE}_${PKGVER}-${PKGREL}_all.deb - -DESTDIR= - -PERL5DIR=${DESTDIR}/usr/share/perl5 -DOCDIR=${DESTDIR}/usr/share/doc/${PACKAGE} -BASHCOMPLDIR=${DESTDIR}/usr/share/bash-completion/completions/ - -REPOID=`./repoid.pl .git` - -SERVICES = pmgdaemon pmgproxy pmgtunnel pmgmirror -CLITOOLS = pmgdb pmgconfig pmgperf pmgcm pmgqm pmgreport pmgversion pmgupgrade pmgsubscription pmgbackup -CLISCRIPTS = pmg-smtp-filter pmgsh pmgpolicy pmgbanner -CRONSCRIPTS = pmg-hourly pmg-daily - -CLI_CLASSES = $(addprefix PMG/CLI/, $(addsuffix .pm, ${CLITOOLS})) -SERVICE_CLASSES = $(addprefix PMG/Service/, $(addsuffix .pm, ${SERVICES})) -SERVICE_UNITS = $(addprefix debian/, $(addsuffix .service, ${SERVICES})) -TIMER_UNITS = $(addprefix debian/, $(addsuffix .timer, ${CRONSCRIPTS} pmgspamreport pmgreport)) - -CLI_BINARIES = $(addprefix bin/, ${CLITOOLS} ${CLISCRIPTS} ${CRONSCRIPTS}) -CLI_MANS = $(addsuffix .1, ${CLITOOLS}) pmgsh.1 - +include /usr/share/dpkg/pkg-info.mk -SERVICE_MANS = $(addsuffix .8, ${SERVICES}) pmg-smtp-filter.8 pmgpolicy.8 -CONF_MANS= pmg.conf.5 cluster.conf.5 - -TEMPLATES = \ - fetchmailrc.tt \ - pmgreport.tt \ - spamreport-verbose.tt \ - spamreport-short.tt \ - main.cf.in \ - main.cf.in.demo \ - master.cf.in \ - master.cf.in.demo \ - init.pre.in \ - local.cf.in \ - v310.pre.in \ - v320.pre.in \ - razor-agent.conf.in \ - freshclam.conf.in \ - clamd.conf.in \ - postgresql.conf.in \ - pg_hba.conf.in - -TEMPLATES_FILES = $(addprefix templates/, ${TEMPLATES}) - -LIBSOURCES = \ - PMG/pmgcfg.pm \ - PMG/RESTEnvironment.pm \ - PMG/Utils.pm \ - PMG/HTMLMail.pm \ - PMG/ModGroup.pm \ - PMG/SMTPPrinter.pm \ - PMG/Config.pm \ - PMG/Cluster.pm \ - PMG/ClusterConfig.pm \ - PMG/HTTPServer.pm \ - PMG/Ticket.pm \ - PMG/AccessControl.pm \ - PMG/AtomicFile.pm \ - PMG/MailQueue.pm \ - PMG/Postfix.pm \ - PMG/SMTP.pm \ - PMG/Unpack.pm \ - PMG/Backup.pm \ - PMG/RuleCache.pm \ - PMG/Statistic.pm \ - PMG/UserConfig.pm \ - PMG/Fetchmail.pm \ - PMG/LDAPConfig.pm \ - PMG/LDAPSet.pm \ - PMG/LDAPCache.pm \ - PMG/DBTools.pm \ - PMG/Quarantine.pm \ - PMG/RuleDB/Group.pm \ - PMG/RuleDB/Rule.pm \ - PMG/RuleDB/Object.pm \ - PMG/RuleDB/Quarantine.pm \ - PMG/RuleDB/WhoRegex.pm \ - PMG/RuleDB/IPAddress.pm \ - PMG/RuleDB/IPNet.pm \ - PMG/RuleDB/ModField.pm \ - PMG/RuleDB/MatchFilename.pm \ - PMG/RuleDB/ReceiverRegex.pm \ - PMG/RuleDB/EMail.pm \ - PMG/RuleDB/Receiver.pm \ - PMG/RuleDB/Domain.pm \ - PMG/RuleDB/ReceiverDomain.pm \ - PMG/RuleDB/LDAP.pm \ - PMG/RuleDB/LDAPUser.pm \ - PMG/RuleDB/TimeFrame.pm \ - PMG/RuleDB/MatchField.pm \ - PMG/RuleDB/ContentTypeFilter.pm \ - PMG/RuleDB/ArchiveFilter.pm \ - PMG/RuleDB/Spam.pm \ - PMG/RuleDB/Virus.pm \ - PMG/RuleDB/ReportSpam.pm \ - PMG/RuleDB/Remove.pm \ - PMG/RuleDB/Attach.pm \ - PMG/RuleDB/BCC.pm \ - PMG/RuleDB/Counter.pm \ - PMG/RuleDB/Notify.pm \ - PMG/RuleDB/Disclaimer.pm \ - PMG/RuleDB/Accept.pm \ - PMG/RuleDB/Block.pm \ - PMG/RuleDB.pm \ - ${CLI_CLASSES} \ - ${SERVICE_CLASSES} \ - PMG/API2/Subscription.pm \ - PMG/API2/APT.pm \ - PMG/API2/Network.pm \ - PMG/API2/Services.pm \ - PMG/API2/Tasks.pm \ - PMG/API2/LDAP.pm \ - PMG/API2/Domains.pm \ - PMG/API2/Fetchmail.pm \ - PMG/API2/Users.pm \ - PMG/API2/Transport.pm \ - PMG/API2/MyNetworks.pm \ - PMG/API2/MimeTypes.pm \ - PMG/API2/Config.pm \ - PMG/API2/Cluster.pm \ - PMG/API2/ClamAV.pm \ - PMG/API2/SpamAssassin.pm \ - PMG/API2/Statistics.pm \ - PMG/API2/MailTracker.pm \ - PMG/API2/Backup.pm \ - PMG/API2/Nodes.pm \ - PMG/API2/Postfix.pm \ - PMG/API2/Quarantine.pm \ - PMG/API2/AccessControl.pm \ - PMG/API2/ObjectGroupHelpers.pm \ - PMG/API2/Rules.pm \ - PMG/API2/RuleDB.pm \ - PMG/API2/SMTPWhitelist.pm \ - PMG/API2/Who.pm \ - PMG/API2/When.pm \ - PMG/API2/What.pm \ - PMG/API2/Action.pm \ - PMG/API2.pm - -SOURCES = ${LIBSOURCES} ${CLI_BINARIES} ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS} ${SERVICE_UNITS} ${TIMER_UNITS} +PACKAGE=pmg-api -all: ${SOURCES} +BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION) -.PHONY: deb -deb ${DEB}: ${SOURCES} - rm -rf build - rsync -a * build - cd build; dpkg-buildpackage -b -us -uc - lintian ${DEB} +DSC=$(PACKAGE)_$(DEB_VERSION).dsc +DEB=$(PACKAGE)_$(DEB_VERSION_UPSTREAM_REVISION)_all.deb - -PMG/pmgcfg.pm: PMG/pmgcfg.pm.in - sed -e s/@VERSION@/${PKGVER}/ -e s/@PACKAGERELEASE@/${PKGREL}/ -e s/@PACKAGE@/${PACKAGE}/ -e s/@REPOID@/${REPOID}/ $< >$@.tmp +$(BUILDDIR): src debian + rm -rf $@ $@.tmp + cp -a src $@.tmp + cp -a debian $@.tmp/ + echo "REPOID_GENERATED=$(shell git rev-parse --short=12 HEAD)" > $@.tmp/debian/rules.env mv $@.tmp $@ -%.bash-completion: - perl -I. -T -e "use PMG::CLI::$*; PMG::CLI::$*->generate_bash_completions();" >$@.tmp - mv $@.tmp $@ +.PHONY: deb +deb: $(DEB) +$(DEB): $(BUILDDIR) + cd $(BUILDDIR); dpkg-buildpackage -b -us -uc + lintian $(DEB) -%.service-bash-completion: - perl -I. -T -e "use PMG::Service::$*; PMG::Service::$*->generate_bash_completions();" >$@.tmp - mv $@.tmp $@ +dsc: + rm -rf $(BUILDDIR) $(DSC) + $(MAKE) $(DSC) + lintian $(DSC) +$(DSC): $(BUILDDIR) + cd $(BUILDDIR); dpkg-buildpackage -S -us -uc -d -install: ${SOURCES} $(addsuffix .service-bash-completion, ${SERVICES}) $(addsuffix .bash-completion, ${CLITOOLS}) - for i in ${SERVICES}; do perl -I. -T -e "use PMG::Service::$$i; PMG::Service::$$i->verify_api();"; done - for i in ${CLITOOLS}; do perl -I. -T -e "use PMG::CLI::$$i; PMG::CLI::$$i->verify_api();"; done - perl -I. bin/pmgsh verifyapi - install -d -m 0755 ${DESTDIR}/usr/bin - install -d -m 0755 -o www-data -g www-data ${DESTDIR}/var/log/pmgproxy - install -d -m 0755 ${DOCDIR} - # TODO: is there a better location ? - install -m 0644 favicon.ico ${DOCDIR} - for i in ${LIBSOURCES}; do install -D -m 0644 $$i ${PERL5DIR}/$$i; done - for i in ${SERVICES}; do install -D -m 0644 PMG/Service/$$i.pm ${PERL5DIR}/PMG/Service/$$i.pm; done - for i in ${SERVICES}; do install -m 0755 bin/$$i ${DESTDIR}/usr/bin; done - for i in ${SERVICES}; do install -m 0644 -D $$i.service-bash-completion ${BASHCOMPLDIR}/$$i; done - for i in ${CLITOOLS}; do install -D -m 0644 PMG/CLI/$$i.pm ${PERL5DIR}/PMG/CLI/$$i.pm; done - for i in ${CLITOOLS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/bin/$$i; done - for i in ${CLITOOLS}; do install -D -m 0644 $$i.bash-completion ${BASHCOMPLDIR}/$$i; done - for i in ${CLISCRIPTS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/bin/$$i; done - for i in ${TEMPLATES}; do install -D -m 0644 templates/$$i ${DESTDIR}/var/lib/pmg/templates/$$i; done - for i in ${CLI_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man1/$$i; done - for i in ${CONF_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man5/$$i; done - for i in ${SERVICE_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man8/$$i; done - for i in ${CRONSCRIPTS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/lib/pmg/bin/$$i; done - install -d -m 0755 ${DESTDIR}/lib/systemd/system - for i in ${TIMER_UNITS}; do install -m 0644 $$i ${DESTDIR}/lib/systemd/system/; done +sbuild: $(DSC) + sbuild $< .PHONY: upload -upload: ${DEB} - ./repoid.pl .git/ check - tar cf - ${DEB} | ssh -X repoman@repo.proxmox.com -- upload --product pmg --dist stretch +upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION) +upload: $(DEB) + tar cf - $(DEB) | ssh -X repoman@repo.proxmox.com -- upload --product pmg --dist $(UPLOAD_DIST) .PHONY: check check: - make -C tests check + $(MAKE) -C src/tests check +.PHONY: clean distclean distclean: clean - clean: - make cleanup-docgen - make -C tests clean - rm -rf ${CONF_MANS} ./build *.deb *.changes *.buildinfo *.bash-completion *.service-bash-completion - if test -d .git; then rm -f PMG/pmgcfg.pm; fi - find . -name '*~' -exec rm {} ';' + rm -rf $(PACKAGE)-[0-9]*/ + rm -rf *.deb *.changes *.build *.buildinfo $(PACKAGE)*tar* *.dsc .PHONY: dinstall -dinstall: ${DEB} - dpkg -i ${DEB} +dinstall: $(DEB) + dpkg -i $(DEB)