Closed p5pRT closed 21 years ago
perl -e "print 'd'; \
Failed Test Status Wstat Total Fail Failed List of Failed -------------------------------------------------------------------------------- lib/cwd.t 10 1 10.00% 8 lib/glob-basic.t 11 2 18.18% 10-11 lib/xs-typemap.t 2 512 78 78 100.00% 1-78 26 tests and 143 subtests skipped. Failed 3/309 test scripts\, 99.03% okay. 81/21330 subtests failed\, 99.62% okay. dmake.exe: Error code 255\, while making 'test'
This is a build failure report for perl from andreas@mrs.ch\, generated with the help of perlbug 1.33 running under perl v5.7.0.
Failed Test Status Wstat Total Fail Failed List of Failed -------------------------------------------------------------------------------- lib/cwd.t 10 1 10.00% 8 lib/glob-basic.t 11 2 18.18% 10-11 lib/xs-typemap.t 2 512 78 78 100.00% 1-78
Hmmm. Failed all the xs-typemap tests? Can you run this last test by hand to see exactly what happened? Maybe it was a missing symbol? Maybe the XS::Typemap module didn't even build?
Does the 'again' imply that it has worked once ? If so which snapshot did it work in?
Andreas Fehr \andreas@​mrs\.ch writes:
This is a build failure report for perl from andreas@mrs.ch\, generated with the help of perlbug 1.33 running under perl v5.7.0.
----------------------------------------------------------------- [Please enter your report here]
perl -e "print 'd'; \
" does work again!!! Does the 'again' imply that it has worked once ? If so which snapshot did it work in?
Yes\, it did. I don't know the last snapshot\, but the problem turned up with my mail of Dec. 11\, 2000:
old> Something with the I/O does not work. The output does not get flushed\,
old> if waiting for an input.
old>
old> Perl 5.6.0 (correct):
old> F:\temp\perl@8070\win32>perl -e "print '1'; $m = \
I think 7347 did work (I've got a valid report of perlbug and this is the script that failed with this IO stuff).
Does this help??
TJ> On Thu\, 29 Mar 2001\, Andreas Fehr wrote: TJ> TJ> > This is a build failure report for perl from andreas@mrs.ch\, TJ> > generated with the help of perlbug 1.33 running under perl v5.7.0. TJ> > TJ> > TJ> > Failed Test Status Wstat Total Fail Failed List of Failed TJ> > -------------------------------------------------------------------------------- TJ> > lib/cwd.t 10 1 10.00% 8 TJ> > lib/glob-basic.t 11 2 18.18% 10-11 TJ> > lib/xs-typemap.t 2 512 78 78 100.00% 1-78 TJ> TJ> Hmmm. Failed all the xs-typemap tests? Can you run this last test by hand TJ> to see exactly what happened? Maybe it was a missing symbol? TJ> Maybe the XS::Typemap module didn't even build? TJ>
For me\, this looks as it didn't build it:
lib/timelocal.......ok lib/trig............ok lib/xs-typemap......Can't locate XS/Typemap.pm in @INC (@INC contains: ../lib) at lib/xs-t ypemap.t line 11. BEGIN failed--compilation aborted at lib/xs-typemap.t line 11. lib/xs-typemap......dubious Test returned status 2 (wstat 512\, 0x200) DIED. FAILED tests 1-78 Failed 78/78 tests\, 0.00% okay camel-III/vstring...ok Failed Test Status Wstat Total Fail Failed List of Failed
lib/cwd.t 10 1 10.00% 8 lib/glob-basic.t 11 2 18.18% 10-11 lib/xs-typemap.t 2 512 78 78 100.00% 1-78 26 tests and 143 subtests skipped. Failed 3/309 test scripts\, 99.03% okay. 81/21330 subtests failed\, 99.62% okay. dmake.exe: Error code 255\, while making 'test'
F:\temp\perl@9424\win32>
And just for the records\, 'make distclean' does not work. Recompiling generates some error:
Skip ..\..\lib\Encode\iso2022-kr.enc (unchanged) gcc -c -g -O2 -DWIN32 -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -D PERL_MSVCRT_READFIX -g -O2 -DVERSION=\"0.02\" -DXS_VERSION=\"0.02\" -I..\..\lib \CORE EBCDIC.c ..\..\miniperl -I..\..\lib -I..\..\lib ..\..\lib\ExtUtils/xsubpp -typemap ..\..\lib\ExtUt ils\typemap Encode.xs > Encode.xsc && ..\..\miniperl -I..\..\lib -I..\..\lib -MExtUtils::C ommand -e mv Encode.xsc Encode.c gcc -c -g -O2 -DWIN32 -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -D PERL_MSVCRT_READFIX -g -O2 -DVERSION=\"0.02\" -DXS_VERSION=\"0.02\" -I..\..\lib \CORE Encode.c Encode.xs:643: iso8859.def: No such file or directory Encode.xs:644: EBCDIC.def: No such file or directory Encode.xs:645: Symbols.def: No such file or directory dmake.exe: Error code 1\, while making 'Encode.o' dmake.exe: Error code 255\, while making '..\lib\auto\Encode\Encode.dll'
F:\temp\perl@9424\win32>
Quite. The whole extensions process on Win32 _was_ very manual process till a few minutes ago.
I just changed makefile.mk scheme to use a script buildext.pl which hunts down things in ext directory and builds them. (With an exclude list for Sys/Syslog\, ODBM_File\, ...)
And just for the records\, 'make distclean' does not work. Recompiling generates some error:
The new scheme does not (yet) fix distclean to really clean up. But as it does not try and short-circuit-second-guess the dependancies this mess ..
Encode.xs:643: iso8859.def: No such file or directory Encode.xs:644: EBCDIC.def: No such file or directory
...should not occur.
FWIW there is a win32\distclean.bat used thus
C:\perldist> win32\distclean
It does need _a_ perl to work though.
Encode.xs:645: Symbols.def: No such file or directory dmake.exe: Error code 1\, while making 'Encode.o' dmake.exe: Error code 255\, while making '..\lib\auto\Encode\Encode.dll'
F:\temp\perl@9424\win32>
Failed Test Status Wstat Total Fail Failed List of Failed -------------------------------------------------------------------------------- lib/cwd.t 10 1 10.00% 8
That's a weird one. Test 8 is getcwd() which (for $^O eq "MSWin32") should be aliased to the same sub as each of cwd\, fastcwd\, and fastgetcwd which all worked!
What does "perl.exe -Ilib -MCwd -wle 'print cwd; print getcwd'" reveal?
lib/glob-basic.t 11 2 18.18% 10-11
Can you run lib/glob-basic.t by hand and send us the output?
Cheers\, -Ben
Andreas Fehr \andreas@​mrs\.ch writes:
For me\, this looks as it didn't build it:
Quite. The whole extensions process on Win32 _was_ very manual process till a few minutes ago.
I just changed makefile.mk scheme to use a script buildext.pl which hunts down things in ext directory and builds them. (With an exclude list for Sys/Syslog\, ODBM_File\, ...)
Sorry\, but the new makefile (as of 9452) is\, well\, not working. Starting with the lines...
#---------------------------------------------------------------------------------- Extensions : buildext.pl $(PERLDEP) $(CONFIGPM) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(EXTDIR) $(PERLDEP)
#----------------------------------------------------------------------------------
...everything goes wrong. (EXTDIR and PERLDEP were swapped in the original version).
(I'm not a 'make' guru\, so ignore if the following is crap) There is no dependency for this Extensions target so the Extension always get build. Even after a successful build\, if I want to 'make test'\, the extensions get rebuilt.
We need something like: #---------------------------------------------------------------------------------- Extensions : buildext.pl $(PERLDEP) $(CONFIGPM) echo blah > Extensions $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(EXTDIR) $(PERLDEP)
#----------------------------------------------------------------------------------
To prevent recompiling the extensions. Replace 'blah' with something more descriptiv.
Talking about the makefile. In win32/makefile.mk CCTYPE defaults to MSVC. Is this correct? Shouldn't MSVC use the Makefile (instead of makefile.mk)?
BS> On Thu\, 29 Mar 2001\, Andreas Fehr wrote: BS> BS> > Failed Test Status Wstat Total Fail Failed List of Failed BS> > -------------------------------------------------------------------------------- BS> > lib/cwd.t 10 1 10.00% 8 BS> BS> That's a weird one. Test 8 is getcwd() which (for $^O eq "MSWin32") BS> should be aliased to the same sub as each of cwd\, fastcwd\, and fastgetcwd BS> which all worked! BS> BS> What does "perl.exe -Ilib -MCwd -wle 'print cwd; print getcwd'" reveal? BS>
Sorry\, the 9423 snapshot is already removed. I hope this helps too:
F:\temp\perl@9452>perl -Ilib -MCwd -wle "print cwd; print getcwd" F:/temp/perl@9452 F:/temp/perl@9452
F:\temp\perl@9452>
BS> > lib/glob-basic.t 11 2 18.18% 10-11 BS> BS> Can you run lib/glob-basic.t by hand and send us the output? BS>
For the new snapshot:
F:\temp\perl@9452>perl F:\temp\perl@9452\t\lib\glob-basic.t 1..11 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 # skipped ok 7 # TEST a b ok 8 ok 9 # f_ascii = A.test B.test C.test a.test b.test c.test # g_ascii = A.test B.test C.test not ok 10 # f_alpha = A.test a.test B.test b.test C.test c.test # g_alpha = A.test B.test C.test not ok 11
F:\temp\perl@9452>
Sorry about that - but it does work for me.
#---------------------------------------------------------------------------------- Extensions : buildext.pl $(PERLDEP) $(CONFIGPM) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(EXTDIR) $(PERLDEP)
#----------------------------------------------------------------------------------
...everything goes wrong. (EXTDIR and PERLDEP were swapped in the original version).
buildext.pl does
my $make = shift; my $dep = shift; my $dir = shift;
So I assert that they should be passed as was.
$(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR)
That is: 1. Name of make to use\, 2. The name of file to use as timestamp that perl has changed\, it uses the .def file as if symbols exported from perl57.dll change then we need rebuild from cold for sure. 3. The directory to look in for extensions.
(I'm not a 'make' guru\, so ignore if the following is crap)
I am no dmake/nmake guru but know Unix make well.
There is no dependency for this Extensions target so the Extension always get build.
Correct - well dmake gets called again.
Even after a successful build\,
Correct - just because I built it successfuly last month does not mean that I have not rsync'ed\, p4 sync'ed or just edited one of the extension files since - the extension knows if that has happened. The top level makefile does not - unless you fully enumerate ALL the dependancies of every "made" file.
if I want to 'make test'\, the extensions get rebuilt.
Re-checked.
Of course if you mess with the order of the arguments so that buildext is checking timestamp of ..\ext then other mess will occur.
If your machine is tediously slow doing that then just do
make test
to start with ...
We need something like: #---------------------------------------------------------------------------------- Extensions : buildext.pl $(PERLDEP) $(CONFIGPM) echo blah > Extensions $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(EXTDIR) $(PERLDEP)
No. That short-circuits the dependancy checking in the ..\ext\Makefile-s And you get the kind of mess you reported yesterday where Encode didn't build right after a "make distclean".
On Unix when you say "make" it goes and runs "make" in the extension directories\, that way if someone has modified a file the extension depends on it will rebuild it. The change to makefile.mk is to make Win32 do the same.
#----------------------------------------------------------------------------------
To prevent recompiling the extensions. Replace 'blah' with something more descriptiv.
Talking about the makefile. In win32/makefile.mk CCTYPE defaults to MSVC. Is this correct? Shouldn't MSVC use the Makefile (instead of makefile.mk)?
Both Sarathy and I use dmake and makefile.mk for MSVC builds.
Which is clearly a case-ignoring issue. On NTFS at least (case preserving) we could check that 'Ax.test' and 'aY.test/' (say) sorted as "expected" - but the name would have to be unique without case.
F:\temp\perl@9452>
Andreas Fehr \andreas@​mrs\.ch writes:
Sorry\, but the new makefile (as of 9452) is\, well\, not working. Starting with the lines...
Sorry about that - but it does work for me.
??? Tried again\, did work now. Lost more than an hour this morning. Don't know what was wrong.
All the rest does make sense if 'buildext.pl' executes without the symptom I saw this morning.
Thanks for the information. No more mails now\, I'm leaving.
I use both actually. And I typically don't modify the makefile.mk at all but just do something like:
dmake CCTYPE=MSVC all test
README.win32 says the makefile.mk defaults to GCC--we should probably aim to keep it that way.
Sarathy gsar@ActiveState.com
F:\temp\perl@9452>perl -Ilib -MCwd -wle "print cwd; print getcwd" F:/temp/perl@9452 F:/temp/perl@9452
F:\temp\perl@9452>
Looks like a trailing newline from getcwd()? But I still don't get it.
Cwd.pm does this:
elsif ($^O eq 'NT' or $^O eq 'MSWin32') { # We assume that &_NT_cwd is defined as an XSUB or in the core. *cwd = \&_NT_cwd; *getcwd = \&_NT_cwd; *fastcwd = \&_NT_cwd; *fastgetcwd = \&_NT_cwd; *abs_path = \&fast_abs_path; }
So how can cwd() and getcwd() return different? You are $^O eq 'MSWin32'\, right? Or am I misreading your perl -V?
Summary of my perl5 (revision 5 version 7 subversion 0) configuration: Platform: osname=MSWin32\, osvers=4.0\, archname=MSWin32-x86-multi-thread uname=''
I don't have a sane Windows build (or runtime) environment\, so I'll need some help following this up.
Cheers\, -Ben
Andreas Fehr \andreas@​mrs\.ch writes:
ok 9 # f_ascii = A.test B.test C.test a.test b.test c.test # g_ascii = A.test B.test C.test not ok 10 # f_alpha = A.test a.test B.test b.test C.test c.test # g_alpha = A.test B.test C.test not ok 11
Which is clearly a case-ignoring issue.
On NTFS at least (case preserving) we could check that 'Ax.test' and 'aY.test/' (say) sorted as "expected" - but the name would have to be unique without case.
Would this do the trick? Also changes .test to .pl lest the 4-character suffix be an issue somewhere.
Make this work also where 'a' \< 'A' (like\, say\, EBCDIC) and we have a deal.
--- t/lib/glob-basic.t.orig Fri Mar 30 11:39:41 2001 +++ t/lib/glob-basic.t Fri Mar 30 11:42:40 2001 @@ -128\,17 +128\,17 @@ # GLOB_ALPHASORT (default) should sort alphabetically regardless of case mkdir "pteerslt"\, 0777; chdir "pteerslt"; -@f_ascii = qw(A.test B.test C.test a.test b.test c.test); -@f_alpha = qw(A.test a.test B.test b.test C.test c.test); +@f_ascii = qw(Ax.pl Bx.pl Cx.pl aY.pl bY.pl cY.pl); +@f_alpha = qw(Ax.pl aY.pl Bx.pl bY.pl Cx.pl cY.pl); if (ord('A') == 193) { # EBCDIC char sets sort lower case before UPPER @f_ascii = sort(@f_ascii); - @f_alpha = qw(a.test A.test b.test B.test c.test C.test); + @f_alpha = qw(aY.pl Ax.pl bY.pl Bx.pl cY.pl Cx.pl); } for (@f_ascii) { open T\, "> $_"; close T; } -$pat = "*.test"; +$pat = "*.pl"; $ok = 1; @g_ascii = bsd_glob($pat\, 0); print "# f_ascii = @f_ascii\n";
Cheers\, -Ben
-- signer: can't create ~/.sig: Directory not empty
Would this do the trick? Also changes .test to .pl lest the 4-character suffix be an issue somewhere.
Make this work also where 'a' \< 'A' (like\, say\, EBCDIC) and we have a deal.
if (ord('A') == 193) { # EBCDIC char sets sort lower case before UPPER @f_ascii = sort(@f_ascii); - @f_alpha = qw(a.test A.test b.test B.test c.test C.test); + @f_alpha = qw(aY.pl Ax.pl bY.pl Bx.pl cY.pl Cx.pl);
Isn't that what this does? Or am I missing something?
Cheers\, -Ben
Ooops\, read too hastily. That should work.
Cheers\, -Ben
-- signer: can't create ~/.sig: Protocol not available
# GLOB_ALPHASORT (default) should sort alphabetically regardless of case mkdir "pteerslt"\, 0777; chdir "pteerslt";
@f_names = qw(Ax.pl Bx.pl Cx.pl aY.pl bY.pl cY.pl); @f_alpha = qw(Ax.pl aY.pl Bx.pl bY.pl Cx.pl cY.pl); if ('a' lt 'A') { # EBCDIC char sets sort lower case before UPPER @f_names = sort(@f_names); @f_alpha = qw(aY.pl Ax.pl bY.pl Bx.pl cY.pl Cx.pl); }
for (@f_names) { open T\, "> $_"; close T; }
$pat = "*.pl";
$ok = 1; @g_names = bsd_glob($pat\, 0); print "# f_names = @f_names\n"; print "# g_names = @g_names\n"; for (@f_names) { $ok = 0 unless $_ eq shift @g_names; } print $ok ? "ok 10\n" : "not ok 10\n";
$ok = 1; @g_alpha = bsd_glob($pat); print "# f_alpha = @f_alpha\n"; print "# g_alpha = @g_alpha\n"; for (@f_alpha) { $ok = 0 unless $_ eq shift @g_alpha; } print $ok ? "ok 11\n" : "not ok 11\n";
unlink @f_names; chdir ".."; rmdir "pteerslt";
I couldn't resist some extra tweakage...
Tweak away. It's your pumpkin\, after all.
Cheers\, -Ben
@jhi - Status changed from 'open' to 'resolved'
Andreas\, I'm marking all your reports on build problems on "MSWin32-x86-multi-thread 4.0"\, either on pre-5.8.0\, or the one in 5.6.1-RC3\, as resolved.
Not that I think all of the problems have been resolved (e.g. I think some Win32 variants still suffer from the socketpair.t failures\, and some others from the win32/system.t failures)\, but simply because I think we do not need *all* of these reports :-)
An updated bug report from the 5.8.0 final and/or 5.6.1 from MinGW (or other Win32s) would be nice (assuming there are still failures\, that is).
@jhi - Status changed from 'open' to 'resolved'
Migrated from rt.perl.org#6669 (status was 'resolved')
Searchable as RT6669$