patch from Moritz Muehlenhoff to enable hardened build flags
[debian/sudo] / debian / rules
1 #!/usr/bin/make -f
2
3 export DH_VERBOSE=1
4
5 CFLAGS = `dpkg-buildflags --get CFLAGS`
6 CFLAGS += -Wall -Wno-comment
7 LDFLAGS = `dpkg-buildflags --get LDFLAGS`
8 CPPFLAGS = `dpkg-buildflags --get CPPFLAGS`
9
10 configure: configure-stamp
11 configure-stamp:
12         dh_testdir
13         cp -f /usr/share/misc/config.sub config.sub
14         cp -f /usr/share/misc/config.guess config.guess
15
16         # simple version
17         mkdir -p build-simple
18         cd build-simple && NROFFPROG=/usr/bin/nroff CFLAGS="$(CFLAGS)" \
19             CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" $(CURDIR)/configure \
20                 --prefix=/usr -v \
21                 --with-all-insults \
22                 --with-pam \
23                 --with-fqdn \
24                 --with-logging=syslog \
25                 --with-logfac=authpriv \
26                 --with-env-editor \
27                 --with-editor=/usr/bin/editor \
28                 --with-timeout=15 \
29                 --with-password-timeout=0 \
30                 --with-passprompt="[sudo] password for %p: " \
31                 --disable-root-mailer \
32                 --with-sendmail=/usr/sbin/sendmail \
33                 --with-timedir=/var/lib/sudo \
34                 --mandir=/usr/share/man \
35                 --libexecdir=/usr/lib/sudo
36
37         # LDAP version
38         mkdir -p build-ldap
39         cd build-ldap && NROFFPROG=/usr/bin/nroff CFLAGS="$(CFLAGS)" \
40             CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" $(CURDIR)/configure \
41                 --prefix=/usr -v \
42                 --with-all-insults \
43                 --with-pam \
44                 --with-ldap \
45                 --with-fqdn \
46                 --with-logging=syslog \
47                 --with-logfac=authpriv \
48                 --with-env-editor \
49                 --with-editor=/usr/bin/editor \
50                 --with-timeout=15 \
51                 --with-password-timeout=0 \
52                 --with-passprompt="[sudo] password for %p: " \
53                 --disable-root-mailer \
54                 --disable-setresuid \
55                 --with-sendmail=/usr/sbin/sendmail \
56                 --with-ldap-conf-file=/etc/sudo-ldap.conf \
57                 --mandir=/usr/share/man \
58                 --libexecdir=/usr/lib/sudo \
59                 --with-secure-path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin"
60
61         touch configure-stamp
62
63 build: build-arch build-indep
64 build-arch: build-stamp
65 build-indep: build-stamp
66 build-stamp: configure-stamp
67         dh_testdir
68
69         # ensure our pod changes get picked up
70         $(MAKE) -C doc sudoers.man.in sudo.man.in visudo.man.in
71
72         $(MAKE) -C build-simple
73         $(MAKE) -C build-ldap
74
75         $(MAKE) -C build-simple check
76
77         touch build-stamp
78
79 clean:
80         dh_testdir
81         dh_testroot
82         rm -f configure-stamp build-stamp
83         rm -rf build-simple build-ldap
84         rm -f config.cache
85         dh_clean
86
87 install: build-stamp
88         dh_testdir
89         dh_testroot
90         dh_prep
91         dh_installdirs
92
93         $(MAKE) -C build-simple install DESTDIR=$(CURDIR)/debian/sudo
94         $(MAKE) -C build-ldap   install DESTDIR=$(CURDIR)/debian/sudo-ldap
95
96         # remove stuff we don't want
97         rm -f   debian/sudo*/etc/sudoers \
98                 debian/sudo*/usr/share/doc/sudo/LICENSE* \
99                 debian/sudo*/usr/share/doc/sudo/ChangeLog
100
101         # move upstream-installed docs to the right place for ldap package
102         mv      debian/sudo-ldap/usr/share/doc/sudo/* \
103                 debian/sudo-ldap/usr/share/doc/sudo-ldap/
104         rmdir   debian/sudo-ldap/usr/share/doc/sudo
105
106         # move sample files to the examples folder
107         mv      debian/sudo/usr/share/doc/sudo/sample.* \
108                 debian/sudo/usr/share/doc/sudo/examples/
109         mv      debian/sudo-ldap/usr/share/doc/sudo-ldap/sample.* \
110                 debian/sudo-ldap/usr/share/doc/sudo-ldap/examples/
111
112         # and install things we do want that make install doesn't know about
113         install -o root -g root -m 0644 debian/sudo.pam \
114                 debian/sudo/etc/pam.d/sudo
115         install -o root -g root -m 0644 debian/sudo.pam \
116                 debian/sudo-ldap/etc/pam.d/sudo
117
118         install -o root -g root -m 0644 debian/sudo.lintian \
119                 debian/sudo/usr/share/lintian/overrides/sudo
120         install -o root -g root -m 0644 debian/sudo-ldap.lintian \
121                 debian/sudo-ldap/usr/share/lintian/overrides/sudo-ldap
122
123         install -o root -g root -m 0440 debian/sudoers \
124                 debian/sudo/etc/sudoers
125         install -o root -g root -m 0440 debian/sudoers \
126                 debian/sudo-ldap/etc/sudoers
127
128         install -o root -g root -m 0440 debian/README \
129                 debian/sudo/etc/sudoers.d/README
130         install -o root -g root -m 0440 debian/README \
131                 debian/sudo-ldap/etc/sudoers.d/README
132
133 binary-indep: build install
134
135 binary-arch: build install
136         dh_testdir
137         dh_testroot
138         dh_installdocs -A
139         dh_installinit -psudo -psudo-ldap --name=sudo
140         dh_installman -A
141         dh_installinfo -A
142         dh_installchangelogs ChangeLog 
143         dh_strip
144         dh_compress
145         dh_fixperms
146         chown root.root debian/sudo/usr/bin/sudo debian/sudo-ldap/usr/bin/sudo
147         chmod 4755 debian/sudo/usr/bin/sudo debian/sudo-ldap/usr/bin/sudo
148         chmod 0440      debian/sudo/etc/sudoers.d/README \
149                         debian/sudo-ldap/etc/sudoers.d/README
150         dh_installdeb
151         dh_shlibdeps
152         dh_gencontrol
153         dh_md5sums
154         dh_builddeb
155
156 binary: binary-indep binary-arch
157 .PHONY: configure build-indep build-arch build clean binary-indep binary-arch binary install