From 7f89b2b4eb314d381573ba95214ca70fc072b401 Mon Sep 17 00:00:00 2001
From: Jitka Plesnikova <jples...@redhat.com>
Date: Fri, 24 Jun 2016 13:10:29 +0200
Subject: Fixed regression in parsing of heredoc

---
 ...1.06-Fix-regression-in-parsing-of-heredoc.patch | 96 ++++++++++++++++++++++
 perl-generators.spec                               |  7 +-
 2 files changed, 102 insertions(+), 1 deletion(-)
 create mode 100644 generators-1.06-Fix-regression-in-parsing-of-heredoc.patch

diff --git a/generators-1.06-Fix-regression-in-parsing-of-heredoc.patch 
b/generators-1.06-Fix-regression-in-parsing-of-heredoc.patch
new file mode 100644
index 0000000..369dd1b
--- /dev/null
+++ b/generators-1.06-Fix-regression-in-parsing-of-heredoc.patch
@@ -0,0 +1,96 @@
+diff -up generators-1.06/bin/perl.prov.orig generators-1.06/bin/perl.prov
+--- generators-1.06/bin/perl.prov.orig 2016-06-24 12:46:20.436213565 +0200
++++ generators-1.06/bin/perl.prov      2016-06-24 12:49:11.354484313 +0200
+@@ -74,13 +74,14 @@ sub process_file {
+ 
+     # skip the here-docs "<<" blocks
+     # assume that <<12 means bitwise operation
+-    if (((m/^\s*(?:'[^']*?'|"[^"]*?"|[^"'#]*?)*?([^"'#<@])<<(\w+)\s*/ &&
+-          ($2 !~ m/^\d+$/)) ||
+-         
m/^\s*(?:'[^']*?'|"[^"]*?"|[^"'#]*?)*?[^"'#<@]<<\s*(["'`])(.+?|)\1\s*/
++    if (((m/^\s*(?:'[^']*?'|"[^"]*?"|[^"'#]*?)*?[^"'#<@]<<[\\]?(\w+)\s*/ &&
++          ($1 !~ m/^\d+$/)) ||
++         
m/^\s*(?:'[^']*?'|"[^"]*?"|[^"'#]*?)*?[^"'#<@]<<\s*('[^']*?'|"[^"]*?"|`[^`]*?`)\s*/
+         ) &&
+          ! m/q[qxwr]?\s*[{([#|!\/][^})\]#|!\/]*?<<[^<]/
+        ) {
+-      $tag = $2;
++      $tag = $1;
++      $tag =~ s/['"`]//g;
+       while (<FILE>) {
+         chomp;
+         ( $_ eq $tag ) && last;
+diff -up generators-1.06/bin/perl.req.orig generators-1.06/bin/perl.req
+--- generators-1.06/bin/perl.req.orig  2016-06-24 12:46:34.260154583 +0200
++++ generators-1.06/bin/perl.req       2016-06-24 12:51:45.703825754 +0200
+@@ -93,13 +93,14 @@ sub process_file {
+ 
+     # skip the here-docs "<<" blocks
+     # assume that <<12 means bitwise operation
+-    if (((m/^\s*(?:'[^']*?'|"[^"]*?"|[^"'#]*?)*?([^"'#<@])<<(\w+)\s*/ &&
+-          ($2 !~ m/^\d+$/)) ||
+-         
m/^\s*(?:'[^']*?'|"[^"]*?"|[^"'#]*?)*?[^"'#<@]<<\s*(["'`])(.+?|)\1\s*/
++    if (((m/^\s*(?:'[^']*?'|"[^"]*?"|[^"'#]*?)*?[^"'#<@]<<[\\]?(\w+)\s*/ &&
++          ($1 !~ m/^\d+$/)) ||
++         
m/^\s*(?:'[^']*?'|"[^"]*?"|[^"'#]*?)*?[^"'#<@]<<\s*('[^']*?'|"[^"]*?"|`[^`]*?`)\s*/
+         ) &&
+          ! m/q[qxwr]?\s*[{([#|!\/][^})\]#|!\/]*?<<[^<]/
+        ) {
+-      $tag = $2;
++      $tag = $1;
++      $tag =~ s/['"`]//g;
+       if ($_ =~ m/^\s*use\s(constant)\s/) { add_require($1, undef) }
+       while (<FILE>) {
+         chomp;
+@@ -151,8 +152,8 @@ sub process_file {
+     }
+ 
+     my $modver_re = qr/[.0-9]+/;
+-    my $begin_re = qr#qw\s*[(\/'"!|{]\s*|qq?\s*[(\/'"!|{]\s*|['"]#;
+-    my $end_re   = qr#[)\/"'!|}]#;
++    my $begin_re = qr#qw\s*[(\/'"!|{\[]\s*|qq?\s*[(\/'"!|{\[]\s*|['"]#;
++    my $end_re   = qr#[)\/"'!|}\]]#;
+ 
+     # Skip multiline print and assign statements
+     if ( m/\$\S+\s*=\s*(")([^"\\]|(\\.))*$/ ||
+diff -up generators-1.06/t/08_heredoc.t.orig generators-1.06/t/08_heredoc.t
+--- generators-1.06/t/08_heredoc.t.orig        2016-06-24 13:00:05.409693671 
+0200
++++ generators-1.06/t/08_heredoc.t     2016-06-24 13:01:11.742410289 +0200
+@@ -22,6 +22,7 @@ my @expectedrequires = (
+     "perl(Bitwise::Operator)\n",
+     "perl(constant)\n",
+     "perl(More::Then::Two::Mark)\n",
++    "perl(Not::Hang)\n",
+     "perl(Not::In::Heredoc)\n",
+     "perl(THAT)\n",
+ );
+diff -up generators-1.06/t/data/heredoc.orig generators-1.06/t/data/heredoc
+--- generators-1.06/t/data/heredoc.orig        2016-06-24 12:59:52.745747704 
+0200
++++ generators-1.06/t/data/heredoc     2016-06-24 13:00:49.219506749 +0200
+@@ -150,6 +150,26 @@ package Number::As::Tag;
+ use Number::As::Tag;
+ 1234
+ 
++$cost = <<\VISTA;   # Same thing!
++ That'll be $10 please, ma'am.
++package Vista
++use Vista
++VISTA
++
++s/this/<<E . 'that'
++the other
++package Regex
++use Regex
++E
++. 'more '/eg;
++
++# Should not hang the test
++sub demo {
++  $foobarbaztest++ if  /\s*= <<'/x;
++  use Not::Hang
++}
++
++
+ # This case should be the last and should be found each time.
+ print "<<TEST";
+ push @OUT, "return <<'END';\n";
diff --git a/perl-generators.spec b/perl-generators.spec
index 19674a0..da44700 100644
--- a/perl-generators.spec
+++ b/perl-generators.spec
@@ -1,11 +1,12 @@
 Name:           perl-generators
 Version:        1.06
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        RPM Perl dependencies generators
 Group:          Development/Libraries
 License:        GPL+
 URL:            http://jplesnik.fedorapeople.org/generators
 Source0:        %{url}/generators-%{version}.tar.gz
+Patch0:         generators-1.06-Fix-regression-in-parsing-of-heredoc.patch
 BuildArch:      noarch
 BuildRequires:  coreutils
 BuildRequires:  findutils
@@ -26,6 +27,7 @@ getting provides and requires from Perl binaries and modules.
 
 %prep
 %setup -q -n generators-%{version}
+%patch0 -p1
 
 %build
 perl Makefile.PL INSTALLDIRS=vendor INSTALLVENDORSCRIPT=%{_rpmconfigdir}
@@ -48,6 +50,9 @@ make test
 %{_rpmconfigdir}/fileattrs/perl*.attr
 
 %changelog
+* Fri Jun 24 2016 Jitka Plesnikova <jples...@redhat.com> - 1.06-2
+- Fixed regression in parsing of heredoc
+
 * Tue Oct 06 2015 Jitka Plesnikova <jples...@redhat.com> - 1.06-1
 - 1.06 bump
 
-- 
cgit v0.12


        
http://pkgs.fedoraproject.org/cgit/perl-generators.git/commit/?h=f23&id=7f89b2b4eb314d381573ba95214ca70fc072b401
--
Fedora Extras Perl SIG
http://www.fedoraproject.org/wiki/Extras/SIGs/Perl
perl-devel mailing list
perl-devel@lists.fedoraproject.org
https://lists.fedoraproject.org/admin/lists/perl-devel@lists.fedoraproject.org

Reply via email to