/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
9
 
23
10
# Do not change these two
24
11
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) $(LANGUAGE)
25
12
LDFLAGS=$(COVERAGE)
26
13
 
27
 
DOCBOOKTOMAN=xsltproc --nonet \
28
 
        --param man.charmap.use.subset          0 \
29
 
        --param make.year.ranges                1 \
30
 
        --param make.single.year.ranges         1 \
31
 
        --param man.output.quietly              1 \
32
 
        --param man.authors.section.enabled     0
33
 
 
34
 
PLUGINS=plugins.d/password-prompt plugins.d/password-request
35
 
PROGS=plugin-runner $(PLUGINS)
36
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
37
 
        plugins.d/password-request.8mandos \
38
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
39
 
        mandos-clients.conf.5
 
14
PROGS=plugbasedclient plugins.d/mandosclient plugins.d/passprompt
40
15
 
41
16
objects=$(shell for p in $(PROGS); do echo $${p}.o; done)
42
17
 
43
18
all: $(PROGS)
44
19
 
45
 
doc: $(DOCS)
46
 
 
47
 
%.5: %.xml
48
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
49
 
 
50
 
%.8: %.xml
51
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
52
 
 
53
 
%.8mandos: %.xml
54
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
55
 
 
56
 
plugin-runner: plugin-runner.o
 
20
plugbasedclient: plugbasedclient.o
57
21
        $(LINK.o) -lgnutls $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
58
22
 
59
 
plugins.d/password-request: plugins.d/password-request.o
60
 
        $(LINK.o) -lgnutls -lavahi-core -lgpgme $(COMMON) $^ \
61
 
                $(LOADLIBES) $(LDLIBS) -o $@
 
23
plugins.d/mandosclient: plugins.d/mandosclient.o
 
24
        $(LINK.o) -lgnutls -lavahi-core -lgpgme $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
62
25
 
63
 
plugins.d/password-prompt: plugins.d/password-prompt.o
 
26
plugins.d/passprompt: plugins.d/passprompt.o
64
27
        $(LINK.o) $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
65
28
 
66
 
.PHONY : all clean distclean run-client run-server install \
67
 
        install-server install-client uninstall uninstall-server \
68
 
        uninstall-client purge purge-server purge-client
69
 
 
 
29
.PHONY : clean
70
30
clean:
71
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
72
 
 
73
 
distclean: clean
74
 
mostlyclean: clean
75
 
maintainer-clean: clean
76
 
        -rm --force --recursive keydir
77
 
 
78
 
check:
79
 
        ./mandos --check
80
 
 
81
 
run-client: all
82
 
        -mkdir keydir
83
 
        -./mandos-keygen --dir keydir
84
 
        ./plugin-runner --plugin-dir=plugins.d \
85
 
                --options-for=password-request:--keydir=keydir
86
 
 
87
 
run-server:
88
 
        ./mandos --debug --configdir=.
89
 
 
90
 
install: install-server install-client
91
 
 
92
 
install-server: doc
93
 
        mkdir --mode=0755 --parents $(CONFDIR) $(MANDIR)/man5 \
94
 
                $(MANDIR)/man8
95
 
        install --mode=0755 mandos $(PREFIX)/sbin/mandos
96
 
        install --mode=0644 --target-directory=$(CONFDIR) mandos.conf
97
 
        install --mode=0640 --target-directory=$(CONFDIR) \
98
 
                clients.conf
99
 
        gzip --best --to-stdout mandos.8 \
100
 
                > $(MANDIR)/man8/mandos.8.gz
101
 
        gzip --best --to-stdout mandos.conf.5 \
102
 
                > $(MANDIR)/man5/mandos.conf.5.gz
103
 
        gzip --best --to-stdout mandos-clients.conf.5 \
104
 
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
105
 
 
106
 
install-client: all doc /usr/share/initramfs-tools/hooks/.
107
 
        mkdir --mode=0755 --parents $(PREFIX)/lib/mandos $(CONFDIR) \
108
 
                $(MANDIR)/man8
109
 
        -mkdir --mode=0700 $(PREFIX)/lib/mandos/plugins.d
110
 
        chmod u=rwx,g=,o= $(PREFIX)/lib/mandos/plugins.d
111
 
        install --mode=0755 --target-directory=$(PREFIX)/lib/mandos \
112
 
                plugin-runner
113
 
        install --mode=0755 --target-directory=$(PREFIX)/sbin \
114
 
                mandos-keygen
115
 
        install --mode=0755 \
116
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
117
 
                plugins.d/password-prompt
118
 
        install --mode=4755 \
119
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
120
 
                plugins.d/password-request
121
 
        install initramfs-tools-hook \
122
 
                /usr/share/initramfs-tools/hooks/mandos
123
 
        install initramfs-tools-hook-conf \
124
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos
125
 
        install initramfs-tools-script \
126
 
                /usr/share/initramfs-tools/scripts/local-top/mandos
127
 
        gzip --best --to-stdout mandos-keygen.8 \
128
 
                > $(MANDIR)/man8/mandos-keygen.8.gz
129
 
        gzip --best --to-stdout plugin-runner.8mandos \
130
 
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
131
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
132
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
133
 
        gzip --best --to-stdout plugins.d/password-request.8mandos \
134
 
                > $(MANDIR)/man8/password-request.8mandos.gz
135
 
        -$(PREFIX)/sbin/mandos-keygen
136
 
        update-initramfs -k all -u
137
 
 
138
 
uninstall: uninstall-server uninstall-client
139
 
 
140
 
uninstall-server: $(PREFIX)/sbin/mandos
141
 
        -rm --force $(PREFIX)/sbin/mandos \
142
 
                $(MANDIR)/man8/mandos.8.gz \
143
 
                $(MANDIR)/man5/mandos.conf.5.gz \
144
 
                $(MANDIR)/man5/mandos-clients.conf.5.gz
145
 
        -rmdir $(CONFDIR)
146
 
 
147
 
uninstall-client:
148
 
# Refuse to uninstall client if /etc/crypttab is explicitly configured
149
 
# to use it.
150
 
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
151
 
                /etc/crypttab
152
 
        -rm --force $(PREFIX)/sbin/mandos-keygen \
153
 
                $(PREFIX)/lib/mandos/plugin-runner \
154
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
155
 
                $(PREFIX)/lib/mandos/plugins.d/password-request \
156
 
                /usr/share/initramfs-tools/hooks/mandos \
157
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos \
158
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
159
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
160
 
                $(MANDIR)/man8/password-prompt.8mandos.gz \
161
 
                $(MANDIR)/man8/password-request.8mandos.gz
162
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
163
 
                 $(PREFIX)/lib/mandos $(CONFDIR)
164
 
        update-initramfs -k all -u
165
 
 
166
 
purge: purge-server purge-client
167
 
 
168
 
purge-server: uninstall-server
169
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf
170
 
        -rmdir $(CONFDIR)
171
 
 
172
 
purge-client: uninstall-client
173
 
        -rm --force $(CONFDIR)/seckey.txt $(CONFDIR)/pubkey.txt
174
 
        -rmdir $(CONFDIR) $(CONFDIR)/plugins.d
 
31
        -rm -f $(PROGS) $(objects) core