Opened 3 years ago

Closed 3 years ago

Last modified 6 months ago

#65063 closed defect (fixed)

bootstrapping Macports for curl now requires gcc7 and cmake (!) due to sneaked dependencies on brotli and nghttp2

Reported by: barracuda156 Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.7.2
Keywords: leopard, tiger, snowleopard Cc:
Port: curl

Description

Is it possible to make these options a matter of choice rather than imposed ones? At least for older systems.

Dependency on nghttp2 also introduced another problem on Leopard: Macports complains that nghttp2 cannot be installed as universal:

36-61:~ svacchanda$ sudo port -v -n upgrade curl +universal
--->  Computing dependencies for curl.
Error: Cannot install curl for the archs 'ppc ppc64' because
Error: its dependency nghttp2 cannot build for the required archs.
Error: Follow https://guide.macports.org/#project.tickets if you believe there
is a bug.

(It is probably possible, however again, now a simple task requires manual fixes.)

Change History (6)

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

The brotli port doesn't appear to have any special requirements so adding that dependency probably didn't cause this.

nghttp2 requires C++14 which will bring in new compiler requirements on older systems. Moving http/2 support back to a variant would essentially undo #65056 in which it had been requested to make http/2 support on by default. We can certainly discuss whether reverting that part of the change is the right thing to do.

Your complaint about nghttp2 being unbuildable as universal on PowerPC needs to be filed against nghttp2, or conceivably against the gcc ports that lack the ability to build things universal.

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

Replying to ryandesign:

The brotli port doesn't appear to have any special requirements so adding that dependency probably didn't cause this.

nghttp2 requires C++14 which will bring in new compiler requirements on older systems. Moving http/2 support back to a variant would essentially undo #65056 in which it had been requested to make http/2 support on by default. We can certainly discuss whether reverting that part of the change is the right thing to do.

brotli requires cmake, cmake requires gcc version that is absent on darwin8–darwin10.

macmini:~ svacchanda$ port deps brotli
Full Name: brotli @1.0.9_2
Build Dependencies:   cmake

Would you consider making brotli and nghttp2 default dependencies for >10.6 case? This solution would not undo anything that has been requested for current systems, but at the same time would fix the problem for 10.6 and earlier.

Whether it is done via moving brotli and nghttp2 back to variants, but making these variants default for darwin > 10, or via config.args-replace for the same, is perhaps irrelevant.

  1. S. To give a context, we all know that system curl is defunct in =< 10.6, and mpstats does not work, unless Macports is built against its own curl, which requires a bootstrap of Macports in alternative prefix. It is already a time-consuming and painful process on older machines, and requirung to build gcc7 and cmake twice just to make mpstats work is insane. Already very few people bother to take these steps to provide Macports with statistics, and current change to curl port makes it prohibitively costly.

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

Resolution: fixed
Status: assignedclosed

In b944040204a0f97164809ada1205c1071e7d8436/macports-ports (master):

curl: Move HTTP/2 support back to +http2 variant

Revert the preceding effort to enable HTTP/2 unconditionally. While
HTTP/2 is nice, it uses nghttp2 which requires C++14 which requires
newer compilers on older systems which can cause a bootstrapping
headache. So now enable the variant by default only on systems that
don't need additional compilers to build it.

See: #65056
Closes: #65063

comment:4 in reply to:  3 Changed 3 years ago by barracuda156

Thank you!

brotli still requires cmake-bootstrap, but we can live with that.

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

In 65784cb779b059baae47a00f107e012be432a632/macports-ports (master):

Revert "curl: Move HTTP/2 support back to +http2 variant"

This reverts commit b944040204a0f97164809ada1205c1071e7d8436.

Now that the nghttp2 port no longer imposes a C++ version requirement,
http2 support can be enabled unconditionally.

See: #65056
See: #65063
See: #70048

comment:6 Changed 6 months ago by kencu (Ken)

to get past the somewhat onerous deps to build and install curl for the /opt/bootstrap installation as time has gone by, I came up with this "minimalcurl" port that I have been using the past few years.

https://github.com/kencu/macports-ports/blob/curl-minimal/net/minimalcurl/Portfile

It has minimal deps, as few as I can manage anyway, and last I checked, the only system that required a compiler installation into /opt/bootstrap was Tiger.

Note: See TracTickets for help on using tickets.