Subject: RE: perl-5.10.0-4 -> perl-5.10.0-5 site_perl update needed
From: "Jan Dubois" <[email-masked]>
To: "'Reini Urban'" <[email-masked]>, <[email-masked]>
Cc: "'P5P'" <[email-masked]>
Date: Thu, 10 Jul 2008 18:39:59 -0700
List-Id: <cygwin.cygwin.com>

On Thu, 10 Jul 2008, Reini Urban wrote:
> I've analyzed the symbols in the dll's and found the explanation and
> solution for this update problems. p5p and module authors need not to
> be concerned. It's a simple cygwin perl update problem.
> 
> In short:
> All old perl-5.10.0-4 generated binary site_perl modules need to be
> recompiled with perl-5.10.0-5.

This should not be true: if the modules were compiled with 5.10.0-4, then
they should work with 5.10.0-5.

> They are not ABI cross-compatible with the new vendor and archlib modules.
> 
> Explanation:
> perl-5.10.0-5 is based on patchlevel 34065, perl-5.10.0-4 was based on
> plain 5.10.0 with a lot of patches.
> 
> perl-5.10.0-5 adds a new utf8 handling of strings via a new
> newSVpvn_flags function
> sv.h: #define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u)
> ? SVf_UTF8 : 0)
> perl-5.10.0-4 does not contain newSVpvn_utf8 nor newSVpvn_flags.
> 
> So any new XS module using strings may not call an old perl-5.10.0-4 dll, which
> does not contain the _utf8  and _flags functions.

So how do you end up with a site_perl compiled against 5.10.0-5, but
running with 5.10.0-4? You installed the new site_perl into an older
Perl installation?

> Solution:
> # delete all old site packages with dll's and reinstall them
> for pack in $(find /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto \
>   -name .packlist \! -newer /bin/perl.exe);
> do
>   grep .dll $pack && rm -f $(cat $pack)
> done | \
> perl -MCPAN -ne'
> s|/usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/(.+?)/\w+\.dll$|$1|;
> s|/|::|g; push @p, $_; END {install(@p) }'
> 
> should recompile them all.

But that would compile them with 5.10.0-4 again, right. Wouldn't it be
better to replace your 5.10.0-4 dll with the 5.10.0-5 dll?

I guess I'm confused about how you ended up in this situation in the
first place.

Cheers,
-Jan

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/