[Release Tooling] Create module maps for mixed language targets #11919
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
These changes are needed to build correct xcframeworks for mixed language CocoaPods. They were informed by work in #11806.
Problem
The release tooling creates custom module maps for some SDKs (e.g. Firestore). The contents of the custom module map is stored in memory until it is written to disk when the slices of the xcframework are assembled. During this assembly, the release tooling currently makes the assumption that if a Swift module is present, the SDK is a pure Swift SDK and it uses the module map contents generated by CocoaPods (which modularizes the Swift header with a submodule). This is problematic since the custom module map contents in memory are ignored.
Solution
For mixed language SDKs, the custom module map contents should be concatenated with the part that CocoaPods generates (the modularization of the Swift header in a submodule).
Open Questions
#no-changelog