The release of macOS Mojave is imminent and I want to make sure we do the right 
thing for the first release of MacPorts on Mojave. Let me know if you have any 
thoughts about the below.

Ideally I would like to keep the ability to build 32-bit ports in MacPorts on 
Mojave, mainly because I don't want my wine ports to stop working. The checks 
that currently set universal_archs to only x86_64 on 10.14 would be bumped to 
10.15.

The 10.13 (or earlier) SDK would have to be used when building 32-bit. I have a 
port for installing SDKs which I will finish up and submit as a PR. Here is the 
preliminary port:

https://github.com/ryandesign/macports-ports/blob/MacOSX.sdk/devel/MacOSX.sdk/Portfile

I would then like to modify base so that if configure.sdk_version is set to a 
version that is not provided by Xcode or the command line tools, it will use 
one provided by a subport of the MacOSX.sdk port instead of generating an error 
as it currently does. And also, if we are building for 32-bit on Mojave, 
default to the 10.13 SDK. Here is a preliminary version of those changes:

https://github.com/ryandesign/macports-base/commits/MacOSX.sdk

This should allow those few 32-bit-only ports, and wine which requires a 
universal build, to continue to be usable on Mojave. But I have not tested this 
on Mojave yet.

This should also allow us to fix build failures of a variety of ports on older 
systems that need newer SDKs, such as textmate2. 

This will give us the year until 10.15 is released to figure out the solution 
to disabling the universal variant when it won't work 
(https://trac.macports.org/ticket/57133).

Either now for 10.14 if the above is unworkable, or at the latest for 10.15, we 
still have the problem that upgrading users will have macports.conf files that 
say "universal_archs x86_64 i386" but new installations will say 
"universal_archs x86_64". Most of the settings that we write into macports.conf 
are commented out so that defaults take effect, but for some reason 
universal_archs is one of the few settings where we don't comment it out. If we 
do nothing in base to handle this, we'll have to write a ProblemHotlist entry 
and probably constantly guide users through making this change.

There is also the problem that the --with-universal-archs MacPorts configure 
flag affects not only the universal_archs macports.conf setting but also the 
archs used to build the darwintrace part of MacPorts base. On Mojave I think we 
want to be able to build MacPorts base x86_64 only, but have universal_archs in 
macports.conf be x86_64 i386. Building base universal x86_64 i386 is possible 
on Mojave using the 10.13 SDK which we could manage when building the binary 
installers, but it's not going to work for users when they run selfupdate and 
the 10.13 SDK isn't there.

Reply via email to