[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