[MacPorts] #74328: mysql8 at 8.4.11: Error while upgrading mysql8 - geographic_point_circle candidate constructor not viable

MacPorts noreply at macports.org
Sat Aug 15 16:32:14 UTC 2026


#74328: mysql8 at 8.4.11: Error while upgrading mysql8 - geographic_point_circle
candidate constructor not viable
---------------------+-------------------------
  Reporter:  Quibi   |      Owner:  herbygillot
      Type:  defect  |     Status:  closed
  Priority:  Normal  |  Milestone:
 Component:  ports   |    Version:  2.12.5
Resolution:  fixed   |   Keywords:
      Port:  mysql   |
---------------------+-------------------------
Changes (by herbygillot):

 * status:  new => closed
 * owner:  (none) => herbygillot
 * resolution:   => fixed


Comment:

 In [changeset:"a8fbe9bd401ab82fe915dcabc27e5b488c087f6b/macports-ports"
 a8fbe9bd401ab82fe915dcabc27e5b488c087f6b/macports-ports] (master):
 {{{
 #!ConfigurableCommitTicketReference repository="macports-ports"
 revision="a8fbe9bd401ab82fe915dcabc27e5b488c087f6b"
 mysql8, mysql9, mysql-innovation: fix build against installed boost

 MySQL bundles the boost it needs -- 1.84 for the 8.4 series, 1.87 for the
 other two -- and requires that exact copy, but cmake exposes it only as
 INTERFACE include directories on the extra::boost target. Those land after
 the directories a target inherits from the top-level scope, so any
 WITH_*=system dependency whose headers sit directly in ${prefix}/include
 puts the MacPorts prefix ahead of the bundled tree in the include search
 order. With the boost port installed, ${prefix}/include/boost shadows the
 bundled headers.

 For mysql8 that breaks the build outright: sql/gis/buffer.cc uses the
 geographic_point_circle(Spheroid const&, std::size_t) constructor, which
 boost gained in 1.84, while the boost port installs 1.76 by default.

 Upstream guards against precisely this for Homebrew with a FATAL_ERROR,
 but patch-CMakeLists-no-homebrew.diff disables MySQL's Homebrew handling
 wholesale and nothing covered the MacPorts prefix in its place. Extend
 that patch to prepend the bundled boost at directory scope, placed after
 every MYSQL_CHECK_* and before the first ADD_SUBDIRECTORY so it wins over
 anything the system dependencies contribute.

 mysql8 additionally ships a patches directory holding five boost/geometry
 overrides, which has to be searched before the bundled tree.
 INCLUDE_DIRECTORIES(BEFORE ...) prepends one directory at a time, so the
 two are added by separate calls; passing both to a single call emits them
 reversed and lets the unpatched originals win.

 Verified by building all three with boost @1.76 active: across 6832
 translation units, none included a header from ${prefix}/include/boost,
 and the 1812 boost headers reaching sql/gis/buffer.cc in mysql8 all came
 from the bundled tree and its patches directory. Tested on arm64 macOS 26
 only; the include search order does not vary by compiler or architecture.

 No revision bump. The only installations whose output changes are those
 that already built successfully against a shadowing boost of 1.84 or
 newer, and a bump would force a rebuild of three large ports for everyone
 else.

 Only mysql8 has a report; the mysql9 and mysql-innovation changes are
 preventative.

 Assisted-by: Claude:claude-opus-5
 Fixes: https://trac.macports.org/ticket/74328
 }}}

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


More information about the macports-tickets mailing list