# New Ticket Created by Bruce Gray
# Please include the string: [perl #21547]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=21547 >
In config/gen/makefiles.pl, Perl is called with "inplace editing" like so:
system("$^X -i -e 'FOO' filename");
This causes two different problems during `perl Configure.pl` on Win2000:
1) The command processor requires double quotes around the '-e' code.
Solution: The Configure::Data element PQ holds the Perl Quote needed for
the current platform, so the code becomes:
system("$^X -i -e ${PQ}FOO${PQ} filename");
2) From perldiag:
Can't do inplace edit without backup
(F) You're on a system such as MS-DOS that gets confused if you try
reading from a deleted (but still opened) file. You have to say
-i.bak, or some such.
Win2000 has this problem, so the bare '-i' fails.
Solution: Use '-i.bak' and unlink the .bak file when done.
system("$^X -i.bak -e ${PQ}FOO${PQ} filename");
unlink 'filename.bak';
This patch implements these two fixes, and reorganizes the three system
calls into one call.
Tested under Linux and Win2K (MinGW).
--
Hope this helps,
Bruce Gray
-- attachment 1 ------------------------------------------------------
url: http://rt.perl.org/rt2/attach/53571/40362/0085a7/inplace_edit.patch
Index: config/gen/makefiles.pl
===================================================================
RCS file: /cvs/public/parrot/config/gen/makefiles.pl,v
retrieving revision 1.14
diff -u -r1.14 makefiles.pl
--- config/gen/makefiles.pl 21 Jan 2003 10:09:58 -0000 1.14
+++ config/gen/makefiles.pl 11 Mar 2003 22:36:18 -0000
@@ -27,15 +27,22 @@
commentType => '#');
genfile('config/gen/makefiles/imcc.in', 'languages/imcc/Makefile',
commentType => '#');
- system("$^X -pi -e's/ -Wwrite-strings//' languages/imcc/Makefile");
- system("$^X -pi -e's/ -Wcast-qual//' languages/imcc/Makefile");
- system("$^X -pi -e's/ -Wno-unused/ -Wunused/' languages/imcc/Makefile");
genfile('config/gen/makefiles/bf.in', 'languages/bf/Makefile',
commentType => '#');
genfile('config/gen/makefiles/befunge.in', 'languages/befunge/Makefile',
commentType => '#');
genfile('config/gen/makefiles/ook.in', 'languages/ook/Makefile',
commentType => '#');
+
+ # Change compiler flags in IMCC's makefile using inplace edit.
+ my $PQ = Configure::Data->get('PQ');
+ my $imcc = 'languages/imcc/Makefile';
+ my $pgm = ' s/ -Wwrite-strings//;'
+ . ' s/ -Wcast-qual//;'
+ . ' s/ -Wno-unused/ -Wunused/;';
+ system "$^X -pi.bak -e$PQ$pgm$PQ $imcc" and warn;
+ unlink "$imcc.bak" or warn;
+
}
1;