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