From c5a676ad9f8e3d82e3ae27087114c321204ee0d5 Mon Sep 17 00:00:00 2001
From: David Lawrence
Date: Mon, 16 May 2016 15:23:19 +0000
Subject: Bug 1261114 - Release notes cannot be displayed due to missing
REQUIRED_MODULES and OPTIONAL_MODULES r=dylan
---
Bugzilla/Template.pm | 32 ++++++++++++-----
template/en/default/pages/release-notes.html.tmpl | 44 +++++++++++++----------
2 files changed, 48 insertions(+), 28 deletions(-)
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index 49294244a..40079339a 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -1153,18 +1153,32 @@ sub create {
# These don't work as normal constants.
DB_MODULE => \&Bugzilla::Constants::DB_MODULE,
- REQUIRED_MODULES =>
- \&Bugzilla::Install::Requirements::REQUIRED_MODULES,
+ REQUIRED_MODULES => sub {
+ my %required_modules;
+ my $cache = Bugzilla->request_cache;
+ my $meta = $cache->{cpan_meta} ||= Bugzilla::Install::Requirements::load_cpan_meta();
+ my $reqs = $meta->effective_prereqs->merged_requirements(['configure', 'runtime'], ['requires']);
+ foreach my $module (sort $reqs->required_modules) {
+ next if $module eq 'perl';
+ $required_modules{$module} = { version => $reqs->requirements_for_module($module) };
+ }
+ return \%required_modules;
+ },
OPTIONAL_MODULES => sub {
- my @optional = @{OPTIONAL_MODULES()};
- foreach my $item (@optional) {
- my @features;
- foreach my $feat_id (@{ $item->{feature} }) {
- push(@features, install_string("feature_$feat_id"));
+ my %optional_modules;
+ my $cache = Bugzilla->request_cache;
+ my $meta = $cache->{cpan_meta} ||= Bugzilla::Install::Requirements::load_cpan_meta();
+ foreach my $feature ($meta->features) {
+ my $reqs = $feature->prereqs->merged_requirements(['configure', 'runtime'], ['requires']);
+ foreach my $module ($reqs->required_modules) {
+ my $version = $reqs->requirements_for_module($module);
+ $optional_modules{$module} ||= {};
+ $optional_modules{$module}{version} = $version;
+ $optional_modules{$module}{features} ||= [];
+ push(@{$optional_modules{$module}{features}}, $feature->description);
}
- $item->{feature} = \@features;
}
- return \@optional;
+ return \%optional_modules;
},
'default_authorizer' => sub { return Bugzilla::Auth->new() },
diff --git a/template/en/default/pages/release-notes.html.tmpl b/template/en/default/pages/release-notes.html.tmpl
index 358298bc8..ce72afa84 100644
--- a/template/en/default/pages/release-notes.html.tmpl
+++ b/template/en/default/pages/release-notes.html.tmpl
@@ -161,22 +161,26 @@
Perl
-Perl v5.10.1
+Perl v5.14.1
-[% INCLUDE db_req db='mysql' %]
+[% INCLUDE db_req db = 'mysql'
+ module = 'DBD::mysql' %]
-[% INCLUDE db_req db='pg' %]
+[% INCLUDE db_req db = 'pg'
+ module = 'DBD::Pg' %]
-[% INCLUDE db_req db='oracle' %]
+[% INCLUDE db_req db ='oracle'
+ module = 'DBD::Oracle' %]
-[% INCLUDE db_req db='sqlite' %]
+[% INCLUDE db_req db = 'sqlite'
+ module = 'DBD::SQLite' %]
Required Perl Modules
[% INCLUDE req_table reqs = REQUIRED_MODULES
- new = ['File-Slurp','JSON-XS', 'Email-Sender']
- updated = ['DateTime', 'DateTime-TimeZone',
- 'Template-Toolkit', 'URI'] %]
+ new = ['File::Slurp','JSON::XS', 'Email::Sender']
+ updated = ['DateTime', 'DateTime::TimeZone',
+ 'Template', 'URI'] %]
Optional Perl Modules
@@ -184,8 +188,8 @@
features of Bugzilla:
[% INCLUDE req_table reqs = OPTIONAL_MODULES
- new = ['Cache-Memcached','File-Copy-Recursive']
- updated = ['Chart', 'Test-Taint']
+ new = ['Cache::Memcached::Fast','File::Copy::Recursive']
+ updated = ['Chart::Lines', 'Test::Taint']
include_feature = 1 %]
Optional Apache Modules
@@ -454,7 +458,7 @@
perl module:
[%+ m.dbd.module FILTER html %]
- [%+ '' IF dbd_new %]v[% m.dbd.version FILTER html %]
+ [%+ '' IF dbd_new %]v[% OPTIONAL_MODULES.$module.version FILTER html %]
[% '' IF dbd_new %]
[% END %]
@@ -468,20 +472,22 @@
Enables Feature |
[% END %]
- [% FOREACH req = reqs %]
+ [% FOREACH module = reqs.keys.sort %]
+ [% NEXT IF module.match('^DBD') %]
+ [% version = reqs.$module.version %]
-
- [%- req.module FILTER html %] |
-
- [%- IF req.version == 0 %]
+ |
+ [%- module FILTER html %] |
+
+ [%- IF version == 0 %]
(Any)
[% ELSE %]
- [%- req.version FILTER html %]
+ [%- version FILTER html %]
[% END %]
|
[% IF include_feature %]
- [% req.feature.join(', ') FILTER html %] |
+ [% reqs.$module.features.join(', ') FILTER html %] |
[% END %]
[% END %]
--
cgit v1.2.3-24-g4f1b