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