At 01:55 PM 3/26/2002 -0500, Michael G Schwern wrote:
>Try this. It also includes the suggestion about makemakerdflt.
>
>--- lib/ExtUtils/MM_VMS.pm 25 Mar 2002 07:28:24 -0000 1.9
>+++ lib/ExtUtils/MM_VMS.pm 26 Mar 2002 18:53:59 -0000
Well, you need this on top of it. Otherwise you print the contents of the
$( variable and also run into trouble because NOECHO isn't defined until
later. Yes, I know, NOOP isn't defined until later either. See explanation
below.
--- lib/ExtUtils/MM_VMS.pm;-2 Tue Mar 26 13:10:35 2002
+++ lib/ExtUtils/MM_VMS.pm Tue Mar 26 13:37:35 2002
@@ -508,7 +508,7 @@
push @m,"
makemakerdflt : all
- $(NOECHO) $(NOOP)
+ \@ \$(NOOP)
.SUFFIXES :
.SUFFIXES : \$(OBJ_EXT) .c .cpp .cxx .xs
[end of patch]
After that, with perl@15489, -des configure in the following environment:
$ mmk/ident
%MMK-I-IDENT, this is the MadGoat Make Utility V3.9
-MMK-I-COPYRIGHT, Copyright � 1992-2001, MadGoat Software. All Rights Reserved.
$ cc/vers
Compaq C V6.4-005 on OpenVMS Alpha V7.2-1
the only failure I see is:
t/installed......
# Failed test (t/installed.t at line 59)
# got: '0'
# expected: '1'
# Failed test (t/installed.t at line 168)
# got: '0'
# expected: '1'
# Failed test (t/installed.t at line 169)
# undef
# doesn't match '(?-xism:foobar[>\]]?$)'
# Looks like you failed 3 tests of 42.
OK, now for the problem with defining NOECHO later than its first use. The
problem is easily reproducible with the following sample description file:
$ type descrip.mms
makemakerdflt :
$(noecho) $(noop)
noop = continue
noecho = @
$ mmk
@ continue
%DCL-E-OPENIN, error opening D0:[CRAIG]CONTINUE.COM; as input
-RMS-E-FNF, file not found
%MMK-F-ERRUPD, error status %X10018292 occurred when updating target MAKEMAKERDFLT
If I move the macro definitions before the first target, everything is fine.
What appears to be happening is that macro expansion happens after the step
that checks for and interprets the "be silent" prefix, but that delay only
happens when the macro is defined later than its first use. The "@
continue" goes through verbatim to the command interpreter, to which it
means "Run a command procedure named CONFIGURE.COM". This may well be a bug
in MMK, but I think my solution is the best workaround for now.