debian packages!
[freeside.git] / debian / rules
1 #!/usr/bin/make -f
2 # -*- makefile -*-
3
4 # Uncomment this to turn on verbose mode.
5 #export DH_VERBOSE=1
6
7 # If set to a true value then MakeMaker's prompt function will
8 # always return the default without waiting for user input.
9 #export PERL_MM_USE_DEFAULT=1
10
11 PERL   ?= /usr/bin/perl
12 #PACKAGE = $(shell dh_listpackages)
13 PACKAGE = freeside
14 TMP     = $(CURDIR)/debian/$(PACKAGE)
15 DBC_SCRIPTS = $(TMP)/usr/share/dbconfig-common/scripts/freeside
16
17 #this is gotten from dbconfig-common
18 DB_TYPE = db_type_is_configured_during_pkg_install_by_dbconfig-common_not_at_build_time
19
20 #no chance, it doesn't get backslash-interpolted now...
21 #DEBVERSION                    = `head -1 debian/changelog | cut -d')' -f1 | cut -c11-`
22 DEBVERSION                    = 1.7.3~rc2-1
23 export VERSION                = $(DEBVERSION) (Debian)
24
25 export FREESIDE_CONF          = /etc/freeside
26 export FREESIDE_LOG           = /var/log/freeside
27 export FREESIDE_LOCK          = /var/lock/freeside
28 export FREESIDE_CACHE         = $(TMP)/var/cache/freeside
29 FREESIDE_CACHE         = $(TMP)/var/cache/freeside
30
31 #XXX huh?
32 export FREESIDE_EXPORT        = /var/spool/freeside
33
34 #XXX own subdir?
35 export MASON_HANDLER          = $(TMP)-webui/usr/share/freeside/handler.pl
36
37 export APACHE_VERSION         = 2
38 export FREESIDE_DOCUMENT_ROOT = $(TMP)-webui/usr/share/freeside/www
39 export INIT_FILE              = $(TMP).init
40 export INIT_INSTALL           = /bin/true
41 export HTTPD_RESTART          = /bin/true
42 #export APACHE_CONF            = $(TMP)-webui/etc/apache2/conf.d
43 export APACHE_CONF            = $(TMP)-webui/etc/freeside/apache2
44 export FREESIDE_RESTART       = /bin/true
45
46 #XXX root?
47 export INSTALLGROUP           = adm
48
49 export SELFSERVICE_MACHINES   = 
50
51 #prompt ?   XXX these are runtime, not buildtime :/
52 export RT_DOMAIN              = `dnsdomainname`
53 export RT_TIMEZONE            = `cat /etc/timezone`
54
55 export HOSTNAME               = `hostname -f`
56 export FREESIDE_URL           = http://$(HOSTNAME)/freeside/
57
58 #specific to deb pkg, for purposes of saving off a permanent copy of default
59 #config for postinst and that sort of thing
60 export DEFAULT_CONF           = $(TMP)/usr/share/freeside/default_conf
61
62 #XXX yuck.  proper RT layout is entirely necessary
63 #this seems to infect way to much of RT with the build location, requiring
64 # a kludge to hack it out afterwords.  look into using fakeroot (didn't
65 # realize it would need to be explicit argh)
66 # (but leaving it for now, otherwise can't get RT to put files where we need em)
67 export RT_PATH                = $(TMP)/var/opt/freeside/rt
68
69 # This has to be exported to make some magic below work.
70 export DH_OPTIONS
71
72 configure: configure-stamp
73 configure-stamp:
74         dh_testdir
75         # Add here commands to configure the package.
76         
77         touch configure-stamp
78
79
80 build: build-stamp
81 build-stamp: 
82         dh_testdir
83         # Add commands to compile the package here
84         
85         ( cd FS/ && $(PERL) Makefile.PL INSTALLDIRS=vendor )
86
87         $(MAKE) -e perl-modules
88
89         #TEST#
90
91         touch $@
92
93 clean:
94         dh_testdir
95         dh_testroot
96         dh_clean build-stamp install-stamp
97
98         # Add here commands to clean up after the build process.
99         $(MAKE) -e clean
100         #|| true #XXX freeside clean target fucked
101
102         dh_clean 
103
104 install: install-stamp
105 install-stamp: build-stamp
106         dh_testdir
107         dh_testroot
108         dh_clean -k
109         dh_installdirs
110
111         # Add here commands to install package into
112         # debian/<package>-whatever.
113         ( cd FS/ && $(MAKE) -e DESTDIR=$(TMP)-lib install )
114
115         #install this for postinst later (no create-config)
116         install -d $(DEFAULT_CONF)
117         #install conf/[a-z]* $(DEFAULT_CONF)
118         #CVS is not [a-z]
119         install `ls -d conf/[a-z]* | grep -v CVS` $(DEFAULT_CONF)
120
121         install -d $(FREESIDE_DOCUMENT_ROOT)
122         install -d $(FREESIDE_CACHE)/masondata #MASONDATA
123         $(MAKE) -e install-docs
124
125         #hack the build dir out of Freeside too.  oh yeah, sucky.
126         perl -p -i -e "\
127           s'${TMP}(-webui)?''g;\
128         " ${TMP}-webui/usr/share/freeside/handler.pl \
129           ${TMP}/usr/share/perl5/FS/* \
130           ${TMP}/usr/share/perl5/FS/*/* \
131           ${TMP}/usr/bin/*
132
133         rm -r $(FREESIDE_DOCUMENT_ROOT).*
134
135         install -d $(APACHE_CONF)
136         install debian/freeside.apache-alias.conf $(APACHE_CONF)/freeside-alias.conf
137         FREESIDE_DOCUMENT_ROOT=/usr/share/freeside/www MASON_HANDLER=/usr/share/freeside/handler.pl FREESIDE_CONF=/etc/freeside $(MAKE) -e install-apache
138
139         $(MAKE) -e install-init
140
141         #RT
142         #(configure-rt)
143
144         # XXX need to adjust db-type, db-database, db-rt-user, db-rt-pass
145         # based on info from dbc
146         ( cd rt; \
147           cp config.layout.in config.layout; \
148           perl -p -i -e "\
149             s'%%%FREESIDE_DOCUMENT_ROOT%%%'${FREESIDE_DOCUMENT_ROOT}'g;\
150             s'%%%MASONDATA%%%'${FREESIDE_CACHE}/masondata'g;\
151           " config.layout; \
152           ./configure --prefix=${RT_PATH} \
153                       --enable-layout=Freeside \
154                       --with-db-type=Pg \
155                       --with-db-dba=freeside \
156                       --with-db-database=_DBC_DBNAME_ \
157                       --with-db-rt-user=_DBC_DBUSER_ \
158                       --with-db-rt-pass=_DBC_DBPASS_ \
159                       --with-web-user=freeside \
160                       --with-web-group=freeside \
161                       --with-rt-group=freeside \
162         )
163
164         #(create-rt)
165         install -d $(RT_PATH)
166         ( cd rt; make install )
167         #hack the build dir out of RT.  yeah, sucky.
168         perl -p -i -e "\
169           s'${TMP}''g;\
170         " ${RT_PATH}/etc/RT_Config.pm \
171           ${RT_PATH}/lib/RT.pm \
172           ${RT_PATH}/bin/mason_handler.fcgi \
173           ${RT_PATH}/bin/mason_handler.scgi \
174           ${RT_PATH}/bin/standalone_httpd \
175           ${RT_PATH}/bin/webmux.pl \
176           ${RT_PATH}/bin/rt-crontool \
177           ${RT_PATH}/sbin/rt-dump-database \
178           ${RT_PATH}/sbin/rt-setup-database
179         
180         #hack @INC dir out of RT (well, handler.pl) too.
181         perl -p -i -e "\
182           s'/opt/rt3/'/var/opt/freeside/rt/'g;\
183         " ${TMP}-webui/usr/share/freeside/handler.pl
184
185         mv ${RT_PATH}/etc/RT_Config.pm ${RT_PATH}/etc/RT_Config.pm.dbc
186
187         perl -p -i -e "\
188           s'%%%RT_DOMAIN%%%'${RT_DOMAIN}'g;\
189           s'%%%RT_TIMEZONE%%%'${RT_TIMEZONE}'g;\
190           s'%%%FREESIDE_URL%%%'${FREESIDE_URL}'g;\
191         " ${RT_PATH}/etc/RT_SiteConfig.pm
192
193         install -D debian/dbconfig-common.install $(DBC_SCRIPTS)/install/pgsql
194         install -D debian/dbconfig-common.install $(DBC_SCRIPTS)/install/mysql
195         
196         install -D debian/dbconfig-common.upgrade $(DBC_SCRIPTS)/upgrade/pgsql/$(DEBVERSION)
197         install -D debian/dbconfig-common.upgrade $(DBC_SCRIPTS)/upgrade/mysql/$(DEBVERSION)
198         
199         dh_install
200
201         touch $@
202
203 binary-arch:
204 # We have nothing to do here for an architecture-independent package
205
206 binary-indep: build install
207         dh_testdir
208         dh_testroot
209         dh_installchangelogs ChangeLog
210         dh_installdocs #freeside.docs README AGPL
211         dh_installexamples eg/*
212 #       dh_installmenu
213         dh_installdebconf       
214 #       dh_installlogrotate     
215         dh_installinit
216         dh_installcron
217 #       dh_installinfo
218         dh_installman
219         dh_perl
220         dh_link
221         dh_compress 
222         dh_fixperms
223         dh_installdeb
224         dh_gencontrol
225         dh_md5sums
226         dh_builddeb
227
228 binary: binary-indep binary-arch
229 .PHONY: build clean binary-indep binary-arch binary install