Cleanup debian/rules, partially based on a patch from Paul Hampson
[freeradius.git] / debian / rules
1 #! /usr/bin/make -f
2 #
3 #       debian/rules file for freeradius
4 #
5
6 SHELL           =/bin/bash
7
8 package         = freeradius
9 debiandir       = $(shell pwd)/debian
10 freeradius_dir  = $(debiandir)/$(package)
11
12 mandir          = /usr/share/man
13 libdir          = /usr/lib/$(package)
14 logdir          = /var/log/$(package)
15 pkgdocdir       = /usr/share/doc/$(package)
16 raddbdir        = /etc/$(package)
17
18 build:
19 # Builds the binary package.
20         dh_testdir
21         # dh_testroot
22         ./configure \
23                 --prefix=/usr \
24                 --exec-prefix=/usr \
25                 --mandir=$(mandir) \
26                 --sysconfdir=/etc \
27                 --libdir=$(libdir) \
28                 --datadir=/usr/share \
29                 --localstatedir=/var \
30                 --with-raddbdir=$(raddbdir) \
31                 --with-logdir=/var/log/$(package) \
32                 --with-thread-pool --with-system-libtool \
33                 --enable-ltdl-install=no --enable-strict-dependencies
34         
35         # Modify Make.inc for Debian...
36         TEMPFILE=`mktemp /tmp/radmake-XXXXXX`; \
37         cp Make.inc $$TEMPFILE; \
38         cat $$TEMPFILE \
39                 | sed -e 's!${localstatedir}/run/radiusd!${localstatedir}/run/freeradius!' \
40                         > Make.inc; \
41         rm $$TEMPFILE
42 #               This is currently a NOP
43 #               | sed -e 's!$(datadir)/freeradius!$(datadir)/freeradius!' \
44
45         make
46         touch build
47
48 # Architecture independant files.
49 binary-indep: build
50
51 # Make a binary package (.deb file)
52 binary-arch: build
53         dh_clean
54         dh_installdirs
55         make install R=$(freeradius_dir)
56
57         # rename radius binary to play nicely with others
58         mv $(freeradius_dir)/usr/sbin/radiusd $(freeradius_dir)/usr/sbin/$(package)
59
60         # clean up install cruft.  $$&@!%
61         rm $(freeradius_dir)/usr/sbin/rc.radiusd
62         test ! -d $(freeradius_dir)/etc/raddb || rmdir $(freeradius_dir)/etc/raddb
63         test ! -d $(freeradius_dir)/var/log/radius/radacct || rmdir $(freeradius_dir)/var/log/radius/radacct
64         test ! -d $(freeradius_dir)/var/log/radius || rmdir $(freeradius_dir)/var/log/radius
65 #       Yuck! the makefile in doc/ does this.
66         rm -rf $(freeradius_dir)/usr/share/doc/freeradius-0.9-pre
67
68         # split out inconvenient/controversal modules to other places
69         for modname in krb5 ldap mysql postgresql; do \
70                 mkdir -p $(debiandir)/$(package)-$${modname}/$(libdir); \
71                 mv $(freeradius_dir)/$(libdir)/rlm*_$${modname}* $(debiandir)/$(package)-$${modname}/$(libdir)/; \
72         done
73
74         # man pages & docs
75         install -g root -m 644 CREDITS $(freeradius_dir)/$(pkgdocdir)/credits
76         dh_installdocs -XChangeLog -X00-OLD -XCVS -XMakefile doc/*
77         dh_installdocs `find src/modules/rlm_sql/drivers -type f -name \*.sql`
78         dh_installchangelogs doc/ChangeLog
79
80         # supporting programs
81         install -g root -m 755 $(debiandir)/initscript $(freeradius_dir)/etc/init.d/$(package)
82         TEMPFILE=`mktemp /tmp/radconf-XXXXXX`; \
83         cp $(freeradius_dir)/$(raddbdir)/radiusd.conf $$TEMPFILE; \
84         cat $$TEMPFILE \
85                 | sed -e 's/        /   /g' \
86                 | sed -e '/^    example {/,/^   }/s/^/#/' \
87                 | sed -e 's/#   shadow = /shadow = /' \
88                 | sed -e 's/^#\?group = nobody/group = freerad/' \
89                 | sed -e 's/^#\?user = nobody/user = freerad/' \
90                 | sed -e 's@/run/radiusd@/run/freeradius@' \
91                         > $(freeradius_dir)/$(raddbdir)/radiusd.conf; \
92         rm $$TEMPFILE
93
94         dh_strip
95         # We don't need ldconfig. None of our libraries go in it's paths
96         dh_makeshlibs -n
97         dh_shlibdeps
98         dh_installdeb
99         dh_compress
100         dh_fixperms
101         dh_md5sums
102         dh_gencontrol
103         dh_builddeb
104
105 clean:  
106         rm -f build debian/{files,substvars} debian/*.debhelper
107         [ -f Make.inc ] && make distclean || true
108         dh_clean
109         rm -rf $(freeradius_dir) $(debiandir)/$(package)-{ldap,postgresql,mysql,krb5}{,.substvars}
110
111 binary: binary-indep binary-arch
112
113 # for the maintainer only
114 sanitycheck:
115         @echo -n "sanity: checking for overzealous undocumented file... "
116         @find man/ -type f |grep \. |sed -e 's%man/man./%%' | { \
117                 while read manpage; do \
118                         grep $$manpage debian/$(package).undocumented | read filename && echo -n $$filename; \
119                 done; \
120         } || true
121         @test -n $$filename
122         @echo good.
123
124 .PHONY: binary binary-arch binary-indep clean sanitycheck