Opened 3 years ago
Closed 2 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 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 3 years ago by rlhamil
| Attachment: | main.log-p5.24-io-socket-ssl.txt added |
|---|
comment:1 Changed 3 years ago by rlhamil
| Cc: | rlhamil added |
|---|
comment:2 Changed 3 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 3 years ago by ballapete (Peter Dyballa)
| Cc: | ballapete added |
|---|
comment:4 Changed 3 years ago by ballapete (Peter 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 3 years ago by ballapete (Peter Dyballa)
main.log with Clang 3.9
comment:5 follow-up: 6 Changed 3 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 3 years ago by ballapete (Peter 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 3 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 3 years ago by ballapete (Peter 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 3 years ago by ballapete (Peter 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 2 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_OPTandPERL_MB_OPTenvironmental 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
mutexkeyword smells like C++11 in any case.