/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: 2008-08-16 03:29:08 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080816032908-ihw7c05r2mnyk389
Add feature to specify custom environment variables for plugins.

* plugin-runner.c (plugin): New members "environ" and "envc" to
                            contain possible custom environment.
  (getplugin): Return NULL on failure instead of doing exit(); all
               callers changed.
  (add_to_char_array): New helper function for "add_argument" and
                       "add_environment".
  (addargument): Renamed to "add_argument".  Return bool.  Call
                 "add_to_char_array" to actually do things.
  (add_environment): New; analogous to "add_argument".
  (addcustomargument): Renamed to "add_to_argv" to avoid confusion
                       with "add_argument".
  (main): New options "--global-envs" and "--envs-for" to specify
          custom environment for plugins.  Print environment for
          plugins in debug mode.  Use asprintf instead of strcpy and
          strcat.  Use execve() for plugins with custom environments.
          Free environment for plugin when freeing plugin list.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
OPTIMIZE=-Os
15
15
LANGUAGE=-std=gnu99
16
16
# PREFIX=/usr/local
17
 
PREFIX=$(DESTDIR)/usr
 
17
PREFIX=/usr
18
18
# CONFDIR=/usr/local/lib/mandos
19
 
CONFDIR=$(DESTDIR)/etc/mandos
 
19
CONFDIR=/etc/mandos
20
20
# MANDIR=/usr/local/man
21
 
MANDIR=$(DESTDIR)/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)
 
21
MANDIR=/usr/share/man
29
22
 
30
23
# Do not change these two
31
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
32
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
 
24
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) $(LANGUAGE)
33
25
LDFLAGS=$(COVERAGE)
34
26
 
35
 
# Commands to format a DocBook refentry document into a manual page
36
 
DOCBOOKTOMAN=cd $(dir $^); xsltproc --nonet --xinclude \
 
27
DOCBOOKTOMAN=xsltproc --nonet \
37
28
        --param man.charmap.use.subset          0 \
38
29
        --param make.year.ranges                1 \
39
30
        --param make.single.year.ranges         1 \
40
31
        --param man.output.quietly              1 \
41
 
        --param man.authors.section.enabled     0 \
42
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
43
 
        $(notdir $<); \
44
 
        $(MANPOST) $(notdir $@)
45
 
# DocBook-to-man post-processing to fix a \n escape bug
46
 
MANPOST=sed --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
 
32
        --param man.authors.section.enabled     0
47
33
 
48
34
PLUGINS=plugins.d/password-prompt plugins.d/password-request
49
35
PROGS=plugin-runner $(PLUGINS)
52
38
        plugins.d/password-prompt.8mandos mandos.conf.5 \
53
39
        mandos-clients.conf.5
54
40
 
55
 
objects=$(addsuffix .o,$(PROGS))
 
41
objects=$(shell for p in $(PROGS); do echo $${p}.o; done)
56
42
 
57
43
all: $(PROGS)
58
44
 
59
45
doc: $(DOCS)
60
46
 
61
47
%.5: %.xml
62
 
        $(DOCBOOKTOMAN)
 
48
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
63
49
 
64
50
%.8: %.xml
65
 
        $(DOCBOOKTOMAN)
 
51
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
66
52
 
67
53
%.8mandos: %.xml
68
 
        $(DOCBOOKTOMAN)
69
 
 
70
 
mandos.8: mandos.xml mandos-options.xml
71
 
        $(DOCBOOKTOMAN)
72
 
 
73
 
mandos.conf.5: mandos.conf.xml mandos-options.xml
74
 
        $(DOCBOOKTOMAN)
 
54
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
 
55
 
 
56
plugin-runner: plugin-runner.o
 
57
        $(LINK.o) -lgnutls $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
75
58
 
76
59
plugins.d/password-request: plugins.d/password-request.o
77
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
78
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
79
 
 
80
 
.PHONY : all doc clean distclean run-client run-server install \
 
60
        $(LINK.o) -lgnutls -lavahi-core -lgpgme $(COMMON) $^ \
 
61
                $(LOADLIBES) $(LDLIBS) -o $@
 
62
 
 
63
plugins.d/password-prompt: plugins.d/password-prompt.o
 
64
        $(LINK.o) $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
65
 
 
66
.PHONY : all clean distclean run-client run-server install \
81
67
        install-server install-client uninstall uninstall-server \
82
68
        uninstall-client purge purge-server purge-client
83
69
 
104
90
install: install-server install-client
105
91
 
106
92
install-server: doc
107
 
        install --directory --parents $(CONFDIR) $(MANDIR)/man5 \
 
93
        mkdir --mode=0755 --parents $(CONFDIR) $(MANDIR)/man5 \
108
94
                $(MANDIR)/man8
109
95
        install --mode=0755 mandos $(PREFIX)/sbin/mandos
110
96
        install --mode=0644 --target-directory=$(CONFDIR) mandos.conf
118
104
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
119
105
 
120
106
install-client: all doc /usr/share/initramfs-tools/hooks/.
121
 
        install --directory --parents $(PREFIX)/lib/mandos \
122
 
                $(CONFDIR) $(MANDIR)/man8
123
 
        install --directory --mode=0700 $(PREFIX)/lib/mandos/plugins.d
 
107
        mkdir --mode=0755 --parents $(PREFIX)/lib/mandos $(CONFDIR) \
 
108
                $(MANDIR)/man8
 
109
        -mkdir --mode=0700 $(PREFIX)/lib/mandos/plugins.d
124
110
        chmod u=rwx,g=,o= $(PREFIX)/lib/mandos/plugins.d
125
111
        install --mode=0755 --target-directory=$(PREFIX)/lib/mandos \
126
112
                plugin-runner