/mandos/release

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

« back to all changes in this revision

Viewing changes to Makefile

  • Committer: Teddy Hogeborn
  • Date: 2015-05-23 20:18:34 UTC
  • mto: (237.7.304 trunk)
  • mto: This revision was merged to the branch mainline in revision 325.
  • Revision ID: teddy@recompile.se-20150523201834-e89ex4ito93yni8x
mandos: Use multiprocessing module to run checkers.

For a long time, the Mandos server has occasionally logged the message
"ERROR: Child process vanished".  This was never a fatal error, but it
has been annoying and slightly worrying, since a definite cause was
not found.  One potential cause could be the "multiprocessing" and
"subprocess" modules conflicting w.r.t. SIGCHLD.  To avoid this,
change the running of checkers from using subprocess.Popen
asynchronously to instead first create a multiprocessing.Process()
(which is asynchronous) calling a function, and have that function
then call subprocess.call() (which is synchronous).  In this way, the
only thing using any asynchronous subprocesses is the multiprocessing
module.

This makes it necessary to change one small thing in the D-Bus API,
since the subprocesses.call() function does not expose the raw wait(2)
status value.

DBUS-API (CheckerCompleted): Change the second value provided by this
                             D-Bus signal from the raw wait(2) status
                             to the actual terminating signal number.
mandos (subprocess_call_pipe): New function to be called by
                               multiprocessing.Process (starting a
                               separate process).
(Client.last_checker signal): New attribute for signal which
                              terminated last checker.  Like
                              last_checker_status, only not accessible
                              via D-Bus.
(Client.checker_callback): Take new "connection" argument and use it
                           to get returncode; set last_checker_signal.
                           Return False so gobject does not call this
                           callback again.
(Client.start_checker): Start checker using a multiprocessing.Process
                        instead of a subprocess.Popen.
(ClientDBus.checker_callback): Take new "connection" argument.        Call
                               Client.checker_callback early to have
                               it set last_checker_status and
                               last_checker_signal; use those.  Change
                               second value provided to D-Bus signal
                               CheckerCompleted to use
                               last_checker_signal if checker was
                               terminated by signal.
mandos-monitor: Update to reflect DBus API change.
(MandosClientWidget.checker_completed): Take "signal" instead of
                                        "condition" argument.  Use it
                                        accordingly.  Remove dead code
                                        (os.WCOREDUMP case).

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
LINK_FORTIFY_LD=-z relro -z now
 
18
LINK_FORTIFY=
 
19
 
 
20
# If BROKEN_PIE is set, do not build with -pie
 
21
ifndef BROKEN_PIE
 
22
FORTIFY += -fPIE
 
23
LINK_FORTIFY += -pie
 
24
endif
13
25
#COVERAGE=--coverage
14
 
OPTIMIZE=-Os
 
26
OPTIMIZE=-Os -fno-strict-aliasing
15
27
LANGUAGE=-std=gnu99
16
28
htmldir=man
17
 
version=1.0
 
29
version=1.6.9
18
30
SED=sed
19
31
 
 
32
USER=$(firstword $(subst :, ,$(shell getent passwd _mandos || getent passwd nobody || echo 65534)))
 
33
GROUP=$(firstword $(subst :, ,$(shell getent group _mandos || getent group nobody || echo 65534)))
 
34
 
20
35
## Use these settings for a traditional /usr/local install
21
36
# PREFIX=$(DESTDIR)/usr/local
22
37
# CONFDIR=$(DESTDIR)/etc/mandos
23
38
# KEYDIR=$(DESTDIR)/etc/mandos/keys
24
39
# MANDIR=$(PREFIX)/man
25
40
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
 
41
# STATEDIR=$(DESTDIR)/var/lib/mandos
 
42
# LIBDIR=$(PREFIX)/lib
26
43
##
27
44
 
28
45
## These settings are for a package-type install
31
48
KEYDIR=$(DESTDIR)/etc/keys/mandos
32
49
MANDIR=$(PREFIX)/share/man
33
50
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
 
51
STATEDIR=$(DESTDIR)/var/lib/mandos
 
52
LIBDIR=$(shell \
 
53
        for d in \
 
54
        "/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`" \
 
55
        "`rpm --eval='%{_libdir}' 2>/dev/null`" /usr/lib; do \
 
56
                if [ -d "$$d" -a "$$d" = "$${d%/}" ]; then \
 
57
                        echo "$(DESTDIR)$$d"; \
 
58
                        break; \
 
59
                fi; \
 
60
        done)
34
61
##
35
62
 
36
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
37
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
 
63
SYSTEMD=$(DESTDIR)$(shell pkg-config systemd --variable=systemdsystemunitdir)
 
64
 
 
65
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
 
66
GNUTLS_LIBS=$(shell pkg-config --libs gnutls)
38
67
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
39
68
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
40
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
41
 
GPGME_LIBS=$(shell gpgme-config --libs)
 
69
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
 
70
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
 
71
        getconf LFS_LDFLAGS)
42
72
 
43
73
# Do not change these two
44
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
 
74
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
45
75
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
46
76
        -DVERSION='"$(version)"'
47
 
LDFLAGS=$(COVERAGE)
 
77
LDFLAGS+=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
48
78
 
49
79
# Commands to format a DocBook <refentry> document into a manual page
50
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
 
80
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
51
81
        --param man.charmap.use.subset          0 \
52
82
        --param make.year.ranges                1 \
53
83
        --param make.single.year.ranges         1 \
54
84
        --param man.output.quietly              1 \
55
85
        --param man.authors.section.enabled     0 \
56
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
86
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
57
87
        $(notdir $<); \
58
 
        $(MANPOST) $(notdir $@)
59
 
# DocBook-to-man post-processing to fix a '\n' escape bug
60
 
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
 
88
        if locale --all 2>/dev/null | grep --regexp='^en_US\.utf8$$' \
 
89
        && type man 2>/dev/null; then LANG=en_US.UTF-8 MANWIDTH=80 \
 
90
        man --warnings --encoding=UTF-8 --local-file $(notdir $@); \
 
91
        fi >/dev/null)
61
92
 
62
 
DOCBOOKTOHTML=xsltproc --nonet --xinclude \
 
93
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
63
94
        --param make.year.ranges                1 \
64
95
        --param make.single.year.ranges         1 \
65
96
        --param man.output.quietly              1 \
67
98
        --param citerefentry.link               1 \
68
99
        --output $@ \
69
100
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
70
 
        $<; $(HTMLPOST) $@
 
101
        $<; $(HTMLPOST) $@)
71
102
# Fix citerefentry links
72
 
HTMLPOST=$(SED) --in-place --expression='s/\(<a class="citerefentry" href="\)\("><span class="citerefentry"><span class="refentrytitle">\)\([^<]*\)\(<\/span>(\)\([^)]*\)\()<\/span><\/a>\)/\1\3.\5\2\3\4\5\6/g'
 
103
HTMLPOST=$(SED) --in-place \
 
104
        --expression='s/\(<a class="citerefentry" href="\)\("><span class="citerefentry"><span class="refentrytitle">\)\([^<]*\)\(<\/span>(\)\([^)]*\)\()<\/span><\/a>\)/\1\3.\5\2\3\4\5\6/g'
73
105
 
74
106
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
75
 
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo
 
107
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
 
108
        plugins.d/plymouth
76
109
CPROGS=plugin-runner $(PLUGINS)
77
 
PROGS=mandos mandos-keygen $(CPROGS)
78
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
 
110
PROGS=mandos mandos-keygen mandos-ctl mandos-monitor $(CPROGS)
 
111
DOCS=mandos.8 mandos-keygen.8 mandos-monitor.8 mandos-ctl.8 \
 
112
        mandos.conf.5 mandos-clients.conf.5 plugin-runner.8mandos \
79
113
        plugins.d/mandos-client.8mandos \
80
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
81
 
        plugins.d/usplash.8mandos plugins.d/splashy.8mandos \
82
 
        plugins.d/askpass-fifo.8mandos mandos-clients.conf.5
 
114
        plugins.d/password-prompt.8mandos plugins.d/usplash.8mandos \
 
115
        plugins.d/splashy.8mandos plugins.d/askpass-fifo.8mandos \
 
116
        plugins.d/plymouth.8mandos intro.8mandos
83
117
 
84
118
htmldocs=$(addsuffix .xhtml,$(DOCS))
85
119
 
86
120
objects=$(addsuffix .o,$(CPROGS))
87
121
 
88
 
all: $(PROGS)
 
122
all: $(PROGS) mandos.lsm
89
123
 
90
124
doc: $(DOCS)
91
125
 
106
140
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
107
141
        $(DOCBOOKTOHTML)
108
142
 
 
143
intro.8mandos: intro.xml common.ent legalnotice.xml
 
144
        $(DOCBOOKTOMAN)
 
145
intro.8mandos.xhtml: intro.xml common.ent legalnotice.xml
 
146
        $(DOCBOOKTOHTML)
 
147
 
109
148
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
110
149
                legalnotice.xml
111
150
        $(DOCBOOKTOMAN)
120
159
                 legalnotice.xml
121
160
        $(DOCBOOKTOHTML)
122
161
 
 
162
mandos-monitor.8: mandos-monitor.xml common.ent overview.xml \
 
163
                legalnotice.xml
 
164
        $(DOCBOOKTOMAN)
 
165
mandos-monitor.8.xhtml: mandos-monitor.xml common.ent overview.xml \
 
166
                 legalnotice.xml
 
167
        $(DOCBOOKTOHTML)
 
168
 
 
169
mandos-ctl.8: mandos-ctl.xml common.ent overview.xml \
 
170
                legalnotice.xml
 
171
        $(DOCBOOKTOMAN)
 
172
mandos-ctl.8.xhtml: mandos-ctl.xml common.ent overview.xml \
 
173
                 legalnotice.xml
 
174
        $(DOCBOOKTOHTML)
 
175
 
123
176
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
124
177
                legalnotice.xml
125
178
        $(DOCBOOKTOMAN)
147
200
 
148
201
# Update all these files with version number $(version)
149
202
common.ent: Makefile
150
 
        $(SED) --in-place --expression='s/^\(<ENTITY VERSION "\)[^"]*">$$/\1$(version)"/' $@
 
203
        $(strip $(SED) --in-place \
 
204
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
 
205
                $@)
151
206
 
152
207
mandos: Makefile
153
 
        $(SED) --in-place --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' $@
 
208
        $(strip $(SED) --in-place \
 
209
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
210
                $@)
154
211
 
155
212
mandos-keygen: Makefile
156
 
        $(SED) --in-place --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' $@
157
 
 
158
 
plugins.d/mandos-client: plugins.d/mandos-client.o
159
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
160
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
161
 
 
162
 
.PHONY : all doc html clean distclean run-client run-server install \
163
 
        install-server install-client uninstall uninstall-server \
164
 
        uninstall-client purge purge-server purge-client
 
213
        $(strip $(SED) --in-place \
 
214
                --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' \
 
215
                $@)
 
216
 
 
217
mandos-ctl: Makefile
 
218
        $(strip $(SED) --in-place \
 
219
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
220
                $@)
 
221
 
 
222
mandos-monitor: Makefile
 
223
        $(strip $(SED) --in-place \
 
224
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
225
                $@)
 
226
 
 
227
mandos.lsm: Makefile
 
228
        $(strip $(SED) --in-place \
 
229
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
 
230
                $@)
 
231
        $(strip $(SED) --in-place \
 
232
                --expression='s/^\(Entered-date:\).*/\1\t$(shell date --rfc-3339=date --reference=Makefile)/' \
 
233
                $@)
 
234
        $(strip $(SED) --in-place \
 
235
                --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
 
236
                $@)
 
237
 
 
238
plugins.d/mandos-client: plugins.d/mandos-client.c
 
239
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
 
240
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
 
241
 
 
242
.PHONY : all doc html clean distclean mostlyclean maintainer-clean \
 
243
        check run-client run-server install install-html \
 
244
        install-server install-client-nokey install-client uninstall \
 
245
        uninstall-server uninstall-client purge purge-server \
 
246
        purge-client
165
247
 
166
248
clean:
167
249
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
169
251
distclean: clean
170
252
mostlyclean: clean
171
253
maintainer-clean: clean
172
 
        -rm --force --recursive keydir confdir
 
254
        -rm --force --recursive keydir confdir statedir
173
255
 
174
256
check:  all
175
257
        ./mandos --check
 
258
        ./mandos-ctl --check
176
259
 
177
260
# Run the client with a local config and key
178
261
run-client: all keydir/seckey.txt keydir/pubkey.txt
 
262
        @echo "###################################################################"
 
263
        @echo "# The following error messages are harmless and can be safely     #"
 
264
        @echo "# ignored.  The messages are caused by not running as root, but   #"
 
265
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
 
266
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
 
267
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
 
268
        @echo "#                     setuid: Operation not permitted             #"
 
269
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
 
270
        @echo "# From mandos-client:                                             #"
 
271
        @echo "#             Failed to raise privileges: Operation not permitted #"
 
272
        @echo "#             Warning: network hook \"*\" exited with status *      #"
 
273
        @echo "###################################################################"
 
274
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
179
275
        ./plugin-runner --plugin-dir=plugins.d \
180
276
                --config-file=plugin-runner.conf \
181
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
 
277
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
 
278
                --env-for=mandos-client:GNOME_KEYRING_CONTROL= \
 
279
                $(CLIENTARGS)
182
280
 
183
281
# Used by run-client
184
282
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
186
284
        ./mandos-keygen --dir keydir --force
187
285
 
188
286
# Run the server with a local config
189
 
run-server: confdir/mandos.conf confdir/clients.conf
190
 
        ./mandos --debug --configdir=confdir
 
287
run-server: confdir/mandos.conf confdir/clients.conf statedir
 
288
        ./mandos --debug --no-dbus --configdir=confdir \
 
289
                --statedir=statedir $(SERVERARGS)
191
290
 
192
291
# Used by run-server
193
292
confdir/mandos.conf: mandos.conf
197
296
        install --directory confdir
198
297
        install --mode=u=rw $< $@
199
298
# Add a client password
200
 
        ./mandos-keygen --dir keydir --password >> $@
 
299
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
 
300
statedir:
 
301
        install --directory statedir
201
302
 
202
303
install: install-server install-client-nokey
203
304
 
204
 
install-html: $(htmldocs)
 
305
install-html: html
205
306
        install --directory $(htmldir)
206
307
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
207
308
                $(htmldocs)
208
309
 
209
310
install-server: doc
210
311
        install --directory $(CONFDIR)
 
312
        if install --directory --mode=u=rwx --owner=$(USER) \
 
313
                --group=$(GROUP) $(STATEDIR); then \
 
314
                :; \
 
315
        elif install --directory --mode=u=rwx $(STATEDIR); then \
 
316
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
 
317
        fi
211
318
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
 
319
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
320
                mandos-ctl
 
321
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
322
                mandos-monitor
212
323
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
213
324
                mandos.conf
214
325
        install --mode=u=rw --target-directory=$(CONFDIR) \
215
326
                clients.conf
 
327
        install --mode=u=rw,go=r dbus-mandos.conf \
 
328
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
216
329
        install --mode=u=rwx,go=rx init.d-mandos \
217
330
                $(DESTDIR)/etc/init.d/mandos
 
331
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
 
332
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
 
333
        fi
218
334
        install --mode=u=rw,go=r default-mandos \
219
335
                $(DESTDIR)/etc/default/mandos
220
336
        if [ -z $(DESTDIR) ]; then \
222
338
        fi
223
339
        gzip --best --to-stdout mandos.8 \
224
340
                > $(MANDIR)/man8/mandos.8.gz
 
341
        gzip --best --to-stdout mandos-monitor.8 \
 
342
                > $(MANDIR)/man8/mandos-monitor.8.gz
 
343
        gzip --best --to-stdout mandos-ctl.8 \
 
344
                > $(MANDIR)/man8/mandos-ctl.8.gz
225
345
        gzip --best --to-stdout mandos.conf.5 \
226
346
                > $(MANDIR)/man5/mandos.conf.5.gz
227
347
        gzip --best --to-stdout mandos-clients.conf.5 \
228
348
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
 
349
        gzip --best --to-stdout intro.8mandos \
 
350
                > $(MANDIR)/man8/intro.8mandos.gz
229
351
 
230
352
install-client-nokey: all doc
231
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
 
353
        install --directory $(LIBDIR)/mandos $(CONFDIR)
232
354
        install --directory --mode=u=rwx $(KEYDIR) \
233
 
                $(PREFIX)/lib/mandos/plugins.d
234
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
 
355
                $(LIBDIR)/mandos/plugins.d
 
356
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
235
357
                install --mode=u=rwx \
236
358
                        --directory "$(CONFDIR)/plugins.d"; \
237
359
        fi
 
360
        install --mode=u=rwx,go=rx --directory \
 
361
                "$(CONFDIR)/network-hooks.d"
238
362
        install --mode=u=rwx,go=rx \
239
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
 
363
                --target-directory=$(LIBDIR)/mandos plugin-runner
240
364
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
241
365
                mandos-keygen
242
366
        install --mode=u=rwx,go=rx \
243
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
367
                --target-directory=$(LIBDIR)/mandos/plugins.d \
244
368
                plugins.d/password-prompt
245
369
        install --mode=u=rwxs,go=rx \
246
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
370
                --target-directory=$(LIBDIR)/mandos/plugins.d \
247
371
                plugins.d/mandos-client
248
372
        install --mode=u=rwxs,go=rx \
249
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
373
                --target-directory=$(LIBDIR)/mandos/plugins.d \
250
374
                plugins.d/usplash
251
375
        install --mode=u=rwxs,go=rx \
252
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
376
                --target-directory=$(LIBDIR)/mandos/plugins.d \
253
377
                plugins.d/splashy
254
378
        install --mode=u=rwxs,go=rx \
255
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
379
                --target-directory=$(LIBDIR)/mandos/plugins.d \
256
380
                plugins.d/askpass-fifo
 
381
        install --mode=u=rwxs,go=rx \
 
382
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
383
                plugins.d/plymouth
257
384
        install initramfs-tools-hook \
258
385
                $(INITRAMFSTOOLS)/hooks/mandos
259
386
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
260
387
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
261
388
        install initramfs-tools-script \
262
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
 
389
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
263
390
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
264
391
        gzip --best --to-stdout mandos-keygen.8 \
265
392
                > $(MANDIR)/man8/mandos-keygen.8.gz
266
393
        gzip --best --to-stdout plugin-runner.8mandos \
267
394
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
395
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
 
396
                > $(MANDIR)/man8/mandos-client.8mandos.gz
268
397
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
269
398
                > $(MANDIR)/man8/password-prompt.8mandos.gz
270
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
271
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
272
399
        gzip --best --to-stdout plugins.d/usplash.8mandos \
273
400
                > $(MANDIR)/man8/usplash.8mandos.gz
274
401
        gzip --best --to-stdout plugins.d/splashy.8mandos \
275
402
                > $(MANDIR)/man8/splashy.8mandos.gz
276
403
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
277
404
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
 
405
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
 
406
                > $(MANDIR)/man8/plymouth.8mandos.gz
278
407
 
279
408
install-client: install-client-nokey
280
409
# Post-installation stuff
286
415
 
287
416
uninstall-server:
288
417
        -rm --force $(PREFIX)/sbin/mandos \
 
418
                $(PREFIX)/sbin/mandos-ctl \
 
419
                $(PREFIX)/sbin/mandos-monitor \
289
420
                $(MANDIR)/man8/mandos.8.gz \
 
421
                $(MANDIR)/man8/mandos-monitor.8.gz \
 
422
                $(MANDIR)/man8/mandos-ctl.8.gz \
290
423
                $(MANDIR)/man5/mandos.conf.5.gz \
291
424
                $(MANDIR)/man5/mandos-clients.conf.5.gz
292
425
        update-rc.d -f mandos remove
298
431
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
299
432
                $(DESTDIR)/etc/crypttab
300
433
        -rm --force $(PREFIX)/sbin/mandos-keygen \
301
 
                $(PREFIX)/lib/mandos/plugin-runner \
302
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
303
 
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
304
 
                $(PREFIX)/lib/mandos/plugins.d/usplash \
305
 
                $(PREFIX)/lib/mandos/plugins.d/splashy \
306
 
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
 
434
                $(LIBDIR)/mandos/plugin-runner \
 
435
                $(LIBDIR)/mandos/plugins.d/password-prompt \
 
436
                $(LIBDIR)/mandos/plugins.d/mandos-client \
 
437
                $(LIBDIR)/mandos/plugins.d/usplash \
 
438
                $(LIBDIR)/mandos/plugins.d/splashy \
 
439
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
 
440
                $(LIBDIR)/mandos/plugins.d/plymouth \
307
441
                $(INITRAMFSTOOLS)/hooks/mandos \
308
442
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
309
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
 
443
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
444
                $(MANDIR)/man8/mandos-keygen.8.gz \
310
445
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
311
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
 
446
                $(MANDIR)/man8/mandos-client.8mandos.gz
312
447
                $(MANDIR)/man8/password-prompt.8mandos.gz \
313
448
                $(MANDIR)/man8/usplash.8mandos.gz \
314
449
                $(MANDIR)/man8/splashy.8mandos.gz \
315
450
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
316
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
317
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
318
 
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
 
451
                $(MANDIR)/man8/plymouth.8mandos.gz \
 
452
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
 
453
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
319
454
        update-initramfs -k all -u
320
455
 
321
456
purge: purge-server purge-client
322
457
 
323
458
purge-server: uninstall-server
324
459
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
 
460
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
325
461
                $(DESTDIR)/etc/default/mandos \
326
462
                $(DESTDIR)/etc/init.d/mandos \
 
463
                $(SYSTEMD)/mandos.service \
 
464
                $(DESTDIR)/run/mandos.pid \
327
465
                $(DESTDIR)/var/run/mandos.pid
328
466
        -rmdir $(CONFDIR)
329
467