/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.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
 
# LIBDIR=$(PREFIX)/lib
40
 
##
41
 
 
42
 
## These settings are for a package-type install
 
16
# PREFIX=/usr/local
43
17
PREFIX=$(DESTDIR)/usr
 
18
# CONFDIR=/usr/local/lib/mandos
44
19
CONFDIR=$(DESTDIR)/etc/mandos
45
 
KEYDIR=$(DESTDIR)/etc/keys/mandos
46
 
MANDIR=$(PREFIX)/share/man
47
 
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
48
 
STATEDIR=$(DESTDIR)/var/lib/mandos
49
 
LIBDIR=$(shell \
50
 
        for d in \
51
 
        "/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`" \
52
 
        "`rpm --eval='%{_libdir}' 2>/dev/null`" /usr/lib; do \
53
 
                if [ -d "$$d" -a "$$d" = "$${d%/}" ]; then \
54
 
                        echo "$(DESTDIR)$$d"; \
55
 
                        break; \
56
 
                fi; \
57
 
        done)
58
 
##
59
 
 
60
 
SYSTEMD=$(DESTDIR)$(shell pkg-config systemd --variable=systemdsystemunitdir)
61
 
 
62
 
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
63
 
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)
64
25
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
65
26
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
66
 
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
67
 
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
68
 
        getconf LFS_LDFLAGS)
 
27
GPGME_CFLAGS=$(shell gpgme-config --cflags)
 
28
GPGME_LIBS=$(shell gpgme-config --libs)
69
29
 
70
30
# Do not change these two
71
 
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
72
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
73
 
        -DVERSION='"$(version)"'
74
 
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)
75
34
 
76
 
# Commands to format a DocBook <refentry> document into a manual page
77
 
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 \
78
37
        --param man.charmap.use.subset          0 \
79
38
        --param make.year.ranges                1 \
80
39
        --param make.single.year.ranges         1 \
81
40
        --param man.output.quietly              1 \
82
41
        --param man.authors.section.enabled     0 \
83
 
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
42
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
84
43
        $(notdir $<); \
85
 
        $(MANPOST) $(notdir $@);\
86
 
        if locale --all 2>/dev/null | grep --regexp='^en_US\.utf8$$' \
87
 
        && type man 2>/dev/null; then LANG=en_US.UTF-8 MANWIDTH=80 \
88
 
        man --warnings --encoding=UTF-8 --local-file $(notdir $@); \
89
 
        fi >/dev/null)
90
 
# DocBook-to-man post-processing to fix a '\n' escape bug
91
 
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
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
 
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)
123
58
 
124
59
doc: $(DOCS)
125
60
 
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 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 \
243
81
        install-server install-client uninstall uninstall-server \
244
82
        uninstall-client purge purge-server purge-client
245
83
 
246
84
clean:
247
 
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
 
85
        -rm --force $(PROGS) $(objects) $(DOCS) core
248
86
 
249
87
distclean: clean
250
88
mostlyclean: clean
251
89
maintainer-clean: clean
252
 
        -rm --force --recursive keydir confdir statedir
 
90
        -rm --force --recursive keydir confdir
253
91
 
254
 
check:  all
 
92
check:
255
93
        ./mandos --check
256
 
        ./mandos-ctl --check
257
94
 
258
 
# Run the client with a local config and key
259
 
run-client: all keydir/seckey.txt keydir/pubkey.txt
260
 
        @echo "###################################################################"
261
 
        @echo "# The following error messages are harmless and can be safely     #"
262
 
        @echo "# ignored.  The messages are caused by not running as root, but   #"
263
 
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
264
 
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
265
 
        @echo "# From plugin-runner: setuid: Operation not permitted             #"
266
 
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
267
 
        @echo "# From mandos-client: setuid: Operation not permitted             #"
268
 
        @echo "#                     seteuid: Operation not permitted            #"
269
 
        @echo "#                     klogctl: Operation not permitted            #"
270
 
        @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
271
98
        ./plugin-runner --plugin-dir=plugins.d \
272
 
                --config-file=plugin-runner.conf \
273
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
274
 
                $(CLIENTARGS)
 
99
                --options-for=password-request:--keydir=keydir
275
100
 
276
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 $^
277
106
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
278
107
        install --directory keydir
279
108
        ./mandos-keygen --dir keydir --force
280
109
 
281
110
# Run the server with a local config
282
 
run-server: confdir/mandos.conf confdir/clients.conf statedir
283
 
        ./mandos --debug --no-dbus --configdir=confdir \
284
 
                --statedir=statedir $(SERVERARGS)
 
111
run-server: confdir/mandos.conf confdir/clients.conf
 
112
        ./mandos --debug --configdir=confdir
285
113
 
286
114
# Used by run-server
287
115
confdir/mandos.conf: mandos.conf
288
116
        install --directory confdir
289
 
        install --mode=u=rw,go=r $^ $@
 
117
        install $^ $@
290
118
confdir/clients.conf: clients.conf keydir/seckey.txt
291
119
        install --directory confdir
292
 
        install --mode=u=rw $< $@
 
120
        install clients.conf $@
293
121
# Add a client password
294
122
        ./mandos-keygen --dir keydir --password >> $@
295
 
statedir:
296
 
        install --directory statedir
297
 
 
298
 
install: install-server install-client-nokey
299
 
 
300
 
install-html: html
301
 
        install --directory $(htmldir)
302
 
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
303
 
                $(htmldocs)
 
123
 
 
124
install: install-server install-client
304
125
 
305
126
install-server: doc
306
 
        install --directory $(CONFDIR)
307
 
        if install --directory --mode=u=rwx --owner=$(USER) \
308
 
                --group=$(GROUP) $(STATEDIR); then \
309
 
                :; \
310
 
        elif install --directory --mode=u=rwx $(STATEDIR); then \
311
 
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
312
 
        fi
313
 
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
314
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
315
 
                mandos-ctl
316
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
317
 
                mandos-monitor
318
 
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
319
 
                mandos.conf
320
 
        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) \
321
132
                clients.conf
322
 
        install --mode=u=rw,go=r dbus-mandos.conf \
323
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
324
 
        install --mode=u=rwx,go=rx init.d-mandos \
325
 
                $(DESTDIR)/etc/init.d/mandos
326
 
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
327
 
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
328
 
        fi
329
 
        install --mode=u=rw,go=r default-mandos \
330
 
                $(DESTDIR)/etc/default/mandos
331
 
        if [ -z $(DESTDIR) ]; then \
332
 
                update-rc.d mandos defaults 25 15;\
333
 
        fi
334
133
        gzip --best --to-stdout mandos.8 \
335
134
                > $(MANDIR)/man8/mandos.8.gz
336
 
        gzip --best --to-stdout mandos-monitor.8 \
337
 
                > $(MANDIR)/man8/mandos-monitor.8.gz
338
 
        gzip --best --to-stdout mandos-ctl.8 \
339
 
                > $(MANDIR)/man8/mandos-ctl.8.gz
340
135
        gzip --best --to-stdout mandos.conf.5 \
341
136
                > $(MANDIR)/man5/mandos.conf.5.gz
342
137
        gzip --best --to-stdout mandos-clients.conf.5 \
343
138
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
344
 
        gzip --best --to-stdout intro.8mandos \
345
 
                > $(MANDIR)/man8/intro.8mandos.gz
346
139
 
347
 
install-client-nokey: all doc
348
 
        install --directory $(LIBDIR)/mandos $(CONFDIR)
349
 
        install --directory --mode=u=rwx $(KEYDIR) \
350
 
                $(LIBDIR)/mandos/plugins.d
351
 
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
352
 
                install --mode=u=rwx \
353
 
                        --directory "$(CONFDIR)/plugins.d"; \
354
 
        fi
355
 
        install --mode=u=rwx,go=rx --directory \
356
 
                "$(CONFDIR)/network-hooks.d"
357
 
        install --mode=u=rwx,go=rx \
358
 
                --target-directory=$(LIBDIR)/mandos plugin-runner
359
 
        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 \
360
148
                mandos-keygen
361
 
        install --mode=u=rwx,go=rx \
362
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
149
        install --mode=0755 \
 
150
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
363
151
                plugins.d/password-prompt
364
 
        install --mode=u=rwxs,go=rx \
365
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
366
 
                plugins.d/mandos-client
367
 
        install --mode=u=rwxs,go=rx \
368
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
369
 
                plugins.d/usplash
370
 
        install --mode=u=rwxs,go=rx \
371
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
372
 
                plugins.d/splashy
373
 
        install --mode=u=rwxs,go=rx \
374
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
375
 
                plugins.d/askpass-fifo
376
 
        install --mode=u=rwxs,go=rx \
377
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
378
 
                plugins.d/plymouth
 
152
        install --mode=4755 \
 
153
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
154
                plugins.d/password-request
379
155
        install initramfs-tools-hook \
380
 
                $(INITRAMFSTOOLS)/hooks/mandos
381
 
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
382
 
                $(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
383
159
        install initramfs-tools-script \
384
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
385
 
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
 
160
                /usr/share/initramfs-tools/scripts/local-top/mandos
386
161
        gzip --best --to-stdout mandos-keygen.8 \
387
162
                > $(MANDIR)/man8/mandos-keygen.8.gz
388
163
        gzip --best --to-stdout plugin-runner.8mandos \
389
164
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
390
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
391
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
392
165
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
393
166
                > $(MANDIR)/man8/password-prompt.8mandos.gz
394
 
        gzip --best --to-stdout plugins.d/usplash.8mandos \
395
 
                > $(MANDIR)/man8/usplash.8mandos.gz
396
 
        gzip --best --to-stdout plugins.d/splashy.8mandos \
397
 
                > $(MANDIR)/man8/splashy.8mandos.gz
398
 
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
399
 
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
400
 
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
401
 
                > $(MANDIR)/man8/plymouth.8mandos.gz
402
 
 
403
 
install-client: install-client-nokey
404
 
# Post-installation stuff
405
 
        -$(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
406
170
        update-initramfs -k all -u
407
 
        echo "Now run mandos-keygen --password --dir $(KEYDIR)"
408
171
 
409
172
uninstall: uninstall-server uninstall-client
410
173
 
411
 
uninstall-server:
 
174
uninstall-server: $(PREFIX)/sbin/mandos
412
175
        -rm --force $(PREFIX)/sbin/mandos \
413
 
                $(PREFIX)/sbin/mandos-ctl \
414
 
                $(PREFIX)/sbin/mandos-monitor \
415
176
                $(MANDIR)/man8/mandos.8.gz \
416
 
                $(MANDIR)/man8/mandos-monitor.8.gz \
417
 
                $(MANDIR)/man8/mandos-ctl.8.gz \
418
177
                $(MANDIR)/man5/mandos.conf.5.gz \
419
178
                $(MANDIR)/man5/mandos-clients.conf.5.gz
420
 
        update-rc.d -f mandos remove
421
179
        -rmdir $(CONFDIR)
422
180
 
423
181
uninstall-client:
424
182
# Refuse to uninstall client if /etc/crypttab is explicitly configured
425
183
# to use it.
426
184
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
427
 
                $(DESTDIR)/etc/crypttab
 
185
                /etc/crypttab
428
186
        -rm --force $(PREFIX)/sbin/mandos-keygen \
429
 
                $(LIBDIR)/mandos/plugin-runner \
430
 
                $(LIBDIR)/mandos/plugins.d/password-prompt \
431
 
                $(LIBDIR)/mandos/plugins.d/mandos-client \
432
 
                $(LIBDIR)/mandos/plugins.d/usplash \
433
 
                $(LIBDIR)/mandos/plugins.d/splashy \
434
 
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
435
 
                $(LIBDIR)/mandos/plugins.d/plymouth \
436
 
                $(INITRAMFSTOOLS)/hooks/mandos \
437
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
438
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
187
                $(PREFIX)/lib/mandos/plugin-runner \
 
188
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
 
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 \
439
193
                $(MANDIR)/man8/mandos-keygen.8.gz \
440
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
441
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
442
194
                $(MANDIR)/man8/password-prompt.8mandos.gz \
443
 
                $(MANDIR)/man8/usplash.8mandos.gz \
444
 
                $(MANDIR)/man8/splashy.8mandos.gz \
445
 
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
446
 
                $(MANDIR)/man8/plymouth.8mandos.gz \
447
 
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
448
 
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
 
195
                $(MANDIR)/man8/password-request.8mandos.gz
 
196
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
 
197
                 $(PREFIX)/lib/mandos $(CONFDIR)
449
198
        update-initramfs -k all -u
450
199
 
451
200
purge: purge-server purge-client
452
201
 
453
202
purge-server: uninstall-server
454
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
455
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
456
 
                $(DESTDIR)/etc/default/mandos \
457
 
                $(DESTDIR)/etc/init.d/mandos \
458
 
                $(SYSTEMD)/mandos.service \
459
 
                $(DESTDIR)/run/mandos.pid \
460
 
                $(DESTDIR)/var/run/mandos.pid
 
203
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf
461
204
        -rmdir $(CONFDIR)
462
205
 
463
206
purge-client: uninstall-client
464
 
        -shred --remove $(KEYDIR)/seckey.txt
465
 
        -rm --force $(CONFDIR)/plugin-runner.conf \
466
 
                $(KEYDIR)/pubkey.txt $(KEYDIR)/seckey.txt
467
 
        -rmdir $(KEYDIR) $(CONFDIR)/plugins.d $(CONFDIR)
 
207
        -rm --force $(CONFDIR)/seckey.txt $(CONFDIR)/pubkey.txt
 
208
        -rmdir $(CONFDIR) $(CONFDIR)/plugins.d