summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Install/Requirements.pm
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2009-11-18 08:01:40 +0100
committermkanat%bugzilla.org <>2009-11-18 08:01:40 +0100
commitbc19f61c0c33e71a00dcc8e4ca3e791a9e3b661d (patch)
tree4a6b0e7a7800545f9083fe70fed45e3c9c0d1edf /Bugzilla/Install/Requirements.pm
parent900f8b1d1eacf44dbfd8d9c8b414b472f492abe8 (diff)
downloadbugzilla-bc19f61c0c33e71a00dcc8e4ca3e791a9e3b661d.tar.gz
bugzilla-bc19f61c0c33e71a00dcc8e4ca3e791a9e3b661d.tar.xz
Fix for Bug 527505: Make t/001compile.t work even after Bugzilla::Install::CPAN messes with @INC, and make Bugzilla->feature work during mod_perl.pl.
Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=mkanat
Diffstat (limited to 'Bugzilla/Install/Requirements.pm')
-rw-r--r--Bugzilla/Install/Requirements.pm70
1 files changed, 67 insertions, 3 deletions
diff --git a/Bugzilla/Install/Requirements.pm b/Bugzilla/Install/Requirements.pm
index 40ddf9cfe..1fa53de9b 100644
--- a/Bugzilla/Install/Requirements.pm
+++ b/Bugzilla/Install/Requirements.pm
@@ -35,11 +35,13 @@ use base qw(Exporter);
our @EXPORT = qw(
REQUIRED_MODULES
OPTIONAL_MODULES
+ FEATURE_FILES
check_requirements
check_graphviz
have_vers
install_command
+ map_files_to_features
);
# This is how many *'s are in the top of each "box" message printed
@@ -294,6 +296,22 @@ sub OPTIONAL_MODULES {
return $all_modules;
};
+# This maps features to the files that require that feature in order
+# to compile. It is used by t/001compile.t and mod_perl.pl.
+use constant FEATURE_FILES => (
+ jsonrpc => ['Bugzilla/WebService/Server/JSONRPC.pm', 'jsonrpc.cgi'],
+ xmlrpc => ['Bugzilla/WebService/Server/XMLRPC.pm', 'xmlrpc.cgi',
+ 'Bugzilla/WebService.pm', 'Bugzilla/WebService/*.pm'],
+ moving => ['importxml.pl'],
+ auth_ldap => ['Bugzilla/Auth/Verify/LDAP.pm'],
+ auth_radius => ['Bugzilla/Auth/Verify/RADIUS.pm'],
+ inbound_email => ['email_in.pl'],
+ jobqueue => ['Bugzilla/Job/*', 'Bugzilla/JobQueue.pm',
+ 'Bugzilla/JobQueue/*', 'jobqueue.pl'],
+ patch_viewer => ['Bugzilla/Attachment/PatchReader.pm'],
+ updates => ['Bugzilla/Update.pm'],
+);
+
# This implements the install-requirements hook described in Bugzilla::Hook.
sub _get_extension_requirements {
my ($function, $base_modules) = @_;
@@ -590,6 +608,21 @@ sub install_command {
return sprintf $command, $package;
}
+# This does a reverse mapping for FEATURE_FILES.
+sub map_files_to_features {
+ my %features = FEATURE_FILES;
+ my %files;
+ foreach my $feature (keys %features) {
+ my @my_files = @{ $features{$feature} };
+ foreach my $pattern (@my_files) {
+ foreach my $file (glob $pattern) {
+ $files{$file} = $feature;
+ }
+ }
+ }
+ return \%files;
+}
+
1;
__END__
@@ -607,16 +640,42 @@ perl modules it requires.)
=head1 CONSTANTS
-=over 4
+=over
=item C<REQUIRED_MODULES>
An arrayref of hashrefs that describes the perl modules required by
-Bugzilla. The hashes have two keys, C<name> and C<version>, which
-represent the name of the module and the version that we require.
+Bugzilla. The hashes have three keys:
+
+=over
+
+=item C<package> - The name of the Perl package that you'd find on
+CPAN for this requirement.
+
+=item C<module> - The name of a module that can be passed to the
+C<install> command in C<CPAN.pm> to install this module.
+
+=item C<version> - The version of this module that we require, or C<0>
+if any version is acceptable.
=back
+=item C<OPTIONAL_MODULES>
+
+An arrayref of hashrefs that describes the perl modules that add
+additional features to Bugzilla if installed. Its hashes have all
+the fields of L</REQUIRED_MODULES>, plus a C<feature> item--an arrayref
+of strings that describe what features require this module.
+
+=item C<FEATURE_FILES>
+
+A hashref that describes what files should only be compiled if a certain
+feature is enabled. The feature is the key, and the values are arrayrefs
+of file names (which are passed to C<glob>, so shell patterns work).
+
+=back
+
+
=head1 SUBROUTINES
=over 4
@@ -699,4 +758,9 @@ Returns: C<1> if the check was successful, C<0> otherwise.
Returns: nothing
+=item C<map_files_to_features>
+
+Returns a hashref where file names are the keys and the value is the feature
+that must be enabled in order to compile that file.
+
=back