summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsiddall <rsiddall>2007-12-14 03:23:52 +0000
committerrsiddall <rsiddall>2007-12-14 03:23:52 +0000
commit0a17fa983e6b225c33bf8a4e261f068e77c48a14 (patch)
tree2b038e84b485c70226aca339982deb2d46541b9d
parent0ff440cadfd91c5001e358fa294db02b5940a6ca (diff)
Ugly hack to extend rpmbuild's auto-requires to process handler.pl. This is loosely based on notes on the Fedora wiki. The internal dependency generator is disabled and as far as possible the same code is used to generate provides and requires. The list of files to be scanned for requires is saved by a supplemental script and if it contains handler.pl, that file is scanned for requires with the standard Perl dependencies checker. References to RT are filtered out as RT is not enabled in this version of the .spec file. This mod obsoletes the freeside-mason-deps.inc file and simplifies building the RPMs.
-rw-r--r--install/rpm/freeside-mason.deps.inc107
-rw-r--r--install/rpm/freeside.spec20
2 files changed, 17 insertions, 110 deletions
diff --git a/install/rpm/freeside-mason.deps.inc b/install/rpm/freeside-mason.deps.inc
deleted file mode 100644
index efc31cae5..000000000
--- a/install/rpm/freeside-mason.deps.inc
+++ /dev/null
@@ -1,107 +0,0 @@
-Requires: perl(Business::CreditCard)
-Requires: perl(CGI)
-Requires: perl(CGI::Cookie)
-Requires: perl(Chart::LinesPoints)
-Requires: perl(Chart::Mountain)
-Requires: perl(Color::Scheme)
-Requires: perl(Date::Format)
-Requires: perl(Date::Parse)
-Requires: perl(DateTime)
-Requires: perl(DateTime::Format::Strptime)
-Requires: perl(FS)
-Requires: perl(FS::AccessRight)
-Requires: perl(FS::CGI)
-Requires: perl(FS::Conf)
-Requires: perl(FS::Misc)
-Requires: perl(FS::Msgcat)
-Requires: perl(FS::Record)
-Requires: perl(FS::Report::Table::Monthly)
-Requires: perl(FS::TicketSystem)
-Requires: perl(FS::UI::Web)
-Requires: perl(FS::UI::bytecount)
-Requires: perl(FS::UID)
-Requires: perl(FS::XMLRPC)
-Requires: perl(FS::access_group)
-Requires: perl(FS::access_groupagent)
-Requires: perl(FS::access_right)
-Requires: perl(FS::access_user)
-Requires: perl(FS::access_usergroup)
-Requires: perl(FS::addr_block)
-Requires: perl(FS::agent)
-Requires: perl(FS::agent_payment_gateway)
-Requires: perl(FS::agent_type)
-Requires: perl(FS::cdr)
-Requires: perl(FS::cust_bill)
-Requires: perl(FS::cust_bill_pay)
-Requires: perl(FS::cust_credit)
-Requires: perl(FS::cust_credit_bill)
-Requires: perl(FS::cust_main)
-Requires: perl(FS::cust_main_county)
-Requires: perl(FS::cust_main_note)
-Requires: perl(FS::cust_pay)
-Requires: perl(FS::cust_pkg)
-Requires: perl(FS::cust_pkg_reason)
-Requires: perl(FS::cust_refund)
-Requires: perl(FS::cust_svc)
-Requires: perl(FS::domain_record)
-Requires: perl(FS::export_svc)
-Requires: perl(FS::inventory_class)
-Requires: perl(FS::inventory_item)
-Requires: perl(FS::msgcat)
-Requires: perl(FS::nas)
-Requires: perl(FS::part_bill_event)
-Requires: perl(FS::part_export)
-Requires: perl(FS::part_export_option)
-Requires: perl(FS::part_pkg)
-Requires: perl(FS::part_referral)
-Requires: perl(FS::part_svc)
-Requires: perl(FS::part_svc_router)
-Requires: perl(FS::part_virtual_field)
-Requires: perl(FS::pay_batch)
-Requires: perl(FS::payby)
-Requires: perl(FS::payment_gateway)
-Requires: perl(FS::pkg_class)
-Requires: perl(FS::pkg_svc)
-Requires: perl(FS::port)
-Requires: perl(FS::queue)
-Requires: perl(FS::raddb)
-Requires: perl(FS::rate)
-Requires: perl(FS::rate_prefix)
-Requires: perl(FS::rate_region)
-Requires: perl(FS::reason)
-Requires: perl(FS::reason_type)
-Requires: perl(FS::router)
-Requires: perl(FS::session)
-Requires: perl(FS::svc_acct)
-Requires: perl(FS::svc_acct_pop)
-Requires: perl(FS::svc_broadband)
-Requires: perl(FS::svc_domain)
-Requires: perl(FS::svc_external)
-Requires: perl(FS::svc_forward)
-Requires: perl(FS::svc_phone)
-Requires: perl(FS::svc_www)
-Requires: perl(FS::type_pkgs)
-Requires: perl(HTML::Entities)
-Requires: perl(HTML::Mason)
-Requires: perl(HTML::Mason::ApacheHandler)
-Requires: perl(HTML::Scrubber)
-Requires: perl(HTML::Widgets::SelectLayers)
-Requires: perl(IO::File)
-Requires: perl(IO::Handle)
-Requires: perl(IO::Scalar)
-Requires: perl(JSON)
-Requires: perl(Lingua::EN::Inflect)
-Requires: perl(List::Util)
-Requires: perl(Locale::Country)
-Requires: perl(MIME::Entity)
-Requires: perl(Net::Whois::Raw)
-Requires: perl(Spreadsheet::WriteExcel)
-Requires: perl(String::Approx)
-Requires: perl(Text::CSV_XS)
-Requires: perl(Text::Quoted)
-Requires: perl(Text::Wrapper)
-Requires: perl(Tie::IxHash)
-Requires: perl(Time::Duration)
-Requires: perl(Time::Local)
-Requires: perl(Time::ParseDate)
-Requires: perl(URI::Escape)
diff --git a/install/rpm/freeside.spec b/install/rpm/freeside.spec
index c3102e2f4..0796c4ee7 100644
--- a/install/rpm/freeside.spec
+++ b/install/rpm/freeside.spec
@@ -45,7 +45,6 @@ Group: Applications/Internet
Prefix: /var/www/freeside
Requires: mod_ssl
Requires: perl-Apache-DBI
-%%include freeside-mason.deps.inc
Conflicts: %{name}-apacheasp
Provides: %{name}-frontend
BuildArch: noarch
@@ -98,6 +97,21 @@ For security reasons, it is set to conflict with %{name} so you cannot install t
perl -pi -e 's|/usr/local/bin|%{buildroot}%{_bindir}|g' FS/Makefile.PL
perl -ni -e 'print if !/\s+chown\s+/;' Makefile
+# Override find-requires/find-provides to supplement Perl requires for HTML::Mason file handler.pl
+cat << \EOF > %{name}-req
+#!/bin/sh
+tee %{_tmppath}/filelist | %{_rpmlibdir}/rpmdeps --requires | sort -u
+grep handler.pl %{_tmppath}/filelist | xargs %{_rpmlibdir}/perldeps.pl --requires \
+| grep -v -E '^perl\((lib|strict|vars|RT)\)$' \
+| grep -v -E '^perl\(RT::' \
+| sort -u
+EOF
+
+%define __find_provides %{_rpmlibdir}/rpmdeps --provides
+%define __find_requires %{_builddir}/%{name}-%{version}/%{name}-req
+%{__chmod} +x %{__find_requires}
+%define _use_internal_dependency_generator 0
+
%build
# Add freeside user and group if there isn't already such a user
@@ -182,8 +196,9 @@ for DBTYPE in %{db_types}; do
done
# Make a list of the Mason files before adding self-service, etc.
+echo "%attr(-,freeside,freeside) %{freeside_conf}/handler.pl" > %{name}-%{version}-%{release}-mason-filelist
find $RPM_BUILD_ROOT%{freeside_document_root} -type f -print | \
- sed "s@^$RPM_BUILD_ROOT@@g" > %{name}-%{version}-%{release}-mason-filelist
+ sed "s@^$RPM_BUILD_ROOT@@g" >> %{name}-%{version}-%{release}-mason-filelist
if [ "$(cat %{name}-%{version}-%{release}-mason-filelist)X" = "X" ] ; then
echo "ERROR: EMPTY FILE LIST"
exit 1
@@ -305,7 +320,6 @@ fi
%files mason -f %{name}-%{version}-%{release}-mason-filelist
%defattr(-, freeside, freeside, 0755)
-%attr(-,freeside,freeside) %{freeside_conf}/handler.pl
%attr(-,freeside,freeside) %{freeside_cache}/masondata
%attr(0644,root,root) %config(noreplace) %{apache_confdir}/%{name}-base%{apache_version}.conf