Re: [MacPorts] #73086: Go is broken on 10.13–10.15

MacPorts noreply at macports.org
Sun Aug 2 17:01:48 UTC 2026


#73086: Go is broken on 10.13–10.15
---------------------------+------------------------------------------
  Reporter:  barracuda156  |      Owner:  herbygillot
      Type:  defect        |     Status:  assigned
  Priority:  High          |  Milestone:
 Component:  ports         |    Version:  2.11.5
Resolution:                |   Keywords:  catalina, mojave, highsierra
      Port:  go            |
---------------------------+------------------------------------------

Comment (by herbygillot):

 In [changeset:"d247f8b8c653826d33501428e31f085e7e5a3700/macports-ports"
 d247f8b8c653826d33501428e31f085e7e5a3700/macports-ports] (master):
 {{{
 #!ConfigurableCommitTicketReference repository="macports-ports"
 revision="d247f8b8c653826d33501428e31f085e7e5a3700"
 go_toolchain, go: separate where a release loads from where it is offered

 go_toolchain.min_darwin held upstream's supported-macOS floor per series,
 which is a support statement rather than a limit dyld enforces. It now
 holds
 the load-time floor, and 1.21 through 1.24 move to darwin 17.

 What actually stops a Go binary is an unresolved symbol.
 Security.framework
 is reached through //go:cgo_import_dynamic even with CGO disabled, and the
 imports are non-lazy, so dyld must bind them all at load.
 src/crypto/x509/internal/macos/security.go declares the same twelve
 symbols
 in 1.20, 1.21, 1.22, 1.23 and 1.24; 1.25 replaces four of them with
 SecTrustCopyCertificateChain, macOS 12 and later only. That substitution
 is
 the whole cliff and it falls between 1.24 and 1.25 -- exactly where
 #73086's
 bootstrap aborts. LC_BUILD_VERSION is not the limit either: 1.24.8
 declares
 minos 11.0 and ran on 10.13 through 11 for the nine months MacPorts
 shipped
 it, since macOS dyld loads a binary whose minos exceeds the running
 system.

 That reasoning says those releases load on 10.13. It does not say they
 behave, and the buildbots have never built them below their old floors. So
 min_darwin now drives only where a toolchain may be installed, and a
 second
 table, go_toolchain.min_default, decides where a series may become the
 default `go`. It holds 1.21 through 1.24 exactly where they were.

 `go` is therefore unchanged on every system: 1.17 below 10.13, 1.20 on
 10.13
 and 10.14, 1.22 on 10.15, 1.24 on 11, 1.26 from 12. What changes is that
 go-1.22, go-1.23 and go-1.24 become installable on 10.13 through 10.15, so
 the buildbots build them there for the first time and the claim gets
 tested
 before anyone is moved onto it.

 Relaxing it later is deleting a min_default entry. No revisions change:
 widening a toolchain's platforms does not alter what was built where it
 already applied, and no port's version moves.

 See: https://trac.macports.org/ticket/73086
 }}}

-- 
Ticket URL: <https://trac.macports.org/ticket/73086#comment:6>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list