Opened 7 years ago

Last modified 6 years ago

#54364 closed defect

p5.24-io-socket-ssl: failed to build on Snow Leopard (with libc++) — at Version 2

Reported by: rlhamil Owned by:
Priority: Normal Milestone:
Component: ports Version:
Keywords: snowleopard LibcxxOnOlderSystems Cc: rlhamil, dbevans (David B. Evans), mojca (Mojca Miklavec)
Port: p5.24-io-socket-ssl

Description (last modified by mojca (Mojca Miklavec))

:info:configure dyld: Symbol not found: _perl_tsa_mutex_lock
:info:configure   Referenced from: /opt/local/lib/perl5/vendor_perl/5.24/darwin-thread-multi-2level/auto/Net/SSLeay/SSLeay.bundle
:info:configure   Expected in: flat namespace
:info:configure sh: line 1: 68230 Trace/BPT trap          
/opt/local/bin/perl5.24 Makefile.PL INSTALLDIRS=vendor CC="/opt/local/bin/clang-mp-3.7" LD="/opt/local/bin/clang-mp-3.7"

Workaround: re-install perl5.24 with +universal, works then. When built correctly, symbol is defined in /opt/local/lib/perl5/5.24/darwin-thread-multi-2level/CORE/libperl.dylib

Change History (3)

Changed 7 years ago by rlhamil

comment:1 Changed 7 years ago by rlhamil

Cc: rlhamil added

comment:2 Changed 7 years ago by mojca (Mojca Miklavec)

Cc: dbevans mojca added
Description: modified (diff)
Keywords: snowleopard LibcxxOnOlderSystems added
Summary: p5.24-io-socket-ssl failed to build on Snow Leopardp5.24-io-socket-ssl: failed to build on Snow Leopard (with libc++)
Version: 2.4.1

I'm not sure if my theory is correct, but I strongly suspect there's a problem in (lack of) flags to set the stdlib.

Perl devs pointed me to:

try https://metacpan.org/pod/ExtUtils::MakeMaker#PERL_MM_OPT for EUMM installers and https://metacpan.org/pod/Module::Build#PERL_MB_OPT for M::B installers the latter is also honored by Module::Build::Tiny https://metacpan.org/pod/Module::Build::Tiny#CONFIG-FILE-AND-ENVIRONMENT

Maybe the perl PortGroup could always set the stdlib in the PERL_MM_OPT and PERL_MB_OPT environmental variables. Untested theory.

I fail to understand why exactly the universal build would fix the issue, but it could be that one module is not installed as i386 and then the package being built would link against perl5.24 rather than against another existing p5.24-* module and this would work (since perl was built with the right flags).

The mutex keyword smells like C++11 in any case.

Note: See TracTickets for help on using tickets.