Craig A. Berry wrote:
> In article
> <[EMAIL PROTECTED]>,
> [EMAIL PROTECTED] ("Craig A. Berry") wrote:
>
>> On Dec 6, 2007 7:43 PM, Craig A. Berry <[EMAIL PROTECTED]> wrote:
>> I'm afraid we need nicetext
>> back, at least on VMS, and we'll just have to tune up the regex
>
> The attached patch does those things and gets all of the core
> extensions to build with YAML generation intact on VMS. So except for
> version bumps and a changelog entry, this could become 6.41. I didn't
> restore the MM_Unix.t test for nicetext if that's important. Sorry for
> the churn.
Thanks, Craig. I decided to fix a few things as long as we were at it. I
changed the name to be more accurate and also fixed it so it won't give up
when it sees a macro declaration.
Could you try out the attached patch?
--- t/maketext_filter.t (revision 41142)
+++ t/maketext_filter.t (revision 41143)
@@ -0,0 +1,65 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+ if( $ENV{PERL_CORE} ) {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ }
+ else {
+ unshift @INC, 't/lib';
+ }
+}
+chdir 't';
+
+use Test::More tests => 6;
+
+use ExtUtils::MakeMaker;
+use ExtUtils::MM_VMS;
+
+sub test_filter {
+ my($text, $vms_text) = @_;
+
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+ is( MM->maketext_filter($text), $text, 'default filter'
);
+ is( ExtUtils::MM_VMS->maketext_filter($text), $vms_text, 'VMS filter' );
+}
+
+
+# VMS filter puts a space after the target
+test_filter(<<'END', <<'VMS');
+foo: bar
+ thing: splat
+END
+foo : bar
+ thing: splat
+VMS
+
+
+# And it does it for all targets
+test_filter(<<'END', <<'VMS');
+foo: bar
+ thing: splat
+
+up: down
+ yes
+END
+foo : bar
+ thing: splat
+
+up : down
+ yes
+VMS
+
+
+# And it doesn't mess with macros
+test_filter(<<'END', <<'VMS');
+CLASS=Foo: Bar
+
+target: stuff
+ $(PROGRAM) And::Stuff
+END
+CLASS=Foo: Bar
+
+target : stuff
+ $(PROGRAM) And::Stuff
+VMS
--- MANIFEST (revision 41142)
+++ MANIFEST (revision 41143)
@@ -69,6 +69,7 @@
t/lib/TieOut.pm
t/Liblist.t
t/make.t
+t/maketext_filter.t
t/Mkbootstrap.t
t/MM_Any.t
t/MM_BeOS.t
--- lib/ExtUtils/MM_Any.pm (revision 41142)
+++ lib/ExtUtils/MM_Any.pm (revision 41143)
@@ -236,6 +236,24 @@
}
+=head3 maketext_filter
+
+ my $filter_make_text = $mm->maketext_filter($make_text);
+
+The text of the Makefile is run through this method before writing to
+disk. It allows systems a chance to make portability fixes to the
+Makefile.
+
+By default it does nothing.
+
+This method is protected and not intended to be called outside of
+MakeMaker.
+
+=cut
+
+sub maketext_filter { return $_[1] }
+
+
=head3 cd I<Abstract>
my $subdir_cmd = $MM->cd($subdir, @cmds);
--- lib/ExtUtils/MakeMaker.pm (revision 41142)
+++ lib/ExtUtils/MakeMaker.pm (revision 41143)
@@ -637,7 +637,9 @@
my(%a) = %{$self->{$section} || {}};
push @{$self->{RESULT}}, "\n# --- MakeMaker $section section:";
push @{$self->{RESULT}}, "# " . join ", ", %a if $Verbose && %a;
- push @{$self->{RESULT}}, $self->$method( %a );
+ push @{$self->{RESULT}}, $self->maketext_filter(
+ $self->$method( %a )
+ );
}
}
--- lib/ExtUtils/MM_VMS.pm (revision 41142)
+++ lib/ExtUtils/MM_VMS.pm (revision 41143)
@@ -1572,6 +1572,22 @@
join '', @m;
}
+# --- Output postprocessing section ---
+
+=item maketext_filter (override)
+
+Insure that colons marking targets are preceded by space, in order
+to distinguish the target delimiter from a colon appearing as
+part of a filespec.
+
+=cut
+
+sub maketext_filter {
+ my($self, $text) = @_;
+
+ $text =~ s/^([^\s:=]+)(:+\s)/$1 $2/mg;
+ return $text;
+}
=item prefixify (override)
--- Changes (revision 41142)
+++ Changes (revision 41143)
@@ -3,6 +3,10 @@
- 6.33 moved PREREQ_FATAL to happen after CONFIGURE. This meant if
your CONFIGURE use a prereq it would fail and no PREREQ_FATAL
message would be displayed.
+ - Put the "nicetext" functionality back, VMS needs it to deal with
+ other people's custom make. But rename it to the more
+ accurate maketext_filter(), test it and fix a bug where it would
+ stop processing if it saw a macro declaration.
6.40 Thu Dec 6 03:00:47 PST 2007
Bug Fixes