Opened 5 years ago

Closed 5 years ago

Last modified 4 years ago

#58579 closed defect (fixed)

mysql8 @8.0.16: XCode 9.0 or newer is required!

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: herbygillot (Herby Gillot)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: chrstphrchvz (Christopher Chavez)
Port: mysql8

Description

On systems with Xcode 8 or earlier, building mysql8 fails:

CMake Error at cmake/os/Darwin.cmake:36 (MESSAGE):
  XCode 9.0 or newer is required!
Call Stack (most recent call first):
  CMakeLists.txt:385 (INCLUDE)

Usually, Xcode is not actually required. Sure, a particularly new compiler may be required, or a particular SDK, but Xcode itself is typically not involved. So I suspect this check in the cmake files to be inaccurate. Could it be made to work by removing that check and just requiring a newer compiler, e.g. using the compiler_blacklist_versions portgroup? If a new SDK is required, then that will have to wait until my MacOSX.sdk port is ready.

Change History (7)

comment:1 Changed 5 years ago by herbygillot (Herby Gillot)

I don't have access to older versions of XCode/Clang, but here is an attempt:

https://github.com/macports/macports-ports/pull/4568

comment:2 Changed 5 years ago by kencu (Ken)

mysql8 built fine on 10.6.8 with clang-5.0, so it appears this worked.

comment:3 Changed 5 years ago by kencu (Ken)

Resolution: fixed
Status: assignedclosed

fixed by the above PR.

comment:4 Changed 4 years ago by chrstphrchvz (Christopher Chavez)

As a note, even if the Xcode 9 requirement is arbitrary, it is mentioned in upstream documentation: https://dev.mysql.com/doc/refman/8.0/en/source-installation-prerequisites.html

comment:5 Changed 4 years ago by chrstphrchvz (Christopher Chavez)

Cc: chrstphrchvz added

comment:6 Changed 4 years ago by kencu (Ken)

Upstream seems to rarely understand the nuances between LLVM-clang compiler capabilities and Xcode versions.

After all -- why require a certain Xcode version? clang capability? We cover that easily with newer compilers. Certain system feature? LegacySupport supplies almost anything we need. Specific MacOSX SDK feature -- this might be an issue -- but often we can use a newer SDK, or work around it with a bit of minor #ifdefing.

There are really only very rare reasons a certain Xcode version might be needed -- when it exists, it seems to usually be Pull Request that is accepted, submitted by someone who often doesn't understand how to work around these issues like we might.

Last edited 4 years ago by kencu (Ken) (previous) (diff)

comment:7 Changed 4 years ago by chrstphrchvz (Christopher Chavez)

The arbitrary compiler requirement could simply be upstream deciding to not invest too much effort in supporting every potentially compatible compiler. As it is, MySQL will cut off support early for platforms deemed sufficiently unpopular (I don't know if they accept patches that improve compatibility for unsupported platforms, but they definitely won't if using one is mentioned: https://bugs.mysql.com/bug.php?id=99799). MySQL also recommends using their binary installer, so installing from source may also already be unpopular enough that they'll only bother with making sure it builds with the most popular/readily available compiler for each platform (Xcode in macOS' case).

Note: See TracTickets for help on using tickets.