On Wed, 2 Jan 2008, James E Keenan wrote:
> Andy Dougherty wrote:
> > After fixing various minor little things, here's where I stand
> > on Solaris 8/SPARC after the recent changes.
> >
> > Failed Test Stat Wstat Total Fail List of Failed
> >
> > -------------------------------------------------------------------------------
> > t/configure/115-auto_warnings-02.t 7 1792 22 14 16-22
> > t/configure/115-auto_warnings-03.t 7 1792 22 14 16-22
> > t/configure/115-auto_warnings-04.t 7 1792 22 14 16-22
> > t/configure/115-auto_warnings-05.t 8 2048 23 16 16-23
> > t/configure/115-auto_warnings-06.t 8 2048 23 16 16-23
> > t/configure/115-auto_warnings-07.t 9 2304 24 18 16-24
> > t/configure/146-auto_snprintf-01.t 13 3328 30 26 18-30
>
> Could you open an RT ticket for these -- or perhaps one for auto::warnings and
> one for aut::snprintf? I will then re-work the tests, as I have a general
> idea of the problem.
>
> What also would be helpful: (1) Output of prove -v on these. (2) How did you
> configure? I.e., which (of your many!) perls did you use? which command-line
> options? any interactive configuration?
It's the same problem I already reported on at length in #47391. (I have
adjusted the subject line to reference that ticket so RT will pick it up.)
My perl was built with cc, but I don't have cc available for this build
of parrot. I supplied all the correct flags on the Configure.pl command
line, but the tests are still assuming the values from the underlying perl
configuration. The tests are still using init::defaults. That is wrong.
They should be using the results stored in Parrot::Config instead.
Here, in gory detail, is the diagnosis. I configured with perl5.10,
which was built with Sun's cc.
$ perl5.10 -V:cc
cc='cc';
Sun's cc is not available for this build of parrot. However, gcc is.
I supplied all the appropriate flags to Configure.pl to use gcc:
$ perl5.10 Configure.pl --cc=gcc --link=gcc --ld=gcc --cxx=g++
[ ... successful Configure.pl output omitted ...]
However, 115-auto_warnings-0[2-7].t and 146-auto_snprintf-01.t all fail
in the same way:
$ prove -v t/configure/115-auto_warnings-02.t
t/configure/115-auto_warnings-02....1..22
ok 1 - use config::init::defaults;
ok 2 - use config::init::hints;
ok 3 - use config::inter::progs;
ok 4 - use config::auto::warnings;
ok 5 - init::defaults constructor returned defined value
ok 6 - The object isa init::defaults
ok 7 - init::defaults has description
ok 8 - init::defaults runstep() returned defined value
ok 9 - init::hints constructor returned defined value
ok 10 - The object isa init::hints
ok 11 - init::hints has description
ok 12 - init::hints runstep() returned defined value
ok 13 - inter::progs constructor returned defined value
ok 14 - The object isa inter::progs
ok 15 - inter::progs has description
Compilation failed with 'cc'
# Looks like you planned 22 tests but only ran 15.
dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 16-22
Failed 7/22 tests, 68.18% okay
Failed Test Stat Wstat Total Fail List of Failed
-------------------------------------------------------------------------------
t/configure/115-auto_warnings-02.t 255 65280 22 14 16-22
Failed 1/1 test scripts. 7/22 subtests failed.
Files=1, Tests=22, 2 wallclock secs ( 1.73 cusr + 0.49 csys = 2.22 CPU)
Failed 1/1 test programs. 7/22 subtests failed.
The failure is because the tests are not honoring my command-line settings
for the compiler and linker. If config/inter/progs.pm had proper error
reporting (see my long rant in #41168) it would direct you to look in
the file test.ldo.
$ cat test.ldo
Can't exec "CC": No such file or directory at lib/Parrot/Configure/Utils.pm
line 91.
Where did that 'CC' come from? It came from config/init/hints/solaris.pm,
which tries to guess the appropriate linker to use based on the current
value of the compiler. Since my underlying perl configuration used
Sun's cc, and the hint file apparently does not know about my command
line settings, it guesses that the appropriate linker to use is Sun's CC.
In short, the hint file is being run in an environment where it does
not have access to my command line arguments, where I explicitly
set everything appropriately already. It is relying, instead, on
init::defaults, which, as I have pointed out, is incorrect.
The simplest, most obvious, fix is to never use init::defaults (except
in the one case where you wish to test config/init/defaults.pm itself).
Use the correct values in Parrot::Config instead.
--
Andy Dougherty [EMAIL PROTECTED]