develooper Front page | perl.perl5.porters | Postings from April 2011

Re: [perl #78502] ext/XS-APItest/t/call_checker.t fails under Cygwin

Thread Previous | Thread Next
From:
Nicholas Clark
Date:
April 11, 2011 01:47
Subject:
Re: [perl #78502] ext/XS-APItest/t/call_checker.t fails under Cygwin
Message ID:
20110411084729.GA23881@plum.flirble.org
On Mon, Apr 11, 2011 at 09:26:05AM +0200, Konovalov, Vadim (Vadim)** CTR ** wrote:
> > From: Jesse Vincent [mailto:jesse@fsck.com] 
> > On Wed  6.Apr'11 at 13:05:10 +0200, Reini Urban wrote:
> > > The necessary fixes are still in my cygwin branch on 
> > github.com, and will
> > > be the base for the upcoming cygwin package, which is in 
> > testing right now.
> > > It's not so bad, less errors and less patches needed since 5.10.
> > 
> > I'm glad it's "better" and sorry it's not yet "good" -- After 
> > 5.14, what
> > are the chances of you (or someone else) setting up a full-time cygwin
> > smoker so we can watch the builds over time and catch when we 
> > introduce
> > regressions or have outstanding fails to deal with?  Since so few 
> > porters work on cygwin, we need to do _something_ to make this a bit
> > easier.
> 
> given that currently cygwin does not even build perl - at least some portions of Reini's patch should be applied.

Hangon. We're getting conflicting information here. If Cygwin doesn't build
*at all*, how come no-one else is reporting this? Particularly Reini and
Jerry. (and I think Jan, who was tying it)

What is different about your Cygwin?

> I am fine with some failing tests, but it will be very unlucky to be not able play with 5.14.0 on cygwin at all.
> 
> in this patch, 'm' modifier looks strange n the lines:
>   if ($linktype eq 'static' and $flags =~ /-DUSEIMPORTLIB/m) {
>     $flags =~ s/-DUSEIMPORTLIB/-UUSEIMPORTLIB/m;
>   }
> 
> but I believe it is some copy-paste from elsewhere.

Aha. That code in that patch:

http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2010-08/msg00714.html

It's actually stalled on an (*acknowledged* - "sure") request for a clearer
commit message:

http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2010-08/msg00719.html


Given that the original proposed commit message was this:

    part1: support the standard cyg dll prefix, which is e.g. needed for FFI's.
    Ctypes and C::DynaLib use DynaLoader to find dlls.
    
    part2: With -DUSEIMPORTLIB DynaLoader symbols link against the prefixed 
    symbol names for the .dll.a importlib, but we need to link against the 
    symbols directly. We don't link Dynaloader against libperl.dll.a.
    
    $ nm /usr/lib/perl5/5.13.4/i686-cygwin/CORE/libperl.dll.a|grep boot_DynaLoader
    00000000 I __imp__boot_DynaLoader
    00000000 T _boot_DynaLoader
    
    $ nm /usr/lib/perl5/5.13.4/i686-cygwin/CORE/cygperl5_13_4.dll|grep boot_DynaLoader
    54245944 T _boot_DynaLoader
    
    $ g++-4 -o cygperl5_13_4.dll --shared  -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--stack,8388608 -Wl,--enable-auto-image-base -L/usr/local/lib -fstack-protector -Wl,--out-implib=libperl.dll.a -Wl,--image-base,0x52000000 op.o perl.o madly.o malloc.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o cygwin.o  DynaLoader.o Win32CORE.o -ldl -lcrypt
    Creating library file: libperl.dll.a
    DynaLoader.o: In function `XS_DynaLoader_dl_undef_symbols':
    /usr/src/perl/blead/buildnothreads/ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_sp'
    /usr/src/perl/blead/buildnothreads/ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_markstack_ptr'
    /usr/src/perl/blead/buildnothreads/ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_base'
    DynaLoader.o: In function `XS_DynaLoader_dl_error':
    


which doesn't act as a clear summary of the intent to anyone unfamiliar with
Cygwin's build system, so isn't fit for purpose.

[Actually, it looks like the original patch should be *two* patches each with
half the commit message, as they appear to do distinct different things to
distinct different files]

Nicholas Clark

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About