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.



Reply via email to