Opened 3 years ago

Closed 3 years ago

Last modified 3 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 3 years ago by ryandesign (Ryan Carsten Schmidt)

Can you figure out what the specific dependency cycle is?

comment:2 in reply to:  1 Changed 3 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 3 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 3 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 3 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 3 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 3 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.

So my apologies for committing that PR, but 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 an insight that there was a missing instruction somewhere in the python Portfile to add a clang dependency. If that is the expectation (and apparently it is) then it is easy to see why very few people agree to try committing PRs :>

The note is more obvious now, but still not very clear what needs to be done, to be honest (ie check that the new python being used has the clang-dependency PG added).

The suggestion I made to use cmake-bootstrap (which has no deps) to build the clangs would simplify this considerably, at least up until whichever clang can no longer be built with the the cmake version in cmake-bootstrap.

Version 0, edited 3 years ago by kencu (Ken) (next)

comment:8 in reply to:  6 Changed 3 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.