tcbrindle / flux

A C++20 library for sequence-orientated programming
https://tristanbrindle.com/flux/
Boost Software License 1.0
484 stars 29 forks source link

Update to macos-14 runner image #169

Closed tcbrindle closed 8 months ago

tcbrindle commented 8 months ago

Let's see if (a) it works, and (b) it speeds up our Mac CI

https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/

codecov[bot] commented 8 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (6610792) 98.06% compared to head (e004d8d) 98.06%. Report is 1 commits behind head on main.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #169 +/- ## ======================================= Coverage 98.06% 98.06% ======================================= Files 69 69 Lines 2424 2424 ======================================= Hits 2377 2377 Misses 47 47 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

tcbrindle commented 8 months ago

Unfortunately it looks like there's a problem with linking executables built with GCC 13:

[4/279] Linking CXX executable example/example-merge-intervals
FAILED: example/example-merge-intervals 
: && /opt/homebrew/bin/g++-13 -g -arch arm64 -isysroot /Applications/Xcode_15.0.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names  example/CMakeFiles/example-merge-intervals.dir/merge_intervals.cpp.o -o example/example-merge-intervals   && :
0  0x104a6f648  __assert_rtn + 72
1  0x1049a3fac  ld::AtomPlacement::findAtom(unsigned char, unsigned long long, ld::AtomPlacement::AtomLoc const*&, long long&) const + 1204
2  0x1049b9924  ld::InputFiles::SliceParser::parseObjectFile(mach_o::Header const*) const + 15164
3  0x1049c6e30  ld::InputFiles::parseAllFiles(void (ld::AtomFile const*) block_pointer)::$_7::operator()(unsigned long, ld::FileInfo const&) const + 420
4  0x18124c950  _dispatch_client_callout2 + 20
5  0x1812611a4  _dispatch_apply_invoke_and_wait + 176
6  0x181260464  _dispatch_apply_with_attr_f + 1176
7  0x181260650  dispatch_apply + 96
8  0x104a413b8  ld::AtomFileConsolidator::parseFiles(bool) + 292
9  0x1049e2170  main + 9048
ld: Assertion failed: (resultIndex < sectData.atoms.size()), function findAtom, file Relocations.cpp, line 1336.
collect2: error: ld returned 1 exit status

I don't know if this is an Apple bug in their linker, a GCC bug in the compiler, or a Homebrew bug in the way they build GCC13 on Arm...

On the plus side, once this is fixed then it looks like the macos-14 image is very much faster than the Intel macos-latest image, plus it will be good to test on a different architecture as well.

tcbrindle commented 8 months ago

Filed https://github.com/actions/runner-images/issues/9273

tcbrindle commented 8 months ago

Let's leave this for now