I was having this error with the Mail::Box modules this time last
year, so it appears testing has been broken, for dmake
and MinGW, with command.com, at least under some conditions, for
a year.

The test action on Win95 is constructed with a q{} inside a qq{}.
In the Makefile, the lines for Encode are like this,

    $(NOECHO) $(PERLRUN) -e "exit unless -f shift; chdir 'Byte'; system q{$(
MAKE) test $(PASTHRU)}" $(FIRST_MAKEFILE)
 
which looks OK, but when run by dmake, they become,

C:\perl\5.9.0\bin\MSWin32-x86-multi-thread\perl.exe -e "exit unless -f shift; chdir 
'Byte'; system qC:\DMAKE-4.1PL1-WIN32\DMAKE.EXE" q-S" qtest" Makefile

The curly braces have gone and a 'q' is being prepended and a '"'
is being appended to each of the elements of the system call.

If the q{} is replaced with a q[], the Makefile is like this,

   $(NOECHO) $(PERLRUN) -e "exit unless -f shift; chdir 'Byte'; system q[$(
MAKE) test $(PASTHRU)]" $(FIRST_MAKEFILE)

and the line that dmake runs is like this,

C:\perl\5.9.0\bin\MSWin32-x86-multi-thread\perl.exe -e "exit
unless -f shift; chdir 'Byte'; system q[C:\DMAKE-4.1PL1-WIN32\DMAKE.EXE -S  test ]" 
Makefile
 
I guess it is a dmakeism.

*** MM_Unix.pm.orig     2003-11-17 10:15:00.000000000 +0800
--- MM_Unix.pm  2003-11-17 11:02:24.000000000 +0800
***************
*** 3836,3840 ****

      if ($Is_Win95) {
!         push(@m, map(qq{\t\$(NOECHO) \$(PERLRUN) -e "exit
unless -f shift; chdir '$_'; system q{\$(MAKE) test \$(PASTHRU)}"
\$(FIRST_MAKEFILE)\n}, @{$self->{DIR}}));
      }
      else {
--- 3836,3840 ----

      if ($Is_Win95) {
!         push(@m, map(qq{\t\$(NOECHO) \$(PERLRUN) -e "exit
unless -f shift; chdir '$_'; system q[\$(MAKE) test \$(PASTHRU)]"
\$(FIRST_MAKEFILE)\n}, @{$self->{DIR}}));
      }
      else {

I don't know if the patch survived my cutting and pasting.

-- 
Greg Matheson, Taiwan

Reply via email to