From 008fa4b49e0c2e319e418ad6305c57e68a1ef22b Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 14:45:09 -0700 Subject: [PATCH 01/17] Update the Mac and Xcode versions on CI --- .github/workflows/android.yml | 4 ++-- .github/workflows/cpp-packaging.yml | 24 ++++++++++----------- .github/workflows/desktop.yml | 6 +++--- .github/workflows/integration_tests.yml | 26 +++++++++++------------ .github/workflows/ios.yml | 2 +- .github/workflows/update-dependencies.yml | 2 +- release_build_files/readme.md | 7 +++++- scripts/gha/install_prereqs_desktop.py | 9 ++++++++ scripts/gha/print_matrix_configuration.py | 20 ++++++++--------- 9 files changed, 57 insertions(+), 43 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 551c179b6f..a0291b909c 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -13,7 +13,7 @@ on: env: CCACHE_DIR: ${{ github.workspace }}/ccache_dir GITHUB_TOKEN: ${{ github.token }} - xcodeVersion: "16.2" # Only affects Mac runners, and only for prerequisites. + xcodeVersion: "26.2" # Only affects Mac runners, and only for prerequisites. concurrency: group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }} @@ -57,7 +57,7 @@ jobs: - os: ubuntu-22.04 architecture: arm64 # Do not attempt to use x64 on Mac. - - os: macos-14 + - os: macos-26 architecture: x64 steps: - uses: lukka/get-cmake@latest diff --git a/.github/workflows/cpp-packaging.yml b/.github/workflows/cpp-packaging.yml index 3016375392..17cb9fc10e 100644 --- a/.github/workflows/cpp-packaging.yml +++ b/.github/workflows/cpp-packaging.yml @@ -32,9 +32,9 @@ env: demumbleVer: "df938e45c2b0e064fb5323d88b692d03b451d271" # Use SHA256 for hashing files. hashCommand: "sha256sum" - # Xcode version 16.2 is the version we build the SDK with. + # Xcode version 26.2 is the version we build the SDK with. # Our MacOS runners will use the version in /Applications/Xcode_${xcodeVersion}.app - xcodeVersion: "16.2" + xcodeVersion: "26.2" # LLVM version with ARM MachO support has no version number yet. llvmVer: "5f187f0afaad33013ba03454c4749d99b1362534" GITHUB_TOKEN: ${{ github.token }} @@ -82,13 +82,13 @@ jobs: if: ${{ github.event.inputs.downloadPublicVersion == '' && github.event.inputs.downloadPreviousRun == '' }} strategy: matrix: - os: [ubuntu-22.04, macos-14] + os: [ubuntu-22.04, macos-26] include: - os: ubuntu-22.04 tools_platform: linux # Binutils 2.35.1 released Sep 19, 2020 binutils_version: "2.35.1" - - os: macos-14 + - os: macos-26 tools_platform: darwin # Binutils 2.35.1 released Sep 19, 2020 binutils_version: "2.35.1" @@ -191,7 +191,7 @@ jobs: build_and_package_ios_tvos: name: build-and-package-ios-tvos - runs-on: macos-14 + runs-on: macos-26 if: ${{ github.event.inputs.downloadPublicVersion == '' && github.event.inputs.downloadPreviousRun == '' }} steps: - uses: lukka/get-cmake@latest @@ -320,7 +320,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-22.04, macos-14] + os: [windows-latest, ubuntu-22.04, macos-26] build_type: ["Release", "Debug"] architecture: ["x64", "x86", "arm64"] msvc_runtime: ["static", "dynamic"] @@ -338,7 +338,7 @@ jobs: vcpkg_triplet_suffix: "linux" additional_build_flags: "" sdk_platform: "linux" - - os: macos-14 + - os: macos-26 vcpkg_triplet_suffix: "osx" additional_build_flags: "--target_format libraries" sdk_platform: "darwin" @@ -346,13 +346,13 @@ jobs: exclude: - os: windows-latest linux_abi: "c++11" - - os: macos-14 + - os: macos-26 architecture: "x86" - - os: macos-14 + - os: macos-26 msvc_runtime: "dynamic" - - os: macos-14 + - os: macos-26 linux_abi: "c++11" - - os: macos-14 + - os: macos-26 build_type: "Debug" - os: ubuntu-22.04 msvc_runtime: "dynamic" @@ -509,7 +509,7 @@ jobs: suffix: '-x64-Debug-dynamic' runs_on_platform: ubuntu-22.04 - sdk_platform: darwin - runs_on_platform: macos-14 + runs_on_platform: macos-26 exclude: - sdk_platform: windows suffix: '' diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index 06990f0a76..af2b273e02 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -72,12 +72,12 @@ jobs: # msvc_runtime excludes - os: ubuntu-22.04 msvc_runtime: "dynamic" - - os: macos-14 + - os: macos-26 msvc_runtime: "dynamic" # architecture excluees - - os: macos-14 + - os: macos-26 architecture: "x86" - - os: macos-14 + - os: macos-26 architecture: "x64" # Xcode excludes -- allow only one on osx and linux - os: ubuntu-22.04 diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 19f74f620d..1bef3824a0 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -21,7 +21,7 @@ on: required: true operating_systems: description: 'CSV of VMs to run on' - default: 'ubuntu-22.04,windows-latest,macos-14' + default: 'ubuntu-22.04,windows-latest,macos-26' required: true desktop_ssl_variants: description: 'CSV of desktop SSL variants to use' @@ -49,7 +49,7 @@ env: triggerLabelFull: "tests-requested: full" triggerLabelQuick: "tests-requested: quick" pythonVersion: '3.9' - xcodeVersion: '16.2' + xcodeVersion: '26.2' logArtifactRetentionDays: 90 binaryArtifactRetentionDays: 7 GITHUB_TOKEN: ${{ github.token }} @@ -213,7 +213,7 @@ jobs: # at 3am PST/4am PDT. Running firestore desktop integration test aginst tip-of-tree ios repo echo "::warning ::Running against Firestore tip-of-tree" matrix_platform="Desktop" - matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-14") + matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-26") else matrix_platform=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k platform -o "${GITHUB_EVENT_INPUTS_PLATFORMS}" --apis ${apis} ) matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "${GITHUB_EVENT_INPUTS_OPERATING_SYSTEMS}") @@ -283,7 +283,7 @@ jobs: - os: ubuntu-22.04 arch: arm64 # Do not attempt to use x86 on Mac. - - os: macos-14 + - os: macos-26 arch: x86 # Until we support building openssl from source, we can't use the # system's openssl when cross-compiling, except on Linux. Builds on Linux @@ -292,7 +292,7 @@ jobs: - os: windows-latest ssl_variant: openssl arch: x86 - - os: macos-14 + - os: macos-26 ssl_variant: openssl arch: x64 steps: @@ -605,7 +605,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-14] + os: [macos-26] steps: - uses: lukka/get-cmake@latest with: @@ -724,7 +724,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-14] + os: [macos-26] steps: - uses: lukka/get-cmake@latest with: @@ -853,7 +853,7 @@ jobs: - os: ubuntu-22.04 arch: arm64 # Do not attempt to use x86 on Mac. - - os: macos-14 + - os: macos-26 arch: x86 # Until we support building openssl from source, we can't use the # system's openssl when cross-compiling, except on Linux. Builds on Linux @@ -862,7 +862,7 @@ jobs: - os: windows-latest ssl_variant: openssl arch: x86 - - os: macos-14 + - os: macos-26 ssl_variant: openssl arch: x64 steps: @@ -1127,7 +1127,7 @@ jobs: test_ios: name: test-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }} needs: [check_and_prepare, build_ios] - runs-on: macos-14 + runs-on: macos-26 if: contains(needs.check_and_prepare.outputs.matrix_platform, 'iOS') && needs.check_and_prepare.outputs.apis != '' && !cancelled() strategy: fail-fast: false @@ -1137,7 +1137,7 @@ jobs: exclude: - ios_device: "ios_target" test_type: "uitest" - build_os: [macos-14] + build_os: [macos-26] steps: - uses: actions/checkout@v3 with: @@ -1317,13 +1317,13 @@ jobs: test_tvos: name: test-tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }} needs: [check_and_prepare, build_tvos] - runs-on: macos-14 + runs-on: macos-26 if: contains(needs.check_and_prepare.outputs.matrix_platform, 'tvOS') && needs.check_and_prepare.outputs.apis != '' && !cancelled() strategy: fail-fast: false matrix: tvos_device: ${{ fromJson(needs.check_and_prepare.outputs.tvos_device) }} - build_os: [macos-14] + build_os: [macos-26] steps: - uses: actions/checkout@v3 with: diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 0b24e536d2..a65c581a35 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -41,7 +41,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'macos-14' ] + os: [ 'macos-26' ] xcode_version: ${{ fromJson(needs.prepare_matrix.outputs.matrix_xcode_version) }} steps: - uses: lukka/get-cmake@latest diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 2f2ea7fc99..6cf3ce6dd1 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -27,7 +27,7 @@ env: jobs: update_dependencies: name: update-deps - runs-on: macos-14 + runs-on: macos-26 steps: - name: Get token for firebase-workflow-trigger uses: tibdex/github-app-token@v1 diff --git a/release_build_files/readme.md b/release_build_files/readme.md index 743834f9c7..c63c527a5e 100644 --- a/release_build_files/readme.md +++ b/release_build_files/readme.md @@ -408,7 +408,7 @@ Firebase Cloud Messaging (stub) | firebase_messaging.framework User Messaging Platform (stub) | libfirebase_ump.a | | libfirebase_app.a -The provided libraries have been tested using Xcode 16.2. When building C++ +The provided libraries have been tested using Xcode 26.2. When building C++ desktop apps on OS X, you will need to link the `gssapi_krb5` and `pthread` system libraries, as well as the `CoreFoundation`, `Foundation`, `GSS`, and `Security` OS X system frameworks (consult your compiler documentation for more @@ -613,6 +613,11 @@ workflow use only during the development of your app, not for publicly shipping code. ## Release Notes +### Upcoming +- Changes + - General (iOS, tvOS, Desktop): iOS, tvOS, and macOS SDKs are now built + using Xcode 26.2. + ### 13.7.0 - Changes - General (Android): Update to Firebase Android BoM version 34.13.0. diff --git a/scripts/gha/install_prereqs_desktop.py b/scripts/gha/install_prereqs_desktop.py index 65c01bc4f2..365e487666 100644 --- a/scripts/gha/install_prereqs_desktop.py +++ b/scripts/gha/install_prereqs_desktop.py @@ -83,6 +83,15 @@ def main(): # brew install protobuf utils.run_command(['brew', 'install', 'clang-format']) + # Install mono on linux/mac if its not installed already + if not utils.is_command_installed('mono'): + if utils.is_linux_os(): + # sudo apt install mono-complete + utils.run_command(['apt', 'install', '-y', 'mono-complete'], as_root=True) + elif utils.is_mac_os(): + # brew install mono + utils.run_command(['brew', 'install', 'mono']) + # On Linux, if gcc-10 isn't installed install it. Then make it the default. if utils.is_linux_os(): # Check if we have gcc 9 or gcc 10 as the default, if not, set gcc 10. diff --git a/scripts/gha/print_matrix_configuration.py b/scripts/gha/print_matrix_configuration.py index b968f103f9..ae9a4665fa 100644 --- a/scripts/gha/print_matrix_configuration.py +++ b/scripts/gha/print_matrix_configuration.py @@ -73,35 +73,35 @@ PARAMETERS = { "desktop": { "matrix": { - "os": ["ubuntu-22.04", "macos-14"], + "os": ["ubuntu-22.04", "macos-26"], "build_type": ["Release", "Debug"], "architecture": ["x64", "x86", "arm64"], "msvc_runtime": ["static","dynamic"], - "xcode_version": ["16.2"], + "xcode_version": ["26.2"], "python_version": ["3.9"], EXPANDED_KEY: { - "os": ["ubuntu-22.04", "macos-14", "windows-latest"], - "xcode_version": ["16.2"], + "os": ["ubuntu-22.04", "macos-26", "windows-latest"], + "xcode_version": ["26.2"], } } }, "android": { "matrix": { - "os": ["ubuntu-22.04", "macos-14", "windows-latest"], + "os": ["ubuntu-22.04", "macos-26", "windows-latest"], "architecture": ["x64", "arm64"], "python_version": ["3.9"], EXPANDED_KEY: { - "os": ["ubuntu-22.04", "macos-14", "windows-latest"] + "os": ["ubuntu-22.04", "macos-26", "windows-latest"] } } }, "integration_tests": { "matrix": { - "os": ["ubuntu-22.04", "macos-14", "windows-latest"], + "os": ["ubuntu-22.04", "macos-26", "windows-latest"], "platform": ["Desktop", "Android", "iOS", "tvOS"], "ssl_lib": ["openssl"], "android_device": ["android_target", "emulator_ftl_target"], @@ -113,7 +113,7 @@ "msvc_runtime": ["dynamic"], "cpp_compiler_windows": ["VisualStudio2019"], "cpp_compiler_linux": ["clang-11.0"], - "xcode_version": ["16.2"], # only the first one is used + "xcode_version": ["26.2"], # only the first one is used "ndk_version": ["r22b"], "platform_version": ["28"], "build_tools_version": ["28.0.3"], @@ -141,10 +141,10 @@ "ios": { "matrix": { - "xcode_version": ["16.2"], + "xcode_version": ["26.2"], EXPANDED_KEY: { - "xcode_version": ["16.2"] + "xcode_version": ["26.2"] } } }, From 9c35e43b184361f2dae4c7eee5b907e076724a55 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 15:21:22 -0700 Subject: [PATCH 02/17] Update zlib.cmake --- cmake/external/zlib.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/external/zlib.cmake b/cmake/external/zlib.cmake index 595d149871..b3ab61ebf1 100644 --- a/cmake/external/zlib.cmake +++ b/cmake/external/zlib.cmake @@ -22,9 +22,9 @@ ExternalProject_Add( zlib DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR} - DOWNLOAD_NAME zlib-v1.2.11.tar.gz - URL https://github.com/madler/zlib/archive/v1.2.11.tar.gz - URL_HASH SHA256=629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff + DOWNLOAD_NAME zlib-v1.3.2.tar.gz + URL https://github.com/madler/zlib/archive/v1.3.2.tar.gz + URL_HASH SHA256=b99a0b86c0ba9360ec7e78c4f1e43b1cbdf1e6936c8fa0f6835c0cd694a495a1 PREFIX ${PROJECT_BINARY_DIR} From d693778f3b32fd0b46afbfc0745017deea89f96f Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 15:41:33 -0700 Subject: [PATCH 03/17] Update CTestCustom.cmake --- cmake/CTestCustom.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmake/CTestCustom.cmake b/cmake/CTestCustom.cmake index c233161fa6..7a5af70545 100644 --- a/cmake/CTestCustom.cmake +++ b/cmake/CTestCustom.cmake @@ -19,8 +19,7 @@ set(CTEST_CUSTOM_TESTS_IGNORE uv_test uv_test_a # Tests from zlib, that can't be disabled normally. - example - example64 + zlib # Disabling specific firestore tests # objc_spec test doesn't fail locally but fails consistently on # github runners From 001a0d4e3aafd5324504b634088377863ffeb4b1 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 15:52:15 -0700 Subject: [PATCH 04/17] Disable zlib tests --- CMakeLists.txt | 3 +++ cmake/CTestCustom.cmake | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 88f166f12c..966a026c75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -394,6 +394,9 @@ set(FLATBUFFERS_FLATHASH OFF CACHE BOOL "") # Disable LevelDB build tests set(LEVELDB_BUILD_TESTS OFF CACHE BOOL "") +# Disable zlib build tests +set(ZLIB_BUILD_TESTING OFF CACHE BOOL "") + # Disable building flatc if cross compiling if(IOS OR ANDROID OR CMAKE_CROSSCOMPILING) set(FLATBUFFERS_BUILD_FLATC OFF CACHE BOOL "") diff --git a/cmake/CTestCustom.cmake b/cmake/CTestCustom.cmake index 7a5af70545..3fa0793b64 100644 --- a/cmake/CTestCustom.cmake +++ b/cmake/CTestCustom.cmake @@ -18,8 +18,6 @@ set(CTEST_CUSTOM_TESTS_IGNORE # Tests from libuv, that can't be disabled normally. uv_test uv_test_a - # Tests from zlib, that can't be disabled normally. - zlib # Disabling specific firestore tests # objc_spec test doesn't fail locally but fails consistently on # github runners From 3c2aa047b0f6279b964bdc4f1a9c90187e3888d6 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 16:34:19 -0700 Subject: [PATCH 05/17] Revert "Disable zlib tests" This reverts commit 001a0d4e3aafd5324504b634088377863ffeb4b1. --- CMakeLists.txt | 3 --- cmake/CTestCustom.cmake | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 966a026c75..88f166f12c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -394,9 +394,6 @@ set(FLATBUFFERS_FLATHASH OFF CACHE BOOL "") # Disable LevelDB build tests set(LEVELDB_BUILD_TESTS OFF CACHE BOOL "") -# Disable zlib build tests -set(ZLIB_BUILD_TESTING OFF CACHE BOOL "") - # Disable building flatc if cross compiling if(IOS OR ANDROID OR CMAKE_CROSSCOMPILING) set(FLATBUFFERS_BUILD_FLATC OFF CACHE BOOL "") diff --git a/cmake/CTestCustom.cmake b/cmake/CTestCustom.cmake index 3fa0793b64..7a5af70545 100644 --- a/cmake/CTestCustom.cmake +++ b/cmake/CTestCustom.cmake @@ -18,6 +18,8 @@ set(CTEST_CUSTOM_TESTS_IGNORE # Tests from libuv, that can't be disabled normally. uv_test uv_test_a + # Tests from zlib, that can't be disabled normally. + zlib # Disabling specific firestore tests # objc_spec test doesn't fail locally but fails consistently on # github runners From d14c015eebfa9fbb97a68bd9380e75e28a720f60 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 16:34:23 -0700 Subject: [PATCH 06/17] Revert "Update CTestCustom.cmake" This reverts commit d693778f3b32fd0b46afbfc0745017deea89f96f. --- cmake/CTestCustom.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/CTestCustom.cmake b/cmake/CTestCustom.cmake index 7a5af70545..c233161fa6 100644 --- a/cmake/CTestCustom.cmake +++ b/cmake/CTestCustom.cmake @@ -19,7 +19,8 @@ set(CTEST_CUSTOM_TESTS_IGNORE uv_test uv_test_a # Tests from zlib, that can't be disabled normally. - zlib + example + example64 # Disabling specific firestore tests # objc_spec test doesn't fail locally but fails consistently on # github runners From a0f0c33411e4e62e23cd1e39148029405bbb8bf3 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 16:34:08 -0700 Subject: [PATCH 07/17] Revert "Update zlib.cmake" This reverts commit 9c35e43b184361f2dae4c7eee5b907e076724a55. --- cmake/external/zlib.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/external/zlib.cmake b/cmake/external/zlib.cmake index b3ab61ebf1..595d149871 100644 --- a/cmake/external/zlib.cmake +++ b/cmake/external/zlib.cmake @@ -22,9 +22,9 @@ ExternalProject_Add( zlib DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR} - DOWNLOAD_NAME zlib-v1.3.2.tar.gz - URL https://github.com/madler/zlib/archive/v1.3.2.tar.gz - URL_HASH SHA256=b99a0b86c0ba9360ec7e78c4f1e43b1cbdf1e6936c8fa0f6835c0cd694a495a1 + DOWNLOAD_NAME zlib-v1.2.11.tar.gz + URL https://github.com/madler/zlib/archive/v1.2.11.tar.gz + URL_HASH SHA256=629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff PREFIX ${PROJECT_BINARY_DIR} From fac507c3059d6bfd5e0a97d29e7a2e9746bafbcc Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 16:37:18 -0700 Subject: [PATCH 08/17] Disable target os macros --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 88f166f12c..68db39fd25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -162,6 +162,9 @@ if(APPLE) # build output for our Objective-C++ files much too verbose. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-nullability-completeness") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-nullability-completeness") + # On Apple platforms, disable the target os macros, as they cause problems with zlib + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-define-target-os-macros") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-define-target-os-macros") if(DESKTOP) # Mac desktop Firestore build requires -Wno-deprecated-declarations set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations") From 03a7c3abe63320226448b14979cfd256f10495c7 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 14 May 2026 18:10:27 -0700 Subject: [PATCH 09/17] Update app_framework.cc --- testing/sample_framework/src/app_framework.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/testing/sample_framework/src/app_framework.cc b/testing/sample_framework/src/app_framework.cc index 929979d7df..96c0a6b21c 100644 --- a/testing/sample_framework/src/app_framework.cc +++ b/testing/sample_framework/src/app_framework.cc @@ -35,8 +35,10 @@ // In Xcode 16, libc++ removed the noexcept specifier from // __libcpp_verbose_abort. -#if defined(__apple_build_version__) && __apple_build_version__ >= 16000000 && \ - __apple_build_version__ < 20000000 +#if defined(_LIBCPP_VERBOSE_ABORT_NOEXCEPT) +#define FIREBASE_LIBCPP_VERBOSE_ABORT_NOEXCEPT _LIBCPP_VERBOSE_ABORT_NOEXCEPT +#elif defined(__apple_build_version__) && \ + __apple_build_version__ >= 16000000 && __apple_build_version__ < 20000000 #define FIREBASE_LIBCPP_VERBOSE_ABORT_NOEXCEPT #else #define FIREBASE_LIBCPP_VERBOSE_ABORT_NOEXCEPT noexcept From c6abc3dda58c268f632cc2c05867e00aa75ebe5a Mon Sep 17 00:00:00 2001 From: a-maurice Date: Mon, 18 May 2026 11:44:35 -0700 Subject: [PATCH 10/17] Fix for Android testapp build --- build_scripts/android/build.sh | 6 +++++- scripts/gha/build_testapps.py | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/build_scripts/android/build.sh b/build_scripts/android/build.sh index 0f4d63cb94..64aba91e31 100755 --- a/build_scripts/android/build.sh +++ b/build_scripts/android/build.sh @@ -46,7 +46,11 @@ gradleparams="-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false\ -Dmaven.wagon.httpconnectionManager.ttlSeconds=120" for retry in {1..10} error; do if [[ $retry == "error" ]]; then exit 5; fi - ./gradlew assembleRelease "${gradleparams}" && break + if [[ $(uname) == "Darwin" ]]; then + ./gradlew assembleRelease "${gradleparams}" "-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib" && break + else + ./gradlew assembleRelease "${gradleparams}" && break + fi sleep 300 done set -e diff --git a/scripts/gha/build_testapps.py b/scripts/gha/build_testapps.py index 867202f71e..ab18d3e3d6 100644 --- a/scripts/gha/build_testapps.py +++ b/scripts/gha/build_testapps.py @@ -525,7 +525,10 @@ def _build_android(project_dir, sdk_dir): f.write("maven.wagon.httpconnectionManager.ttlSeconds=120") # This will log the versions of dependencies for debugging purposes. _run([gradlew, "dependencies", "--configuration", "debugCompileClasspath"]) - _run([gradlew, "assembleDebug", "--stacktrace"]) + extra_args = [] + if platform.system() == "Darwin": + extra_args.append("-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib") + _run([gradlew, "assembleDebug", "--stacktrace"] + extra_args) def _validate_android_environment_variables(): From f65938823f58607043fcd00e58d3a980a11a8883 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Mon, 18 May 2026 11:49:24 -0700 Subject: [PATCH 11/17] Fix for iOS simulator --- scripts/gha/test_simulator.py | 130 +++++++++++++++++++++++++--------- 1 file changed, 97 insertions(+), 33 deletions(-) diff --git a/scripts/gha/test_simulator.py b/scripts/gha/test_simulator.py index 297d530b1c..2fb8f57c90 100644 --- a/scripts/gha/test_simulator.py +++ b/scripts/gha/test_simulator.py @@ -240,7 +240,7 @@ def main(argv): device_name = FLAGS.ios_name device_os = FLAGS.ios_version - device_id = _create_and_boot_simulator("iOS", device_name, device_os) + device_id, device_name, device_os = _create_and_boot_simulator("iOS", device_name, device_os) if not device_id: logging.error("simulator created fail") return 21 @@ -274,7 +274,7 @@ def main(argv): device_name = FLAGS.tvos_name device_os = FLAGS.tvos_version - device_id = _create_and_boot_simulator("tvOS", device_name, device_os) + device_id, device_name, device_os = _create_and_boot_simulator("tvOS", device_name, device_os) if not device_id: logging.error("simulator created fail") return 21 @@ -500,49 +500,113 @@ def _shutdown_simulator(): def _create_and_boot_simulator(apple_platform, device_name, device_os): - """Create a simulator locally. Will wait until this simulator booted.""" - _shutdown_simulator() - command = "xcrun xctrace list devices 2>&1 | grep \"%s Simulator (%s)\" | awk -F'[()]' '{print $4}'" % (device_name, device_os) - logging.info("Get test simulator: %s", command) - result = subprocess.Popen(command, universal_newlines=True, shell=True, stdout=subprocess.PIPE) - device_id = result.stdout.readline().strip() + """Create a simulator locally. Will wait until this simulator booted. - if not device_id: - # download and create device - args = ["brew", "install", "xcodesorg/made/xcodes"] - logging.info("Download xcodes: %s", " ".join(args)) - subprocess.run(args=args, check=True) + Returns a tuple of (device_id, device_name, device_os). + """ + _shutdown_simulator() - # Get the set of available versions for the given Apple platform - args = ["xcodes", "runtimes"] - runtimes = subprocess.run(args=args, capture_output=True, text=True, check=True) - available_versions = re.findall('{0} ([\d|.]+)'.format(apple_platform), runtimes.stdout.strip()) - logging.info("Found available versions for %s: %s", apple_platform, ", ".join(available_versions)) + # Find available runtimes using simctl + try: + runtimes_result = subprocess.run( + ["xcrun", "simctl", "list", "runtimes", "-j"], + capture_output=True, text=True, check=True) + runtimes_data = json.loads(runtimes_result.stdout) + except Exception: + logging.exception("Failed to get runtimes list from simctl") + return None, None, None + + # Filter runtimes by platform and availability + available_runtimes = [] + for r in runtimes_data.get("runtimes", []): + if r.get("isAvailable") and r.get("platform") == apple_platform: + available_runtimes.append(r) + + if not available_runtimes: + logging.error("No available runtimes found for platform: %s", apple_platform) + return None, None, None + + # Find matching runtime version + target_runtime = None + for r in available_runtimes: + version = r.get("version") + if version == device_os or version.startswith(device_os): + target_runtime = r + break - # If the requested version is available, use it, otherwise default to the latest - if (device_os not in available_versions): - logging.warning("Unable to find version %s, will fall back to %s", device_os, available_versions[-1]) - if FLAGS.ci: - print("::warning ::Unable to find %s version %s, will fall back to %s" % (apple_platform, device_os, available_versions[-1])) - device_os = available_versions[-1] + if not target_runtime: + # Fall back to the latest runtime version + def parse_version(version_str): + sanitized = re.sub(r'[^\d.]', '', version_str) + parts = [] + for x in sanitized.split('.'): + if x.isdigit(): + parts.append(int(x)) + return parts + + available_runtimes.sort(key=lambda r: parse_version(r.get("version"))) + target_runtime = available_runtimes[-1] + fallback_os = target_runtime.get("version") + logging.warning("Requested %s version %s is not available. Falling back to %s", + apple_platform, device_os, fallback_os) + if FLAGS.ci: + print("::warning ::Requested %s version %s is not available, falling back to %s" % + (apple_platform, device_os, fallback_os)) + device_os = fallback_os + + runtime_id = target_runtime.get("identifier") + logging.info("Using runtime: %s (ID: %s)", target_runtime.get("name"), runtime_id) + + # Check if a matching simulator device already exists + try: + devices_result = subprocess.run( + ["xcrun", "simctl", "list", "devices", "-j"], + capture_output=True, text=True, check=True) + devices_data = json.loads(devices_result.stdout) + except Exception: + logging.exception("Failed to get devices list from simctl") + return None, None, None + + devices_under_runtime = devices_data.get("devices", {}).get(runtime_id, []) + device_id = None + for d in devices_under_runtime: + if d.get("isAvailable") and d.get("name") == device_name: + device_id = d.get("udid") + logging.info("Found existing simulator device: %s (%s)", device_name, device_id) + break - args = ["sudo", "xcodes", "runtimes", "install", "%s %s" % (apple_platform, device_os)] - logging.info("Download simulator: %s", " ".join(args)) - subprocess.run(args=args, check=False) + if not device_id: + # Create new device if not found + args = ["xcrun", "simctl", "create", "test_simulator", device_name, runtime_id] + logging.info("Creating test simulator: %s", " ".join(args)) + try: + result = subprocess.run(args=args, capture_output=True, text=True, check=True) + device_id = result.stdout.strip() + logging.info("Created simulator: %s", device_id) + except subprocess.CalledProcessError as e: + logging.error("Failed to create simulator: %s", e.stderr) + # Fall back to the first available device under this runtime + for d in devices_under_runtime: + if d.get("isAvailable"): + device_id = d.get("udid") + device_name = d.get("name") + logging.info("Fallback to first available device: %s (%s)", device_name, device_id) + break - args = ["xcrun", "simctl", "create", "test_simulator", device_name, "%s%s" % (apple_platform, device_os)] - logging.info("Create test simulator: %s", " ".join(args)) - result = subprocess.run(args=args, capture_output=True, text=True, check=True) - device_id = result.stdout.strip() + if not device_id: + logging.error("No simulator device available or created") + return None, None, None + # Boot the simulator args = ["xcrun", "simctl", "boot", device_id] - logging.info("Boot my simulator: %s", " ".join(args)) + logging.info("Boot simulator: %s", " ".join(args)) subprocess.run(args=args, check=True) args = ["xcrun", "simctl", "bootstatus", device_id] logging.info("Wait for simulator to boot: %s", " ".join(args)) subprocess.run(args=args, check=True) - return device_id + + return device_id, device_name, device_os def _delete_simulator(device_id): From a3b2a14a5fe7d34cacb56bbc9e9e6e27efdb1262 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Mon, 18 May 2026 13:12:46 -0700 Subject: [PATCH 12/17] Trying to fix Android build on Mac --- build_scripts/android/build.sh | 2 +- cmake/android_mac_overrides.cmake | 19 +++++++++++++++++++ scripts/gha/build_testapps.py | 3 ++- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 cmake/android_mac_overrides.cmake diff --git a/build_scripts/android/build.sh b/build_scripts/android/build.sh index 64aba91e31..f23fbeece6 100755 --- a/build_scripts/android/build.sh +++ b/build_scripts/android/build.sh @@ -47,7 +47,7 @@ gradleparams="-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false\ for retry in {1..10} error; do if [[ $retry == "error" ]]; then exit 5; fi if [[ $(uname) == "Darwin" ]]; then - ./gradlew assembleRelease "${gradleparams}" "-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib" && break + ./gradlew assembleRelease "${gradleparams}" "-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_PROJECT_INCLUDE=${sourcepath}/cmake/android_mac_overrides.cmake" && break else ./gradlew assembleRelease "${gradleparams}" && break fi diff --git a/cmake/android_mac_overrides.cmake b/cmake/android_mac_overrides.cmake new file mode 100644 index 0000000000..1dd481f4b9 --- /dev/null +++ b/cmake/android_mac_overrides.cmake @@ -0,0 +1,19 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if(APPLE AND ANDROID) + message(STATUS "Setting CMAKE_AR and CMAKE_RANLIB overrides for Android on Mac host") + set(CMAKE_AR "/usr/bin/ar" CACHE FILEPATH "Archive tool" FORCE) + set(CMAKE_RANLIB "/usr/bin/ranlib" CACHE FILEPATH "Indexing tool" FORCE) +endif() diff --git a/scripts/gha/build_testapps.py b/scripts/gha/build_testapps.py index ab18d3e3d6..48f5863518 100644 --- a/scripts/gha/build_testapps.py +++ b/scripts/gha/build_testapps.py @@ -527,7 +527,8 @@ def _build_android(project_dir, sdk_dir): _run([gradlew, "dependencies", "--configuration", "debugCompileClasspath"]) extra_args = [] if platform.system() == "Darwin": - extra_args.append("-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib") + overrides_path = os.path.join(sdk_dir, "cmake", "android_mac_overrides.cmake") + extra_args.append(f"-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_PROJECT_INCLUDE={overrides_path}") _run([gradlew, "assembleDebug", "--stacktrace"] + extra_args) From 418e469867a0029b97d8317d99eb7cfdf8f99789 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Mon, 18 May 2026 13:50:17 -0700 Subject: [PATCH 13/17] Revert "Trying to fix Android build on Mac" This reverts commit a3b2a14a5fe7d34cacb56bbc9e9e6e27efdb1262. --- build_scripts/android/build.sh | 2 +- cmake/android_mac_overrides.cmake | 19 ------------------- scripts/gha/build_testapps.py | 3 +-- 3 files changed, 2 insertions(+), 22 deletions(-) delete mode 100644 cmake/android_mac_overrides.cmake diff --git a/build_scripts/android/build.sh b/build_scripts/android/build.sh index f23fbeece6..64aba91e31 100755 --- a/build_scripts/android/build.sh +++ b/build_scripts/android/build.sh @@ -47,7 +47,7 @@ gradleparams="-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false\ for retry in {1..10} error; do if [[ $retry == "error" ]]; then exit 5; fi if [[ $(uname) == "Darwin" ]]; then - ./gradlew assembleRelease "${gradleparams}" "-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_PROJECT_INCLUDE=${sourcepath}/cmake/android_mac_overrides.cmake" && break + ./gradlew assembleRelease "${gradleparams}" "-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib" && break else ./gradlew assembleRelease "${gradleparams}" && break fi diff --git a/cmake/android_mac_overrides.cmake b/cmake/android_mac_overrides.cmake deleted file mode 100644 index 1dd481f4b9..0000000000 --- a/cmake/android_mac_overrides.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2026 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -if(APPLE AND ANDROID) - message(STATUS "Setting CMAKE_AR and CMAKE_RANLIB overrides for Android on Mac host") - set(CMAKE_AR "/usr/bin/ar" CACHE FILEPATH "Archive tool" FORCE) - set(CMAKE_RANLIB "/usr/bin/ranlib" CACHE FILEPATH "Indexing tool" FORCE) -endif() diff --git a/scripts/gha/build_testapps.py b/scripts/gha/build_testapps.py index 48f5863518..ab18d3e3d6 100644 --- a/scripts/gha/build_testapps.py +++ b/scripts/gha/build_testapps.py @@ -527,8 +527,7 @@ def _build_android(project_dir, sdk_dir): _run([gradlew, "dependencies", "--configuration", "debugCompileClasspath"]) extra_args = [] if platform.system() == "Darwin": - overrides_path = os.path.join(sdk_dir, "cmake", "android_mac_overrides.cmake") - extra_args.append(f"-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_PROJECT_INCLUDE={overrides_path}") + extra_args.append("-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib") _run([gradlew, "assembleDebug", "--stacktrace"] + extra_args) From 5d96dc6d7fd76ed53cee8b5344a4335fedf1d7fe Mon Sep 17 00:00:00 2001 From: a-maurice Date: Mon, 18 May 2026 13:50:23 -0700 Subject: [PATCH 14/17] Revert "Fix for Android testapp build" This reverts commit c6abc3dda58c268f632cc2c05867e00aa75ebe5a. --- build_scripts/android/build.sh | 6 +----- scripts/gha/build_testapps.py | 5 +---- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/build_scripts/android/build.sh b/build_scripts/android/build.sh index 64aba91e31..0f4d63cb94 100755 --- a/build_scripts/android/build.sh +++ b/build_scripts/android/build.sh @@ -46,11 +46,7 @@ gradleparams="-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false\ -Dmaven.wagon.httpconnectionManager.ttlSeconds=120" for retry in {1..10} error; do if [[ $retry == "error" ]]; then exit 5; fi - if [[ $(uname) == "Darwin" ]]; then - ./gradlew assembleRelease "${gradleparams}" "-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib" && break - else - ./gradlew assembleRelease "${gradleparams}" && break - fi + ./gradlew assembleRelease "${gradleparams}" && break sleep 300 done set -e diff --git a/scripts/gha/build_testapps.py b/scripts/gha/build_testapps.py index ab18d3e3d6..867202f71e 100644 --- a/scripts/gha/build_testapps.py +++ b/scripts/gha/build_testapps.py @@ -525,10 +525,7 @@ def _build_android(project_dir, sdk_dir): f.write("maven.wagon.httpconnectionManager.ttlSeconds=120") # This will log the versions of dependencies for debugging purposes. _run([gradlew, "dependencies", "--configuration", "debugCompileClasspath"]) - extra_args = [] - if platform.system() == "Darwin": - extra_args.append("-Pandroid.externalNativeBuild.cmake.arguments=-DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib") - _run([gradlew, "assembleDebug", "--stacktrace"] + extra_args) + _run([gradlew, "assembleDebug", "--stacktrace"]) def _validate_android_environment_variables(): From 5f4f50748263432d7fe4da3671f5ca91b73f3d74 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Mon, 18 May 2026 13:52:20 -0700 Subject: [PATCH 15/17] Use macos-16 instead --- .github/workflows/android.yml | 2 +- .github/workflows/cpp-packaging.yml | 20 +++++++++---------- .github/workflows/desktop.yml | 6 +++--- .github/workflows/integration_tests.yml | 24 +++++++++++------------ .github/workflows/ios.yml | 2 +- .github/workflows/update-dependencies.yml | 2 +- scripts/gha/print_matrix_configuration.py | 10 +++++----- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index a0291b909c..672e24b6e7 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -57,7 +57,7 @@ jobs: - os: ubuntu-22.04 architecture: arm64 # Do not attempt to use x64 on Mac. - - os: macos-26 + - os: macos-16 architecture: x64 steps: - uses: lukka/get-cmake@latest diff --git a/.github/workflows/cpp-packaging.yml b/.github/workflows/cpp-packaging.yml index 17cb9fc10e..9d841add85 100644 --- a/.github/workflows/cpp-packaging.yml +++ b/.github/workflows/cpp-packaging.yml @@ -82,13 +82,13 @@ jobs: if: ${{ github.event.inputs.downloadPublicVersion == '' && github.event.inputs.downloadPreviousRun == '' }} strategy: matrix: - os: [ubuntu-22.04, macos-26] + os: [ubuntu-22.04, macos-16] include: - os: ubuntu-22.04 tools_platform: linux # Binutils 2.35.1 released Sep 19, 2020 binutils_version: "2.35.1" - - os: macos-26 + - os: macos-16 tools_platform: darwin # Binutils 2.35.1 released Sep 19, 2020 binutils_version: "2.35.1" @@ -191,7 +191,7 @@ jobs: build_and_package_ios_tvos: name: build-and-package-ios-tvos - runs-on: macos-26 + runs-on: macos-16 if: ${{ github.event.inputs.downloadPublicVersion == '' && github.event.inputs.downloadPreviousRun == '' }} steps: - uses: lukka/get-cmake@latest @@ -320,7 +320,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-22.04, macos-26] + os: [windows-latest, ubuntu-22.04, macos-16] build_type: ["Release", "Debug"] architecture: ["x64", "x86", "arm64"] msvc_runtime: ["static", "dynamic"] @@ -338,7 +338,7 @@ jobs: vcpkg_triplet_suffix: "linux" additional_build_flags: "" sdk_platform: "linux" - - os: macos-26 + - os: macos-16 vcpkg_triplet_suffix: "osx" additional_build_flags: "--target_format libraries" sdk_platform: "darwin" @@ -346,13 +346,13 @@ jobs: exclude: - os: windows-latest linux_abi: "c++11" - - os: macos-26 + - os: macos-16 architecture: "x86" - - os: macos-26 + - os: macos-16 msvc_runtime: "dynamic" - - os: macos-26 + - os: macos-16 linux_abi: "c++11" - - os: macos-26 + - os: macos-16 build_type: "Debug" - os: ubuntu-22.04 msvc_runtime: "dynamic" @@ -509,7 +509,7 @@ jobs: suffix: '-x64-Debug-dynamic' runs_on_platform: ubuntu-22.04 - sdk_platform: darwin - runs_on_platform: macos-26 + runs_on_platform: macos-16 exclude: - sdk_platform: windows suffix: '' diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index af2b273e02..e78dbbe717 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -72,12 +72,12 @@ jobs: # msvc_runtime excludes - os: ubuntu-22.04 msvc_runtime: "dynamic" - - os: macos-26 + - os: macos-16 msvc_runtime: "dynamic" # architecture excluees - - os: macos-26 + - os: macos-16 architecture: "x86" - - os: macos-26 + - os: macos-16 architecture: "x64" # Xcode excludes -- allow only one on osx and linux - os: ubuntu-22.04 diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 1bef3824a0..9210b77e3a 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -21,7 +21,7 @@ on: required: true operating_systems: description: 'CSV of VMs to run on' - default: 'ubuntu-22.04,windows-latest,macos-26' + default: 'ubuntu-22.04,windows-latest,macos-16' required: true desktop_ssl_variants: description: 'CSV of desktop SSL variants to use' @@ -213,7 +213,7 @@ jobs: # at 3am PST/4am PDT. Running firestore desktop integration test aginst tip-of-tree ios repo echo "::warning ::Running against Firestore tip-of-tree" matrix_platform="Desktop" - matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-26") + matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-16") else matrix_platform=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k platform -o "${GITHUB_EVENT_INPUTS_PLATFORMS}" --apis ${apis} ) matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "${GITHUB_EVENT_INPUTS_OPERATING_SYSTEMS}") @@ -283,7 +283,7 @@ jobs: - os: ubuntu-22.04 arch: arm64 # Do not attempt to use x86 on Mac. - - os: macos-26 + - os: macos-16 arch: x86 # Until we support building openssl from source, we can't use the # system's openssl when cross-compiling, except on Linux. Builds on Linux @@ -292,7 +292,7 @@ jobs: - os: windows-latest ssl_variant: openssl arch: x86 - - os: macos-26 + - os: macos-16 ssl_variant: openssl arch: x64 steps: @@ -605,7 +605,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-26] + os: [macos-16] steps: - uses: lukka/get-cmake@latest with: @@ -724,7 +724,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-26] + os: [macos-16] steps: - uses: lukka/get-cmake@latest with: @@ -853,7 +853,7 @@ jobs: - os: ubuntu-22.04 arch: arm64 # Do not attempt to use x86 on Mac. - - os: macos-26 + - os: macos-16 arch: x86 # Until we support building openssl from source, we can't use the # system's openssl when cross-compiling, except on Linux. Builds on Linux @@ -862,7 +862,7 @@ jobs: - os: windows-latest ssl_variant: openssl arch: x86 - - os: macos-26 + - os: macos-16 ssl_variant: openssl arch: x64 steps: @@ -1127,7 +1127,7 @@ jobs: test_ios: name: test-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }} needs: [check_and_prepare, build_ios] - runs-on: macos-26 + runs-on: macos-16 if: contains(needs.check_and_prepare.outputs.matrix_platform, 'iOS') && needs.check_and_prepare.outputs.apis != '' && !cancelled() strategy: fail-fast: false @@ -1137,7 +1137,7 @@ jobs: exclude: - ios_device: "ios_target" test_type: "uitest" - build_os: [macos-26] + build_os: [macos-16] steps: - uses: actions/checkout@v3 with: @@ -1317,13 +1317,13 @@ jobs: test_tvos: name: test-tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }} needs: [check_and_prepare, build_tvos] - runs-on: macos-26 + runs-on: macos-16 if: contains(needs.check_and_prepare.outputs.matrix_platform, 'tvOS') && needs.check_and_prepare.outputs.apis != '' && !cancelled() strategy: fail-fast: false matrix: tvos_device: ${{ fromJson(needs.check_and_prepare.outputs.tvos_device) }} - build_os: [macos-26] + build_os: [macos-16] steps: - uses: actions/checkout@v3 with: diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index a65c581a35..0a5f884017 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -41,7 +41,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'macos-26' ] + os: [ 'macos-16' ] xcode_version: ${{ fromJson(needs.prepare_matrix.outputs.matrix_xcode_version) }} steps: - uses: lukka/get-cmake@latest diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 6cf3ce6dd1..76fb271681 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -27,7 +27,7 @@ env: jobs: update_dependencies: name: update-deps - runs-on: macos-26 + runs-on: macos-16 steps: - name: Get token for firebase-workflow-trigger uses: tibdex/github-app-token@v1 diff --git a/scripts/gha/print_matrix_configuration.py b/scripts/gha/print_matrix_configuration.py index ae9a4665fa..75b223364f 100644 --- a/scripts/gha/print_matrix_configuration.py +++ b/scripts/gha/print_matrix_configuration.py @@ -73,7 +73,7 @@ PARAMETERS = { "desktop": { "matrix": { - "os": ["ubuntu-22.04", "macos-26"], + "os": ["ubuntu-22.04", "macos-16"], "build_type": ["Release", "Debug"], "architecture": ["x64", "x86", "arm64"], "msvc_runtime": ["static","dynamic"], @@ -81,7 +81,7 @@ "python_version": ["3.9"], EXPANDED_KEY: { - "os": ["ubuntu-22.04", "macos-26", "windows-latest"], + "os": ["ubuntu-22.04", "macos-16", "windows-latest"], "xcode_version": ["26.2"], } } @@ -89,19 +89,19 @@ "android": { "matrix": { - "os": ["ubuntu-22.04", "macos-26", "windows-latest"], + "os": ["ubuntu-22.04", "macos-16", "windows-latest"], "architecture": ["x64", "arm64"], "python_version": ["3.9"], EXPANDED_KEY: { - "os": ["ubuntu-22.04", "macos-26", "windows-latest"] + "os": ["ubuntu-22.04", "macos-16", "windows-latest"] } } }, "integration_tests": { "matrix": { - "os": ["ubuntu-22.04", "macos-26", "windows-latest"], + "os": ["ubuntu-22.04", "macos-16", "windows-latest"], "platform": ["Desktop", "Android", "iOS", "tvOS"], "ssl_lib": ["openssl"], "android_device": ["android_target", "emulator_ftl_target"], From 0d763ab70a84da2dc12b88c0438a81375881bb53 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Mon, 18 May 2026 14:13:48 -0700 Subject: [PATCH 16/17] Use macos 15 --- .github/workflows/android.yml | 2 +- .github/workflows/cpp-packaging.yml | 20 +++++++++---------- .github/workflows/desktop.yml | 6 +++--- .github/workflows/integration_tests.yml | 24 +++++++++++------------ .github/workflows/ios.yml | 2 +- .github/workflows/update-dependencies.yml | 2 +- scripts/gha/print_matrix_configuration.py | 10 +++++----- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 672e24b6e7..74b5c158b6 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -57,7 +57,7 @@ jobs: - os: ubuntu-22.04 architecture: arm64 # Do not attempt to use x64 on Mac. - - os: macos-16 + - os: macos-15 architecture: x64 steps: - uses: lukka/get-cmake@latest diff --git a/.github/workflows/cpp-packaging.yml b/.github/workflows/cpp-packaging.yml index 9d841add85..fa5fd7d628 100644 --- a/.github/workflows/cpp-packaging.yml +++ b/.github/workflows/cpp-packaging.yml @@ -82,13 +82,13 @@ jobs: if: ${{ github.event.inputs.downloadPublicVersion == '' && github.event.inputs.downloadPreviousRun == '' }} strategy: matrix: - os: [ubuntu-22.04, macos-16] + os: [ubuntu-22.04, macos-15] include: - os: ubuntu-22.04 tools_platform: linux # Binutils 2.35.1 released Sep 19, 2020 binutils_version: "2.35.1" - - os: macos-16 + - os: macos-15 tools_platform: darwin # Binutils 2.35.1 released Sep 19, 2020 binutils_version: "2.35.1" @@ -191,7 +191,7 @@ jobs: build_and_package_ios_tvos: name: build-and-package-ios-tvos - runs-on: macos-16 + runs-on: macos-15 if: ${{ github.event.inputs.downloadPublicVersion == '' && github.event.inputs.downloadPreviousRun == '' }} steps: - uses: lukka/get-cmake@latest @@ -320,7 +320,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-22.04, macos-16] + os: [windows-latest, ubuntu-22.04, macos-15] build_type: ["Release", "Debug"] architecture: ["x64", "x86", "arm64"] msvc_runtime: ["static", "dynamic"] @@ -338,7 +338,7 @@ jobs: vcpkg_triplet_suffix: "linux" additional_build_flags: "" sdk_platform: "linux" - - os: macos-16 + - os: macos-15 vcpkg_triplet_suffix: "osx" additional_build_flags: "--target_format libraries" sdk_platform: "darwin" @@ -346,13 +346,13 @@ jobs: exclude: - os: windows-latest linux_abi: "c++11" - - os: macos-16 + - os: macos-15 architecture: "x86" - - os: macos-16 + - os: macos-15 msvc_runtime: "dynamic" - - os: macos-16 + - os: macos-15 linux_abi: "c++11" - - os: macos-16 + - os: macos-15 build_type: "Debug" - os: ubuntu-22.04 msvc_runtime: "dynamic" @@ -509,7 +509,7 @@ jobs: suffix: '-x64-Debug-dynamic' runs_on_platform: ubuntu-22.04 - sdk_platform: darwin - runs_on_platform: macos-16 + runs_on_platform: macos-15 exclude: - sdk_platform: windows suffix: '' diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index e78dbbe717..b45acf6155 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -72,12 +72,12 @@ jobs: # msvc_runtime excludes - os: ubuntu-22.04 msvc_runtime: "dynamic" - - os: macos-16 + - os: macos-15 msvc_runtime: "dynamic" # architecture excluees - - os: macos-16 + - os: macos-15 architecture: "x86" - - os: macos-16 + - os: macos-15 architecture: "x64" # Xcode excludes -- allow only one on osx and linux - os: ubuntu-22.04 diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 9210b77e3a..9e9d5077e9 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -21,7 +21,7 @@ on: required: true operating_systems: description: 'CSV of VMs to run on' - default: 'ubuntu-22.04,windows-latest,macos-16' + default: 'ubuntu-22.04,windows-latest,macos-15' required: true desktop_ssl_variants: description: 'CSV of desktop SSL variants to use' @@ -213,7 +213,7 @@ jobs: # at 3am PST/4am PDT. Running firestore desktop integration test aginst tip-of-tree ios repo echo "::warning ::Running against Firestore tip-of-tree" matrix_platform="Desktop" - matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-16") + matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-15") else matrix_platform=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k platform -o "${GITHUB_EVENT_INPUTS_PLATFORMS}" --apis ${apis} ) matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "${GITHUB_EVENT_INPUTS_OPERATING_SYSTEMS}") @@ -283,7 +283,7 @@ jobs: - os: ubuntu-22.04 arch: arm64 # Do not attempt to use x86 on Mac. - - os: macos-16 + - os: macos-15 arch: x86 # Until we support building openssl from source, we can't use the # system's openssl when cross-compiling, except on Linux. Builds on Linux @@ -292,7 +292,7 @@ jobs: - os: windows-latest ssl_variant: openssl arch: x86 - - os: macos-16 + - os: macos-15 ssl_variant: openssl arch: x64 steps: @@ -605,7 +605,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-16] + os: [macos-15] steps: - uses: lukka/get-cmake@latest with: @@ -724,7 +724,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-16] + os: [macos-15] steps: - uses: lukka/get-cmake@latest with: @@ -853,7 +853,7 @@ jobs: - os: ubuntu-22.04 arch: arm64 # Do not attempt to use x86 on Mac. - - os: macos-16 + - os: macos-15 arch: x86 # Until we support building openssl from source, we can't use the # system's openssl when cross-compiling, except on Linux. Builds on Linux @@ -862,7 +862,7 @@ jobs: - os: windows-latest ssl_variant: openssl arch: x86 - - os: macos-16 + - os: macos-15 ssl_variant: openssl arch: x64 steps: @@ -1127,7 +1127,7 @@ jobs: test_ios: name: test-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }} needs: [check_and_prepare, build_ios] - runs-on: macos-16 + runs-on: macos-15 if: contains(needs.check_and_prepare.outputs.matrix_platform, 'iOS') && needs.check_and_prepare.outputs.apis != '' && !cancelled() strategy: fail-fast: false @@ -1137,7 +1137,7 @@ jobs: exclude: - ios_device: "ios_target" test_type: "uitest" - build_os: [macos-16] + build_os: [macos-15] steps: - uses: actions/checkout@v3 with: @@ -1317,13 +1317,13 @@ jobs: test_tvos: name: test-tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }} needs: [check_and_prepare, build_tvos] - runs-on: macos-16 + runs-on: macos-15 if: contains(needs.check_and_prepare.outputs.matrix_platform, 'tvOS') && needs.check_and_prepare.outputs.apis != '' && !cancelled() strategy: fail-fast: false matrix: tvos_device: ${{ fromJson(needs.check_and_prepare.outputs.tvos_device) }} - build_os: [macos-16] + build_os: [macos-15] steps: - uses: actions/checkout@v3 with: diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 0a5f884017..c87c4b048a 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -41,7 +41,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'macos-16' ] + os: [ 'macos-15' ] xcode_version: ${{ fromJson(needs.prepare_matrix.outputs.matrix_xcode_version) }} steps: - uses: lukka/get-cmake@latest diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 76fb271681..07849f8513 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -27,7 +27,7 @@ env: jobs: update_dependencies: name: update-deps - runs-on: macos-16 + runs-on: macos-15 steps: - name: Get token for firebase-workflow-trigger uses: tibdex/github-app-token@v1 diff --git a/scripts/gha/print_matrix_configuration.py b/scripts/gha/print_matrix_configuration.py index 75b223364f..5c00adeb0d 100644 --- a/scripts/gha/print_matrix_configuration.py +++ b/scripts/gha/print_matrix_configuration.py @@ -73,7 +73,7 @@ PARAMETERS = { "desktop": { "matrix": { - "os": ["ubuntu-22.04", "macos-16"], + "os": ["ubuntu-22.04", "macos-15"], "build_type": ["Release", "Debug"], "architecture": ["x64", "x86", "arm64"], "msvc_runtime": ["static","dynamic"], @@ -81,7 +81,7 @@ "python_version": ["3.9"], EXPANDED_KEY: { - "os": ["ubuntu-22.04", "macos-16", "windows-latest"], + "os": ["ubuntu-22.04", "macos-15", "windows-latest"], "xcode_version": ["26.2"], } } @@ -89,19 +89,19 @@ "android": { "matrix": { - "os": ["ubuntu-22.04", "macos-16", "windows-latest"], + "os": ["ubuntu-22.04", "macos-15", "windows-latest"], "architecture": ["x64", "arm64"], "python_version": ["3.9"], EXPANDED_KEY: { - "os": ["ubuntu-22.04", "macos-16", "windows-latest"] + "os": ["ubuntu-22.04", "macos-15", "windows-latest"] } } }, "integration_tests": { "matrix": { - "os": ["ubuntu-22.04", "macos-16", "windows-latest"], + "os": ["ubuntu-22.04", "macos-15", "windows-latest"], "platform": ["Desktop", "Android", "iOS", "tvOS"], "ssl_lib": ["openssl"], "android_device": ["android_target", "emulator_ftl_target"], From c7f8d4702310853da17f112b0c2757f7aaa07e2c Mon Sep 17 00:00:00 2001 From: a-maurice Date: Tue, 19 May 2026 09:36:14 -0700 Subject: [PATCH 17/17] Update iPhone simulator version --- scripts/gha/print_matrix_configuration.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/gha/print_matrix_configuration.py b/scripts/gha/print_matrix_configuration.py index 5c00adeb0d..f51e6a3163 100644 --- a/scripts/gha/print_matrix_configuration.py +++ b/scripts/gha/print_matrix_configuration.py @@ -211,8 +211,8 @@ {"type": "ftl", "device": "model=iphone8,version=16.6"}, {"type": "ftl", "device": "model=ipad10,version=16.6"}, ], - "simulator_target": [ {"type": "virtual", "name":"iPhone 15 Pro Max", "version":"17.2"} ], - "tvos_simulator": [ {"type": "virtual", "name":"Apple TV", "version":"17.2"} ], + "simulator_target": [ {"type": "virtual", "name":"iPhone 16 Pro Max", "version":"26.2"} ], + "tvos_simulator": [ {"type": "virtual", "name":"Apple TV", "version":"26.2"} ], } # Easy accesssor for getting a TEST_DEVICES entry. Note that once a device model