#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 follow-up: 2 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
comment:2 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 follow-up: 7 Changed 3 years ago by jmroot (Joshua Root)
comment:4 follow-up: 5 Changed 3 years ago by jmroot (Joshua Root)
Owner: | set to jmroot |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:5 Changed 3 years ago by barracuda156
Replying to jmroot:
In 7086fed1ff95aa2a54ccddd566419dc5d82edd23/macports-ports (master):
Thank you, issue indeed solved.
comment:6 follow-up: 8 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 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
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.
comment:8 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 thelibc++
tolibstdc++
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.
Can you figure out what the specific dependency cycle is?