Skip to content

[Infra] Build binaries with Xcode 16.2 x macos-14 #14606

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

Merged
merged 8 commits into from
Apr 2, 2025
Merged

[Infra] Build binaries with Xcode 16.2 x macos-14 #14606

merged 8 commits into from
Apr 2, 2025

Conversation

ncooke3
Copy link
Member

@ncooke3 ncooke3 commented Mar 20, 2025

  • Zip test uploads
    Follow-up work
  • Update docs for iOS/C++/Games
  • Update Firestore binary repos (update: these should continue to work. will hold off until needed)

#no-changelog

Copy link
Contributor

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

@ncooke3 ncooke3 added this to the 11.12.0 - M163 milestone Mar 20, 2025
@ncooke3 ncooke3 changed the title [Infra] Build binaries with Xcode 16 [Infra] Build binaries with Xcode 16.1 x macos-14 Mar 21, 2025
@ncooke3

This comment was marked as outdated.

@ncooke3 ncooke3 changed the title [Infra] Build binaries with Xcode 16.1 x macos-14 [Infra] Build binaries with Xcode 16.2 x macos-14 Mar 28, 2025
@ncooke3 ncooke3 marked this pull request as ready for review April 2, 2025 20:31
@ncooke3 ncooke3 requested review from paulb777 and andrewheard April 2, 2025 20:31
Copy link
Member

@paulb777 paulb777 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - assuming the other two boxes will be done separately

@ncooke3 ncooke3 merged commit 1ebe6dc into main Apr 2, 2025
46 checks passed
@ncooke3 ncooke3 deleted the nc/xcode16 branch April 2, 2025 20:53
Comment on lines +1 to +4
# Unreleased
- [changed] Firebase now requires at least Xcode 16.2. See
https://developer.apple.com/news/?id=9s0rgdy9 for more info.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @mikehardy, heads up that firebase-ios-sdk's 10.12 release will require Xcode 16.2. This is in preparation for Apple's April 24 deadline to start releasing apps with Xcode 16: https://developer.apple.com/news/?id=9s0rgdy9

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah - thanks for the heads up - we've got another similarly-tiny but nevertheless breaking change queued up over in react-native-firebase and I was looking for something/anything to bundle with it, this fits the bill.

@@ -36,8 +36,8 @@ jobs:
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126
Copy link
Contributor

@mikehardy mikehardy Apr 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ncooke3 just noticed this - wasn't expecting to see my name in your yaml 😆
Just a note that I've deprecated that action because I consider ccache to be superior due to more widespread adoption vs buildcache. Used to be ccache couldn't handle caching Xcode mobile builds so buildcache was the only option, but there is now a well-known set of options to use for ccache to achieve good caching behavior

Here is my ccache.conf if that helps:

max_size = 60G
sloppiness = clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros
file_clone = true
depend_mode = true
inode_cache = true

alternatively you may specify all these things in environment like so:

https://github.com/invertase/react-native-firebase/blob/c26253c82f0a13f62608941d266a63071667cc16/.github/workflows/tests_e2e_ios.yml#L155-L159

in combo with ccache-action:

https://github.com/invertase/react-native-firebase/blob/c26253c82f0a13f62608941d266a63071667cc16/.github/workflows/tests_e2e_ios.yml#L83-L88

then the only other trick is to use relative paths for CC/CPLUSPLUS/LD/LDPLUSPLUS so that the ccache compiler/linker symlinks will be used instead of the real underlying compiler/linker

Example of that but it's environment too so lots of ways to achieve it:
https://github.com/invertase/react-native-firebase/blob/c26253c82f0a13f62608941d266a63071667cc16/package.json#L57

Hopefully that helps

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, Mike! I will take a look at migrating the usage.

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

Successfully merging this pull request may close these issues.

5 participants