]> git.proxmox.com Git - pmg-api.git/blame - Makefile
pmgperf: new cli tool
[pmg-api.git] / Makefile
CommitLineData
b68dfb61
DM
1PACKAGE=proxmox-mailgateway-api
2PKGVER=1.0
3PKGREL=1
4
c288dcd7
DM
5# this requires package pmg-doc-generator
6export NOVIEW=1
7include /usr/share/pmg-doc-generator/pmg-doc-generator.mk
8
9
b68dfb61
DM
10DEB=${PACKAGE}_${PKGVER}-${PKGREL}_all.deb
11
12DESTDIR=
13
14PERL5DIR=${DESTDIR}/usr/share/perl5
15DOCDIR=${DESTDIR}/usr/share/doc/${PACKAGE}
8415b622 16BASHCOMPLDIR=${DESTDIR}/usr/share/bash-completion/completions/
b68dfb61 17
40f2bc5e
DM
18REPOID=`./repoid.pl .git`
19
8a1ac886 20SERVICES = pmgdaemon pmgproxy
3c08696c 21CLITOOLS = pmgdb pmgconfig pmgperf
46e12d58 22CLISCRIPTS= pmg-smtp-filter pmgsh pmgpolicy
8b91b776 23
3c08696c 24CLI_CLASSES = $(addprefix, 'PMG/CLI/', $(addsuffix '.pm', ${CLITOOLS}))
46e12d58 25CLI_BINARIES = $(addprefix, 'bin/', ${CLITOOLS} ${CLISCRIPTS})
8de5c848 26CLI_MANS = $(addsuffix .1, ${CLITOOLS}) pmgsh.1
10e64d69 27SERVICE_MANS = $(addsuffix .8, ${SERVICES}) pmg-smtp-filter.8 pmgpolicy.8
abc1af3e 28CONF_MANS= pmg.conf.5
c288dcd7 29
07cb898d 30TEMPLATES = \
f609bf7f
DM
31 main.cf.in \
32 main.cf.in.demo \
33 master.cf.in \
34 master.cf.in.demo \
07cb898d
DM
35 init.pre.in \
36 local.cf.in \
37 v310.pre.in \
38 v320.pre.in \
39 razor-agent.conf.in \
33fa90bf
DM
40 freshclam.conf.in \
41 clamd.conf.in \
07cb898d
DM
42 postgresql.conf.in \
43 pg_hba.conf.in
44
45TEMPLATES_FILES = $(addprefix, 'templates/', ${TEMPLATES})
46
9beff9f6
DM
47LIBSOURCES = \
48 PMG/pmgcfg.pm \
758c7b6b 49 PMG/Utils.pm \
e7c865af 50 PMG/ModGroup.pm \
758c7b6b 51 PMG/SMTPPrinter.pm \
fab39ce9 52 PMG/NoVncIndex.pm \
0bf65425 53 PMG/Config.pm \
9beff9f6 54 PMG/Cluster.pm \
9f67f5b3 55 PMG/ClusterConfig.pm \
9beff9f6
DM
56 PMG/HTTPServer.pm \
57 PMG/Ticket.pm \
58 PMG/AccessControl.pm \
6b5e9594 59 PMG/AtomicFile.pm \
a43bcf61 60 PMG/MailQueue.pm \
14726412 61 PMG/SMTP.pm \
91a5af02 62 PMG/Unpack.pm \
c881fe35 63 PMG/RuleCache.pm \
5414dee4 64 PMG/Statistic.pm \
a6e3ac60 65 PMG/LDAPConfig.pm \
0bf65425 66 PMG/LDAPSet.pm \
cad3d400 67 PMG/LDAPCache.pm \
a355f100 68 PMG/DBTools.pm \
0a580593
DM
69 PMG/RuleDB/Group.pm \
70 PMG/RuleDB/Rule.pm \
71 PMG/RuleDB/Object.pm \
72 PMG/RuleDB/Quarantine.pm \
73 PMG/RuleDB/WhoRegex.pm \
f4fe6fc4
DM
74 PMG/RuleDB/IPAddress.pm \
75 PMG/RuleDB/IPNet.pm \
e7c865af 76 PMG/RuleDB/ModField.pm \
f4fe6fc4 77 PMG/RuleDB/MatchFilename.pm \
0a580593
DM
78 PMG/RuleDB/ReceiverRegex.pm \
79 PMG/RuleDB/EMail.pm \
80 PMG/RuleDB/Receiver.pm \
81 PMG/RuleDB/Domain.pm \
82 PMG/RuleDB/ReceiverDomain.pm \
83 PMG/RuleDB/TimeFrame.pm \
a7865a2b 84 PMG/RuleDB/MatchField.pm \
11b7d5dc 85 PMG/RuleDB/ContentTypeFilter.pm \
c4741113 86 PMG/RuleDB/ArchiveFilter.pm \
758c7b6b 87 PMG/RuleDB/Spam.pm \
a29b9649 88 PMG/RuleDB/Virus.pm \
f4fe6fc4 89 PMG/RuleDB/ReportSpam.pm \
758c7b6b 90 PMG/RuleDB/Remove.pm \
f4fe6fc4
DM
91 PMG/RuleDB/Attach.pm \
92 PMG/RuleDB/BCC.pm \
93 PMG/RuleDB/Counter.pm \
758c7b6b
DM
94 PMG/RuleDB/Notify.pm \
95 PMG/RuleDB/Disclaimer.pm \
96 PMG/RuleDB/Accept.pm \
97 PMG/RuleDB/Block.pm \
0a580593 98 PMG/RuleDB.pm \
8b91b776
DM
99 ${CLI_CLASSES} \
100 PMG/API2/Network.pm \
163fb58f 101 PMG/API2/Services.pm \
fa04fcb4 102 PMG/API2/Tasks.pm \
be6d6ffc 103 PMG/API2/LDAP.pm \
5b2bb556 104 PMG/API2/Domains.pm \
5c583140 105 PMG/API2/Config.pm \
5ac6bd0e 106 PMG/API2/ClusterConfig.pm \
9beff9f6
DM
107 PMG/API2/Nodes.pm \
108 PMG/API2/AccessControl.pm \
b52f6573 109 PMG/API2/RuleDB.pm \
9beff9f6
DM
110 PMG/API2.pm
111
abc1af3e 112all: ${LIBSOURCES} ${CLI_BINARIES} ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS}
b68dfb61
DM
113
114.PHONY: deb
abc1af3e 115deb ${DEB}: ${LIBSOURCES} ${CLI_BINARIES} ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS}
b68dfb61
DM
116 rm -rf build
117 rsync -a * build
118 cd build; dpkg-buildpackage -b -us -uc
119 lintian ${DEB}
120
40f2bc5e
DM
121
122PMG/pmgcfg.pm: PMG/pmgcfg.pm.in
123 sed -e s/@VERSION@/${PKGVER}/ -e s/@PACKAGERELEASE@/${PKGREL}/ -e s/@PACKAGE@/${PACKAGE}/ -e s/@REPOID@/${REPOID}/ $< >$@.tmp
124 mv $@.tmp $@
125
8b91b776
DM
126%.bash-completion:
127 perl -I. -T -e "use PMG::CLI::$*; PMG::CLI::$*->generate_bash_completions();" >$@.tmp
128 mv $@.tmp $@
129
8415b622 130%.service-bash-completion:
8b91b776 131 perl -I. -T -e "use PMG::Service::$*; PMG::Service::$*->generate_bash_completions();" >$@.tmp
8415b622
DM
132 mv $@.tmp $@
133
abc1af3e 134install: ${BTDATA} $(addsuffix .pm, $(addprefix PMG/Service/, ${SERVICES})) $(addsuffix .service-bash-completion, ${SERVICES}) ${LIBSOURCES} ${CLI_BINARIES} $(addsuffix .bash-completion, ${CLITOOLS}) ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS}
8a1ac886 135 for i in ${SERVICES}; do perl -I. -T -e "use PMG::Service::$$i; PMG::Service::$$i->verify_api();"; done
8b91b776 136 for i in ${CLITOOLS}; do perl -I. -T -e "use PMG::CLI::$$i; PMG::CLI::$$i->verify_api();"; done
95c6e315 137 perl -I. bin/pmgsh verifyapi
9beff9f6 138 install -d -m 0755 ${DESTDIR}/usr/bin
856d9a38 139 install -d -m 0755 -o www-data -g www-data ${DESTDIR}/var/log/pmgproxy
cb159468
DM
140 install -d -m 0755 ${DOCDIR}
141 # TODO: is there a better location ?
142 install -m 0644 favicon.ico ${DOCDIR}
9beff9f6
DM
143 for i in ${LIBSOURCES}; do install -D -m 0644 $$i ${PERL5DIR}/$$i; done
144 for i in ${SERVICES}; do install -D -m 0644 PMG/Service/$$i.pm ${PERL5DIR}/PMG/Service/$$i.pm; done
8a1ac886 145 for i in ${SERVICES}; do install -m 0755 bin/$$i ${DESTDIR}/usr/bin; done
8415b622 146 for i in ${SERVICES}; do install -m 0644 -D $$i.service-bash-completion ${BASHCOMPLDIR}/$$i; done
8b91b776
DM
147 for i in ${CLITOOLS}; do install -D -m 0644 PMG/CLI/$$i.pm ${PERL5DIR}/PMG/CLI/$$i.pm; done
148 for i in ${CLITOOLS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/bin/$$i; done
149 for i in ${CLITOOLS}; do install -D -m 0644 $$i.bash-completion ${BASHCOMPLDIR}/$$i; done
46e12d58 150 for i in ${CLISCRIPTS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/bin/$$i; done
07cb898d 151 for i in ${TEMPLATES}; do install -D -m 0644 templates/$$i ${DESTDIR}/var/lib/pmg/templates/$$i; done
3bdb2e11 152 for i in ${CLI_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man1/$$i; done
c288dcd7 153 for i in ${CONF_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man5/$$i; done
abc1af3e 154 for i in ${SERVICE_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man8/$$i; done
c288dcd7 155
b68dfb61
DM
156
157.PHONY: upload
158upload: ${DEB}
eae6f864 159 ./repoid.pl .git/ check
b68dfb61
DM
160 # fixme tar cf - ${DEB} | ssh repoman@repo.proxmox.com upload
161
291abd89
DM
162.PHONY: check
163check:
164 make -C tests check
165
b68dfb61
DM
166distclean: clean
167
168clean:
c288dcd7 169 make cleanup-docgen
291abd89 170 make -C tests clean
c288dcd7 171 rm -rf ${CONF_MANS} ./build *.deb *.changes *.buildinfo *.bash-completion *.service-bash-completion
9d1d3ef6 172 if test -d .git; then rm -f PMG/pmgcfg.pm; fi
b68dfb61
DM
173 find . -name '*~' -exec rm {} ';'
174
175.PHONY: dinstall
176dinstall: ${DEB}
177 dpkg -i ${DEB}