/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: 2024-09-09 04:24:39 UTC
  • Revision ID: teddy@recompile.se-20240909042439-j85mr20uli2hnyis
Eliminate compiler warnings

Many programs use nested functions, which now result in a linker
warning about executable stack.  Hide this warning.  Also, rewrite a
loop in the plymouth plugin to avoid warning about signed overflow.
This change also makes the plugin pick the alphabetically first
process entry instead of the last, in case many plymouth processes are
found (which should be unlikely).

* Makefile (plugin-runner, dracut-module/password-agent,
  plugins.d/password-prompt, plugins.d/mandos-client,
  plugins.d/plymouth): New target; set LDFLAGS to add "-Xlinker
  --no-warn-execstack".
* plugins.d/plymouth.c (get_pid): When no pid files are found, and we
  are looking through the process list, go though it from the start
  instead of from the end, i.e. in normal alphabetical order and not
  in reverse order.

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