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