-
Notifications
You must be signed in to change notification settings - Fork 420
macOS build action workarounds for newer Homebrew and Clang #74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
macOS build action workarounds for newer Homebrew and Clang #74
Conversation
…en building the compiler - One more than the available number or CPUs
…d features removed from Homebrew - Switching to 1.66.0 because 1.65.0 suddenly fails to build due to what seems like an actual bug in the C code (it worked earlier in the same environment though?).
ebb6a00 to
f57c4ca
Compare
|
What is this? This is horrible! ;) |
|
It's basically what the original Homebrew formula was doing plus some patches because those old Boost versions had a small bug related to build flags that now prevents them from compiling with newer Clang. Yeah, it's pretty horrible. The whole situation with older versions of Boost in Homebrew is hopeless but I can understand them not wanting to support older versions due to limited manpower.
They only support the latest version of Boost. It used to be possible to select an older version in the past but they stopped tagging them after 1.60. It was still possible to download this formula from an older commit and that's what I've been doing but in the current Homebrew even that does not work. I almost got it to work with an older commit by creating a local tap but I could not get over the last problem and finally I decided to stop doing shell acrobatics with Homebrew and just build it from source myself.
I think this also builds latest Boost. It can get away with it because it only needs to work with modern Solidity versions. I could have done that too for the newer builds but for the older ones I would still I need older Boost. |
|
I'm a bit lost. Can you explain what this action does in general? |
|
Sure. Here's a general outline, with steps modified in this PR described in more detail:
Initially I thought this action would be a one-off but now I see that it could be more useful in the future (e.g. for the ARM builds). Do you think it would be worthwhile to split it into individual Bash scripts and put them into |
|
Ok, thanks for the explanation! Yes, I think we should try to keep the CI config files small in general and put everything that does not really depend on the CI logic in scripts (unless it is just 2-3 commands of course). |
Related to argotorg/solidity#10183. Replaces #73.
Just a bunch of workarounds to be able to still use the action.
The old way of installing boost no longer works because homebrew has removed the option to install from a local script. You can now kinda do this by creating a tap and you can kinda create a local one (even though Homebrew pushes you hard towards publishing it on github) but with so many workarounds needed, it was actually easier to just build from source.
Also, unfortunately newer Clang also requires patching Boost build system to be able to build it.