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