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