/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-02 10:48:24 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080802104824-fx0miwp9o4g9r31e
* plugbasedclient.c (struct process): New fields "eof", "completed",
                                      and "status".
  (handle_sigchld): New function.
  (main): Initialize "dir" to NULL to only closedir() it if necessary.
          Move "process_list" to be a global variable to be accessible
          by "handle_sigchld".  Make "handle_sigchld" handle SIGCHLD.
          Remove redundant check for NULL "dir".  Free "filename" when
          no longer used.  Block SIGCHLD around fork()/exec().
          Restore normal signals in child.  Only loop while running
          processes exist.  Print process buffer when the process is
          done and it has emitted EOF, not when it only emits EOF.
          Remove processes from list which exit non-cleanly.  In
          cleaning up, closedir() if necessary.  Bug fix: set next
          pointer correctly when freeing process list.

* plugins.d/passprompt.c (main): Do not ignore SIGQUIT.

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=2 -Wextra -Wfloat-equal -Wundef -Wshadow \
4
 
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
 
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
 
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
 
        -Wpacked -Wnested-externs -Wunreachable-code -Winline \
8
 
        -Wvolatile-register-var
 
1
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-parameter -Wstrict-aliasing=2 -Wextra -Wfloat-equal -Wundef -Wshadow -Wunsafe-loop-optimizations -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes -Wold-style-definition -Wpacked -Wnested-externs -Wunreachable-code -Winline -Wvolatile-register-var 
9
2
DEBUG=-ggdb3
10
3
# For info about _FORTIFY_SOURCE, see
11
4
# <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>
13
6
#COVERAGE=--coverage
14
7
OPTIMIZE=-Os
15
8
LANGUAGE=-std=gnu99
16
 
# PREFIX=/usr/local
17
 
PREFIX=/usr
18
 
# CONFDIR=/usr/local/lib/mandos
19
 
CONFDIR=/etc/mandos
20
 
# MANDIR=/usr/local/man
21
 
MANDIR=/usr/share/man
22
 
 
23
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
24
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
25
 
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
26
 
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
27
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
28
 
GPGME_LIBS=$(shell gpgme-config --libs)
29
9
 
30
10
# Do not change these two
31
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
32
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
 
11
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) $(LANGUAGE)
33
12
LDFLAGS=$(COVERAGE)
34
13
 
35
 
DOCBOOKTOMAN=xsltproc --nonet \
36
 
        --param man.charmap.use.subset          0 \
37
 
        --param make.year.ranges                1 \
38
 
        --param make.single.year.ranges         1 \
39
 
        --param man.output.quietly              1 \
40
 
        --param man.authors.section.enabled     0
41
 
# DocBook-to-man post-processing to fix a \n escape bug
42
 
MANPOST=sed --in-place --expression='s,\\en,\en,g;s,\een,\en,g'
43
 
 
44
 
PLUGINS=plugins.d/password-prompt plugins.d/password-request
45
 
PROGS=plugin-runner $(PLUGINS)
46
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
47
 
        plugins.d/password-request.8mandos \
48
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
49
 
        mandos-clients.conf.5
50
 
 
51
 
objects=$(addsuffix .o,$(PROGS))
 
14
PROGS=plugbasedclient plugins.d/mandosclient plugins.d/passprompt
 
15
 
 
16
objects=$(shell for p in $(PROGS); do echo $${p}.o; done)
52
17
 
53
18
all: $(PROGS)
54
19
 
55
 
doc: $(DOCS)
56
 
 
57
 
%.5: %.xml
58
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^) $(MANPOST) $@
59
 
 
60
 
%.8: %.xml
61
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^); $(MANPOST) $@
62
 
 
63
 
%.8mandos: %.xml
64
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^) $(MANPOST) $@
65
 
 
66
 
plugins.d/password-request: plugins.d/password-request.o
67
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
68
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
69
 
 
70
 
.PHONY : all doc clean distclean run-client run-server install \
71
 
        install-server install-client uninstall uninstall-server \
72
 
        uninstall-client purge purge-server purge-client
73
 
 
 
20
plugbasedclient: plugbasedclient.o
 
21
        $(LINK.o) -lgnutls $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
22
 
 
23
plugins.d/mandosclient: plugins.d/mandosclient.o
 
24
        $(LINK.o) -lgnutls -lavahi-core -lgpgme $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
25
 
 
26
plugins.d/passprompt: plugins.d/passprompt.o
 
27
        $(LINK.o) $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
28
 
 
29
.PHONY : clean
74
30
clean:
75
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
76
 
 
77
 
distclean: clean
78
 
mostlyclean: clean
79
 
maintainer-clean: clean
80
 
        -rm --force --recursive keydir
81
 
 
82
 
check:
83
 
        ./mandos --check
84
 
 
85
 
run-client: all
86
 
        -mkdir keydir
87
 
        -./mandos-keygen --dir keydir
88
 
        ./plugin-runner --plugin-dir=plugins.d \
89
 
                --options-for=password-request:--keydir=keydir
90
 
 
91
 
run-server:
92
 
        ./mandos --debug --configdir=.
93
 
 
94
 
install: install-server install-client
95
 
 
96
 
install-server: doc
97
 
        mkdir --mode=0755 --parents $(CONFDIR) $(MANDIR)/man5 \
98
 
                $(MANDIR)/man8
99
 
        install --mode=0755 mandos $(PREFIX)/sbin/mandos
100
 
        install --mode=0644 --target-directory=$(CONFDIR) mandos.conf
101
 
        install --mode=0640 --target-directory=$(CONFDIR) \
102
 
                clients.conf
103
 
        gzip --best --to-stdout mandos.8 \
104
 
                > $(MANDIR)/man8/mandos.8.gz
105
 
        gzip --best --to-stdout mandos.conf.5 \
106
 
                > $(MANDIR)/man5/mandos.conf.5.gz
107
 
        gzip --best --to-stdout mandos-clients.conf.5 \
108
 
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
109
 
 
110
 
install-client: all doc /usr/share/initramfs-tools/hooks/.
111
 
        mkdir --mode=0755 --parents $(PREFIX)/lib/mandos $(CONFDIR) \
112
 
                $(MANDIR)/man8
113
 
        -mkdir --mode=0700 $(PREFIX)/lib/mandos/plugins.d
114
 
        chmod u=rwx,g=,o= $(PREFIX)/lib/mandos/plugins.d
115
 
        install --mode=0755 --target-directory=$(PREFIX)/lib/mandos \
116
 
                plugin-runner
117
 
        install --mode=0755 --target-directory=$(PREFIX)/sbin \
118
 
                mandos-keygen
119
 
        install --mode=0755 \
120
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
121
 
                plugins.d/password-prompt
122
 
        install --mode=4755 \
123
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
124
 
                plugins.d/password-request
125
 
        install initramfs-tools-hook \
126
 
                /usr/share/initramfs-tools/hooks/mandos
127
 
        install initramfs-tools-hook-conf \
128
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos
129
 
        install initramfs-tools-script \
130
 
                /usr/share/initramfs-tools/scripts/local-top/mandos
131
 
        gzip --best --to-stdout mandos-keygen.8 \
132
 
                > $(MANDIR)/man8/mandos-keygen.8.gz
133
 
        gzip --best --to-stdout plugin-runner.8mandos \
134
 
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
135
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
136
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
137
 
        gzip --best --to-stdout plugins.d/password-request.8mandos \
138
 
                > $(MANDIR)/man8/password-request.8mandos.gz
139
 
        -$(PREFIX)/sbin/mandos-keygen
140
 
        update-initramfs -k all -u
141
 
 
142
 
uninstall: uninstall-server uninstall-client
143
 
 
144
 
uninstall-server: $(PREFIX)/sbin/mandos
145
 
        -rm --force $(PREFIX)/sbin/mandos \
146
 
                $(MANDIR)/man8/mandos.8.gz \
147
 
                $(MANDIR)/man5/mandos.conf.5.gz \
148
 
                $(MANDIR)/man5/mandos-clients.conf.5.gz
149
 
        -rmdir $(CONFDIR)
150
 
 
151
 
uninstall-client:
152
 
# Refuse to uninstall client if /etc/crypttab is explicitly configured
153
 
# to use it.
154
 
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
155
 
                /etc/crypttab
156
 
        -rm --force $(PREFIX)/sbin/mandos-keygen \
157
 
                $(PREFIX)/lib/mandos/plugin-runner \
158
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
159
 
                $(PREFIX)/lib/mandos/plugins.d/password-request \
160
 
                /usr/share/initramfs-tools/hooks/mandos \
161
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos \
162
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
163
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
164
 
                $(MANDIR)/man8/password-prompt.8mandos.gz \
165
 
                $(MANDIR)/man8/password-request.8mandos.gz
166
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
167
 
                 $(PREFIX)/lib/mandos $(CONFDIR)
168
 
        update-initramfs -k all -u
169
 
 
170
 
purge: purge-server purge-client
171
 
 
172
 
purge-server: uninstall-server
173
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf
174
 
        -rmdir $(CONFDIR)
175
 
 
176
 
purge-client: uninstall-client
177
 
        -rm --force $(CONFDIR)/seckey.txt $(CONFDIR)/pubkey.txt
178
 
        -rmdir $(CONFDIR) $(CONFDIR)/plugins.d
 
31
        -rm -f $(PROGS) $(objects) core