Should /opt/local/bin/perl be deleted too ?
robert delius royar
apple at frinabulax.org
Sat Dec 22 05:37:46 PST 2007
Sat, 22 Dec 2007 (00:54 +0100 UTC) Vincent Lefevre wrote:
> On 2007-12-21 10:34:00 -0500, robert delius royar wrote:
>> I compiled perl 5.10.0 with the same configuration that macports 5.8.8
>> used. [I have the perl5.8 port set as the primary perl interpretor and
>> have created links in /usr/local/[bin|lib|share] to make it so that
>> other software finds macports perl before the system one--including
>> apache.]
>>
>> When I tried to run a module through 5.10.0 from CPAN (Net::TiVo),
>> 5.10.0 failed because a bundle from macports (p5-digest-sha1) referenced
>> a symbol not in the 5.10.0 version:
> [...]
>
> I'd say that you probably need to recompile every module (well, those
> that don't contain just Perl code) against 5.10. BTW, that may be a
> reason to have a single Perl port installed (activated). Otherwise
> the risk of using some module with a different Perl version for which
> it has been built would be too high IMHO.
I have the latest version of perl5.8.8 (from macports) installed:
% port installed perl5.8
The following ports are currently installed:
perl5.8 @5.8.8_0+darwin_8+shared+threads
% port outdated perl5.8
No installed ports are outdated
However, occasionally I have had to abort installs of other software
because that software requires perl5.8 and tries to install it. I would
not want that to be the case with software wrt perl5.10 because that
could hose a system with a lot of perl 5.8 modules that have been
compiled and linked into bundles.
>
>> dyld: lazy symbol binding failed: Symbol not found: _Perl_Tstack_sp_ptr
>> Referenced from: /opt/local/lib/perl5/site_perl/5.10.0/darwin-thread-multi-2level/auto/Digest/SHA1/SHA1.bundle
>> Expected in: dynamic lookup
>>
>> dyld: Symbol not found: _Perl_Tstack_sp_ptr
>> Referenced from: /opt/local/lib/perl5/site_perl/5.10.0/darwin-thread-multi-2level/auto/Digest/SHA1/SHA1.bundle
>> Expected in: dynamic lookup
>>
>> Trace/BPT trap
>>
>> I suspect there may be a number of these. Perl_Tstack_sp_ptr() was in
>> CORE in 5.8. I believe that it is part of the pre-5.8 legacy code and
>> in there for compatibility with verions that expected functions for what
>> are array or incrementable pointer variables.
>>
>> It is defined in the 5.8.8 source in perlapi.h but not defined anywhere
>> in the 5.10.0 source.
>
> I don't know what you try to mean exactly, but Digest-SHA1 2.11 is
> compatible with Perl 5.10 as you can see:
>
> http://cpantesters.perl.org/show/Digest-SHA1.html
The API has changed and the symbol Perl_Tstack_sp_ptr is not in the
current API. It was in 5.8.8 and before. The discussion I have been
able to Google points to this symbol being a problem if old code is not
recompiled with the new libperl.
I think moving up to perl5.10 is more drastic for the user than was
5.6 to 5.8. Somehow the user should be warned that all bundles (I
suppose mod-perl and its companionions, also) will need to be
reinstalled or recompiled for 5.10
Because macports does not add any earlier directories to @INC, the user
would just see these errors as not being able to locate a module, rather
than the missing symbol error. Still, it means a bit of work for
someone who has a number of bundles. The user should be told that ahead
of time.
> Vincent Lefèvre <vincent at vinc17.org> - Web: <http://www.vinc17.org/>
> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
--
Dr. Robert Delius Royar Associate Professor of English
Morehead State University Morehead, Kentucky
More information about the macports-dev
mailing list