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