Opened 7 years ago
Closed 7 years ago
#54364 closed defect (worksforme)
p5.24-io-socket-ssl: failed to build on Snow Leopard (with libc++)
Reported by: | rlhamil | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | snowleopard LibcxxOnOlderSystems | Cc: | rlhamil, dbevans (David B. Evans), mojca (Mojca Miklavec), ballapete (Peter "Pete" Dyballa) |
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
Attachments (2)
Change History (12)
Changed 7 years ago by rlhamil
Attachment: | main.log-p5.24-io-socket-ssl.txt added |
---|
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 Leopard → p5.24-io-socket-ssl: failed to build on Snow Leopard (with libc++) |
Version: | 2.4.1 |
comment:3 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
Cc: | ballapete added |
---|
comment:4 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
With Clang 3.9
the same result:
DEBUG: Environment: CC='/opt/local/bin/clang-mp-3.9' CC_PRINT_OPTIONS='YES' CC_PRINT_OPTIONS_FILE='/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-io-socket-ssl/p5.24-io-socket-ssl/work/.CC_PRINT_OPTIONS' CFLAGS='-pipe -Os' CPATH='/opt/local/include' CPPFLAGS='-I/opt/local/include' CXX='/opt/local/bin/clang++-mp-3.9' CXXFLAGS='-pipe -Os -stdlib=libc++' F90FLAGS='-pipe -Os' FCFLAGS='-pipe -Os' FFLAGS='-pipe -Os' INSTALL='/usr/bin/install -c' LDFLAGS='-L/opt/local/lib -Wl,-headerpad_max_install_names' LIBRARY_PATH='/opt/local/lib' MACOSX_DEPLOYMENT_TARGET='10.6' OBJC='/opt/local/bin/clang-mp-3.9' OBJCFLAGS='-pipe -Os' OBJCXX='/opt/local/bin/clang++-mp-3.9' OBJCXXFLAGS='-pipe -Os -stdlib=libc++' PERL_AUTOINSTALL='--skipdeps' Executing: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-io-socket-ssl/p5.24-io-socket-ssl/work/IO-Socket-SSL-2.049" && /opt/local/bin/perl5.24 Makefile.PL INSTALLDIRS=vendor CC="/opt/local/bin/clang-mp-3.9" LD="/opt/local/bin/clang-mp-3.9" DEBUG: system: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-io-socket-ssl/p5.24-io-socket-ssl/work/IO-Socket-SSL-2.049" && /opt/local/bin/perl5.24 Makefile.PL INSTALLDIRS=vendor CC="/opt/local/bin/clang-mp-3.9" LD="/opt/local/bin/clang-mp-3.9" dyld: lazy symbol binding failed: Symbol not found: _perl_tsa_mutex_lock Referenced from: /opt/local/lib/perl5/vendor_perl/5.24/darwin-thread-multi-2level/auto/Net/SSLeay/SSLeay.bundle Expected in: flat namespace dyld: Symbol not found: _perl_tsa_mutex_lock Referenced from: /opt/local/lib/perl5/vendor_perl/5.24/darwin-thread-multi-2level/auto/Net/SSLeay/SSLeay.bundle Expected in: flat namespace sh: line 1: 85937 Trace/BPT trap /opt/local/bin/perl5.24 Makefile.PL INSTALLDIRS=vendor CC="/opt/local/bin/clang-mp-3.9" LD="/opt/local/bin/clang-mp-3.9" Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-io-socket-ssl/p5.24-io-socket-ssl/work/IO-Socket-SSL-2.049" && /opt/local/bin/perl5.24 Makefile.PL INSTALLDIRS=vendor CC="/opt/local/bin/clang-mp-3.9" LD="/opt/local/bin/clang-mp-3.9" Exit code: 133
Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
main.log with Clang 3.9
comment:5 follow-up: 6 Changed 7 years ago by kencu (Ken)
This feels like an archicture mismatch, perhaps where the module is being installed as +universal (maybe specified in variants.conf) or at least with the opposite architecture whereas pearl was not originally installed as universal.
comment:6 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
Replying to kencu:
This feels like an archicture mismatch, perhaps where the module is being installed as +universal (maybe specified in variants.conf) or at least with the opposite architecture whereas pearl was not originally installed as universal.
My /opt/local/etc/macports/variants.conf
has only these not out commented lines:
14 -llvm34 16 +llvm39 17 -ld64_97 18 -ld64_127 19 -ld64_236
Perl is kind of "natural" here, a digital native:
pete 270 /\ port installed | grep 5.24 p5.24-capture-tiny @0.460.0_0 (active) p5.24-cpan-meta-requirements @2.140.0_0 (active) p5.24-devel-checkbin @0.40.0_0 (active) p5.24-encode-locale @1.50.0_0 (active) p5.24-extutils-makemaker @7.300.0_0 (active) p5.24-extutils-manifest @1.700.0_0 (active) p5.24-file-listing @6.40.0_1 (active) p5.24-getopt-long @2.500.0_0 (active) p5.24-html-form @6.30.0_1 (active) p5.24-html-parser @3.720.0_0 (active) p5.24-html-tagset @3.200.0_4 (active) p5.24-http-cookies @6.30.0_0 (active) p5.24-http-daemon @6.10.0_1 (active) p5.24-http-date @6.20.0_1 (active) p5.24-http-message @6.130.0_0 (active) p5.24-http-negotiate @6.10.0_1 (active) p5.24-io @1.250.0_4 (active) p5.24-io-html @1.1.0_0 (active) p5.24-io-socket-inet6 @2.720.0_0 (active) p5.24-io-socket-ip @0.390.0_0 (active) p5.24-locale-gettext @1.70.0_0 (active) p5.24-lwp-mediatypes @6.20.0_1 (active) p5.24-mime-base64 @3.150.0_0 (active) p5.24-mozilla-ca @20160104_0 (active) p5.24-net-libidn @0.120.0_4 (active) p5.24-net-ssleay @1.810.0_0 (active) p5.24-pathtools @3.620.0_0 (active) p5.24-scalar-list-utils @1.480.0_0 (active) p5.24-socket @2.24.0_0 (active) p5.24-socket6 @0.280.0_0 (active) p5.24-sub-name @0.210.0_0 (active) p5.24-sub-uplevel @0.280.0_0 (active) p5.24-test-exception @0.430.0_0 (active) p5.24-test-nowarnings @1.40.0_1 (active) p5.24-test-warn @0.320.0_0 (active) p5.24-try-tiny @0.280.0_0 (active) p5.24-uri @1.710.0_0 (active) perl5 @5.24.1_0+perl5_24 (active) perl5.24 @5.24.1_0 (active)
OTOH, p5.24-net-ssleay does not seem to have the required object:
nm -p /opt/local/lib/perl5/vendor_perl/5.24/darwin-thread-multi-2level/auto/Net/SSLeay/SSLeay.bundle | grep mutex 00000000000692b0 b _GLOBAL_openssl_mutex 00000000000692c0 b _LIB_init_mutex U _perl_tsa_mutex_lock U _perl_tsa_mutex_unlock U _pthread_mutex_destroy U _pthread_mutex_init
comment:7 follow-up: 8 Changed 7 years ago by kencu (Ken)
Here's what I have -- somewhere along the way it was installed as universal, perhaps as part of wine? At any rate, this works:
p5.24-io-socket-ssl @2.49.0_0 (active) platform='darwin 10' archs='noarch' date='2017-06-21T10:47:05-0700' p5.24-net-smtp-ssl @1.40.0_0 (active) platform='darwin 10' archs='noarch' date='2016-10-28T11:12:00-0700' p5.24-net-ssleay @1.810.0_0+universal (active) platform='darwin 10' archs='i386 x86_64' date='2017-03-29T10:30:31-0700' perl5.24 @5.24.1_0+universal (active) platform='darwin 10' archs='i386 x86_64' date='2017-02-02T18:56:38-0800'
comment:8 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
Replying to kencu:
Here's what I have -- somewhere along the way it was installed as universal, perhaps as part of wine? At any rate, this works:
perl5.24 @5.24.1_0+universal (active) platform='darwin 10' archs='i386 x86_64' date='2017-02-02T18:56:38-0800'
I have:
perl5 @5.24.1_0+perl5_24 (active) platform='darwin 10' archs='noarch' date='2017-06-29T22:58:06+0200'
comment:9 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
Building
perl5.24 @5.24.1_0+universal (active) platform='darwin 10' archs='i386 x86_64' date='2017-06-30T21:54:29+0200'
solves indeed the problem, although /opt/local/lib/perl5/vendor_perl/5.24/darwin-thread-multi-2level/auto/Net/SSLeay/SSLeay.bundle
is unchanged…
comment:10 Changed 7 years ago by dbevans (David B. Evans)
Resolution: | → worksforme |
---|---|
Status: | new → closed |
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:
Maybe the perl PortGroup could always set the stdlib in the
PERL_MM_OPT
andPERL_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.