in reply to Re^2: Weird problems building Scalar-List-Utils-1.18 on Win32+MinGW
in thread Weird problems building Scalar-List-Utils-1.18 on Win32+MinGW

still, you did not showed perl -V or even perl version.
I, personally, helped in resolving some bug of not included into the Perl linker symbol, for some perl.5.8.x version, but this is very version dependant.

Try reproducing your error in other builds, including your own freshly created one.

Besides, according to http://win32.perl.org/wiki/index.php?title=Win32_Distributions PXPerl is abandoned, so your audience is indeed very narrow.

  • Comment on Re^3: Weird problems building Scalar-List-Utils-1.18 on Win32+MinGW

Replies are listed 'Best First'.
Re^4: Weird problems building Scalar-List-Utils-1.18 on Win32+MinGW
by bart (Canon) on Jun 20, 2006 at 13:06 UTC
    Well I'm using the latest available version of PXPerl, obviously... ;-) Which is perl 5.8.7. Wait, I'll give you perl -V:

    PXPerl may look abandoned, due to the lack of interest by the author (He wrote, IIRC, he found the hard work needed to get stuff done on Win32 compared to Linux, discouraging), but I think it'd be a shame if all the hard work he did just faded away. Perhaps somebody could take over, perhaps it could be absorbed in the wider framework of the newly emerging Win32 distros...

    Anyway, PXPerl is only 1/2 year old, it's too early to call it "abandoned" just yet. IMHO.

Re^4: Weird problems building Scalar-List-Utils-1.18 on Win32+MinGW
by bart (Canon) on Jun 20, 2006 at 14:30 UTC
    OK, I found back what other module I was having similar problems to: CDB_File. In that case, the errors for PXPerl and for ActivePerl were identical. That's why I have confidence in PXPerl, why I don't think it's that bad.

    One symbol, "fsync" wasn't found, because it doesn't exist on Win32. It should be made equivalent to "_commit" using a macro. But the other symbol is an identical problem as I see here for 'Perl_seed':

    D:/PXPerl/.cpan/build/CDB_File-0.94/CDB_File.xs:462: undefined referen +ce to `Perl_report_uninit'

    This is the output I get from the latest version of ActivePerl, 5.8.8 build 817, downloaded this morning:

    Feel free to dig your nails into that one.

      OK, I found back what other module I was having similar problems to: CDB_File

      I don't think this is in any way a similar problem to the one with S::L::U-1.18.
      Firstly, the errors with CDB_File arise during the 'make' phase. (The S::L::U-1.18 error with AS perl occurs at the 'perl Makefile.PL' stage - a result of the Makefile.PL wanting to 'use inc::Module::Install').
      Secondly this error with CDB_File seems to affect every build of Win32 perl. (I don't get the S::L::U-1.18 error with any of the Win32 5.8.8 perls that I have built myself.)

      I don't know the solution to the CDB_File error - I get the same error with perl 5.8.4 on Win32, so it has been there for quite some time - probably since 5.8.0. On linux (perl 5.8.8), I find no problem in building CDB_File-0.94, so there's obviously something Win32-specific happening wrt 'Perl_report_uninit'.

      Cheers,
      Rob
        I don't know the solution to the CDB_File error

        Well, I now know part of the solution. I asked about 'Perl_report_uninit' on the xs mailing list and Jan Dubois replied as follows:

        "Perl_report_uninit() is not a public Perl API, so extensions are not allowed to call it. On Linux this cannot be enforced as all internal symbols are being exported anyways, but on Windows (and AIX) you can only call APIs that are marked as 'public' in the embed.fnc file in the core Perl distribution."

        However it seems that calling Perl_report_init() does the same as 'warn("Use of uninitialized value in subroutine entry");' - so I replaced the 4 instances of Perl_report_init() in CDB_File.xs with precisely that. On linux, with those changes in place, the module still builds and tests fine. However, on Win32, although it now builds fine, there are still some failures in the test suite - probably because my handling of 'fsync'. For that, all I did was insert '#define fsync _commit' near the beginning of CDB_File.xs, but apparently that is not good enough.

        Cheers,
        Rob