86d21a9f7340eaf9d4b4acc6e2a3cfdecb33cfaf
[freeside.git] / install / rpm / freeside.spec
1 %{!?_initrddir:%define _initrddir /etc/rc.d/init.d}
2
3 Summary: Freeside ISP Billing System
4 Name: freeside
5 Version: 1.5.7
6 Release: 3
7 License: GPL
8 Group: Applications/Internet
9 URL: http://www.sisd.com/freeside/
10 Packager: Richard Siddall <richard.siddall@elirion.net>
11 Vendor: Freeside
12 Source: http://www.sisd.com/freeside/%{name}-%{version}.tar.gz
13 Source1: freeside-mason.conf
14 Source2: freeside-asp.conf
15 Source3: freeside-install
16 Source4: freeside-import
17 Source5: freeside.sysconfig
18 Patch: %{name}-%{version}.build.patch
19 Patch1: %{name}-%{version}.dbd-pg.patch
20 Patch2: %{name}-%{version}.mod_perl2.patch
21 Patch3: %{name}-%{version}.redhat.patch
22 Patch4: %{name}-%{version}.rpm.patch
23 Patch5: %{name}-%{version}.emailsubject.patch
24 Patch6: %{name}-%{version}.nasport.patch
25 Patch7: %{name}-%{version}.flat_prorate.patch
26 Patch8: %{name}-%{version}.typo.patch
27 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
28 BuildArch: noarch
29 Requires: %{name}-frontend
30 Requires: %{name}-backend
31 Requires: tetex-latex
32 %{?fc1:BuildRequires: httpd}
33 %{?el3:BuildRequires: httpd}
34 %{?rh9:BuildRequires: httpd}
35 %{?rh8:BuildRequires: httpd}
36 %{?rh7:BuildRequires: apache}
37 %{?el2:BuildRequires: apache}
38 %{?rh6:BuildRequires: apache}
39
40 %description
41 Freeside is a flexible ISP billing system written by Ivan Kohler
42
43 %package mason
44 Summary: HTML::Mason interface for %{name}
45 Group: Applications/Internet
46 Prefix: /var/www/freeside
47 Requires: mod_ssl
48 Requires: perl(HTML::Mason)
49 Requires: perl(HTML::Mason::ApacheHandler)
50 Requires: perl(CGI)
51 Requires: perl(Date::Format)
52 Requires: perl(Date::Parse)
53 Requires: perl(Time::Local)
54 Requires: perl(Time::Duration)
55 Requires: perl(Tie::IxHash)
56 Requires: perl(URI::Escape)
57 Requires: perl(HTML::Entities)
58 Requires: perl(IO::Handle)
59 Requires: perl(IO::File)
60 Requires: perl(IO::Scalar)
61 Requires: perl(Net::Whois::Raw)
62 Requires: perl(Text::CSV_XS)
63 Requires: perl(Spreadsheet::WriteExcel)
64 Requires: perl(Business::CreditCard)
65 Requires: perl(String::Approx)
66 Requires: perl(Chart::LinesPoints)
67 Requires: perl(HTML::Widgets::SelectLayers)
68 Requires: perl(FS)
69 Requires: perl(FS::UID)
70 Requires: perl(FS::Record)
71 Requires: perl(FS::Conf)
72 Requires: perl(FS::CGI)
73 Requires: perl(FS::UI::Web)
74 Requires: perl(FS::Msgcat)
75 Requires: perl(FS::Misc)
76 Requires: perl(FS::Report::Table::Monthly)
77 Requires: perl(FS::TicketSystem)
78 Requires: perl(FS::agent)
79 Requires: perl(FS::agent_type)
80 Requires: perl(FS::domain_record)
81 Requires: perl(FS::cust_bill)
82 Requires: perl(FS::cust_bill_pay)
83 Requires: perl(FS::cust_credit)
84 Requires: perl(FS::cust_credit_bill)
85 Requires: perl(FS::cust_main)
86 Requires: perl(FS::cust_main_county)
87 Requires: perl(FS::cust_pay)
88 Requires: perl(FS::cust_pkg)
89 Requires: perl(FS::cust_refund)
90 Requires: perl(FS::cust_svc)
91 Requires: perl(FS::nas)
92 Requires: perl(FS::part_bill_event)
93 Requires: perl(FS::part_pkg)
94 Requires: perl(FS::part_referral)
95 Requires: perl(FS::part_svc)
96 Requires: perl(FS::part_svc_router)
97 Requires: perl(FS::part_virtual_field)
98 Requires: perl(FS::pkg_svc)
99 Requires: perl(FS::port)
100 Requires: perl(FS::queue)
101 Requires: perl(FS::raddb)
102 Requires: perl(FS::session)
103 Requires: perl(FS::svc_acct)
104 Requires: perl(FS::svc_acct_pop)
105 Requires: perl(FS::svc_domain)
106 Requires: perl(FS::svc_forward)
107 Requires: perl(FS::svc_www)
108 Requires: perl(FS::router)
109 Requires: perl(FS::addr_block)
110 Requires: perl(FS::svc_broadband)
111 Requires: perl(FS::svc_external)
112 Requires: perl(FS::type_pkgs)
113 Requires: perl(FS::part_export)
114 Requires: perl(FS::part_export_option)
115 Requires: perl(FS::export_svc)
116 Requires: perl(FS::msgcat)
117 Requires: perl(FS::rate)
118 Requires: perl(FS::rate_region)
119 Requires: perl(FS::rate_prefix)
120 Requires: perl(FS::XMLRPC)
121 Requires: perl(MIME::Entity)
122 Requires: perl(Text::Wrapper)
123 Requires: perl(CGI::Cookie)
124 Requires: perl(Time::ParseDate)
125 Requires: perl(HTML::Scrubber)
126 Requires: perl(Text::Quoted)
127 Conflicts: %{name}-apacheasp
128 Provides: %{name}-frontend
129 BuildArch: noarch
130
131 %description mason
132 This package includes the HTML::Mason web interface for %{name}.
133 You should install only one %{name} web interface.
134
135 %package apacheasp
136 Summary: Apache::ASP interface for %{name}
137 Group: Applications/Internet
138 Prefix: /var/www/freeside
139 Requires: mod_ssl
140 Requires: perl(Apache::ASP)
141 Requires: perl(CGI)
142 Requires: perl(Date::Format)
143 Requires: perl(Date::Parse)
144 Requires: perl(Time::Local)
145 Requires: perl(Time::Duration)
146 Requires: perl(Tie::IxHash)
147 Requires: perl(URI::Escape)
148 Requires: perl(HTML::Entities)
149 Requires: perl(IO::Handle)
150 Requires: perl(IO::File)
151 Requires: perl(IO::Scalar)
152 Requires: perl(Net::Whois::Raw)
153 Requires: perl(Text::CSV_XS)
154 Requires: perl(Spreadsheet::WriteExcel)
155 Requires: perl(Business::CreditCard)
156 Requires: perl(String::Approx)
157 Requires: perl(Chart::LinesPoints)
158 Requires: perl(HTML::Widgets::SelectLayers)
159 Requires: perl(FS)
160 Requires: perl(FS::UID)
161 Requires: perl(FS::Record)
162 Requires: perl(FS::Conf)
163 Requires: perl(FS::CGI)
164 Requires: perl(FS::UI::Web)
165 Requires: perl(FS::Msgcat)
166 Requires: perl(FS::Misc)
167 Requires: perl(FS::Report::Table::Monthly)
168 Requires: perl(FS::TicketSystem)
169 Requires: perl(FS::agent)
170 Requires: perl(FS::agent_type)
171 Requires: perl(FS::domain_record)
172 Requires: perl(FS::cust_bill)
173 Requires: perl(FS::cust_bill_pay)
174 Requires: perl(FS::cust_credit)
175 Requires: perl(FS::cust_credit_bill)
176 Requires: perl(FS::cust_main)
177 Requires: perl(FS::cust_main_county)
178 Requires: perl(FS::cust_pay)
179 Requires: perl(FS::cust_pkg)
180 Requires: perl(FS::cust_refund)
181 Requires: perl(FS::cust_svc)
182 Requires: perl(FS::nas)
183 Requires: perl(FS::part_bill_event)
184 Requires: perl(FS::part_pkg)
185 Requires: perl(FS::part_referral)
186 Requires: perl(FS::part_svc)
187 Requires: perl(FS::part_svc_router)
188 Requires: perl(FS::part_virtual_field)
189 Requires: perl(FS::pkg_svc)
190 Requires: perl(FS::port)
191 Requires: perl(FS::queue)
192 Requires: perl(FS::raddb)
193 Requires: perl(FS::session)
194 Requires: perl(FS::svc_acct)
195 Requires: perl(FS::svc_acct_pop)
196 Requires: perl(FS::svc_domain)
197 Requires: perl(FS::svc_forward)
198 Requires: perl(FS::svc_www)
199 Requires: perl(FS::router)
200 Requires: perl(FS::addr_block)
201 Requires: perl(FS::svc_broadband)
202 Requires: perl(FS::svc_external)
203 Requires: perl(FS::type_pkgs)
204 Requires: perl(FS::part_export)
205 Requires: perl(FS::part_export_option)
206 Requires: perl(FS::export_svc)
207 Requires: perl(FS::msgcat)
208 Requires: perl(FS::rate)
209 Requires: perl(FS::rate_region)
210 Requires: perl(FS::rate_prefix)
211 Requires: perl(Data::Dumper)
212 Conflicts: %{name}-mason
213 Provides: %{name}-frontend
214 BuildArch: noarch
215
216 %description apacheasp
217 This package includes the Apache::ASP web interface for %{name}.
218 You should install only one %{name} web interface.
219 Please note that this interface is deprecated as future versions of %{name} will use
220 the HTML::Mason-based RT tracking tool.
221
222 %package postgresql
223 Summary: PostgreSQL backend for %{name}
224 Group: Applications/Internet
225 Requires: perl-DBI
226 Requires: perl-DBD-Pg >= 1.32
227 Requires: %{name}
228 Conflicts: %{name}-mysql
229 Provides: %{name}-backend
230
231 %description postgresql
232 This package includes the PostgreSQL database backend for %{name}.
233 You should install only one %{name} database backend.
234 Please note that this RPM does not create the database or database user; it only installs the required drivers.
235
236 %package mysql
237 Summary: MySQL database backend for %{name}
238 Group: Applications/Internet
239 Requires: perl-DBI
240 Requires: perl-DBD-MySQL
241 Requires: %{name}
242 Conflicts: %{name}-postgresql
243 Provides: %{name}-backend
244
245 %description mysql
246 This package includes the MySQL database backend for %{name}.
247 You should install only one %{name} database backend.
248 Please note that this RPM does not create the database or database user; it only installs the required drivers.
249
250 %package selfservice
251 Summary: Self-service interface for %{name}
252 Group: Applications/Internet
253 Conflicts: %{name}
254
255 %description selfservice
256 This package installs the Perl modules and CGI scripts for the self-service interface for %{name}.
257 For security reasons, it is set to conflict with %{name} so you cannot install the billing system and self-service interface on the same computer.
258
259 %prep
260 %setup
261 %patch0 -p1
262 %patch1 -p1
263 %patch2 -p1
264 %patch3 -p1
265 %patch4 -p1
266 %patch5 -p1
267 %patch6 -p1
268 %patch7 -p1
269 %patch8 -p1
270 %{__cp} %SOURCE3 FS/bin
271 %{__cp} %SOURCE4 FS/bin
272 #%{__rm} -r FS/FS/UI/Gtk.pm
273 perl -pi -e 's|/usr/local/bin|%{buildroot}%{_bindir}|g' FS/Makefile.PL
274 perl -ni -e 'print if !/\s+chown\s+/;' Makefile
275
276 %build
277 # Add freeside user and group if there isn't already such a user
278 %{__id} freeside 2>/dev/null >/dev/null || /usr/sbin/useradd -s /bin/sh -r freeside
279 # False laziness...
280 %{__make} htmlman
281 echo "Made HTML manuals"
282 touch htmlman
283 %{__make} alldocs
284
285 cd FS
286 CFLAGS="$RPM_OPT_FLAGS" perl Makefile.PL PREFIX=$RPM_BUILD_ROOT%{_prefix} SITELIBEXP=$RPM_BUILD_ROOT%{perl_sitelib} SITEARCHEXP=$RPM_BUILD_ROOT%{perl_sitearch}
287 %{__make} OPTIMIZE="$RPM_OPT_FLAGS"
288 cd ..
289
290 cd fs_selfservice/FS-SelfService
291 CFLAGS="$RPM_OPT_FLAGS" perl Makefile.PL PREFIX=$RPM_BUILD_ROOT%{_prefix} SITELIBEXP=$RPM_BUILD_ROOT%{perl_sitelib} SITEARCHEXP=$RPM_BUILD_ROOT%{perl_sitearch}
292 %{__make} OPTIMIZE="$RPM_OPT_FLAGS"
293 cd ../..
294
295 %install
296 %{__rm} -rf %{buildroot}
297
298 FREESIDE_DOCUMENT_ROOT=/var/www/freeside
299 %{__mkdir_p} $RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/asp
300 %{__mkdir_p} $RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/mason
301
302 touch install-perl-modules perl-modules
303 %{__make} create-config FREESIDE_CONF=$RPM_BUILD_ROOT/usr/local/etc/freeside
304 %{__rm} install-perl-modules perl-modules
305
306 touch docs
307 %{__perl} -pi -e "s|%%%%%%FREESIDE_DOCUMENT_ROOT%%%%%%|$FREESIDE_DOCUMENT_ROOT/asp|g" htetc/global.asa
308 %{__perl} -pi -e "s|%%%%%%FREESIDE_DOCUMENT_ROOT%%%%%%|$FREESIDE_DOCUMENT_ROOT/mason|g" htetc/handler.pl
309 %{__make} install-docs PREFIX=$RPM_BUILD_ROOT%{_prefix} TEMPLATE=asp FREESIDE_DOCUMENT_ROOT=$RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/asp ASP_GLOBAL=$RPM_BUILD_ROOT/usr/local/etc/freeside/asp-global
310 %{__make} install-docs PREFIX=$RPM_BUILD_ROOT%{_prefix} TEMPLATE=mason FREESIDE_DOCUMENT_ROOT=$RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/mason MASON_HANDLER=$RPM_BUILD_ROOT/usr/local/etc/freeside/handler.pl MASONDATA=$RPM_BUILD_ROOT/usr/local/etc/freeside/masondata
311 %{__rm} docs
312
313 # Install the init script
314 %{__mkdir_p} $RPM_BUILD_ROOT%{_initrddir}
315 %{__install} init.d/freeside-init $RPM_BUILD_ROOT%{_initrddir}/freeside
316
317 # Install the HTTPD configuration snippets for HTML::Mason and Apache::ASP
318 %{__mkdir_p} $RPM_BUILD_ROOT/etc/httpd/conf.d
319 %{__install} %SOURCE1 $RPM_BUILD_ROOT/etc/httpd/conf.d
320 %{__install} %SOURCE2 $RPM_BUILD_ROOT/etc/httpd/conf.d
321
322 # Install all the miscellaneous binaries into /usr/share or similar
323 %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}
324 %{__install} bin/* $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}
325
326 #%{__mkdir_p} $RPM_BUILD_ROOT%{_bindir}
327 #%{__install} %SOURCE3 $RPM_BUILD_ROOT%{_bindir}
328 #%{__install} %SOURCE4 $RPM_BUILD_ROOT%{_bindir}
329
330 %{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
331 %{__install} %SOURCE5 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
332
333 %{__mkdir_p} $RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/selfservice
334 %{__mkdir_p} $RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/selfservice/cgi
335 %{__mkdir_p} $RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/selfservice/templates
336 %{__install} fs_selfservice/FS-SelfService/cgi/* $RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/selfservice/cgi
337 %{__install} fs_selfservice/FS-SelfService/*.template $RPM_BUILD_ROOT$FREESIDE_DOCUMENT_ROOT/selfservice/templates
338
339 # Install the main billing server Perl files
340 cd FS
341 eval `perl '-V:installarchlib'`
342 %{__mkdir_p} $RPM_BUILD_ROOT$installarchlib
343 %makeinstall PREFIX=$RPM_BUILD_ROOT%{_prefix}
344 %{__rm} -f `find $RPM_BUILD_ROOT -type f -name perllocal.pod -o -name .packlist`
345
346 [ -x %{_libdir}/rpm/brp-compress ] && %{_libdir}/rpm/brp-compress
347
348 find $RPM_BUILD_ROOT%{_prefix} -type f -print | \
349         grep -v '/usr/local/etc/freeside/conf' | \
350         grep -v '/usr/local/etc/freeside/secrets' | \
351         sed "s@^$RPM_BUILD_ROOT@@g" > %{name}-%{version}-%{release}-filelist
352 if [ "$(cat %{name}-%{version}-%{release}-filelist)X" = "X" ] ; then
353     echo "ERROR: EMPTY FILE LIST"
354     exit 1
355 fi
356 cd ..
357
358 # Install the self-service interface Perl files
359 cd fs_selfservice/FS-SelfService
360 eval `perl '-V:installarchlib'`
361 %{__mkdir_p} $RPM_BUILD_ROOT/tmp
362 %{__mkdir_p} $RPM_BUILD_ROOT/tmp/$installarchlib
363 %makeinstall PREFIX=$RPM_BUILD_ROOT/tmp%{_prefix} INSTALLSCRIPT=$RPM_BUILD_ROOT/tmp%{_prefix}/local/bin
364 %{__rm} -f `find $RPM_BUILD_ROOT -type f -name perllocal.pod -o -name .packlist`
365
366 [ -x %{_libdir}/rpm/brp-compress ] && (export RPM_BUILD_ROOT=$RPM_BUILD_ROOT/tmp; %{_libdir}/rpm/brp-compress)
367
368 find $RPM_BUILD_ROOT/tmp%{_prefix} -type f -print | \
369         sed "s@^$RPM_BUILD_ROOT/tmp@@g" > %{name}-%{version}-%{release}-selfservice-filelist
370 if [ "$(cat %{name}-%{version}-%{release}-selfservice-filelist)X" = "X" ] ; then
371     echo "ERROR: EMPTY FILE LIST"
372     exit 1
373 fi
374 # Got the file list, now remove the temporary installation and re-install
375 %{__rm} -r $RPM_BUILD_ROOT/tmp
376 %{__mkdir_p} $RPM_BUILD_ROOT%{_prefix}/local/bin
377 %makeinstall PREFIX=$RPM_BUILD_ROOT%{_prefix} INSTALLSCRIPT=$RPM_BUILD_ROOT%{_prefix}/local/bin
378 %{__rm} -f `find $RPM_BUILD_ROOT -type f -name perllocal.pod -o -name .packlist`
379
380 [ -x %{_libdir}/rpm/brp-compress ] && %{_libdir}/rpm/brp-compress
381 cd ../..
382
383 %pre
384 if ! %{__id} freeside &>/dev/null; then
385         /usr/sbin/useradd -r freeside
386 fi
387
388 %pre selfservice
389 if ! %{__id} freeside &>/dev/null; then
390         /usr/sbin/useradd -r freeside
391 fi
392
393 %clean
394 %{__rm} -rf %{buildroot}
395
396 %files -f FS/%{name}-%{version}-%{release}-filelist
397 /etc/rc.d/init.d/freeside
398 %attr(0644,root,root) %config(noreplace) /etc/sysconfig/freeside
399 %defattr(-,freeside,freeside,-)
400 %doc README INSTALL CREDITS GPL
401 %attr(-,freeside,freeside) %config(noreplace) /usr/local/etc/freeside/conf.*
402 %attr(-,freeside,freeside) %config(noreplace) /usr/local/etc/freeside/counters.*
403 %attr(-,freeside,freeside) %config(noreplace) /usr/local/etc/freeside/cache.*
404 %attr(-,freeside,freeside) %config(noreplace) /usr/local/etc/freeside/export.*
405 %attr(-,freeside,freeside) %config(noreplace) /usr/local/etc/freeside/secrets
406 %attr(-,freeside,freeside) %dir /usr/local/etc/freeside
407
408 %files apacheasp
409 %defattr(-, freeside, freeside, 0755)
410 %attr(0755,freeside,freeside) /var/www/freeside/asp
411 %attr(-,freeside,freeside) /usr/local/etc/freeside/asp-global
412 %attr(0644,root,root) /etc/httpd/conf.d/freeside-asp.conf
413
414 %files mason
415 %defattr(-, freeside, freeside, 0755)
416 %attr(0755,freeside,freeside) /var/www/freeside/mason
417 %attr(-,freeside,freeside) /usr/local/etc/freeside/handler.pl
418 %attr(-,freeside,freeside) /usr/local/etc/freeside/masondata
419 %attr(0644,root,root) /etc/httpd/conf.d/freeside-mason.conf
420
421 %files postgresql
422
423 %files mysql
424
425 %files selfservice -f fs_selfservice/FS-SelfService/%{name}-%{version}-%{release}-selfservice-filelist
426 %defattr(-, freeside, freeside, 0644)
427 %attr(0755,freeside,freeside) /var/www/freeside/selfservice/cgi
428 %attr(0644,freeside,freeside) /var/www/freeside/selfservice/templates
429
430 %changelog
431 * Wed Oct 12 2005 Richard Siddall <richard.siddall@elirion.net> - 1.5.7
432 - Added self-service package
433
434 * Sun Feb 06 2005 Richard Siddall <richard.siddall@elirion.net> - 1.5.0pre6-1
435 - Initial package