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