/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: 2015-01-25 00:02:51 UTC
  • mto: (237.7.304 trunk)
  • mto: This revision was merged to the branch mainline in revision 325.
  • Revision ID: teddy@recompile.se-20150125000251-j2bw50gfq9smqyxe
mandos.xml (SEE ALSO): Update links.

Update link to GnuPG home page, change reference from TLS 1.1 to TLS
1.2, and change to latest RFC for using OpenPGP keys with TLS (and use
its correct title).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs \
2
 
        -Wswitch-default -Wswitch-enum -Wunused-parameter \
3
 
        -Wstrict-aliasing=1 -Wextra -Wfloat-equal -Wundef -Wshadow \
 
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 \
4
6
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
7
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
 
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
 
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
8
 
#       -Wunreachable-code
 
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
9
13
#DEBUG=-ggdb3
10
 
# For info about _FORTIFY_SOURCE, see
11
 
# <http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html>
 
14
# For info about _FORTIFY_SOURCE, see feature_test_macros(7)
12
15
# and <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
13
16
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
14
17
LINK_FORTIFY_LD=-z relro -z now
20
23
LINK_FORTIFY += -pie
21
24
endif
22
25
#COVERAGE=--coverage
23
 
OPTIMIZE=-Os
 
26
OPTIMIZE=-Os -fno-strict-aliasing
24
27
LANGUAGE=-std=gnu99
25
28
htmldir=man
26
 
version=1.4.1
 
29
version=1.6.9
27
30
SED=sed
28
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
 
29
35
## Use these settings for a traditional /usr/local install
30
36
# PREFIX=$(DESTDIR)/usr/local
31
37
# CONFDIR=$(DESTDIR)/etc/mandos
32
38
# KEYDIR=$(DESTDIR)/etc/mandos/keys
33
39
# MANDIR=$(PREFIX)/man
34
40
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
 
41
# STATEDIR=$(DESTDIR)/var/lib/mandos
 
42
# LIBDIR=$(PREFIX)/lib
35
43
##
36
44
 
37
45
## These settings are for a package-type install
40
48
KEYDIR=$(DESTDIR)/etc/keys/mandos
41
49
MANDIR=$(PREFIX)/share/man
42
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)
43
61
##
44
62
 
 
63
SYSTEMD=$(DESTDIR)$(shell pkg-config systemd --variable=systemdsystemunitdir)
 
64
 
45
65
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
46
66
GNUTLS_LIBS=$(shell pkg-config --libs gnutls)
47
67
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
51
71
        getconf LFS_LDFLAGS)
52
72
 
53
73
# Do not change these two
54
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
 
74
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
55
75
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
56
76
        -DVERSION='"$(version)"'
57
 
LDFLAGS=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
 
77
LDFLAGS+=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
58
78
 
59
79
# Commands to format a DocBook <refentry> document into a manual page
60
80
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
63
83
        --param make.single.year.ranges         1 \
64
84
        --param man.output.quietly              1 \
65
85
        --param man.authors.section.enabled     0 \
66
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
86
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
67
87
        $(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'
 
88
        if locale --all 2>/dev/null | grep --regexp='^en_US\.utf8$$' \
 
89
        && type man 2>/dev/null; then LANG=en_US.UTF-8 MANWIDTH=80 \
 
90
        man --warnings --encoding=UTF-8 --local-file $(notdir $@); \
 
91
        fi >/dev/null)
73
92
 
74
93
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
75
94
        --param make.year.ranges                1 \
220
239
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
221
240
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
222
241
 
223
 
.PHONY : all doc html clean distclean run-client run-server install \
224
 
        install-server install-client uninstall uninstall-server \
225
 
        uninstall-client purge purge-server purge-client
 
242
.PHONY : all doc html clean distclean mostlyclean maintainer-clean \
 
243
        check run-client run-server install install-html \
 
244
        install-server install-client-nokey install-client uninstall \
 
245
        uninstall-server uninstall-client purge purge-server \
 
246
        purge-client
226
247
 
227
248
clean:
228
249
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
230
251
distclean: clean
231
252
mostlyclean: clean
232
253
maintainer-clean: clean
233
 
        -rm --force --recursive keydir confdir
 
254
        -rm --force --recursive keydir confdir statedir
234
255
 
235
256
check:  all
236
257
        ./mandos --check
 
258
        ./mandos-ctl --check
237
259
 
238
260
# Run the client with a local config and key
239
261
run-client: all keydir/seckey.txt keydir/pubkey.txt
242
264
        @echo "# ignored.  The messages are caused by not running as root, but   #"
243
265
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
244
266
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
245
 
        @echo "# From plugin-runner: setuid: Operation not permitted             #"
 
267
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
 
268
        @echo "#                     setuid: Operation not permitted             #"
246
269
        @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            #"
 
270
        @echo "# From mandos-client:                                             #"
 
271
        @echo "#             Failed to raise privileges: Operation not permitted #"
 
272
        @echo "#             Warning: network hook \"*\" exited with status *      #"
250
273
        @echo "###################################################################"
 
274
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
251
275
        ./plugin-runner --plugin-dir=plugins.d \
252
276
                --config-file=plugin-runner.conf \
253
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt \
 
277
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
 
278
                --env-for=mandos-client:GNOME_KEYRING_CONTROL= \
254
279
                $(CLIENTARGS)
255
280
 
256
281
# Used by run-client
259
284
        ./mandos-keygen --dir keydir --force
260
285
 
261
286
# Run the server with a local config
262
 
run-server: confdir/mandos.conf confdir/clients.conf
263
 
        ./mandos --debug --no-dbus --configdir=confdir --no-restore \
264
 
        $(SERVERARGS)
 
287
run-server: confdir/mandos.conf confdir/clients.conf statedir
 
288
        ./mandos --debug --no-dbus --configdir=confdir \
 
289
                --statedir=statedir $(SERVERARGS)
265
290
 
266
291
# Used by run-server
267
292
confdir/mandos.conf: mandos.conf
271
296
        install --directory confdir
272
297
        install --mode=u=rw $< $@
273
298
# Add a client password
274
 
        ./mandos-keygen --dir keydir --password >> $@
 
299
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
 
300
statedir:
 
301
        install --directory statedir
275
302
 
276
303
install: install-server install-client-nokey
277
304
 
282
309
 
283
310
install-server: doc
284
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
285
318
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
286
319
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
287
320
                mandos-ctl
295
328
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
296
329
        install --mode=u=rwx,go=rx init.d-mandos \
297
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
298
334
        install --mode=u=rw,go=r default-mandos \
299
335
                $(DESTDIR)/etc/default/mandos
300
336
        if [ -z $(DESTDIR) ]; then \
310
346
                > $(MANDIR)/man5/mandos.conf.5.gz
311
347
        gzip --best --to-stdout mandos-clients.conf.5 \
312
348
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
 
349
        gzip --best --to-stdout intro.8mandos \
 
350
                > $(MANDIR)/man8/intro.8mandos.gz
313
351
 
314
352
install-client-nokey: all doc
315
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
 
353
        install --directory $(LIBDIR)/mandos $(CONFDIR)
316
354
        install --directory --mode=u=rwx $(KEYDIR) \
317
 
                $(PREFIX)/lib/mandos/plugins.d
318
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
 
355
                $(LIBDIR)/mandos/plugins.d
 
356
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
319
357
                install --mode=u=rwx \
320
358
                        --directory "$(CONFDIR)/plugins.d"; \
321
359
        fi
 
360
        install --mode=u=rwx,go=rx --directory \
 
361
                "$(CONFDIR)/network-hooks.d"
322
362
        install --mode=u=rwx,go=rx \
323
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
 
363
                --target-directory=$(LIBDIR)/mandos plugin-runner
324
364
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
325
365
                mandos-keygen
326
366
        install --mode=u=rwx,go=rx \
327
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
367
                --target-directory=$(LIBDIR)/mandos/plugins.d \
328
368
                plugins.d/password-prompt
329
369
        install --mode=u=rwxs,go=rx \
330
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
370
                --target-directory=$(LIBDIR)/mandos/plugins.d \
331
371
                plugins.d/mandos-client
332
372
        install --mode=u=rwxs,go=rx \
333
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
373
                --target-directory=$(LIBDIR)/mandos/plugins.d \
334
374
                plugins.d/usplash
335
375
        install --mode=u=rwxs,go=rx \
336
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
376
                --target-directory=$(LIBDIR)/mandos/plugins.d \
337
377
                plugins.d/splashy
338
378
        install --mode=u=rwxs,go=rx \
339
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
379
                --target-directory=$(LIBDIR)/mandos/plugins.d \
340
380
                plugins.d/askpass-fifo
341
381
        install --mode=u=rwxs,go=rx \
342
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
382
                --target-directory=$(LIBDIR)/mandos/plugins.d \
343
383
                plugins.d/plymouth
344
384
        install initramfs-tools-hook \
345
385
                $(INITRAMFSTOOLS)/hooks/mandos
391
431
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
392
432
                $(DESTDIR)/etc/crypttab
393
433
        -rm --force $(PREFIX)/sbin/mandos-keygen \
394
 
                $(PREFIX)/lib/mandos/plugin-runner \
395
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
396
 
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
397
 
                $(PREFIX)/lib/mandos/plugins.d/usplash \
398
 
                $(PREFIX)/lib/mandos/plugins.d/splashy \
399
 
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
400
 
                $(PREFIX)/lib/mandos/plugins.d/plymouth \
 
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 \
401
441
                $(INITRAMFSTOOLS)/hooks/mandos \
402
442
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
403
443
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
409
449
                $(MANDIR)/man8/splashy.8mandos.gz \
410
450
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
411
451
                $(MANDIR)/man8/plymouth.8mandos.gz \
412
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
413
 
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
 
452
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
 
453
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
414
454
        update-initramfs -k all -u
415
455
 
416
456
purge: purge-server purge-client
420
460
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
421
461
                $(DESTDIR)/etc/default/mandos \
422
462
                $(DESTDIR)/etc/init.d/mandos \
 
463
                $(SYSTEMD)/mandos.service \
 
464
                $(DESTDIR)/run/mandos.pid \
423
465
                $(DESTDIR)/var/run/mandos.pid
424
466
        -rmdir $(CONFDIR)
425
467