-
Notifications
You must be signed in to change notification settings - Fork 24.4k
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
Allow ReactCommon
/Folly
to be used in Swift libraries (DEFINES_MODULE
)
#31858
Conversation
Swift Pods require the use of [modular headers](https://blog.cocoapods.org/CocoaPods-1.5.0/) to be statically linked. To interop with Objective-C modules, you need to make the Objective-C module "define a Module", that is modular header export. This is already the case for a few podspecs so they can be consumed in Swift libraries, but `ReactCommon` doesn't do this yet and therefore breaks in a few libraries of mine, for example see this issue: mrousavy/react-native-vision-camera#195. If I were to include `ReactCommon` in my Swift library's podspec, the following error arises: ``` [!] The following Swift pods cannot yet be integrated as static libraries: The Swift pod `VisionCamera` depends upon `RCT-Folly`, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies. ``` So this PR fixes this issue by allowing Swift libraries to consume the `ReactCommon` podspec since it now exports modular headers.
ReactCommon
to be used in Swift libraries (DEFINES_MODULE
)ReactCommon
/Folly
to be used in Swift libraries (DEFINES_MODULE
)
Base commit: bb33c10 |
Why do the tests fail and how can I reproduce this locally? |
@mrousavy it's just a syntax error: the line 37 of |
ah, whoops. thanks! |
Base commit: bb33c10 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @mrousavy, thanks for taking care of this. Could you please rebase on main
and fix the conflict?
This PR is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days. |
Will take care of apply the same changes on Monday, PR is pretty old, now...(2021) |
Hey - whoops sorry forgot to reply here for two years lol - I can rebase on Monday :) |
@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
facebook#31858) Summary: <!-- Thanks for submitting a pull request! We appreciate you spending the time to work on these changes. Please provide enough information so that others can review your pull request. The three fields below are mandatory. --> ## Summary Swift Pods require the use of [modular headers](https://blog.cocoapods.org/CocoaPods-1.5.0/) to be statically linked. To interop with Objective-C modules, you need to make the Objective-C module "define a Module", that is modular header export. This is already the case for a few podspecs so they can be consumed in Swift libraries, but `ReactCommon` and `RCT-Folly` don't do this yet and therefore this breaks in a few libraries of mine, for example see this issue: mrousavy/react-native-vision-camera#195. If I were to include `ReactCommon` or `RCT-Folly` in my Swift library's podspec, the following error arises: ``` [!] The following Swift pods cannot yet be integrated as static libraries: The Swift pod `VisionCamera` depends upon `RCT-Folly`, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies. ``` So this PR fixes this issue by allowing Swift libraries to consume the `ReactCommon` and `RCT-Folly` podspecs since they now export modular headers. ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> [General] [Fixed] - Expose Modular Headers for `ReactCommon` podspec [General] [Fixed] - Expose Modular Headers for `RCT-Folly` podspec Pull Request resolved: facebook#31858 Test Plan: * Add s.dependency "ReactCommon" or RCT-Folly to a Swift pod and see what happens. (See mrousavy/react-native-vision-camera#273) Differential Revision: D54539127 Pulled By: cipolleschi
@cipolleschi merged this pull request in 8769245. |
#43327) Summary: Pull Request resolved: #43327 <!-- Thanks for submitting a pull request! We appreciate you spending the time to work on these changes. Please provide enough information so that others can review your pull request. The three fields below are mandatory. --> ## Summary Swift Pods require the use of [modular headers](https://blog.cocoapods.org/CocoaPods-1.5.0/) to be statically linked. To interop with Objective-C modules, you need to make the Objective-C module "define a Module", that is modular header export. This is already the case for a few podspecs so they can be consumed in Swift libraries, but `ReactCommon` and `RCT-Folly` don't do this yet and therefore this breaks in a few libraries of mine, for example see this issue: mrousavy/react-native-vision-camera#195. If I were to include `ReactCommon` or `RCT-Folly` in my Swift library's podspec, the following error arises: ``` [!] The following Swift pods cannot yet be integrated as static libraries: The Swift pod `VisionCamera` depends upon `RCT-Folly`, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies. ``` So this PR fixes this issue by allowing Swift libraries to consume the `ReactCommon` and `RCT-Folly` podspecs since they now export modular headers. ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> [General] [Fixed] - Expose Modular Headers for `ReactCommon` podspec [General] [Fixed] - Expose Modular Headers for `RCT-Folly` podspec Pull Request resolved: #31858 Test Plan: * Add s.dependency "ReactCommon" or RCT-Folly to a Swift pod and see what happens. (See mrousavy/react-native-vision-camera#273) Reviewed By: dmytrorykun Differential Revision: D54539127 Pulled By: cipolleschi fbshipit-source-id: 2291cc0c8d6675521b220b02ef0c3c6a3e73be38
Summary
Swift Pods require the use of modular headers to be statically linked. To interop with Objective-C modules, you need to make the Objective-C module "define a Module", that is modular header export.
This is already the case for a few podspecs so they can be consumed in Swift libraries, but
ReactCommon
andRCT-Folly
don't do this yet and therefore this breaks in a few libraries of mine, for example see this issue: mrousavy/react-native-vision-camera#195.If I were to include
ReactCommon
orRCT-Folly
in my Swift library's podspec, the following error arises:So this PR fixes this issue by allowing Swift libraries to consume the
ReactCommon
andRCT-Folly
podspecs since they now export modular headers.Changelog
[General] [Fixed] - Expose Modular Headers for
ReactCommon
podspec[General] [Fixed] - Expose Modular Headers for
RCT-Folly
podspecTest Plan
s.dependency "ReactCommon"
orRCT-Folly
to a Swift pod and see what happens. (See fix: Fix "Folly" include mrousavy/react-native-vision-camera#273)