/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: 2024-11-17 18:43:11 UTC
  • mto: This revision was merged to the branch mainline in revision 412.
  • Revision ID: teddy@recompile.se-20241117184311-ox25kvngy62h209g
Debian package: Avoid suggesting a C compiler unnecessarily

The list of suggested packages, meant to enable the "mandos" program
to find the correct value of SO_BINDTODEVICE by using a C compiler,
are not necessary when Python 3.3 or later is used, since it has the
SO_BINDTODEVICE constant defined in the "socket" module.  Also, Python
2.6 or older has the same constant in the old "IN" module.  Therefore,
we should suggest these Python versions as alternatives to a C
compiler, so that a C compiler is not installed unnecessarily.

debian/control (Package: mandos/Suggests): Add "python3 (>= 3.3)" and
"python (<= 2.6)" as alternatives to "libc6-dev | libc-dev" and
"c-compiler".

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
 
30
30
# For info about _FORTIFY_SOURCE, see feature_test_macros(7)
31
31
# and <https://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
32
 
FORTIFY:=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
 
32
FORTIFY:=-fstack-protector-all -fPIC
 
33
CPPFLAGS+=-D_FORTIFY_SOURCE=3
33
34
LINK_FORTIFY_LD:=-z relro -z now
34
35
LINK_FORTIFY:=
35
36
 
41
42
#COVERAGE=--coverage
42
43
OPTIMIZE:=-Os -fno-strict-aliasing
43
44
LANGUAGE:=-std=gnu11
 
45
CPPFLAGS+=-D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
44
46
htmldir:=man
45
 
version:=1.8.4
 
47
version:=1.8.17
46
48
SED:=sed
 
49
PKG_CONFIG?=pkg-config
47
50
 
48
51
USER:=$(firstword $(subst :, ,$(shell getent passwd _mandos \
49
52
        || getent passwd nobody || echo 65534)))
50
53
GROUP:=$(firstword $(subst :, ,$(shell getent group _mandos \
51
54
        || getent group nogroup || echo 65534)))
52
55
 
 
56
LINUXVERSION:=$(shell uname --kernel-release)
 
57
 
53
58
## Use these settings for a traditional /usr/local install
54
59
# PREFIX:=$(DESTDIR)/usr/local
 
60
# BINDIR:=$(PREFIX)/sbin
55
61
# CONFDIR:=$(DESTDIR)/etc/mandos
56
62
# KEYDIR:=$(DESTDIR)/etc/mandos/keys
57
63
# MANDIR:=$(PREFIX)/man
59
65
# DRACUTMODULE:=$(DESTDIR)/usr/lib/dracut/modules.d/90mandos
60
66
# STATEDIR:=$(DESTDIR)/var/lib/mandos
61
67
# LIBDIR:=$(PREFIX)/lib
 
68
# DBUSPOLICYDIR:=$(DESTDIR)/etc/dbus-1/system.d
62
69
##
63
70
 
64
71
## These settings are for a package-type install
65
72
PREFIX:=$(DESTDIR)/usr
 
73
BINDIR:=$(PREFIX)/sbin
66
74
CONFDIR:=$(DESTDIR)/etc/mandos
67
75
KEYDIR:=$(DESTDIR)/etc/keys/mandos
68
76
MANDIR:=$(PREFIX)/share/man
71
79
STATEDIR:=$(DESTDIR)/var/lib/mandos
72
80
LIBDIR:=$(shell \
73
81
        for d in \
74
 
        "/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`" \
 
82
        "/usr/lib/`dpkg-architecture \
 
83
                        -qDEB_HOST_MULTIARCH 2>/dev/null`" \
75
84
        "`rpm --eval='%{_libdir}' 2>/dev/null`" /usr/lib; do \
76
85
                if [ -d "$$d" -a "$$d" = "$${d%/}" ]; then \
77
86
                        echo "$(DESTDIR)$$d"; \
78
87
                        break; \
79
88
                fi; \
80
89
        done)
 
90
DBUSPOLICYDIR:=$(DESTDIR)/usr/share/dbus-1/system.d
81
91
##
82
92
 
83
 
SYSTEMD:=$(DESTDIR)$(shell pkg-config systemd --variable=systemdsystemunitdir)
84
 
TMPFILES:=$(DESTDIR)$(shell pkg-config systemd --variable=tmpfilesdir)
 
93
SYSTEMD:=$(DESTDIR)$(shell $(PKG_CONFIG) systemd \
 
94
                        --variable=systemdsystemunitdir)
 
95
TMPFILES:=$(DESTDIR)$(shell $(PKG_CONFIG) systemd \
 
96
                        --variable=tmpfilesdir)
 
97
SYSUSERS:=$(DESTDIR)$(shell $(PKG_CONFIG) systemd \
 
98
                        --variable=sysusersdir)
85
99
 
86
 
GNUTLS_CFLAGS:=$(shell pkg-config --cflags-only-I gnutls)
87
 
GNUTLS_LIBS:=$(shell pkg-config --libs gnutls)
88
 
AVAHI_CFLAGS:=$(shell pkg-config --cflags-only-I avahi-core)
89
 
AVAHI_LIBS:=$(shell pkg-config --libs avahi-core)
90
 
GPGME_CFLAGS:=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
91
 
GPGME_LIBS:=$(shell gpgme-config --libs; getconf LFS_LIBS; \
 
100
GNUTLS_CFLAGS:=$(shell $(PKG_CONFIG) --cflags-only-I gnutls)
 
101
GNUTLS_LIBS:=$(shell $(PKG_CONFIG) --libs gnutls)
 
102
AVAHI_CFLAGS:=$(shell $(PKG_CONFIG) --cflags-only-I avahi-core)
 
103
AVAHI_LIBS:=$(shell $(PKG_CONFIG) --libs avahi-core)
 
104
GPGME_CFLAGS:=$(shell $(PKG_CONFIG) --cflags-only-I gpgme 2>/dev/null \
 
105
        || gpgme-config --cflags; getconf LFS_CFLAGS)
 
106
GPGME_LIBS:=$(shell $(PKG_CONFIG) --libs gpgme 2>/dev/null \
 
107
        || gpgme-config --libs; getconf LFS_LIBS; \
92
108
        getconf LFS_LDFLAGS)
93
 
LIBNL3_CFLAGS:=$(shell pkg-config --cflags-only-I libnl-route-3.0)
94
 
LIBNL3_LIBS:=$(shell pkg-config --libs libnl-route-3.0)
95
 
GLIB_CFLAGS:=$(shell pkg-config --cflags glib-2.0)
96
 
GLIB_LIBS:=$(shell pkg-config --libs glib-2.0)
 
109
LIBNL3_CFLAGS:=$(shell $(PKG_CONFIG) --cflags-only-I libnl-route-3.0)
 
110
LIBNL3_LIBS:=$(shell $(PKG_CONFIG) --libs libnl-route-3.0)
 
111
GLIB_CFLAGS:=$(shell $(PKG_CONFIG) --cflags glib-2.0)
 
112
GLIB_LIBS:=$(shell $(PKG_CONFIG) --libs glib-2.0)
97
113
 
98
114
# Do not change these two
99
 
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) \
100
 
        $(OPTIMIZE) $(LANGUAGE) -DVERSION='"$(version)"'
 
115
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
 
116
        $(LANGUAGE) -DVERSION='"$(version)"'
101
117
LDFLAGS+=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(strip \
102
118
        ) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
103
119
 
147
163
 
148
164
objects:=$(addsuffix .o,$(CPROGS))
149
165
 
 
166
.PHONY: all
150
167
all: $(PROGS) mandos.lsm
151
168
 
 
169
.PHONY: doc
152
170
doc: $(DOCS)
153
171
 
 
172
.PHONY: html
154
173
html: $(htmldocs)
155
174
 
156
175
%.5: %.xml common.ent legalnotice.xml
272
291
                --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
273
292
                $@)
274
293
 
 
294
# Does the linker support the --no-warn-execstack option?
 
295
ifeq ($(shell echo 'int main(){}'|$(CC) --language=c /dev/stdin -o /dev/null -Xlinker --no-warn-execstack >/dev/null 2>&1 && echo yes),yes)
 
296
# These programs use nested functions, which uses an executable stack
 
297
plugin-runner: LDFLAGS += -Xlinker --no-warn-execstack
 
298
dracut-module/password-agent: LDFLAGS += -Xlinker --no-warn-execstack
 
299
plugins.d/password-prompt: LDFLAGS += -Xlinker --no-warn-execstack
 
300
plugins.d/mandos-client: LDFLAGS += -Xlinker --no-warn-execstack
 
301
plugins.d/plymouth: LDFLAGS += -Xlinker --no-warn-execstack
 
302
endif
 
303
 
275
304
# Need to add the GnuTLS, Avahi and GPGME libraries
276
 
plugins.d/mandos-client: plugins.d/mandos-client.c
277
 
        $(LINK.c) $^ $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(strip\
278
 
                ) $(GPGME_CFLAGS) $(GNUTLS_LIBS) $(strip\
279
 
                ) $(AVAHI_LIBS) $(GPGME_LIBS) $(LOADLIBES) $(strip\
280
 
                ) $(LDLIBS) -o $@
 
305
plugins.d/mandos-client: CFLAGS += $(GNUTLS_CFLAGS) $(strip \
 
306
        ) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
 
307
plugins.d/mandos-client: LDLIBS += $(GNUTLS_LIBS) $(strip \
 
308
        ) $(AVAHI_LIBS) $(GPGME_LIBS)
281
309
 
282
310
# Need to add the libnl-route library
283
 
plugin-helpers/mandos-client-iprouteadddel: plugin-helpers/mandos-client-iprouteadddel.c
284
 
        $(LINK.c) $(LIBNL3_CFLAGS) $^ $(LIBNL3_LIBS) $(strip\
285
 
                ) $(LOADLIBES) $(LDLIBS) -o $@
 
311
plugin-helpers/mandos-client-iprouteadddel: CFLAGS += $(LIBNL3_CFLAGS)
 
312
plugin-helpers/mandos-client-iprouteadddel: LDLIBS += $(LIBNL3_LIBS)
286
313
 
287
314
# Need to add the GLib and pthread libraries
288
 
dracut-module/password-agent: dracut-module/password-agent.c
289
 
        $(LINK.c) $(GLIB_CFLAGS) $^ $(GLIB_LIBS) -lpthread $(strip\
290
 
                ) $(LOADLIBES) $(LDLIBS) -o $@
291
 
 
292
 
.PHONY : all doc html clean distclean mostlyclean maintainer-clean \
293
 
        check run-client run-server install install-html \
294
 
        install-server install-client-nokey install-client uninstall \
295
 
        uninstall-server uninstall-client purge purge-server \
296
 
        purge-client
297
 
 
 
315
dracut-module/password-agent: CFLAGS += $(GLIB_CFLAGS)
 
316
# Note: -lpthread is unnecessary with the GNU C library 2.34 or later
 
317
dracut-module/password-agent: LDLIBS += $(GLIB_LIBS) -lpthread
 
318
 
 
319
.PHONY: clean
298
320
clean:
299
321
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
300
322
 
 
323
.PHONY: distclean
301
324
distclean: clean
 
325
.PHONY: mostlyclean
302
326
mostlyclean: clean
 
327
.PHONY: maintainer-clean
303
328
maintainer-clean: clean
304
329
        -rm --force --recursive keydir confdir statedir
305
330
 
 
331
.PHONY: check
306
332
check: all
307
333
        ./mandos --check
308
334
        ./mandos-ctl --check
312
338
        ./dracut-module/password-agent --test
313
339
 
314
340
# Run the client with a local config and key
315
 
run-client: all keydir/seckey.txt keydir/pubkey.txt keydir/tls-privkey.pem keydir/tls-pubkey.pem
316
 
        @echo "###################################################################"
317
 
        @echo "# The following error messages are harmless and can be safely     #"
318
 
        @echo "# ignored:                                                        #"
319
 
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
320
 
        @echo "#                     setuid: Operation not permitted             #"
321
 
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
322
 
        @echo "# From mandos-client:                                             #"
323
 
        @echo "#             Failed to raise privileges: Operation not permitted #"
324
 
        @echo "#             Warning: network hook \"*\" exited with status *      #"
325
 
        @echo "#                                                                 #"
326
 
        @echo "# (The messages are caused by not running as root, but you should #"
327
 
        @echo "# NOT run \"make run-client\" as root unless you also unpacked and  #"
328
 
        @echo "# compiled Mandos as root, which is also NOT recommended.)        #"
329
 
        @echo "###################################################################"
 
341
.PHONY: run-client
 
342
run-client: all keydir/seckey.txt keydir/pubkey.txt \
 
343
                        keydir/tls-privkey.pem keydir/tls-pubkey.pem
 
344
        @echo '######################################################'
 
345
        @echo '# The following error messages are harmless and can  #'
 
346
        @echo '#  be safely ignored:                                #'
 
347
        @echo '## From plugin-runner:                               #'
 
348
        @echo '# setgid: Operation not permitted                    #'
 
349
        @echo '# setuid: Operation not permitted                    #'
 
350
        @echo '## From askpass-fifo:                                #'
 
351
        @echo '# mkfifo: Permission denied                          #'
 
352
        @echo '## From mandos-client:                               #'
 
353
        @echo '# Failed to raise privileges: Operation not permi... #'
 
354
        @echo '# Warning: network hook "*" exited with status *     #'
 
355
        @echo '# ioctl SIOCSIFFLAGS +IFF_UP: Operation not permi... #'
 
356
        @echo '# Failed to bring up interface "*": Operation not... #'
 
357
        @echo '#                                                    #'
 
358
        @echo '# (The messages are caused by not running as root,   #'
 
359
        @echo '# but you should NOT run "make run-client" as root   #'
 
360
        @echo '# unless you also unpacked and compiled Mandos as    #'
 
361
        @echo '# root, which is also NOT recommended.)              #'
 
362
        @echo '######################################################'
330
363
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
331
364
        ./plugin-runner --plugin-dir=plugins.d \
332
365
                --plugin-helper-dir=plugin-helpers \
339
372
keydir/seckey.txt keydir/pubkey.txt keydir/tls-privkey.pem keydir/tls-pubkey.pem: mandos-keygen
340
373
        install --directory keydir
341
374
        ./mandos-keygen --dir keydir --force
 
375
        if ! [ -e keydir/tls-privkey.pem ]; then \
 
376
                install --mode=u=rw /dev/null keydir/tls-privkey.pem; \
 
377
        fi
 
378
        if ! [ -e keydir/tls-pubkey.pem ]; then \
 
379
                install --mode=u=rw /dev/null keydir/tls-pubkey.pem; \
 
380
        fi
342
381
 
343
382
# Run the server with a local config
 
383
.PHONY: run-server
344
384
run-server: confdir/mandos.conf confdir/clients.conf statedir
345
385
        ./mandos --debug --no-dbus --configdir=confdir \
346
386
                --statedir=statedir $(SERVERARGS)
347
387
 
348
388
# Used by run-server
349
389
confdir/mandos.conf: mandos.conf
350
 
        install --directory confdir
351
 
        install --mode=u=rw,go=r $^ $@
 
390
        install -D --mode=u=rw,go=r $^ $@
352
391
confdir/clients.conf: clients.conf keydir/seckey.txt keydir/tls-pubkey.pem
353
 
        install --directory confdir
354
 
        install --mode=u=rw $< $@
 
392
        install -D --mode=u=rw $< $@
355
393
# Add a client password
356
394
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
357
395
statedir:
358
396
        install --directory statedir
359
397
 
 
398
.PHONY: install
360
399
install: install-server install-client-nokey
361
400
 
 
401
.PHONY: install-html
362
402
install-html: html
363
 
        install --directory $(htmldir)
364
 
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
 
403
        install -D --mode=u=rw,go=r --target-directory=$(htmldir) \
365
404
                $(htmldocs)
366
405
 
 
406
.PHONY: install-server
367
407
install-server: doc
368
 
        install --directory $(CONFDIR)
369
408
        if install --directory --mode=u=rwx --owner=$(USER) \
370
409
                --group=$(GROUP) $(STATEDIR); then \
371
410
                :; \
372
411
        elif install --directory --mode=u=rwx $(STATEDIR); then \
373
412
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
374
413
        fi
375
 
        if [ "$(TMPFILES)" != "$(DESTDIR)" -a -d "$(TMPFILES)" ]; then \
376
 
                install --mode=u=rw,go=r tmpfiles.d-mandos.conf \
 
414
        if [ "$(TMPFILES)" != "$(DESTDIR)" ]; then \
 
415
                install -D --mode=u=rw,go=r tmpfiles.d-mandos.conf \
377
416
                        $(TMPFILES)/mandos.conf; \
378
417
        fi
379
 
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
380
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
418
        if [ "$(SYSUSERS)" != "$(DESTDIR)" ]; then \
 
419
                install -D --mode=u=rw,go=r sysusers.d-mandos.conf \
 
420
                        $(SYSUSERS)/mandos.conf; \
 
421
        fi
 
422
        install --directory $(BINDIR)
 
423
        install --mode=u=rwx,go=rx --target-directory=$(BINDIR) mandos
 
424
        install --mode=u=rwx,go=rx --target-directory=$(BINDIR) \
381
425
                mandos-ctl
382
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
426
        install --mode=u=rwx,go=rx --target-directory=$(BINDIR) \
383
427
                mandos-monitor
 
428
        install --directory $(CONFDIR)
384
429
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
385
430
                mandos.conf
386
431
        install --mode=u=rw --target-directory=$(CONFDIR) \
387
432
                clients.conf
388
 
        install --mode=u=rw,go=r dbus-mandos.conf \
389
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
390
 
        install --mode=u=rwx,go=rx init.d-mandos \
 
433
        install -D --mode=u=rw,go=r dbus-mandos.conf \
 
434
                $(DBUSPOLICYDIR)/mandos.conf
 
435
        install -D --mode=u=rwx,go=rx init.d-mandos \
391
436
                $(DESTDIR)/etc/init.d/mandos
392
 
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
393
 
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
 
437
        if [ "$(SYSTEMD)" != "$(DESTDIR)" ]; then \
 
438
                install -D --mode=u=rw,go=r mandos.service \
 
439
                        $(SYSTEMD); \
394
440
        fi
395
 
        install --mode=u=rw,go=r default-mandos \
 
441
        install -D --mode=u=rw,go=r default-mandos \
396
442
                $(DESTDIR)/etc/default/mandos
397
443
        if [ -z $(DESTDIR) ]; then \
398
444
                update-rc.d mandos defaults 25 15;\
399
445
        fi
 
446
        install --directory $(MANDIR)/man8 $(MANDIR)/man5
400
447
        gzip --best --to-stdout mandos.8 \
401
448
                > $(MANDIR)/man8/mandos.8.gz
402
449
        gzip --best --to-stdout mandos-monitor.8 \
410
457
        gzip --best --to-stdout intro.8mandos \
411
458
                > $(MANDIR)/man8/intro.8mandos.gz
412
459
 
 
460
.PHONY: install-client-nokey
413
461
install-client-nokey: all doc
414
 
        install --directory $(LIBDIR)/mandos $(CONFDIR)
415
462
        install --directory --mode=u=rwx $(KEYDIR) \
416
463
                $(LIBDIR)/mandos/plugins.d \
417
464
                $(LIBDIR)/mandos/plugin-helpers
 
465
        if [ "$(SYSUSERS)" != "$(DESTDIR)" ]; then \
 
466
                install -D --mode=u=rw,go=r sysusers.d-mandos.conf \
 
467
                        $(SYSUSERS)/mandos-client.conf; \
 
468
        fi
418
469
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
419
 
                install --mode=u=rwx \
420
 
                        --directory "$(CONFDIR)/plugins.d" \
 
470
                install --directory \
 
471
                        --mode=u=rwx "$(CONFDIR)/plugins.d" \
421
472
                        "$(CONFDIR)/plugin-helpers"; \
422
473
        fi
423
 
        install --mode=u=rwx,go=rx --directory \
 
474
        install --directory --mode=u=rwx,go=rx \
424
475
                "$(CONFDIR)/network-hooks.d"
425
476
        install --mode=u=rwx,go=rx \
426
477
                --target-directory=$(LIBDIR)/mandos plugin-runner
427
478
        install --mode=u=rwx,go=rx \
428
 
                --target-directory=$(LIBDIR)/mandos mandos-to-cryptroot-unlock
429
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
479
                --target-directory=$(LIBDIR)/mandos \
 
480
                mandos-to-cryptroot-unlock
 
481
        install --directory $(BINDIR)
 
482
        install --mode=u=rwx,go=rx --target-directory=$(BINDIR) \
430
483
                mandos-keygen
431
484
        install --mode=u=rwx,go=rx \
432
485
                --target-directory=$(LIBDIR)/mandos/plugins.d \
449
502
        install --mode=u=rwx,go=rx \
450
503
                --target-directory=$(LIBDIR)/mandos/plugin-helpers \
451
504
                plugin-helpers/mandos-client-iprouteadddel
452
 
        install initramfs-tools-hook \
 
505
        install -D initramfs-tools-hook \
453
506
                $(INITRAMFSTOOLS)/hooks/mandos
454
 
        install --mode=u=rw,go=r initramfs-tools-conf \
 
507
        install -D --mode=u=rw,go=r initramfs-tools-conf \
455
508
                $(INITRAMFSTOOLS)/conf.d/mandos-conf
456
 
        install --mode=u=rw,go=r initramfs-tools-conf-hook \
 
509
        install -D --mode=u=rw,go=r initramfs-tools-conf-hook \
457
510
                $(INITRAMFSTOOLS)/conf-hooks.d/zz-mandos
458
 
        install initramfs-tools-script \
 
511
        install -D initramfs-tools-script \
459
512
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
460
 
        install initramfs-tools-script-stop \
 
513
        install -D initramfs-tools-script-stop \
461
514
                $(INITRAMFSTOOLS)/scripts/local-premount/mandos
462
 
        install --directory $(DRACUTMODULE)
463
 
        install --mode=u=rw,go=r --target-directory=$(DRACUTMODULE) \
 
515
        install -D --mode=u=rw,go=r \
 
516
                --target-directory=$(DRACUTMODULE) \
464
517
                dracut-module/ask-password-mandos.path \
465
518
                dracut-module/ask-password-mandos.service
466
519
        install --mode=u=rwxs,go=rx \
469
522
                dracut-module/cmdline-mandos.sh \
470
523
                dracut-module/password-agent
471
524
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
 
525
        install --directory $(MANDIR)/man8
472
526
        gzip --best --to-stdout mandos-keygen.8 \
473
527
                > $(MANDIR)/man8/mandos-keygen.8.gz
474
528
        gzip --best --to-stdout plugin-runner.8mandos \
488
542
        gzip --best --to-stdout dracut-module/password-agent.8mandos \
489
543
                > $(MANDIR)/man8/password-agent.8mandos.gz
490
544
 
 
545
.PHONY: install-client
491
546
install-client: install-client-nokey
492
547
# Post-installation stuff
493
 
        -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
 
548
        -$(BINDIR)/mandos-keygen --dir "$(KEYDIR)"
494
549
        if command -v update-initramfs >/dev/null; then \
495
550
            update-initramfs -k all -u; \
496
551
        elif command -v dracut >/dev/null; then \
497
 
            for initrd in $(DESTDIR)/boot/initr*-$(shell uname --kernel-release); do \
 
552
            for initrd in $(DESTDIR)/boot/initr*-$(LINUXVERSION); do \
498
553
                if [ -w "$$initrd" ]; then \
499
554
                    chmod go-r "$$initrd"; \
500
555
                    dracut --force "$$initrd"; \
503
558
        fi
504
559
        echo "Now run mandos-keygen --password --dir $(KEYDIR)"
505
560
 
 
561
.PHONY: uninstall
506
562
uninstall: uninstall-server uninstall-client
507
563
 
 
564
.PHONY: uninstall-server
508
565
uninstall-server:
509
 
        -rm --force $(PREFIX)/sbin/mandos \
510
 
                $(PREFIX)/sbin/mandos-ctl \
511
 
                $(PREFIX)/sbin/mandos-monitor \
 
566
        -rm --force $(BINDIR)/mandos \
 
567
                $(BINDIR)/mandos-ctl \
 
568
                $(BINDIR)/mandos-monitor \
512
569
                $(MANDIR)/man8/mandos.8.gz \
513
570
                $(MANDIR)/man8/mandos-monitor.8.gz \
514
571
                $(MANDIR)/man8/mandos-ctl.8.gz \
517
574
        update-rc.d -f mandos remove
518
575
        -rmdir $(CONFDIR)
519
576
 
 
577
.PHONY: uninstall-client
520
578
uninstall-client:
521
579
# Refuse to uninstall client if /etc/crypttab is explicitly configured
522
580
# to use it.
523
581
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
524
582
                $(DESTDIR)/etc/crypttab
525
 
        -rm --force $(PREFIX)/sbin/mandos-keygen \
 
583
        -rm --force $(BINDIR)/mandos-keygen \
526
584
                $(LIBDIR)/mandos/plugin-runner \
527
585
                $(LIBDIR)/mandos/plugins.d/password-prompt \
528
586
                $(LIBDIR)/mandos/plugins.d/mandos-client \
553
611
        if command -v update-initramfs >/dev/null; then \
554
612
            update-initramfs -k all -u; \
555
613
        elif command -v dracut >/dev/null; then \
556
 
            for initrd in $(DESTDIR)/boot/initr*-$(shell uname --kernel-release); do \
 
614
            for initrd in $(DESTDIR)/boot/initr*-$(LINUXVERSION); do \
557
615
                test -w "$$initrd" && dracut --force "$$initrd"; \
558
616
            done; \
559
617
        fi
560
618
 
 
619
.PHONY: purge
561
620
purge: purge-server purge-client
562
621
 
 
622
.PHONY: purge-server
563
623
purge-server: uninstall-server
564
624
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
565
625
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
566
626
                $(DESTDIR)/etc/default/mandos \
567
627
                $(DESTDIR)/etc/init.d/mandos \
568
 
                $(SYSTEMD)/mandos.service \
569
628
                $(DESTDIR)/run/mandos.pid \
570
629
                $(DESTDIR)/var/run/mandos.pid
 
630
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
 
631
                -rm --force -- $(SYSTEMD)/mandos.service; \
 
632
        fi
571
633
        -rmdir $(CONFDIR)
572
634
 
 
635
.PHONY: purge-client
573
636
purge-client: uninstall-client
574
637
        -shred --remove $(KEYDIR)/seckey.txt $(KEYDIR)/tls-privkey.pem
575
638
        -rm --force $(CONFDIR)/plugin-runner.conf \