/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 -Winline -Wvolatile-register-var
8
 
#       -Wunreachable-code 
9
 
#DEBUG=-ggdb3
 
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 
 
2
DEBUG=-ggdb3
10
3
# For info about _FORTIFY_SOURCE, see
11
4
# <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>
12
5
FORTIFY=-D_FORTIFY_SOURCE=2 # -fstack-protector-all
14
7
OPTIMIZE=-Os
15
8
LANGUAGE=-std=gnu99
16
9
 
17
 
## Use these settings for a traditional /usr/local install
18
 
# PREFIX=$(DESTDIR)/usr/local
19
 
# CONFDIR=$(DESTDIR)/etc/mandos
20
 
# KEYDIR=$(DESTDIR)/etc/mandos/keys
21
 
# MANDIR=$(PREFIX)/man
22
 
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
23
 
##
24
 
 
25
 
## These settings are for a package-type install
26
 
PREFIX=$(DESTDIR)/usr
27
 
CONFDIR=$(DESTDIR)/etc/mandos
28
 
KEYDIR=$(DESTDIR)/etc/keys/mandos
29
 
MANDIR=$(PREFIX)/share/man
30
 
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
31
 
##
32
 
 
33
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
34
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
35
 
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
36
 
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
37
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
38
 
GPGME_LIBS=$(shell gpgme-config --libs)
39
 
 
40
10
# Do not change these two
41
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
42
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
 
11
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) $(LANGUAGE)
43
12
LDFLAGS=$(COVERAGE)
44
13
 
45
 
# Commands to format a DocBook <refentry> document into a manual page
46
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
47
 
        --param man.charmap.use.subset          0 \
48
 
        --param make.year.ranges                1 \
49
 
        --param make.single.year.ranges         1 \
50
 
        --param man.output.quietly              1 \
51
 
        --param man.authors.section.enabled     0 \
52
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
53
 
        $(notdir $<); \
54
 
        $(MANPOST) $(notdir $@)
55
 
# DocBook-to-man post-processing to fix a '\n' escape bug
56
 
MANPOST=sed --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
57
 
 
58
 
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client
59
 
PROGS=plugin-runner $(PLUGINS)
60
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
61
 
        plugins.d/mandos-client.8mandos \
62
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
63
 
        mandos-clients.conf.5
64
 
 
65
 
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)
66
17
 
67
18
all: $(PROGS)
68
19
 
69
 
doc: $(DOCS)
70
 
 
71
 
%.5: %.xml legalnotice.xml
72
 
        $(DOCBOOKTOMAN)
73
 
 
74
 
%.8: %.xml legalnotice.xml
75
 
        $(DOCBOOKTOMAN)
76
 
 
77
 
%.8mandos: %.xml legalnotice.xml
78
 
        $(DOCBOOKTOMAN)
79
 
 
80
 
mandos.8: mandos.xml mandos-options.xml overview.xml legalnotice.xml
81
 
        $(DOCBOOKTOMAN)
82
 
 
83
 
mandos-keygen.8: mandos-keygen.xml overview.xml legalnotice.xml
84
 
        $(DOCBOOKTOMAN)
85
 
 
86
 
mandos.conf.5: mandos.conf.xml mandos-options.xml legalnotice.xml
87
 
        $(DOCBOOKTOMAN)
88
 
 
89
 
plugin-runner.8mandos: plugin-runner.xml overview.xml legalnotice.xml
90
 
        $(DOCBOOKTOMAN)
91
 
 
92
 
plugins.d/mandos-client.8mandos: plugins.d/mandos-client.xml \
93
 
                                        mandos-options.xml \
94
 
                                        overview.xml legalnotice.xml
95
 
        $(DOCBOOKTOMAN)
96
 
 
97
 
plugins.d/mandos-client: plugins.d/mandos-client.o
98
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
99
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
100
 
 
101
 
.PHONY : all doc clean distclean run-client run-server install \
102
 
        install-server install-client uninstall uninstall-server \
103
 
        uninstall-client purge purge-server purge-client
104
 
 
 
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
105
30
clean:
106
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
107
 
 
108
 
distclean: clean
109
 
mostlyclean: clean
110
 
maintainer-clean: clean
111
 
        -rm --force --recursive keydir confdir
112
 
 
113
 
check:
114
 
        ./mandos --check
115
 
 
116
 
# Run the client with a local config and key
117
 
run-client: all keydir/seckey.txt keydir/pubkey.txt
118
 
        ./plugin-runner --plugin-dir=plugins.d \
119
 
                --config-file=plugin-runner.conf \
120
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
121
 
 
122
 
# Used by run-client
123
 
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
124
 
        install --directory keydir
125
 
        ./mandos-keygen --dir keydir --force
126
 
 
127
 
# Run the server with a local config
128
 
run-server: confdir/mandos.conf confdir/clients.conf
129
 
        ./mandos --debug --configdir=confdir
130
 
 
131
 
# Used by run-server
132
 
confdir/mandos.conf: mandos.conf
133
 
        install --directory confdir
134
 
        install --mode=u=rw,go=r $^ $@
135
 
confdir/clients.conf: clients.conf keydir/seckey.txt
136
 
        install --directory confdir
137
 
        install --mode=u=rw $< $@
138
 
# Add a client password
139
 
        ./mandos-keygen --dir keydir --password >> $@
140
 
 
141
 
install: install-server install-client-nokey
142
 
 
143
 
install-server: doc
144
 
        install --directory $(CONFDIR)
145
 
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
146
 
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
147
 
                mandos.conf
148
 
        install --mode=u=rw --target-directory=$(CONFDIR) \
149
 
                clients.conf
150
 
        install --mode=u=rwx,go=rx init.d-mandos \
151
 
                $(DESTDIR)/etc/init.d/mandos
152
 
        install --mode=u=rw,go=r default-mandos \
153
 
                $(DESTDIR)/etc/default/mandos
154
 
        update-rc.d mandos defaults
155
 
        gzip --best --to-stdout mandos.8 \
156
 
                > $(MANDIR)/man8/mandos.8.gz
157
 
        gzip --best --to-stdout mandos.conf.5 \
158
 
                > $(MANDIR)/man5/mandos.conf.5.gz
159
 
        gzip --best --to-stdout mandos-clients.conf.5 \
160
 
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
161
 
 
162
 
install-client-nokey: all doc
163
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
164
 
        install --directory --mode=u=rwx $(KEYDIR) \
165
 
                $(PREFIX)/lib/mandos/plugins.d
166
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
167
 
                install --mode=u=rwx \
168
 
                        --directory "$(CONFDIR)/plugins.d" && \
169
 
                install --mode=u=rw,go=r etc-plugins.d-README \
170
 
                        $(CONFDIR)/plugins.d/README ; \
171
 
        fi
172
 
        install --mode=u=rwx,go=rx \
173
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
174
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
175
 
                mandos-keygen
176
 
        install --mode=u=rwx,go=rx \
177
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
178
 
                plugins.d/password-prompt
179
 
        install --mode=u=rwxs,go=rx \
180
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
181
 
                plugins.d/mandos-client
182
 
        install --mode=u=rwx,go=rx \
183
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
184
 
                plugins.d/usplash
185
 
        install initramfs-tools-hook \
186
 
                $(INITRAMFSTOOLS)/hooks/mandos
187
 
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
188
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
189
 
        install initramfs-tools-script \
190
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
191
 
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
192
 
        gzip --best --to-stdout mandos-keygen.8 \
193
 
                > $(MANDIR)/man8/mandos-keygen.8.gz
194
 
        gzip --best --to-stdout plugin-runner.8mandos \
195
 
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
196
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
197
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
198
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
199
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
200
 
 
201
 
install-client: install-client-nokey
202
 
# Post-installation stuff
203
 
        -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
204
 
        update-initramfs -k all -u
205
 
        echo "Now run mandos-keygen --password --dir $(KEYDIR)"
206
 
 
207
 
uninstall: uninstall-server uninstall-client
208
 
 
209
 
uninstall-server:
210
 
        -rm --force $(PREFIX)/sbin/mandos \
211
 
                $(MANDIR)/man8/mandos.8.gz \
212
 
                $(MANDIR)/man5/mandos.conf.5.gz \
213
 
                $(MANDIR)/man5/mandos-clients.conf.5.gz
214
 
        update-rc.d -f mandos remove
215
 
        -rmdir $(CONFDIR)
216
 
 
217
 
uninstall-client:
218
 
# Refuse to uninstall client if /etc/crypttab is explicitly configured
219
 
# to use it.
220
 
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
221
 
                $(DESTDIR)/etc/crypttab
222
 
        -rm --force $(PREFIX)/sbin/mandos-keygen \
223
 
                $(PREFIX)/lib/mandos/plugin-runner \
224
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
225
 
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
226
 
                $(PREFIX)/lib/mandos/plugins.d/usplash \
227
 
                $(INITRAMFSTOOLS)/hooks/mandos \
228
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
229
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
230
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
231
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
232
 
                $(MANDIR)/man8/password-prompt.8mandos.gz \
233
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
234
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
235
 
                rm --force $(CONFDIR)/plugins.d/README; \
236
 
        fi
237
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
238
 
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
239
 
        update-initramfs -k all -u
240
 
 
241
 
purge: purge-server purge-client
242
 
 
243
 
purge-server: uninstall-server
244
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
245
 
                $(DESTDIR)/etc/default/mandos \
246
 
                $(DESTDIR)/etc/init.d/mandos \
247
 
                $(DESTDIR)/var/run/mandos.pid
248
 
        -rmdir $(CONFDIR)
249
 
 
250
 
purge-client: uninstall-client
251
 
        -shred --remove $(KEYDIR)/seckey.txt
252
 
        -rm --force $(CONFDIR)/plugin-runner.conf \
253
 
                $(KEYDIR)/pubkey.txt $(KEYDIR)/seckey.txt
254
 
        -rmdir $(KEYDIR) $(CONFDIR)/plugins.d $(CONFDIR)
 
31
        -rm -f $(PROGS) $(objects) core