Hello, I am porting PLD Linux Distribution to AMD64 platform (also known as x86_64) and I have proble with Glib perl module, version 1.020. It builds fine, but fails on make test, like this: + /usr/bin/make test PERL_DL_NONLAZY=1 /usr/bin/perl5.8.2 "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/1....ok t/2....ok t/3....ok t/4....ok t/5....ok t/7....ok t/8....ok t/9....Use of uninitialized value in ref-to-glob cast at t/9.t line 80, <IN> chunk 1. ok t/a....# Looks like you planned 8 tests but ran 7 extra. dubious Test returned status 7 (wstat 1792, 0x700) Scalar found where operator expected at (eval 155) line 1, near "'int' $__val" (Missing operator before $__val?) DIED. FAILED tests 9-15 Failed 7/8 tests, 12.50% okay t/b....ok Failed 1/10 test scripts, 90.00% okay. -7/108 subtests failed, 106.48% okay. Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/a.t 7 1792 8 7 87.50% 9-15 make: *** [test_dynamic] Error 255 The first thing what I have done to fix this was killing all compiler warnings. A lot of software fails on AMD64 because problems reported by compiler via its warnings, usually about bad pointer or int-to-pointer conversion, were not fixed just because they are not actually problems on developer's platform. I found one _very_bad_ piece of code in Glib module, which assumed that pointer can fit into 32-bit iteger (on AMD64 it won't fit). I fixed it so compiler doesn't complain, but I am not sure if I did it right. I don't know perl internals well enough. Compiler doesn't warn me any more, but the test still doesn't pass, so probably the problem is somhere else. Any hints? My warning-killer patch is attached. Greets, Jacek
Attachment:
perl-Glib-kill_warnings.patch
Description: Text document