delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2008/07/10/21:40:47

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
From: "Jan Dubois" <jand AT activestate DOT com>
To: "'Reini Urban'" <rurban AT x-ray DOT at>, <cygwin AT cygwin DOT com>
Cc: "'P5P'" <perl5-porters AT perl DOT org>
References: <6910a60807100116g628cf204yeb1c43cbece6802a AT mail DOT gmail DOT com>
In-Reply-To: <6910a60807100116g628cf204yeb1c43cbece6802a@mail.gmail.com>
Subject: RE: perl-5.10.0-4 -> perl-5.10.0-5 site_perl update needed
Date: Thu, 10 Jul 2008 18:39:59 -0700
Message-ID: <02b501c8e2f7$07fdc450$17f94cf0$@com>
MIME-Version: 1.0
X-Mailer: Microsoft Office Outlook 12.0
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT 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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019