Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#64341 closed defect (fixed)

curl fails due to circular dependencies with clang on 10.6.8 (x86_64)

Reported by: barracuda156 Owned by: jmroot (Joshua Root)
Priority: Normal Milestone:
Component: ports Version: 2.7.1
Keywords: x86_64, Snow Leopard Cc:
Port: curl, libpsl, python39, cmake, libomp

Description

Bootstrapping Macports with curl ran into unexpected problem on 10.6.8 x86_64: the following ports call for each other and fail to install:

Error: The following dependencies were not installed because all of them have unmet dependencies (likely due to a dependency cycle): libpsl python39 clang-9.0 cmake curl libomp llvm-9.0
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.
Error: Processing of port curl failed

Calling for install of other port instead of curl results in the same error:

svacchanda$ sudo ./port -v install libpsl
Password:
--->  Computing dependencies for libpsl.........
The following dependencies will be installed: 
 clang-9.0
 cmake
 curl
 libomp
 libpsl
 llvm-9.0
 python39
Continue? [Y/n]: n

This was vanilla Macports with zero changes to config or portfiles. Installed from source with:

./configure --prefix=/opt/bootstrap --with-applications-dir=/opt/bootstrap/Applications --without-startupitems

Change History (8)

comment:1 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Can you figure out what the specific dependency cycle is?

comment:2 in reply to:  1 Changed 2 years ago by barracuda156

Replying to ryandesign:

Can you figure out what the specific dependency cycle is?

Sergey-Fedorovs-Mac-mini:bin svacchanda$ ./port deps curl
Full Name: curl @7.80.0_0+ssl
Extract Dependencies: xz
Build Dependencies:   pkgconfig, clang-3.7
Library Dependencies: libidn2, libpsl, zlib, zstd, openssl, curl-ca-bundle, libcxx

Sergey-Fedorovs-Mac-mini:bin svacchanda$ ./port deps libpsl
Full Name: libpsl @0.21.1-20210726_2
Build Dependencies:   gettext, pkgconfig, python39, clang-3.7
Library Dependencies: gettext-runtime, libiconv, libidn2, libunistring, libcxx

Sergey-Fedorovs-Mac-mini:bin svacchanda$ ./port deps python39
Full Name: python39 @3.9.9_0
Extract Dependencies: xz
Build Dependencies:   pkgconfig, clang-9.0
Library Dependencies: bzip2, expat, gettext-runtime, libedit, libffi, ncurses, openssl, sqlite3, xz, zlib, libcxx
Runtime Dependencies: python_select, python3_select

Sergey-Fedorovs-Mac-mini:bin svacchanda$ ./port deps clang-9.0
Full Name: clang-9.0 @9.0.1_4+defaultlibcxx+emulated_tls+libstdcxx
Extract Dependencies: xz
Build Dependencies:   cmake, cctools, pkgconfig, cctools, clang-3.7
Library Dependencies: libxml2, libomp, llvm-9.0, python27, libcxx
Runtime Dependencies: clang_select, ld64, cctools

Sergey-Fedorovs-Mac-mini:bin svacchanda$ ./port deps libomp
Full Name: libomp @13.0.0_0+universal
Extract Dependencies: xz
Build Dependencies:   cmake, perl5, clang-3.7
Library Dependencies: libcxx

Sergey-Fedorovs-Mac-mini:bin svacchanda$ ./port deps cmake
Full Name: cmake @3.22.1_0
Build Dependencies:   clang-3.7
Library Dependencies: curl, expat, zlib, bzip2, libarchive, ncurses, libuv, libcxx, legacy-support

comment:3 Changed 2 years ago by jmroot (Joshua Root)

So it's the same situation as #60419. Apparently both the submitter and reviewers failed to notice the comment in the libpsl Portfile when handling PR #9941.

comment:4 Changed 2 years ago by jmroot (Joshua Root)

Owner: set to jmroot
Resolution: fixed
Status: newclosed

In 7086fed1ff95aa2a54ccddd566419dc5d82edd23/macports-ports (master):

libpsl: build with python310

Fixes: #64341

comment:5 in reply to:  4 Changed 2 years ago by barracuda156

Replying to jmroot:

In 7086fed1ff95aa2a54ccddd566419dc5d82edd23/macports-ports (master):

libpsl: build with python310

Fixes: #64341

Thank you, issue indeed solved.

comment:6 Changed 2 years ago by kencu (Ken)

I find a curl-donor macports installed in /opt/bootstrap is considerably simpler (and has other benefits) if you default the libc++ to libstdc++ there in that installation.

Then you need many fewer deps, and on 10.6 and less, you won't accidentally overwrite /usr/lib/libc++.dylib with a different or possibly non-TLS version that way.

comment:7 in reply to:  3 Changed 2 years ago by kencu (Ken)

Replying to jmroot:

So it's the same situation as #60419. Apparently both the submitter and reviewers failed to notice the comment in the libpsl Portfile when handling PR #9941.

My apologies for committing that PR. Perhaps it was a bit of a high bar to expect that this PR view

https://github.com/macports/macports-ports/pull/9941/commits/c87a5f7729fd825f1f1ea305999c5298c7ef2db2

with all the tests passing, would lead to insight that there was a missing instruction in the python Portfile to add a clang dependency.

The note is more obvious now.

The suggestion I made to use cmake-bootstrap (which has no deps) to build the clangs may simplify this process.

Last edited 2 years ago by kencu (Ken) (previous) (diff)

comment:8 in reply to:  6 Changed 2 years ago by barracuda156

Replying to kencu:

I find a curl-donor macports installed in /opt/bootstrap is considerably simpler (and has other benefits) if you default the libc++ to libstdc++ there in that installation.

Then you need many fewer deps, and on 10.6 and less, you won't accidentally overwrite /usr/lib/libc++.dylib with a different or possibly non-TLS version that way.

Thank you! Yes, I should have used libstdc++ there.

I was thinking to set libstdc++ for the main installation, so that the setup is as close to ppc as possible, but didn’t do it in bootstrap one.

Note: See TracTickets for help on using tickets.