Skip to content

CI is broken on current GitHub runner images and JUCE develop #407

Description

@drowaudio

Both CI workflows have been red since the runner images moved on. Master last went fully green on 2025-08-22 (Merge pull request #263); every run since fails before reaching the test stage on most platforms. Noticed while working on #405, where 17 of 36 checks fail for reasons unrelated to the branch.

There are two independent groups.


1. Build workflow (.github/workflows/build.yaml) - pinned JUCE 8.0.6 vs current runner images

These are toolchain/SDK problems, not JUCE API drift. The JUCE submodule is pinned at 19edd53 (8.0.6, Feb 2025).

a. _LIBCPP_ENABLE_ASSERTIONS was removed from libc++

/Applications/Xcode_26.6.app/.../MacOSX26.5.sdk/usr/include/c++/v1/__configuration/hardening.h:25:4:
error: "_LIBCPP_ENABLE_ASSERTIONS has been removed, please use _LIBCPP_HARDENING_MODE=<mode> instead (see docs)"

JUCE's juce_recommended_config_flags still defines _LIBCPP_ENABLE_ASSERTIONS=1 in Debug on Apple. Fails: test (Debug, macOS, TestRunner), test (Debug, macOS, Benchmarks). Also reproduces locally on macOS 26.5; the local workaround is configuring with -DCMAKE_CXX_FLAGS_DEBUG="-g -U_LIBCPP_ENABLE_ASSERTIONS", but the real fix is a JUCE bump (JUCE now sets _LIBCPP_HARDENING_MODE) or dropping the flag in our CMake.

b. -Werror on pre-existing implicit conversions (Release only)

15 unique -Wimplicit-int-float-conversion errors, all in our own headers:

  • modules/tracktion_core/utilities/tracktion_Time.h:470:39 - long long to double
  • modules/tracktion_graph/utilities/tracktion_PerformanceMeasurement.h:303:28 and 305:31 - uint64_t to double
  • modules/tracktion_engine/plugins/external/tracktion_VSTXML.h:199:37, 200:47 - int to float
  • modules/tracktion_engine/utilities/tracktion_BackgroundJobs.h:200:48 - int to float
  • modules/tracktion_engine/utilities/tracktion_Ditherer.h:24:28 - int to float, "changes value from 2147483647 to 2147483648"

Newer clang promoted these from warnings to diagnostics we now trip over, and examples/TestRunner/CMakeLists.txt compiles Release with -Werror. Fails: all test (Release, macOS, *), macOS_analyse, macOS_asan. The Ditherer.h one looks worth a genuine look rather than a blanket cast - it is an actual value change.

c. MSVC C4458 in JUCE promoted to an error

modules\juce\...\format_types\juce_VST3PluginFormat.cpp(744,55): warning C4458: declaration of `iid` hides class member
...(780,51): same
error C2220: the following warning is treated as an error

Fails: all test (Release, windows, *). Needs a JUCE bump or /wd4458 for the JUCE sources.


2. juce_compatability workflow (.github/workflows/juce_compat.yaml) - real API drift against JUCE develop

This workflow builds with -DJUCE_CPM_DEVELOP=1, so it pulls JUCE develop tip. It is doing its job: these are genuine incompatibilities to fix in our code.

a. Stale Xcode pin - infrastructure

xcode-select: error: invalid developer directory `/Applications/Xcode_15.3.app`

juce_compat.yaml:39 pins Xcode_15.3.app, which no longer exists on macos-26-arm64. build (macOS) dies after 5 seconds. Either drop the pin or move it to a version the image actually ships.

b. AudioFormat::createWriterFor signature changed

modules/tracktion_engine/audio_files/formats/tracktion_FloatAudioFileFormat.h:40:30:
error: `FloatAudioFormat::createWriterFor(...)` marked `override`, but does not override

Knock-on: FloatAudioFormat becomes abstract, so tracktion_AudioFormatManager.cpp:64 and :84 fail with cannot instantiate abstract class.

c. juce::DrawableRectangle is no longer a Component

In examples/common/Utilities.h:

  • :314, :317, :320 - no matching addAndMakeVisible / addChildComponent for juce::DrawableRectangle&
  • :446, :447, :459, :466 - DrawableRectangle has no member setVisible

d. JUCE_USE_CURL / JUCE_WEB_BROWSER redefined [-Werror]

<command-line>: error: "JUCE_USE_CURL" redefined
<command-line>: error: "JUCE_WEB_BROWSER" redefined

The examples set these both via target_compile_definitions and via the JUCE module config, and gcc treats the redefinition as an error.


Suggested order

  1. Fix the Xcode pin in juce_compat.yaml (one line, unblocks build (macOS) reaching a real result).
  2. Bump the JUCE submodule - likely clears (1a) and (1c) together.
  3. Fix the -Werror conversions in our headers, giving Ditherer.h:24 a proper look.
  4. Fix the JUCE develop API drift in FloatAudioFileFormat.h and examples/common/Utilities.h.

Happy to pick any of these up.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-dispatchedA local Claude session has been dispatched for this issueclaude-localOpt this PR in for the local Claude PR-concierge session

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions