Opened 2 months ago

Closed 5 weeks ago

#70910 closed defect (fixed)

curl +ares: Dependency cycle: c-ares -> cmake -> curl

Reported by: ShadSterling (Shad Sterling) Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.10.1
Keywords: Cc: tobypeterson
Port: curl, c-ares

Description

2018 Intel macbook just upgraded to Sequoia, attempting to migrate ports.

After port migrate (and port restore --last) failed on 38 ports I'm trying to manually migrate them.

I reinstalled several of the failed ports given in the migration/restore output before learning that port snapshot --all --diff would show the original variants; now I'm trying to re-re-install those ports with the original variants.

When re-re-installing curl it's getting confused about the variants and not giving a log file for more details

I'm running port clean curl c-ares; port install curl +ares+brotli+gsasl+http2+idn+psl+sftp_scp+ssl+universal+zstd

And getting

--->  Cleaning curl
--->  Cleaning c-ares
Error: Requested variants "+brotli+http2+idn+psl+ssl+universal+zstd" do not match those the build was started with: "+ares+brotli+gsasl+http2+idn+psl+sftp_scp+ssl+universal+zstd".
Error: Please use the same variants again, or run 'port clean curl' first to remove the existing partially completed build.
Error: Unable to execute port curl: upgrade c-ares failed

Change History (5)

comment:1 in reply to:  description Changed 2 months ago by ryandesign (Ryan Carsten Schmidt)

Replying to ShadSterling:

I'm running port clean curl c-ares; port install curl +ares+brotli+gsasl+http2+idn+psl+sftp_scp+ssl+universal+zstd

Normally you would use sudo before both of these commands. Are you using sudo and just forgot to mention it? Or are you using a root shell? Or is your MacPorts installed without root privileges?

And getting

--->  Cleaning curl
--->  Cleaning c-ares
Error: Requested variants "+brotli+http2+idn+psl+ssl+universal+zstd" do not match those the build was started with: "+ares+brotli+gsasl+http2+idn+psl+sftp_scp+ssl+universal+zstd".
Error: Please use the same variants again, or run 'port clean curl' first to remove the existing partially completed build.
Error: Unable to execute port curl: upgrade c-ares failed

I can't reproduce this problem on macOS 12.

Weird that it's complaining about curl's variants but then claims it's c-ares that failed to upgrade. Is c-ares already installed? If so, is it installed with the universal variant? Is it outdated?

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

Cc: tobypeterson added
Port: curl c-ares added
Summary: port install not using variants given on command linecurl +ares: Dependency cycle: c-ares -> cmake -> curl

Ah: you have found a dependency cycle. c-ares depends on cmake which depends on curl. So to avoid this, you should first install curl without the +ares variant. Then later you can reinstall it with the +ares variant.

We do have a cmake-bootstrap port that has no dependencies that can be used to break dependency cycles in situations where we only need a basic cmake. For example, we use it for the brotli port, since curl depends on brotli when using the +brotli variant. We should probably switch the c-ares port to using cmake-bootstrap as well.

comment:3 Changed 2 months ago by ryandesign (Ryan Carsten Schmidt)

Component: baseports

comment:4 Changed 8 weeks ago by kencu (Ken)

Keywords: sequoia removed

comment:5 Changed 5 weeks ago by ryandesign (Ryan Carsten Schmidt)

Owner: set to ryandesign
Resolution: fixed
Status: newclosed

In 8895908bd1b304d701ec866f68a2bf82564c1430/macports-ports (master):

c-ares: Use cmake-bootstrap instead of cmake

Resolves dependency cycle when curl is installed with +ares variant.

Closes: #70910

Note: See TracTickets for help on using tickets.