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