/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-29 05:53:59 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080829055359-wkdasnyxtylmnxus
* mandos.xml (EXAMPLE): Replaced all occurences of command name with
                        "&COMMANDNAME;".

* plugins.d/password-prompt.c (main): Improved some documentation
                                      strings.  Do perror() of
                                      tcgetattr() fails.  Add debug
                                      output if interrupted by signal.
                                      Loop over write() instead of
                                      using fwrite() when outputting
                                      password.  Add debug output if
                                      getline() returns 0, unless it
                                      was caused by a signal.  Add
                                      exit status code to debug
                                      output.

* plugins.d/password-prompt.xml: Changed all single quotes to double
                                 quotes for consistency.  Removed
                                 <?xml-stylesheet>.
  (ENTITY TIMESTAMP): New.  Automatically updated by Emacs time-stamp
                      by using Emacs local variables.
  (/refentry/refentryinfo/title): Changed to "Mandos Manual".
  (/refentry/refentryinfo/productname): Changed to "Mandos".
  (/refentry/refentryinfo/date): New; set to "&TIMESTAMP;".
  (/refentry/refentryinfo/copyright): Split copyright holders.
  (/refentry/refnamediv/refpurpose): Improved wording.
  (SYNOPSIS): Fix to use correct markup.  Add short options.
  (DESCRIPTION, OPTIONS): Improved wording.
  (OPTIONS): Improved wording.  Use more correct markup.  Document
             short options.
  (EXIT STATUS): Add text.
  (ENVIRONMENT): Document use of "cryptsource" and "crypttarget".
  (FILES): REMOVED.
  (BUGS): Add text.
  (EXAMPLE): Added some examples.
  (SECURITY): Added text.
  (SEE ALSO): Remove reference to mandos(8).  Add reference to
              crypttab(5).

Show diffs side-by-side

added added

removed removed

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