Building Clang 8/9 in El Capitan

Ryan Schmidt ryandesign at macports.org
Sat Feb 13 06:56:53 UTC 2021



On Feb 12, 2021, at 10:11, Christian Calderon wrote:

> Thanks for the reply. I think I've miscommunicated something here so I'm going to try explaining my goals better. Ultimately, I'm trying to install PyCUDA. PyCUDA's build process wants to know which compilers are used to build some of its dependencies. One of the dependencies is Numpy and another is Boost.
> 
> I initially had my MacPorts install configured to build ports only if needed, but I realized I didn't know which compiler was used to build the ports I was downloading.

That's true. MacPorts is not designed to provide you with this information. Nobody's ever asked for it before and I'm not sure I see why you would need to know.


> So I figured that If I configured MacPorts to always build every port, then I would be able to easily see which compiler was used. I ran into a problem with Numpy though. Numpy depends on OpenBLAS, and OpenBLAS requires gcc to build. By default OpenBLAS will try to use gcc10 to build, and gcc10 wants to be built with clang-9.0. OpenBLAS has variants for using other versions of gcc to build, one for gcc9, gcc8, gcc7, gcc6, etc. The problem I am having is that it seems each of the gcc versions that OpenBLAS can be built with ultimately have a runtime dependency on libgcc10, which wants to be built with clang-9.0.
> 
> Building clang-9.0 fails because the clang supplied by Xcode 7.3 doesn't support thread local storage.

Sounds like the line `compiler.thread_local_storage yes` should be added to the clang-9.0 portfile so that it will automatically use a MacPorts clang instead of an incompatible Xcode clang.


> I could fix this by installing Xcode 8.2, which is the last version that runs on El Capitan. Xcode 8.2 comes with a newer version of clang which does support thread local storage, and that should be able to build clang-9.0.
> 
> My issue with this solution is that updating Xcode from 7.3 to 8.2 will delete the older 10.11 SDK and replace it with the 10.12 SDK. I use other ports which will not build if the correct SDK is not found, the first one that comes to mind is mit-scheme. Many times in the past I've had issues building it after upgrading Xcode for this reason.
> 
> The only thing I can think of to fix this mess is to save a copy of the 10.11 SDK and then put it back after upgrading Xcode. Is that correct?

Copying the SDK is an option.


On Fri, Feb 12, 2021 at 7:20 AM Ken Cunningham wrote:

> Both clang-8.0 and clang-9.0 having been building properly for us on the buildbots and (when I last did it) locally for me, on ElCap.
> 
> See <https://ports.macports.org/port/clang-9.0/summary> and the one for clang-8.0.

Yes but this is evidently because we are using Xcode 8.2.1 on the El Capitan worker, while Christian is and wants to continue using Xcode 7.x.


> If you have a build error with clang 8 or 9, open a ticket and include your log, and we'll what might be wrong.

Indeed.



More information about the macports-users mailing list