/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to Makefile

  • Committer: Teddy Hogeborn
  • Date: 2016-06-03 17:27:03 UTC
  • Revision ID: teddy@recompile.se-20160603172703-mc6tjor6rhq4xy74
mandos: Bug fix: Do multiprocessing cleanup correctly on exit

* mandos (main): Save module "multiprocessing" and open file "wnull"
                 as scope variables accessible by function cleanup(),
                 since the module and global variable may not be
                 accessible when the cleanup() function is run as
                 scheduled by atexit().

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs \
2
 
        -Wswitch-default -Wswitch-enum -Wunused-parameter \
3
 
        -Wstrict-aliasing=2 -Wextra -Wfloat-equal -Wundef -Wshadow \
 
1
WARN=-O -Wall -Wextra -Wdouble-promotion -Wformat=2 -Winit-self \
 
2
        -Wmissing-include-dirs -Wswitch-default -Wswitch-enum \
 
3
        -Wunused -Wuninitialized -Wstrict-overflow=5 \
 
4
        -Wsuggest-attribute=pure -Wsuggest-attribute=const \
 
5
        -Wsuggest-attribute=noreturn -Wfloat-equal -Wundef -Wshadow \
4
6
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
7
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
 
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
 
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
8
 
#       -Wunreachable-code 
 
8
        -Wconversion -Wlogical-op -Waggregate-return \
 
9
        -Wstrict-prototypes -Wold-style-definition \
 
10
        -Wmissing-format-attribute -Wnormalized=nfc -Wpacked \
 
11
        -Wredundant-decls -Wnested-externs -Winline -Wvla \
 
12
        -Wvolatile-register-var -Woverlength-strings
9
13
#DEBUG=-ggdb3
10
 
# For info about _FORTIFY_SOURCE, see
11
 
# <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>
12
 
FORTIFY=-D_FORTIFY_SOURCE=2 # -fstack-protector-all
 
14
# For info about _FORTIFY_SOURCE, see feature_test_macros(7)
 
15
# and <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
 
16
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
 
17
# <https://developerblog.redhat.com/2014/10/16/gcc-undefined-behavior-sanitizer-ubsan/>
 
18
ALL_SANITIZE_OPTIONS:=-fsanitize=address -fsanitize=undefined \
 
19
        -fsanitize=shift -fsanitize=integer-divide-by-zero \
 
20
        -fsanitize=unreachable -fsanitize=vla-bound -fsanitize=null \
 
21
        -fsanitize=return -fsanitize=signed-integer-overflow \
 
22
        -fsanitize=bounds -fsanitize=alignment \
 
23
        -fsanitize=object-size -fsanitize=float-divide-by-zero \
 
24
        -fsanitize=float-cast-overflow -fsanitize=nonnull-attribute \
 
25
        -fsanitize=returns-nonnull-attribute -fsanitize=bool \
 
26
        -fsanitize=enum
 
27
# Check which sanitizing options can be used
 
28
SANITIZE:=$(foreach option,$(ALL_SANITIZE_OPTIONS),$(shell \
 
29
        echo 'int main(){}' | $(CC) --language=c $(option) /dev/stdin \
 
30
        -o /dev/null >/dev/null 2>&1 && echo $(option)))
 
31
LINK_FORTIFY_LD=-z relro -z now
 
32
LINK_FORTIFY=
 
33
 
 
34
# If BROKEN_PIE is set, do not build with -pie
 
35
ifndef BROKEN_PIE
 
36
FORTIFY += -fPIE
 
37
LINK_FORTIFY += -pie
 
38
endif
13
39
#COVERAGE=--coverage
14
 
OPTIMIZE=-Os
15
 
LANGUAGE=-std=gnu99
 
40
OPTIMIZE=-Os -fno-strict-aliasing
 
41
LANGUAGE=-std=gnu11
 
42
htmldir=man
 
43
version=1.7.7
 
44
SED=sed
 
45
 
 
46
USER=$(firstword $(subst :, ,$(shell getent passwd _mandos || getent passwd nobody || echo 65534)))
 
47
GROUP=$(firstword $(subst :, ,$(shell getent group _mandos || getent group nogroup || echo 65534)))
16
48
 
17
49
## Use these settings for a traditional /usr/local install
18
50
# PREFIX=$(DESTDIR)/usr/local
20
52
# KEYDIR=$(DESTDIR)/etc/mandos/keys
21
53
# MANDIR=$(PREFIX)/man
22
54
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
 
55
# STATEDIR=$(DESTDIR)/var/lib/mandos
 
56
# LIBDIR=$(PREFIX)/lib
23
57
##
24
58
 
25
59
## These settings are for a package-type install
28
62
KEYDIR=$(DESTDIR)/etc/keys/mandos
29
63
MANDIR=$(PREFIX)/share/man
30
64
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
 
65
STATEDIR=$(DESTDIR)/var/lib/mandos
 
66
LIBDIR=$(shell \
 
67
        for d in \
 
68
        "/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`" \
 
69
        "`rpm --eval='%{_libdir}' 2>/dev/null`" /usr/lib; do \
 
70
                if [ -d "$$d" -a "$$d" = "$${d%/}" ]; then \
 
71
                        echo "$(DESTDIR)$$d"; \
 
72
                        break; \
 
73
                fi; \
 
74
        done)
31
75
##
32
76
 
33
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
34
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
 
77
SYSTEMD=$(DESTDIR)$(shell pkg-config systemd --variable=systemdsystemunitdir)
 
78
TMPFILES=$(DESTDIR)$(shell pkg-config systemd --variable=tmpfilesdir)
 
79
 
 
80
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
 
81
GNUTLS_LIBS=$(shell pkg-config --libs gnutls)
35
82
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
36
83
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
37
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
38
 
GPGME_LIBS=$(shell gpgme-config --libs)
 
84
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
 
85
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
 
86
        getconf LFS_LDFLAGS)
 
87
LIBNL3_CFLAGS=$(shell pkg-config --cflags-only-I libnl-route-3.0)
 
88
LIBNL3_LIBS=$(shell pkg-config --libs libnl-route-3.0)
39
89
 
40
90
# Do not change these two
41
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
42
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
43
 
LDFLAGS=$(COVERAGE)
 
91
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(SANITIZE) $(COVERAGE) \
 
92
        $(OPTIMIZE) $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) \
 
93
        $(GPGME_CFLAGS) -DVERSION='"$(version)"'
 
94
LDFLAGS+=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
44
95
 
45
96
# Commands to format a DocBook <refentry> document into a manual page
46
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
 
97
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
47
98
        --param man.charmap.use.subset          0 \
48
99
        --param make.year.ranges                1 \
49
100
        --param make.single.year.ranges         1 \
50
101
        --param man.output.quietly              1 \
51
102
        --param man.authors.section.enabled     0 \
52
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
103
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
53
104
        $(notdir $<); \
54
 
        $(MANPOST) $(notdir $@)
55
 
# DocBook-to-man post-processing to fix a '\n' escape bug
56
 
MANPOST=sed --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
 
105
        if locale --all 2>/dev/null | grep --regexp='^en_US\.utf8$$' \
 
106
        && type man 2>/dev/null; then LANG=en_US.UTF-8 MANWIDTH=80 \
 
107
        man --warnings --encoding=UTF-8 --local-file $(notdir $@); \
 
108
        fi >/dev/null)
 
109
 
 
110
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
 
111
        --param make.year.ranges                1 \
 
112
        --param make.single.year.ranges         1 \
 
113
        --param man.output.quietly              1 \
 
114
        --param man.authors.section.enabled     0 \
 
115
        --param citerefentry.link               1 \
 
116
        --output $@ \
 
117
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
 
118
        $<; $(HTMLPOST) $@)
 
119
# Fix citerefentry links
 
120
HTMLPOST=$(SED) --in-place \
 
121
        --expression='s/\(<a class="citerefentry" href="\)\("><span class="citerefentry"><span class="refentrytitle">\)\([^<]*\)\(<\/span>(\)\([^)]*\)\()<\/span><\/a>\)/\1\3.\5\2\3\4\5\6/g'
57
122
 
58
123
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
59
 
        plugins.d/usplash plugins.d/splashy
60
 
PROGS=plugin-runner $(PLUGINS)
61
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
 
124
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
 
125
        plugins.d/plymouth
 
126
PLUGIN_HELPERS=plugin-helpers/mandos-client-iprouteadddel
 
127
CPROGS=plugin-runner $(PLUGINS) $(PLUGIN_HELPERS)
 
128
PROGS=mandos mandos-keygen mandos-ctl mandos-monitor $(CPROGS)
 
129
DOCS=mandos.8 mandos-keygen.8 mandos-monitor.8 mandos-ctl.8 \
 
130
        mandos.conf.5 mandos-clients.conf.5 plugin-runner.8mandos \
62
131
        plugins.d/mandos-client.8mandos \
63
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
64
 
        mandos-clients.conf.5
65
 
 
66
 
objects=$(addsuffix .o,$(PROGS))
67
 
 
68
 
all: $(PROGS)
 
132
        plugins.d/password-prompt.8mandos plugins.d/usplash.8mandos \
 
133
        plugins.d/splashy.8mandos plugins.d/askpass-fifo.8mandos \
 
134
        plugins.d/plymouth.8mandos intro.8mandos
 
135
 
 
136
htmldocs=$(addsuffix .xhtml,$(DOCS))
 
137
 
 
138
objects=$(addsuffix .o,$(CPROGS))
 
139
 
 
140
all: $(PROGS) mandos.lsm
69
141
 
70
142
doc: $(DOCS)
71
143
 
72
 
%.5: %.xml legalnotice.xml
73
 
        $(DOCBOOKTOMAN)
74
 
 
75
 
%.8: %.xml legalnotice.xml
76
 
        $(DOCBOOKTOMAN)
77
 
 
78
 
%.8mandos: %.xml legalnotice.xml
79
 
        $(DOCBOOKTOMAN)
80
 
 
81
 
mandos.8: mandos.xml mandos-options.xml overview.xml legalnotice.xml
82
 
        $(DOCBOOKTOMAN)
83
 
 
84
 
mandos-keygen.8: mandos-keygen.xml overview.xml legalnotice.xml
85
 
        $(DOCBOOKTOMAN)
86
 
 
87
 
mandos.conf.5: mandos.conf.xml mandos-options.xml legalnotice.xml
88
 
        $(DOCBOOKTOMAN)
89
 
 
90
 
plugin-runner.8mandos: plugin-runner.xml overview.xml legalnotice.xml
91
 
        $(DOCBOOKTOMAN)
 
144
html: $(htmldocs)
 
145
 
 
146
%.5: %.xml common.ent legalnotice.xml
 
147
        $(DOCBOOKTOMAN)
 
148
%.5.xhtml: %.xml common.ent legalnotice.xml
 
149
        $(DOCBOOKTOHTML)
 
150
 
 
151
%.8: %.xml common.ent legalnotice.xml
 
152
        $(DOCBOOKTOMAN)
 
153
%.8.xhtml: %.xml common.ent legalnotice.xml
 
154
        $(DOCBOOKTOHTML)
 
155
 
 
156
%.8mandos: %.xml common.ent legalnotice.xml
 
157
        $(DOCBOOKTOMAN)
 
158
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
 
159
        $(DOCBOOKTOHTML)
 
160
 
 
161
intro.8mandos: intro.xml common.ent legalnotice.xml
 
162
        $(DOCBOOKTOMAN)
 
163
intro.8mandos.xhtml: intro.xml common.ent legalnotice.xml
 
164
        $(DOCBOOKTOHTML)
 
165
 
 
166
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
 
167
                legalnotice.xml
 
168
        $(DOCBOOKTOMAN)
 
169
mandos.8.xhtml: mandos.xml common.ent mandos-options.xml \
 
170
                overview.xml legalnotice.xml
 
171
        $(DOCBOOKTOHTML)
 
172
 
 
173
mandos-keygen.8: mandos-keygen.xml common.ent overview.xml \
 
174
                legalnotice.xml
 
175
        $(DOCBOOKTOMAN)
 
176
mandos-keygen.8.xhtml: mandos-keygen.xml common.ent overview.xml \
 
177
                 legalnotice.xml
 
178
        $(DOCBOOKTOHTML)
 
179
 
 
180
mandos-monitor.8: mandos-monitor.xml common.ent overview.xml \
 
181
                legalnotice.xml
 
182
        $(DOCBOOKTOMAN)
 
183
mandos-monitor.8.xhtml: mandos-monitor.xml common.ent overview.xml \
 
184
                 legalnotice.xml
 
185
        $(DOCBOOKTOHTML)
 
186
 
 
187
mandos-ctl.8: mandos-ctl.xml common.ent overview.xml \
 
188
                legalnotice.xml
 
189
        $(DOCBOOKTOMAN)
 
190
mandos-ctl.8.xhtml: mandos-ctl.xml common.ent overview.xml \
 
191
                 legalnotice.xml
 
192
        $(DOCBOOKTOHTML)
 
193
 
 
194
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
 
195
                legalnotice.xml
 
196
        $(DOCBOOKTOMAN)
 
197
mandos.conf.5.xhtml: mandos.conf.xml common.ent mandos-options.xml \
 
198
                legalnotice.xml
 
199
        $(DOCBOOKTOHTML)
 
200
 
 
201
plugin-runner.8mandos: plugin-runner.xml common.ent overview.xml \
 
202
                legalnotice.xml
 
203
        $(DOCBOOKTOMAN)
 
204
plugin-runner.8mandos.xhtml: plugin-runner.xml common.ent \
 
205
                overview.xml legalnotice.xml
 
206
        $(DOCBOOKTOHTML)
92
207
 
93
208
plugins.d/mandos-client.8mandos: plugins.d/mandos-client.xml \
 
209
                                        common.ent \
94
210
                                        mandos-options.xml \
95
211
                                        overview.xml legalnotice.xml
96
212
        $(DOCBOOKTOMAN)
97
 
 
98
 
plugins.d/mandos-client: plugins.d/mandos-client.o
99
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
100
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
101
 
 
102
 
.PHONY : all doc clean distclean run-client run-server install \
103
 
        install-server install-client uninstall uninstall-server \
104
 
        uninstall-client purge purge-server purge-client
 
213
plugins.d/mandos-client.8mandos.xhtml: plugins.d/mandos-client.xml \
 
214
                                        common.ent \
 
215
                                        mandos-options.xml \
 
216
                                        overview.xml legalnotice.xml
 
217
        $(DOCBOOKTOHTML)
 
218
 
 
219
# Update all these files with version number $(version)
 
220
common.ent: Makefile
 
221
        $(strip $(SED) --in-place \
 
222
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
 
223
                $@)
 
224
 
 
225
mandos: Makefile
 
226
        $(strip $(SED) --in-place \
 
227
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
228
                $@)
 
229
 
 
230
mandos-keygen: Makefile
 
231
        $(strip $(SED) --in-place \
 
232
                --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' \
 
233
                $@)
 
234
 
 
235
mandos-ctl: Makefile
 
236
        $(strip $(SED) --in-place \
 
237
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
238
                $@)
 
239
 
 
240
mandos-monitor: Makefile
 
241
        $(strip $(SED) --in-place \
 
242
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
243
                $@)
 
244
 
 
245
mandos.lsm: Makefile
 
246
        $(strip $(SED) --in-place \
 
247
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
 
248
                $@)
 
249
        $(strip $(SED) --in-place \
 
250
                --expression='s/^\(Entered-date:\).*/\1\t$(shell date --rfc-3339=date --reference=Makefile)/' \
 
251
                $@)
 
252
        $(strip $(SED) --in-place \
 
253
                --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
 
254
                $@)
 
255
 
 
256
plugins.d/mandos-client: plugins.d/mandos-client.c
 
257
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
 
258
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
 
259
 
 
260
plugin-helpers/mandos-client-iprouteadddel: plugin-helpers/mandos-client-iprouteadddel.c
 
261
        $(LINK.c) $(LIBNL3_CFLAGS) $^ $(LIBNL3_LIBS) $(strip\
 
262
                ) $(LOADLIBES) $(LDLIBS) -o $@
 
263
 
 
264
.PHONY : all doc html clean distclean mostlyclean maintainer-clean \
 
265
        check run-client run-server install install-html \
 
266
        install-server install-client-nokey install-client uninstall \
 
267
        uninstall-server uninstall-client purge purge-server \
 
268
        purge-client
105
269
 
106
270
clean:
107
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
 
271
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
108
272
 
109
273
distclean: clean
110
274
mostlyclean: clean
111
275
maintainer-clean: clean
112
 
        -rm --force --recursive keydir confdir
 
276
        -rm --force --recursive keydir confdir statedir
113
277
 
114
 
check:
 
278
check:  all
115
279
        ./mandos --check
 
280
        ./mandos-ctl --check
116
281
 
117
282
# Run the client with a local config and key
118
283
run-client: all keydir/seckey.txt keydir/pubkey.txt
 
284
        @echo "###################################################################"
 
285
        @echo "# The following error messages are harmless and can be safely     #"
 
286
        @echo "# ignored.  The messages are caused by not running as root, but   #"
 
287
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
 
288
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
 
289
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
 
290
        @echo "#                     setuid: Operation not permitted             #"
 
291
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
 
292
        @echo "# From mandos-client:                                             #"
 
293
        @echo "#             Failed to raise privileges: Operation not permitted #"
 
294
        @echo "#             Warning: network hook \"*\" exited with status *      #"
 
295
        @echo "###################################################################"
 
296
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
119
297
        ./plugin-runner --plugin-dir=plugins.d \
 
298
                --plugin-helper-dir=plugin-helpers \
120
299
                --config-file=plugin-runner.conf \
121
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
 
300
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
 
301
                --env-for=mandos-client:GNOME_KEYRING_CONTROL= \
 
302
                $(CLIENTARGS)
122
303
 
123
304
# Used by run-client
124
305
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
126
307
        ./mandos-keygen --dir keydir --force
127
308
 
128
309
# Run the server with a local config
129
 
run-server: confdir/mandos.conf confdir/clients.conf
130
 
        ./mandos --debug --configdir=confdir
 
310
run-server: confdir/mandos.conf confdir/clients.conf statedir
 
311
        ./mandos --debug --no-dbus --configdir=confdir \
 
312
                --statedir=statedir $(SERVERARGS)
131
313
 
132
314
# Used by run-server
133
315
confdir/mandos.conf: mandos.conf
137
319
        install --directory confdir
138
320
        install --mode=u=rw $< $@
139
321
# Add a client password
140
 
        ./mandos-keygen --dir keydir --password >> $@
 
322
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
 
323
statedir:
 
324
        install --directory statedir
141
325
 
142
326
install: install-server install-client-nokey
143
327
 
 
328
install-html: html
 
329
        install --directory $(htmldir)
 
330
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
 
331
                $(htmldocs)
 
332
 
144
333
install-server: doc
145
334
        install --directory $(CONFDIR)
 
335
        if install --directory --mode=u=rwx --owner=$(USER) \
 
336
                --group=$(GROUP) $(STATEDIR); then \
 
337
                :; \
 
338
        elif install --directory --mode=u=rwx $(STATEDIR); then \
 
339
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
 
340
        fi
 
341
        if [ "$(TMPFILES)" != "$(DESTDIR)" -a -d "$(TMPFILES)" ]; then \
 
342
                install --mode=u=rw,go=r tmpfiles.d-mandos.conf \
 
343
                        $(TMPFILES)/mandos.conf; \
 
344
        fi
146
345
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
 
346
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
347
                mandos-ctl
 
348
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
349
                mandos-monitor
147
350
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
148
351
                mandos.conf
149
352
        install --mode=u=rw --target-directory=$(CONFDIR) \
150
353
                clients.conf
 
354
        install --mode=u=rw,go=r dbus-mandos.conf \
 
355
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
151
356
        install --mode=u=rwx,go=rx init.d-mandos \
152
357
                $(DESTDIR)/etc/init.d/mandos
 
358
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
 
359
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
 
360
        fi
153
361
        install --mode=u=rw,go=r default-mandos \
154
362
                $(DESTDIR)/etc/default/mandos
155
363
        if [ -z $(DESTDIR) ]; then \
157
365
        fi
158
366
        gzip --best --to-stdout mandos.8 \
159
367
                > $(MANDIR)/man8/mandos.8.gz
 
368
        gzip --best --to-stdout mandos-monitor.8 \
 
369
                > $(MANDIR)/man8/mandos-monitor.8.gz
 
370
        gzip --best --to-stdout mandos-ctl.8 \
 
371
                > $(MANDIR)/man8/mandos-ctl.8.gz
160
372
        gzip --best --to-stdout mandos.conf.5 \
161
373
                > $(MANDIR)/man5/mandos.conf.5.gz
162
374
        gzip --best --to-stdout mandos-clients.conf.5 \
163
375
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
 
376
        gzip --best --to-stdout intro.8mandos \
 
377
                > $(MANDIR)/man8/intro.8mandos.gz
164
378
 
165
379
install-client-nokey: all doc
166
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
 
380
        install --directory $(LIBDIR)/mandos $(CONFDIR)
167
381
        install --directory --mode=u=rwx $(KEYDIR) \
168
 
                $(PREFIX)/lib/mandos/plugins.d
169
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
 
382
                $(LIBDIR)/mandos/plugins.d \
 
383
                $(LIBDIR)/mandos/plugin-helpers
 
384
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
170
385
                install --mode=u=rwx \
171
 
                        --directory "$(CONFDIR)/plugins.d"; \
 
386
                        --directory "$(CONFDIR)/plugins.d" \
 
387
                        "$(CONFDIR)/plugin-helpers"; \
172
388
        fi
 
389
        install --mode=u=rwx,go=rx --directory \
 
390
                "$(CONFDIR)/network-hooks.d"
173
391
        install --mode=u=rwx,go=rx \
174
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
 
392
                --target-directory=$(LIBDIR)/mandos plugin-runner
175
393
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
176
394
                mandos-keygen
177
395
        install --mode=u=rwx,go=rx \
178
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
396
                --target-directory=$(LIBDIR)/mandos/plugins.d \
179
397
                plugins.d/password-prompt
180
398
        install --mode=u=rwxs,go=rx \
181
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
399
                --target-directory=$(LIBDIR)/mandos/plugins.d \
182
400
                plugins.d/mandos-client
183
401
        install --mode=u=rwxs,go=rx \
184
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
402
                --target-directory=$(LIBDIR)/mandos/plugins.d \
185
403
                plugins.d/usplash
186
404
        install --mode=u=rwxs,go=rx \
187
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
405
                --target-directory=$(LIBDIR)/mandos/plugins.d \
188
406
                plugins.d/splashy
 
407
        install --mode=u=rwxs,go=rx \
 
408
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
409
                plugins.d/askpass-fifo
 
410
        install --mode=u=rwxs,go=rx \
 
411
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
412
                plugins.d/plymouth
 
413
        install --mode=u=rwx,go=rx \
 
414
                --target-directory=$(LIBDIR)/mandos/plugin-helpers \
 
415
                plugin-helpers/mandos-client-iprouteadddel
189
416
        install initramfs-tools-hook \
190
417
                $(INITRAMFSTOOLS)/hooks/mandos
191
418
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
192
419
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
193
420
        install initramfs-tools-script \
194
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
 
421
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
195
422
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
196
423
        gzip --best --to-stdout mandos-keygen.8 \
197
424
                > $(MANDIR)/man8/mandos-keygen.8.gz
198
425
        gzip --best --to-stdout plugin-runner.8mandos \
199
426
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
427
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
 
428
                > $(MANDIR)/man8/mandos-client.8mandos.gz
200
429
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
201
430
                > $(MANDIR)/man8/password-prompt.8mandos.gz
202
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
203
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
 
431
        gzip --best --to-stdout plugins.d/usplash.8mandos \
 
432
                > $(MANDIR)/man8/usplash.8mandos.gz
 
433
        gzip --best --to-stdout plugins.d/splashy.8mandos \
 
434
                > $(MANDIR)/man8/splashy.8mandos.gz
 
435
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
 
436
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
 
437
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
 
438
                > $(MANDIR)/man8/plymouth.8mandos.gz
 
439
        gzip --best --to-stdout intro.8mandos \
 
440
                > $(MANDIR)/man8/intro.8mandos.gz
204
441
 
205
442
install-client: install-client-nokey
206
443
# Post-installation stuff
212
449
 
213
450
uninstall-server:
214
451
        -rm --force $(PREFIX)/sbin/mandos \
 
452
                $(PREFIX)/sbin/mandos-ctl \
 
453
                $(PREFIX)/sbin/mandos-monitor \
215
454
                $(MANDIR)/man8/mandos.8.gz \
 
455
                $(MANDIR)/man8/mandos-monitor.8.gz \
 
456
                $(MANDIR)/man8/mandos-ctl.8.gz \
216
457
                $(MANDIR)/man5/mandos.conf.5.gz \
217
458
                $(MANDIR)/man5/mandos-clients.conf.5.gz
218
459
        update-rc.d -f mandos remove
224
465
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
225
466
                $(DESTDIR)/etc/crypttab
226
467
        -rm --force $(PREFIX)/sbin/mandos-keygen \
227
 
                $(PREFIX)/lib/mandos/plugin-runner \
228
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
229
 
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
230
 
                $(PREFIX)/lib/mandos/plugins.d/usplash \
231
 
                $(PREFIX)/lib/mandos/plugins.d/splashy \
 
468
                $(LIBDIR)/mandos/plugin-runner \
 
469
                $(LIBDIR)/mandos/plugins.d/password-prompt \
 
470
                $(LIBDIR)/mandos/plugins.d/mandos-client \
 
471
                $(LIBDIR)/mandos/plugins.d/usplash \
 
472
                $(LIBDIR)/mandos/plugins.d/splashy \
 
473
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
 
474
                $(LIBDIR)/mandos/plugins.d/plymouth \
232
475
                $(INITRAMFSTOOLS)/hooks/mandos \
233
476
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
234
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
 
477
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
478
                $(MANDIR)/man8/mandos-keygen.8.gz \
235
479
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
236
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
 
480
                $(MANDIR)/man8/mandos-client.8mandos.gz
237
481
                $(MANDIR)/man8/password-prompt.8mandos.gz \
238
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
239
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
240
 
                rm --force $(CONFDIR)/plugins.d/README; \
241
 
        fi
242
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
243
 
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
 
482
                $(MANDIR)/man8/usplash.8mandos.gz \
 
483
                $(MANDIR)/man8/splashy.8mandos.gz \
 
484
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
 
485
                $(MANDIR)/man8/plymouth.8mandos.gz \
 
486
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
 
487
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
244
488
        update-initramfs -k all -u
245
489
 
246
490
purge: purge-server purge-client
247
491
 
248
492
purge-server: uninstall-server
249
493
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
 
494
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
250
495
                $(DESTDIR)/etc/default/mandos \
251
496
                $(DESTDIR)/etc/init.d/mandos \
 
497
                $(SYSTEMD)/mandos.service \
 
498
                $(DESTDIR)/run/mandos.pid \
252
499
                $(DESTDIR)/var/run/mandos.pid
253
500
        -rmdir $(CONFDIR)
254
501