-
Notifications
You must be signed in to change notification settings - Fork 24.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
BREAKING - Update podspecs to support and default to the C++ bridge
Summary: This will require people who use CocoaPods to update their Podfiles. You can see an example of a Podfile set up to use the Cxx bridge here: https://github.com/mhorowitz/native-navigation-boilerplate/blob/master/ios/Podfile If this doesn't work, you can continue to use the old bridge by adding a dependency of 'BatchedBridge' to the React subspecs in your Podfile, but this will stop working once the old bridge is removed. Reviewed By: javache Differential Revision: D4981920 fbshipit-source-id: 7c4f3bf1c3f9af3f934f03ec003a05d0cd3cb259
- Loading branch information
1 parent
dd45e7e
commit 5aca739
Showing
4 changed files
with
135 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
Pod::Spec.new do |spec| | ||
spec.name = 'DoubleConversion' | ||
spec.version = '1.1.5' | ||
spec.license = { :type => 'BSD' } | ||
spec.homepage = 'https://github.com/google/double-conversion' | ||
spec.summary = 'Efficient binary-decimal and decimal-binary conversion routines for IEEE doubles' | ||
spec.authors = 'Google' | ||
spec.prepare_command = 'mv src double-conversion' | ||
spec.source = { :git => 'https://github.com/google/double-conversion.git', | ||
:tag => "v#{spec.version}" } | ||
spec.module_name = 'DoubleConversion' | ||
spec.source_files = 'double-conversion/*.{h,cc}' | ||
|
||
# Pinning to the same version as React.podspec. | ||
spec.platform = :ios, '8.0' | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
Pod::Spec.new do |spec| | ||
spec.name = 'Folly' | ||
spec.version = '2016.09.26.00' | ||
spec.license = { :type => 'Apache License, Version 2.0' } | ||
spec.homepage = 'https://github.com/facebook/folly' | ||
spec.summary = 'An open-source C++ library developed and used at Facebook.' | ||
spec.authors = 'Facebook' | ||
spec.source = { :git => 'https://github.com/facebook/folly.git', | ||
:tag => "v#{spec.version}" } | ||
spec.module_name = 'folly' | ||
spec.dependency 'boost' | ||
spec.dependency 'DoubleConversion' | ||
spec.dependency 'GLog' | ||
spec.compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1' | ||
spec.header_mappings_dir = 'folly' | ||
spec.source_files = 'folly/*.h', | ||
'folly/Bits.cpp', | ||
'folly/Conv.cpp', | ||
'folly/Demangle.cpp', | ||
# 'folly/File.cpp', | ||
'folly/StringBase.cpp', | ||
'folly/Unicode.cpp', | ||
'folly/dynamic.cpp', | ||
'folly/json.cpp' | ||
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO", | ||
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\"" } | ||
|
||
# Pinning to the same version as React.podspec. | ||
spec.platform = :ios, '8.0' | ||
|
||
spec.subspec "detail" do |ss| | ||
ss.header_dir = 'folly/detail' | ||
ss.source_files = 'folly/detail/*.h', | ||
'folly/detail/MallocImpl.cpp' | ||
end | ||
|
||
spec.subspec "portability" do |ss| | ||
ss.header_dir = 'folly/portability' | ||
ss.source_files = 'folly/portability/*.h', | ||
'folly/portability/BitsFunctexcept.cpp' | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
Pod::Spec.new do |spec| | ||
spec.name = 'GLog' | ||
spec.version = '0.3.4' | ||
spec.license = { :type => 'Google', :file => 'COPYING' } | ||
spec.homepage = 'https://github.com/google/glog' | ||
spec.summary = 'Google logging module' | ||
spec.authors = 'Google' | ||
|
||
spec.prepare_command = <<-CMD | ||
echo '#!/bin/sh' > ./ios-cc.sh | ||
echo 'exec "$(xcrun -find -sdk iphoneos cc)" -arch armv7 -isysroot "$(xcrun -sdk iphoneos --show-sdk-path)" "$@"' >> ./ios-cc.sh | ||
chmod 755 ./ios-cc.sh | ||
CC="`pwd`"/ios-cc.sh CXX="`pwd`"/ios-cc.sh ./configure --host arm-apple-darwin | ||
CMD | ||
|
||
spec.source = { :git => 'https://github.com/google/glog.git', | ||
:tag => "v#{spec.version}" } | ||
spec.module_name = 'glog' | ||
spec.source_files = 'src/**/*.h', | ||
'src/demangle.cc', | ||
'src/logging.cc', | ||
'src/raw_logging.cc', | ||
'src/signalhandler.cc', | ||
'src/symbolize.cc', | ||
'src/utilities.cc', | ||
'src/vlog_is_on.cc' | ||
spec.public_header_files = 'src/glog/*.h' | ||
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO", | ||
"HEADER_SEARCH_PATHS" => "$(PODS_TARGET_SRCROOT)/src" } | ||
|
||
# Pinning to the same version as React.podspec. | ||
spec.platform = :ios, '8.0' | ||
|
||
end |
5aca739
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.
Many thanks for updating the Podspec @mhorowitz :) Sometimes referred as the lonely child..
5aca739
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.
You're welcome @ptomasroos ! If you use CocoaPods, please test it. I have only been able to do limited testing.
5aca739
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.
Yes we do! Will give it a try @mhorowitz
5aca739
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.
I've updated my Podspec according to https://github.com/mhorowitz/native-navigation-boilerplate/blob/master/ios/Podfile have 25 errors
GLog errors:
Yoga errors:
DoubleConversation errors:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cstring:70:9: No member named 'memcpy' in the global namespace; did you mean 'wmemcpy'?
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cstring:71:9: No member named 'memmove' in the global namespace; did you mean 'wmemmove'?
5aca739
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.
@skv-headless those are surprising errors. If nothing else, I touched nothing in Yoga at all, and the code at https://github.com/facebook/react-native/blob/master/ReactCommon/yoga/yoga/Yoga.h#L13 and in the 0.45 rc branch has
#include <math.h>
in lower case. while your errors complain about it being upper-case. The mutex and limits errors imply some system header files are missing.What version of Xcode and CocoaPods are you using, and what platform are you targeting?
5aca739
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.
I've seen this issue too with Cocoapods when using
use_libraries
(i.e. with Swift). Cocoapods then puts everything on one include path and the system include for math.h ends up loading folly's Math.h5aca739
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.
@javache No offence but did you mean
use_frameworks!
?5aca739
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.
Yep, sorry, that one.
5aca739
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.
If you are using Cocoapods, you will have to update your Podfile by adding a dependency of ‘BatchedBridge’ or ‘CxxBridge’ to the React subspec depending on your choice.
Could you clarify how to add the dependency?
Thanks
5aca739
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.
@bernatfortet Take a look at the example here: https://github.com/mhorowitz/native-navigation-boilerplate/blob/master/ios/Podfile#L19
5aca739
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.
So given a pods file, it would end up like this:
...
addition:
...
5aca739
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.
Are you already using React Native and CocoaPods in your app? If not, https://github.com/lelandrichardson/native-navigation-boilerplate/blob/master/ios/Podfile#L12-L21 is a better example for how to get started. The additional
CxxBridge
subspec is the new thing, but you will likely need more than that, and you don't want to use a path like I did in my example, unless you're also doing development on React Native itself.5aca739
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, I'm having the same errors than @skv-headless.
I don't use use_frameworks!.
Any solutions for this?
5aca739
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, I'm getting Xcode compile error on Folly/Math.h 'limits' file not found. I have added the CxxBridge as subspecs to React pod.
Cocoapods version: 1.2.1
Xcode version: 8.3.3
5aca739
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.
@sivakumar-cf This issue is being tracked in #14326
5aca739
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.
I'm trying to upgrade a project from RN0.43 and having issues here.
All I had before was 1 third-party pod reference in my ios/Podfile - Nothing more.
So I think I just add this to my basic ios/Podfile:
Correct? (Or do I need all the other subspecs?)
If I do this, I suppose I need to do a 'pod install', either now or at some point...
But I get this error from
pod install
:ArgumentError - Malformed version number string https://registry.npmjs.org/react-native/-/react-native-0.45.1.tgz
Cocoapods requires a numeric version (Googling tells me that).
But
node_modules/react-native/React.podspec
seems to pull the version fromnode_modules/react-native/package.json
. And that has:I changed that to:
And
pod install
now runs happily.I still have problems ("undefined is not an object (evaluating 'ReactInternals.ReactCurrentOwner')"?)
But I think the non-numeric version string above is a problem for Cocoapods.
5aca739
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.
i am getting below errors .
5aca739
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.
@peternann's solution worked for me, but I lost Command + R at some point... any chance it could have been right here?
5aca739
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.
@GantMan make sure you have included
'DevSupport'
like this5aca739
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.
I did... I wound up just removing the 2 pod dependencies and going with linking the frameworks manually. Not ideal, but it fixed Command + R, and restored sanity.
5aca739
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.
Any fix for this? Unable to upgrade to 0.45 as I am using CocoaPods.
5aca739
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.
Any updates on this so we can move forward with 0.45? I'm starting a new project, and hate to start with 0.44 and then do an upgrade later. In the last project, I ended up dropping a dependency that asked for CocoaPods and went without it, sacrificing a bit, just because of this.
5aca739
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.
Have you tried the recommendation in the summary: "If this doesn't work, you can continue to use the old bridge by adding a dependency of 'BatchedBridge' to the React subspecs in your Podfile, but this will stop working once the old bridge is removed." This should allow you to remove the DoubleConversion, GLog, and Folly podspecs from your Podfile.
5aca739
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.
@mhorowitz Also tried using BatchedBridge but ended up having another error while building for ios. Don't remember which. Is it fixed in 0.46?
5aca739
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.
If you are having issues with CocoaPods and the CxxBridge, please comment on issue #14326 or if it seems to be a new problem, open a new issue. It will be easier if all the discussion is in one place. Thanks!