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