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