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