/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: 2008-08-02 10:48:24 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080802104824-fx0miwp9o4g9r31e
* plugbasedclient.c (struct process): New fields "eof", "completed",
                                      and "status".
  (handle_sigchld): New function.
  (main): Initialize "dir" to NULL to only closedir() it if necessary.
          Move "process_list" to be a global variable to be accessible
          by "handle_sigchld".  Make "handle_sigchld" handle SIGCHLD.
          Remove redundant check for NULL "dir".  Free "filename" when
          no longer used.  Block SIGCHLD around fork()/exec().
          Restore normal signals in child.  Only loop while running
          processes exist.  Print process buffer when the process is
          done and it has emitted EOF, not when it only emits EOF.
          Remove processes from list which exit non-cleanly.  In
          cleaning up, closedir() if necessary.  Bug fix: set next
          pointer correctly when freeing process list.

* plugins.d/passprompt.c (main): Do not ignore SIGQUIT.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 \
6
 
        -Wunsafe-loop-optimizations -Wpointer-arith \
7
 
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
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
13
 
#DEBUG=-ggdb3
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
 
1
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-parameter -Wstrict-aliasing=2 -Wextra -Wfloat-equal -Wundef -Wshadow -Wunsafe-loop-optimizations -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes -Wold-style-definition -Wpacked -Wnested-externs -Wunreachable-code -Winline -Wvolatile-register-var 
 
2
DEBUG=-ggdb3
 
3
# For info about _FORTIFY_SOURCE, see
 
4
# <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>
 
5
FORTIFY=-D_FORTIFY_SOURCE=2 # -fstack-protector-all
25
6
#COVERAGE=--coverage
26
 
OPTIMIZE=-Os -fno-strict-aliasing
 
7
OPTIMIZE=-Os
27
8
LANGUAGE=-std=gnu99
28
 
htmldir=man
29
 
version=1.6.4
30
 
SED=sed
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
 
 
35
 
## Use these settings for a traditional /usr/local install
36
 
# PREFIX=$(DESTDIR)/usr/local
37
 
# CONFDIR=$(DESTDIR)/etc/mandos
38
 
# KEYDIR=$(DESTDIR)/etc/mandos/keys
39
 
# MANDIR=$(PREFIX)/man
40
 
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
41
 
# STATEDIR=$(DESTDIR)/var/lib/mandos
42
 
# LIBDIR=$(PREFIX)/lib
43
 
##
44
 
 
45
 
## These settings are for a package-type install
46
 
PREFIX=$(DESTDIR)/usr
47
 
CONFDIR=$(DESTDIR)/etc/mandos
48
 
KEYDIR=$(DESTDIR)/etc/keys/mandos
49
 
MANDIR=$(PREFIX)/share/man
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)
61
 
##
62
 
 
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)
67
 
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
68
 
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
69
 
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
70
 
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
71
 
        getconf LFS_LDFLAGS)
72
9
 
73
10
# Do not change these two
74
 
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
75
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
76
 
        -DVERSION='"$(version)"'
77
 
LDFLAGS+=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
78
 
 
79
 
# Commands to format a DocBook <refentry> document into a manual page
80
 
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
81
 
        --param man.charmap.use.subset          0 \
82
 
        --param make.year.ranges                1 \
83
 
        --param make.single.year.ranges         1 \
84
 
        --param man.output.quietly              1 \
85
 
        --param man.authors.section.enabled     0 \
86
 
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
87
 
        $(notdir $<); \
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)
92
 
 
93
 
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
94
 
        --param make.year.ranges                1 \
95
 
        --param make.single.year.ranges         1 \
96
 
        --param man.output.quietly              1 \
97
 
        --param man.authors.section.enabled     0 \
98
 
        --param citerefentry.link               1 \
99
 
        --output $@ \
100
 
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
101
 
        $<; $(HTMLPOST) $@)
102
 
# Fix citerefentry links
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'
105
 
 
106
 
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
107
 
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
108
 
        plugins.d/plymouth
109
 
CPROGS=plugin-runner $(PLUGINS)
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 \
113
 
        plugins.d/mandos-client.8mandos \
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
117
 
 
118
 
htmldocs=$(addsuffix .xhtml,$(DOCS))
119
 
 
120
 
objects=$(addsuffix .o,$(CPROGS))
121
 
 
122
 
all: $(PROGS) mandos.lsm
123
 
 
124
 
doc: $(DOCS)
125
 
 
126
 
html: $(htmldocs)
127
 
 
128
 
%.5: %.xml common.ent legalnotice.xml
129
 
        $(DOCBOOKTOMAN)
130
 
%.5.xhtml: %.xml common.ent legalnotice.xml
131
 
        $(DOCBOOKTOHTML)
132
 
 
133
 
%.8: %.xml common.ent legalnotice.xml
134
 
        $(DOCBOOKTOMAN)
135
 
%.8.xhtml: %.xml common.ent legalnotice.xml
136
 
        $(DOCBOOKTOHTML)
137
 
 
138
 
%.8mandos: %.xml common.ent legalnotice.xml
139
 
        $(DOCBOOKTOMAN)
140
 
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
141
 
        $(DOCBOOKTOHTML)
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
 
 
148
 
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
149
 
                legalnotice.xml
150
 
        $(DOCBOOKTOMAN)
151
 
mandos.8.xhtml: mandos.xml common.ent mandos-options.xml \
152
 
                overview.xml legalnotice.xml
153
 
        $(DOCBOOKTOHTML)
154
 
 
155
 
mandos-keygen.8: mandos-keygen.xml common.ent overview.xml \
156
 
                legalnotice.xml
157
 
        $(DOCBOOKTOMAN)
158
 
mandos-keygen.8.xhtml: mandos-keygen.xml common.ent overview.xml \
159
 
                 legalnotice.xml
160
 
        $(DOCBOOKTOHTML)
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
 
 
176
 
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
177
 
                legalnotice.xml
178
 
        $(DOCBOOKTOMAN)
179
 
mandos.conf.5.xhtml: mandos.conf.xml common.ent mandos-options.xml \
180
 
                legalnotice.xml
181
 
        $(DOCBOOKTOHTML)
182
 
 
183
 
plugin-runner.8mandos: plugin-runner.xml common.ent overview.xml \
184
 
                legalnotice.xml
185
 
        $(DOCBOOKTOMAN)
186
 
plugin-runner.8mandos.xhtml: plugin-runner.xml common.ent \
187
 
                overview.xml legalnotice.xml
188
 
        $(DOCBOOKTOHTML)
189
 
 
190
 
plugins.d/mandos-client.8mandos: plugins.d/mandos-client.xml \
191
 
                                        common.ent \
192
 
                                        mandos-options.xml \
193
 
                                        overview.xml legalnotice.xml
194
 
        $(DOCBOOKTOMAN)
195
 
plugins.d/mandos-client.8mandos.xhtml: plugins.d/mandos-client.xml \
196
 
                                        common.ent \
197
 
                                        mandos-options.xml \
198
 
                                        overview.xml legalnotice.xml
199
 
        $(DOCBOOKTOHTML)
200
 
 
201
 
# Update all these files with version number $(version)
202
 
common.ent: Makefile
203
 
        $(strip $(SED) --in-place \
204
 
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
205
 
                $@)
206
 
 
207
 
mandos: Makefile
208
 
        $(strip $(SED) --in-place \
209
 
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
210
 
                $@)
211
 
 
212
 
mandos-keygen: Makefile
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
247
 
 
 
11
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) $(LANGUAGE)
 
12
LDFLAGS=$(COVERAGE)
 
13
 
 
14
PROGS=plugbasedclient plugins.d/mandosclient plugins.d/passprompt
 
15
 
 
16
objects=$(shell for p in $(PROGS); do echo $${p}.o; done)
 
17
 
 
18
all: $(PROGS)
 
19
 
 
20
plugbasedclient: plugbasedclient.o
 
21
        $(LINK.o) -lgnutls $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
22
 
 
23
plugins.d/mandosclient: plugins.d/mandosclient.o
 
24
        $(LINK.o) -lgnutls -lavahi-core -lgpgme $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
25
 
 
26
plugins.d/passprompt: plugins.d/passprompt.o
 
27
        $(LINK.o) $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
28
 
 
29
.PHONY : clean
248
30
clean:
249
 
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
250
 
 
251
 
distclean: clean
252
 
mostlyclean: clean
253
 
maintainer-clean: clean
254
 
        -rm --force --recursive keydir confdir statedir
255
 
 
256
 
check:  all
257
 
        ./mandos --check
258
 
        ./mandos-ctl --check
259
 
 
260
 
# Run the client with a local config and key
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: setuid: Operation not permitted             #"
268
 
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
269
 
        @echo "# From mandos-client: setuid: Operation not permitted             #"
270
 
        @echo "#                     seteuid: Operation not permitted            #"
271
 
        @echo "#                     klogctl: Operation not permitted            #"
272
 
        @echo "###################################################################"
273
 
        ./plugin-runner --plugin-dir=plugins.d \
274
 
                --config-file=plugin-runner.conf \
275
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
276
 
                $(CLIENTARGS)
277
 
 
278
 
# Used by run-client
279
 
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
280
 
        install --directory keydir
281
 
        ./mandos-keygen --dir keydir --force
282
 
 
283
 
# Run the server with a local config
284
 
run-server: confdir/mandos.conf confdir/clients.conf statedir
285
 
        ./mandos --debug --no-dbus --configdir=confdir \
286
 
                --statedir=statedir $(SERVERARGS)
287
 
 
288
 
# Used by run-server
289
 
confdir/mandos.conf: mandos.conf
290
 
        install --directory confdir
291
 
        install --mode=u=rw,go=r $^ $@
292
 
confdir/clients.conf: clients.conf keydir/seckey.txt
293
 
        install --directory confdir
294
 
        install --mode=u=rw $< $@
295
 
# Add a client password
296
 
        ./mandos-keygen --dir keydir --password >> $@
297
 
statedir:
298
 
        install --directory statedir
299
 
 
300
 
install: install-server install-client-nokey
301
 
 
302
 
install-html: html
303
 
        install --directory $(htmldir)
304
 
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
305
 
                $(htmldocs)
306
 
 
307
 
install-server: doc
308
 
        install --directory $(CONFDIR)
309
 
        if install --directory --mode=u=rwx --owner=$(USER) \
310
 
                --group=$(GROUP) $(STATEDIR); then \
311
 
                :; \
312
 
        elif install --directory --mode=u=rwx $(STATEDIR); then \
313
 
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
314
 
        fi
315
 
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
316
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
317
 
                mandos-ctl
318
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
319
 
                mandos-monitor
320
 
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
321
 
                mandos.conf
322
 
        install --mode=u=rw --target-directory=$(CONFDIR) \
323
 
                clients.conf
324
 
        install --mode=u=rw,go=r dbus-mandos.conf \
325
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
326
 
        install --mode=u=rwx,go=rx init.d-mandos \
327
 
                $(DESTDIR)/etc/init.d/mandos
328
 
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
329
 
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
330
 
        fi
331
 
        install --mode=u=rw,go=r default-mandos \
332
 
                $(DESTDIR)/etc/default/mandos
333
 
        if [ -z $(DESTDIR) ]; then \
334
 
                update-rc.d mandos defaults 25 15;\
335
 
        fi
336
 
        gzip --best --to-stdout mandos.8 \
337
 
                > $(MANDIR)/man8/mandos.8.gz
338
 
        gzip --best --to-stdout mandos-monitor.8 \
339
 
                > $(MANDIR)/man8/mandos-monitor.8.gz
340
 
        gzip --best --to-stdout mandos-ctl.8 \
341
 
                > $(MANDIR)/man8/mandos-ctl.8.gz
342
 
        gzip --best --to-stdout mandos.conf.5 \
343
 
                > $(MANDIR)/man5/mandos.conf.5.gz
344
 
        gzip --best --to-stdout mandos-clients.conf.5 \
345
 
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
346
 
        gzip --best --to-stdout intro.8mandos \
347
 
                > $(MANDIR)/man8/intro.8mandos.gz
348
 
 
349
 
install-client-nokey: all doc
350
 
        install --directory $(LIBDIR)/mandos $(CONFDIR)
351
 
        install --directory --mode=u=rwx $(KEYDIR) \
352
 
                $(LIBDIR)/mandos/plugins.d
353
 
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
354
 
                install --mode=u=rwx \
355
 
                        --directory "$(CONFDIR)/plugins.d"; \
356
 
        fi
357
 
        install --mode=u=rwx,go=rx --directory \
358
 
                "$(CONFDIR)/network-hooks.d"
359
 
        install --mode=u=rwx,go=rx \
360
 
                --target-directory=$(LIBDIR)/mandos plugin-runner
361
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
362
 
                mandos-keygen
363
 
        install --mode=u=rwx,go=rx \
364
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
365
 
                plugins.d/password-prompt
366
 
        install --mode=u=rwxs,go=rx \
367
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
368
 
                plugins.d/mandos-client
369
 
        install --mode=u=rwxs,go=rx \
370
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
371
 
                plugins.d/usplash
372
 
        install --mode=u=rwxs,go=rx \
373
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
374
 
                plugins.d/splashy
375
 
        install --mode=u=rwxs,go=rx \
376
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
377
 
                plugins.d/askpass-fifo
378
 
        install --mode=u=rwxs,go=rx \
379
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
380
 
                plugins.d/plymouth
381
 
        install initramfs-tools-hook \
382
 
                $(INITRAMFSTOOLS)/hooks/mandos
383
 
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
384
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
385
 
        install initramfs-tools-script \
386
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
387
 
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
388
 
        gzip --best --to-stdout mandos-keygen.8 \
389
 
                > $(MANDIR)/man8/mandos-keygen.8.gz
390
 
        gzip --best --to-stdout plugin-runner.8mandos \
391
 
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
392
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
393
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
394
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
395
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
396
 
        gzip --best --to-stdout plugins.d/usplash.8mandos \
397
 
                > $(MANDIR)/man8/usplash.8mandos.gz
398
 
        gzip --best --to-stdout plugins.d/splashy.8mandos \
399
 
                > $(MANDIR)/man8/splashy.8mandos.gz
400
 
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
401
 
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
402
 
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
403
 
                > $(MANDIR)/man8/plymouth.8mandos.gz
404
 
 
405
 
install-client: install-client-nokey
406
 
# Post-installation stuff
407
 
        -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
408
 
        update-initramfs -k all -u
409
 
        echo "Now run mandos-keygen --password --dir $(KEYDIR)"
410
 
 
411
 
uninstall: uninstall-server uninstall-client
412
 
 
413
 
uninstall-server:
414
 
        -rm --force $(PREFIX)/sbin/mandos \
415
 
                $(PREFIX)/sbin/mandos-ctl \
416
 
                $(PREFIX)/sbin/mandos-monitor \
417
 
                $(MANDIR)/man8/mandos.8.gz \
418
 
                $(MANDIR)/man8/mandos-monitor.8.gz \
419
 
                $(MANDIR)/man8/mandos-ctl.8.gz \
420
 
                $(MANDIR)/man5/mandos.conf.5.gz \
421
 
                $(MANDIR)/man5/mandos-clients.conf.5.gz
422
 
        update-rc.d -f mandos remove
423
 
        -rmdir $(CONFDIR)
424
 
 
425
 
uninstall-client:
426
 
# Refuse to uninstall client if /etc/crypttab is explicitly configured
427
 
# to use it.
428
 
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
429
 
                $(DESTDIR)/etc/crypttab
430
 
        -rm --force $(PREFIX)/sbin/mandos-keygen \
431
 
                $(LIBDIR)/mandos/plugin-runner \
432
 
                $(LIBDIR)/mandos/plugins.d/password-prompt \
433
 
                $(LIBDIR)/mandos/plugins.d/mandos-client \
434
 
                $(LIBDIR)/mandos/plugins.d/usplash \
435
 
                $(LIBDIR)/mandos/plugins.d/splashy \
436
 
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
437
 
                $(LIBDIR)/mandos/plugins.d/plymouth \
438
 
                $(INITRAMFSTOOLS)/hooks/mandos \
439
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
440
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
441
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
442
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
443
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
444
 
                $(MANDIR)/man8/password-prompt.8mandos.gz \
445
 
                $(MANDIR)/man8/usplash.8mandos.gz \
446
 
                $(MANDIR)/man8/splashy.8mandos.gz \
447
 
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
448
 
                $(MANDIR)/man8/plymouth.8mandos.gz \
449
 
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
450
 
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
451
 
        update-initramfs -k all -u
452
 
 
453
 
purge: purge-server purge-client
454
 
 
455
 
purge-server: uninstall-server
456
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
457
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
458
 
                $(DESTDIR)/etc/default/mandos \
459
 
                $(DESTDIR)/etc/init.d/mandos \
460
 
                $(SYSTEMD)/mandos.service \
461
 
                $(DESTDIR)/run/mandos.pid \
462
 
                $(DESTDIR)/var/run/mandos.pid
463
 
        -rmdir $(CONFDIR)
464
 
 
465
 
purge-client: uninstall-client
466
 
        -shred --remove $(KEYDIR)/seckey.txt
467
 
        -rm --force $(CONFDIR)/plugin-runner.conf \
468
 
                $(KEYDIR)/pubkey.txt $(KEYDIR)/seckey.txt
469
 
        -rmdir $(KEYDIR) $(CONFDIR)/plugins.d $(CONFDIR)
 
31
        -rm -f $(PROGS) $(objects) core