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