]> git.proxmox.com Git - pmg-api.git/blob - Makefile
Makefile: cleanup, install pmg-cron-hourly as extra script
[pmg-api.git] / Makefile
1 PACKAGE=proxmox-mailgateway
2 PKGVER=5.0
3 PKGREL=2
4
5 # this requires package pmg-doc-generator
6 export NOVIEW=1
7 include /usr/share/pmg-doc-generator/pmg-doc-generator.mk
8
9
10 DEB=${PACKAGE}_${PKGVER}-${PKGREL}_all.deb
11
12 DESTDIR=
13
14 PERL5DIR=${DESTDIR}/usr/share/perl5
15 DOCDIR=${DESTDIR}/usr/share/doc/${PACKAGE}
16 BASHCOMPLDIR=${DESTDIR}/usr/share/bash-completion/completions/
17
18 REPOID=`./repoid.pl .git`
19
20 SERVICES = pmgdaemon pmgproxy
21 CLITOOLS = pmgdb pmgconfig pmgperf
22 CLISCRIPTS = pmg-smtp-filter pmgsh pmgpolicy
23 CRONSCRIPTS = pmg-cron-hourly
24
25 CLI_CLASSES = $(addprefix, 'PMG/CLI/', $(addsuffix '.pm', ${CLITOOLS}))
26 SERVICE_CLASSES = $(addprefix, 'PMG/Service/', $(addsuffix '.pm', ${SERVIVES}))
27
28 CLI_BINARIES = $(addprefix, 'bin/', ${CLITOOLS} ${CLISCRIPTS} ${CRONSCRIPTS})
29 CLI_MANS = $(addsuffix .1, ${CLITOOLS}) pmgsh.1
30
31
32 SERVICE_MANS = $(addsuffix .8, ${SERVICES}) pmg-smtp-filter.8 pmgpolicy.8
33 CONF_MANS= pmg.conf.5 cluster.conf.5
34
35 TEMPLATES = \
36 main.cf.in \
37 main.cf.in.demo \
38 master.cf.in \
39 master.cf.in.demo \
40 init.pre.in \
41 local.cf.in \
42 v310.pre.in \
43 v320.pre.in \
44 razor-agent.conf.in \
45 freshclam.conf.in \
46 clamd.conf.in \
47 postgresql.conf.in \
48 pg_hba.conf.in
49
50 TEMPLATES_FILES = $(addprefix, 'templates/', ${TEMPLATES})
51
52 LIBSOURCES = \
53 PMG/pmgcfg.pm \
54 PMG/Utils.pm \
55 PMG/ModGroup.pm \
56 PMG/SMTPPrinter.pm \
57 PMG/Config.pm \
58 PMG/Cluster.pm \
59 PMG/ClusterConfig.pm \
60 PMG/HTTPServer.pm \
61 PMG/Ticket.pm \
62 PMG/AccessControl.pm \
63 PMG/AtomicFile.pm \
64 PMG/MailQueue.pm \
65 PMG/SMTP.pm \
66 PMG/Unpack.pm \
67 PMG/RuleCache.pm \
68 PMG/Statistic.pm \
69 PMG/LDAPConfig.pm \
70 PMG/LDAPSet.pm \
71 PMG/LDAPCache.pm \
72 PMG/DBTools.pm \
73 PMG/RuleDB/Group.pm \
74 PMG/RuleDB/Rule.pm \
75 PMG/RuleDB/Object.pm \
76 PMG/RuleDB/Quarantine.pm \
77 PMG/RuleDB/WhoRegex.pm \
78 PMG/RuleDB/IPAddress.pm \
79 PMG/RuleDB/IPNet.pm \
80 PMG/RuleDB/ModField.pm \
81 PMG/RuleDB/MatchFilename.pm \
82 PMG/RuleDB/ReceiverRegex.pm \
83 PMG/RuleDB/EMail.pm \
84 PMG/RuleDB/Receiver.pm \
85 PMG/RuleDB/Domain.pm \
86 PMG/RuleDB/ReceiverDomain.pm \
87 PMG/RuleDB/LDAP.pm \
88 PMG/RuleDB/LDAPUser.pm \
89 PMG/RuleDB/TimeFrame.pm \
90 PMG/RuleDB/MatchField.pm \
91 PMG/RuleDB/ContentTypeFilter.pm \
92 PMG/RuleDB/ArchiveFilter.pm \
93 PMG/RuleDB/Spam.pm \
94 PMG/RuleDB/Virus.pm \
95 PMG/RuleDB/ReportSpam.pm \
96 PMG/RuleDB/Remove.pm \
97 PMG/RuleDB/Attach.pm \
98 PMG/RuleDB/BCC.pm \
99 PMG/RuleDB/Counter.pm \
100 PMG/RuleDB/Notify.pm \
101 PMG/RuleDB/Disclaimer.pm \
102 PMG/RuleDB/Accept.pm \
103 PMG/RuleDB/Block.pm \
104 PMG/RuleDB.pm \
105 ${CLI_CLASSES} \
106 ${SERVICE_CLASSES} \
107 PMG/API2/Network.pm \
108 PMG/API2/Services.pm \
109 PMG/API2/Tasks.pm \
110 PMG/API2/LDAP.pm \
111 PMG/API2/Domains.pm \
112 PMG/API2/Transport.pm \
113 PMG/API2/MyNetworks.pm \
114 PMG/API2/Config.pm \
115 PMG/API2/ClusterConfig.pm \
116 PMG/API2/ClamAV.pm \
117 PMG/API2/Nodes.pm \
118 PMG/API2/AccessControl.pm \
119 PMG/API2/ObjectGroupHelpers.pm \
120 PMG/API2/Rules.pm \
121 PMG/API2/RuleDB.pm \
122 PMG/API2/SMTPWhitelist.pm \
123 PMG/API2/Who.pm \
124 PMG/API2/When.pm \
125 PMG/API2/What.pm \
126 PMG/API2/Action.pm \
127 PMG/API2.pm
128
129 SOURCES= ${LIBSOURCES} ${CLI_BINARIES} ${TEMPLATES_FILES} ${CONF_MANS} ${CLI_MANS} ${SERVICE_MANS}
130
131 all: ${SOURCES}
132
133 .PHONY: deb
134 deb ${DEB}: ${SOURCES}
135 rm -rf build
136 rsync -a * build
137 cd build; dpkg-buildpackage -b -us -uc
138 lintian ${DEB}
139
140
141 PMG/pmgcfg.pm: PMG/pmgcfg.pm.in
142 sed -e s/@VERSION@/${PKGVER}/ -e s/@PACKAGERELEASE@/${PKGREL}/ -e s/@PACKAGE@/${PACKAGE}/ -e s/@REPOID@/${REPOID}/ $< >$@.tmp
143 mv $@.tmp $@
144
145 %.bash-completion:
146 perl -I. -T -e "use PMG::CLI::$*; PMG::CLI::$*->generate_bash_completions();" >$@.tmp
147 mv $@.tmp $@
148
149 %.service-bash-completion:
150 perl -I. -T -e "use PMG::Service::$*; PMG::Service::$*->generate_bash_completions();" >$@.tmp
151 mv $@.tmp $@
152
153 install: ${SOURCES} $(addsuffix .service-bash-completion, ${SERVICES}) $(addsuffix .bash-completion, ${CLITOOLS})
154 for i in ${SERVICES}; do perl -I. -T -e "use PMG::Service::$$i; PMG::Service::$$i->verify_api();"; done
155 for i in ${CLITOOLS}; do perl -I. -T -e "use PMG::CLI::$$i; PMG::CLI::$$i->verify_api();"; done
156 perl -I. bin/pmgsh verifyapi
157 install -d -m 0755 ${DESTDIR}/usr/bin
158 install -d -m 0755 -o www-data -g www-data ${DESTDIR}/var/log/pmgproxy
159 install -d -m 0755 ${DOCDIR}
160 # TODO: is there a better location ?
161 install -m 0644 favicon.ico ${DOCDIR}
162 for i in ${LIBSOURCES}; do install -D -m 0644 $$i ${PERL5DIR}/$$i; done
163 for i in ${SERVICES}; do install -D -m 0644 PMG/Service/$$i.pm ${PERL5DIR}/PMG/Service/$$i.pm; done
164 for i in ${SERVICES}; do install -m 0755 bin/$$i ${DESTDIR}/usr/bin; done
165 for i in ${SERVICES}; do install -m 0644 -D $$i.service-bash-completion ${BASHCOMPLDIR}/$$i; done
166 for i in ${CLITOOLS}; do install -D -m 0644 PMG/CLI/$$i.pm ${PERL5DIR}/PMG/CLI/$$i.pm; done
167 for i in ${CLITOOLS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/bin/$$i; done
168 for i in ${CLITOOLS}; do install -D -m 0644 $$i.bash-completion ${BASHCOMPLDIR}/$$i; done
169 for i in ${CLISCRIPTS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/bin/$$i; done
170 for i in ${TEMPLATES}; do install -D -m 0644 templates/$$i ${DESTDIR}/var/lib/pmg/templates/$$i; done
171 for i in ${CLI_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man1/$$i; done
172 for i in ${CONF_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man5/$$i; done
173 for i in ${SERVICE_MANS}; do install -D -m 0644 $$i ${DESTDIR}/usr/share/man/man8/$$i; done
174 for i in ${CRONSCRIPTS}; do install -D -m 0755 bin/$$i ${DESTDIR}/usr/lib/pmg/bin/$$i; done
175
176 .PHONY: upload
177 upload: ${DEB}
178 ./repoid.pl .git/ check
179 tar cf - ${DEB} | ssh -X repoman@repo.proxmox.com -- upload --product pmg --dist stretch
180
181 .PHONY: check
182 check:
183 make -C tests check
184
185 distclean: clean
186
187 clean:
188 make cleanup-docgen
189 make -C tests clean
190 rm -rf ${CONF_MANS} ./build *.deb *.changes *.buildinfo *.bash-completion *.service-bash-completion
191 if test -d .git; then rm -f PMG/pmgcfg.pm; fi
192 find . -name '*~' -exec rm {} ';'
193
194 .PHONY: dinstall
195 dinstall: ${DEB}
196 dpkg -i ${DEB}