Skip to content

Add support for Xcode 8 & 9 via High Sierra

Adrien Kohlbecker requested to merge ak/high-sierra into master

What does this MR do?

Adds support for two missing major releases of Xcode, which only run on High Sierra and earlier. Moves back Xcode 7 also to High Sierra to be consistent with the history (old xcode version on old macos versions).

Because homebrew dropped support for High Sierra at the end of last year, we can't make use of the homebrew ansible-galaxy library to install packages anymore. This is because we need to hook into the homebrew installation process to reset the core tap to an earlier commit. Dropping the library also greatly simplifies the homebrew installation, since the library does a lot of things that we don't need (eg. support for uninstalling existing packages and installing the Xcode CLI tools, the latter we actually used to do twice in the pipeline).

The alternative to rewinding the homebrew-core checkout to get access to old bottles is to build all the formulae from source, which takes a very long time (gcc alone takes 2+ hours). Given that High Sierra is already an EOL'd OS, and we provide it as best effort so users can build legacy software, I think it is fine to ship old versions of packages in the image.

My goal here is to build a production version of these images, then stop updating them immediately after launch. This gives our users the ability to build legacy software on a best effort basis, and we don't have an additional maintenance burden over time.

I'm also adding a check with brew test that all the packages work, because I had issues troubleshooting some package issue !57 (comment 509993801)

Why was this MR needed?

What's the best way to test this MR?

What are the relevant issue numbers?

Closes #13 (closed)

Edited by Adrien Kohlbecker

Merge request reports