Deal with spaces in patch descriptions
authorH.Merijn Brand <h.m.brand@xs4all.nl>
Sun, 10 Feb 2013 20:06:45 +0000 (21:06 +0100)
committerH.Merijn Brand <h.m.brand@xs4all.nl>
Sun, 10 Feb 2013 20:20:54 +0000 (21:20 +0100)
To be sure, I also allowed "Compile time options" to have spaces
Using \0 as a new separator seems a sane choice, as the values returned
from internal functions are pure C strings, so they end with \0

patches can have spaces:
#          $got->{build}{patches}[0] = 'SAVEARGV0'
#     $expected->{build}{patches}[0] = 'SAVEARGV0 - disable magic open in <ARGV>'
#          $got->{build}{patches}[0] = 'ActivePerl'
#     $expected->{build}{patches}[0] = 'ActivePerl Build 1602 [296513]'
#          $got->{build}{patches}[0] = 'DEBPKG:debian/arm_thread_stress_timeout'
#     $expected->{build}{patches}[0] = 'DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts'
#          $got->{build}{patches}[0] = 'Bug#55162'
#     $expected->{build}{patches}[0] = 'Bug#55162 File::Spec::case_tolerant performance'

cpan/Config-Perl-V/V.pm

index d70ed81..c52b826 100644 (file)
@@ -8,7 +8,7 @@ use warnings;
 use Config;
 use Exporter;
 use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS);
-$VERSION     = "0.16";
+$VERSION     = "0.17";
 @ISA         = ("Exporter");
 @EXPORT_OK   = qw( plv2hash summary myconfig signature );
 %EXPORT_TAGS = (
@@ -303,14 +303,18 @@ sub myconfig
        #y $pv = qx[$^X -e"sub Config::myconfig{};" -V];
        my $pv = qx[$^X -V];
           $pv =~ s{.*?\n\n}{}s;
-          $pv =~ s{\n(?:  \s+|\t\s*)}{ }g;
-
-       #print $pv;
-
-       $pv =~ m{^\s+Built under (.*)}m                and $build->{osname} = $1;
-       $pv =~ m{^\s+Compiled at (.*)}m                and $build->{stamp}  = $1;
-       $pv =~ m{^\s+Locally applied patches:\s+(.*)}m and $build->{patches} = [ split m/\s+/, $1 ];
-       $pv =~ m{^\s+Compile-time options:\s+(.*)}m    and map { $build->{options}{$_} = 1 } split m/\s+/, $1;
+          $pv =~ s{\n(?:  \s+|\t\s*)}{\0}g;
+
+       # print STDERR $pv;
+
+       $pv =~ m{^\s+Built under\s+(.*)}m
+           and $build->{osname}  = $1;
+       $pv =~ m{^\s+Compiled at\s+(.*)}m
+           and $build->{stamp}   = $1;
+       $pv =~ m{^\s+Locally applied patches:(?:\s+|\0)(.*)}m
+           and $build->{patches} = [ split m/\0+/, $1 ];
+       $pv =~ m{^\s+Compile-time options:(?:\s+|\0)(.*)}m
+           and map { $build->{options}{$_} = 1 } split m/\s+|\0/ => $1;
        }
 
     my @KEYS = keys %ENV;