commit:     da0f714f5d4ca194ca32b106b635577f9d601e38
Author:     Kent Fredric <kentnl <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 14 17:21:15 2018 +0000
Commit:     Kent Fredric <kentnl <AT> gentoo <DOT> org>
CommitDate: Sun Jan 14 17:22:02 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=da0f714f

dev-perl/Template-Toolkit: Add fix for '.' in @INC bug #615704

- Add runtime fix for '.' in @INC problems
- Patch tests for CGI.pm warnings

Bug: https://bugs.gentoo.org/615704
Package-Manager: Portage-2.3.18, Repoman-2.3.6

 .../Template-Toolkit-2.270.0-r1.ebuild             | 49 ++++++++++++++++
 .../files/Template-Toolkit-2.27-cgipm.patch        | 66 ++++++++++++++++++++++
 .../files/Template-Toolkit-2.27-no-dot-inc.patch   | 54 ++++++++++++++++++
 3 files changed, 169 insertions(+)

diff --git a/dev-perl/Template-Toolkit/Template-Toolkit-2.270.0-r1.ebuild 
b/dev-perl/Template-Toolkit/Template-Toolkit-2.270.0-r1.ebuild
new file mode 100644
index 00000000000..5823e2648c9
--- /dev/null
+++ b/dev-perl/Template-Toolkit/Template-Toolkit-2.270.0-r1.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+DIST_AUTHOR=ABW
+DIST_VERSION=2.27
+inherit perl-module
+
+DESCRIPTION="The Template Toolkit"
+
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~ppc-aix ~x86-fbsd ~x86-solaris"
+IUSE="xml gd mysql postgres latex vim-syntax test"
+
+RDEPEND="dev-perl/Text-Autoformat
+       mysql? ( dev-perl/DBD-mysql )
+       postgres? ( dev-perl/DBD-Pg )
+       >=dev-perl/AppConfig-1.56"
+DEPEND="${RDEPEND}
+       test? ( dev-perl/CGI )
+"
+PDEPEND="dev-perl/Text-Autoformat
+       vim-syntax? ( app-vim/tt2-syntax )
+       xml? ( dev-perl/Template-XML )
+       gd? ( dev-perl/Template-GD )
+       mysql? ( dev-perl/Template-DBI )
+       latex? ( dev-perl/Template-Plugin-Latex )
+       postgres? ( dev-perl/Template-DBI )"
+
+myconf=(
+       TT_XS_ENABLE=y
+       TT_XS_DEFAULT=y
+       TT_QUIET=y
+       TT_ACCEPT=y
+)
+
+PERL_RM_FILES=(
+       t/zz-plugin-leak.t
+       t/zz-pmv.t
+       t/zz-pod-coverage.t
+       t/zz-pod-kwalitee.t
+       t/zz-stash-xs-leak.t
+       t/zz-url2.t
+)
+PATCHES=(
+       "${FILESDIR}/${PN}-2.27-no-dot-inc.patch"
+       "${FILESDIR}/${PN}-2.27-cgipm.patch"
+)

diff --git a/dev-perl/Template-Toolkit/files/Template-Toolkit-2.27-cgipm.patch 
b/dev-perl/Template-Toolkit/files/Template-Toolkit-2.27-cgipm.patch
new file mode 100644
index 00000000000..422cc851838
--- /dev/null
+++ b/dev-perl/Template-Toolkit/files/Template-Toolkit-2.27-cgipm.patch
@@ -0,0 +1,66 @@
+From e723aeecf60ece32f6a1381f5c026ae08cae9913 Mon Sep 17 00:00:00 2001
+From: Kent Fredric <ken...@gentoo.org>
+Date: Sat, 13 Jan 2018 13:48:31 +1300
+Subject: Fix tests warning w/ CGI.pm
+
+This currently seems like an intractable problem with the syntax of
+Template::Toolkit forcing list context by default on called functions.
+
+The only real way around this is to either:
+
+A) always use Template::Plugin::Scalar to enforce scalar context
+B) abuse cgi.multi_param to simply silence the warning and being an
+   adult about the fact "yes, this returns a list, make sure you do the
+   right thing with that"
+
+Bug: https://rt.cpan.org/Ticket/Display.html?id=100503
+---
+ t/cgi.t | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/t/cgi.t b/t/cgi.t
+index 023ab5ab..6086e145 100644
+--- a/t/cgi.t
++++ b/t/cgi.t
+@@ -49,28 +49,32 @@ sub barf {
+ 
+ __END__
+ -- test --
++[% USE scalar -%]
+ [% USE cgi = CGI('id=abw&name=Andy+Wardley'); global.cgi = cgi -%]
+-name: [% global.cgi.param('name') %]
++name: [% global.cgi.scalar.param('name') %]
+ -- expect --
+ name: Andy Wardley
+ 
+ -- test --
+-name: [% global.cgi.param('name') %]
++[% USE scalar -%]
++name: [% global.cgi.scalar.param('name') %]
+ 
+ -- expect --
+ name: Andy Wardley
+ 
+ -- test --
+-[% FOREACH key = global.cgi.param.sort -%]
+-   * [% key %] : [% global.cgi.param(key) %]
++[% USE scalar -%]
++[% FOREACH key = global.cgi.multi_param.sort -%]
++   * [% key %] : [% global.cgi.scalar.param(key) %]
+ [% END %]
+ -- expect --
+    * id : abw
+    * name : Andy Wardley
+ 
+ -- test --
+-[% FOREACH key = global.cgi.param().sort -%]
+-   * [% key %] : [% global.cgi.param(key) %]
++[% USE scalar -%]
++[% FOREACH key = global.cgi.multi_param().sort -%]
++   * [% key %] : [% global.cgi.scalar.param(key) %]
+ [% END %]
+ -- expect --
+    * id : abw
+-- 
+2.15.1
+

diff --git 
a/dev-perl/Template-Toolkit/files/Template-Toolkit-2.27-no-dot-inc.patch 
b/dev-perl/Template-Toolkit/files/Template-Toolkit-2.27-no-dot-inc.patch
new file mode 100644
index 00000000000..97decd75cb1
--- /dev/null
+++ b/dev-perl/Template-Toolkit/files/Template-Toolkit-2.27-no-dot-inc.patch
@@ -0,0 +1,54 @@
+From 65e7f0e980e64dd0525eda058330cea06379c332 Mon Sep 17 00:00:00 2001
+From: Kent Fredric <ken...@gentoo.org>
+Date: Sat, 13 Jan 2018 13:05:52 +1300
+Subject: Fix relative path handling in templates on Perl 5.26+
+
+NB: It doesn't seem like the value of "$compiled" is very useful in the
+failure case, as the expectation is that'd have been a falsey value at
+best, or a literal "undef" at worst, yeilding additional warnings.
+
+Bug: https://rt.cpan.org/Ticket/Display.html?id=121171
+Bug: https://bugs.gentoo.org/615704
+---
+ lib/Template/Provider.pm | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/lib/Template/Provider.pm b/lib/Template/Provider.pm
+index 6ecb2453..61c3469c 100644
+--- a/lib/Template/Provider.pm
++++ b/lib/Template/Provider.pm
+@@ -562,13 +562,29 @@ sub _compiled_filename {
+ 
+ sub _load_compiled {
+     my ($self, $file) = @_;
++
++    # Implicitly Relative paths are not supported
++    # by "require" and invoke @INC traversal, where relative
++    # paths only traditionally worked prior to Perl 5.26
++    # due to the presence of '.' in @INC
++    #
++    # Given load_compiled never wants to traverse @INC, forcing
++    # an absolute path for the loaded file and the INC key is
++    # sensible.
++    #
++    # NB: %INC Keys are always identical to their respective
++    # "require" invocations regardless of OS, and the only time
++    # one needs to care about slash direction is when dealing
++    # with Module::Name -> Module/Name.pm translation.
++    my $fpath = File::Spec->rel2abs( $file );
++
+     my $compiled;
+ 
+     # load compiled template via require();  we zap any
+     # %INC entry to ensure it is reloaded (we don't
+     # want 1 returned by require() to say it's in memory)
+-    delete $INC{ $file };
+-    eval { $compiled = require $file; };
++    delete $INC{ $fpath };
++    eval { $compiled = require $fpath; };
+     return $@
+         ? $self->error("compiled template $compiled: $@")
+         : $compiled;
+-- 
+2.15.1
+

Reply via email to