On 02/11/2012 02:24, Marvin Humphrey wrote:
I see from your comment on <https://issues.apache.org/jira/browse/LUCY-211>
that we have a workaround for these.  (Redefining `for`, oi...)

The next step is to make CFC use Charmonizer. We might want to create a separate ticket for that.

Maybe that's base.pm prior to 2.18 misbehaving?  That error message indicates
that the superclass was not loaded.

     $ perl -le 'package Foo; Foo->SUPER::new'
     Can't locate object method "new" via package "Foo::SUPER" at -e line 1.

Should we make this change to Lucy::Build?

     -use base qw( Clownfish::CFC::Perl::Build );
     +use Clownfish::CFC::Perl::Build;
     +BEGIN { push our @ISA, 'Clownfish::CFC::Perl::Build' }

I have no idea. I also couldn't reproduce it with ActivePerl 5.16.1.1601, 32-bit.

I think this problem may have gone away in trunk as a side effect of recent
changes to Charmonizer.  The problem occurs during the linking phase for
Charmonizer, but that linking phase is handled a different way now that
Charmonizer gets bundled up into a single amalgamated C file.  Compiling
charmonizer during Lucy's Perl build is now one simple command (which doesn't
use any of the libs specified by the Perl Config module):

     cl charmonizer.c /Fecharmonize.exe

That linking bug you reported may come back during another linking phase,
though -- like when we try to link together Lucy.dll from all the *.obj files.

I think it's something else. IIRC the problem that I had when building Lucy with 64-bit ActivePerl some months ago was that it tried to link against bufferoverflowU.lib which wasn't present on my system. That's what my bug report is about.

From what I understand bufferoverflowU.lib is only needed with the Windows Server 2003 Platform SDK compiler which is what ActiveState uses for 64-bit builds.

The easiest solution might be to compile with /GS- which should disable buffer overrun protection completely. Otherwise Charmonizer has to check whether linking against that library is needed.

Nick

Reply via email to