Skip to content

Commit

Permalink
[iOS] Update podspec to use install_modules_dependencies (#2635)
Browse files Browse the repository at this point in the history
This change updates the RNGestureHandler.podspec to consume the
`install_modules_dependencies` function provided by React Native to
configure the pods dependencies.
Thanks to using this function, whenever we update the function in React
Native, the library will automatically benefit from it.
This will make the library more future proof and more resilient to
changes in React Native

This allow RNGestureHandler to work also with frameworks, as before the
change, it failed to build when `use_frameworks!` was set in RN 0.72.x

## Test plan

Tested locally:

Before changes
1. Created a new app with `npx react-native init RNFrameworks --version
latest --skip-install`
1. `cd RNFrameworks`
1. `yarn add react-native-gesture-handler`
1. `yarn install`
1. `cd ios`
1. `NO_FLIPPER=1 USE_FRAMEWORKS=static RCT_NEW_ARCH_ENABLED=1 bundle
exec pod install`
1. `open RNFrameworks`
1. build and run and observe it failing because it can't find files in
react/utils and react/debug

After Changes
1. Reinstall pods `NO_FLIPPER=1 USE_FRAMEWORKS=static
RCT_NEW_ARCH_ENABLED=1 bundle exec pod install`
1. `open RNFrameworks`
1. build and run and observe it succeeding
  • Loading branch information
cipolleschi committed Oct 16, 2023
1 parent a0506c0 commit 2300af7
Showing 1 changed file with 28 additions and 19 deletions.
47 changes: 28 additions & 19 deletions RNGestureHandler.podspec
Original file line number Diff line number Diff line change
@@ -1,29 +1,18 @@
require "json"

fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
apple_platform = new_arch_enabled ? '11.0' : '9.0'

Pod::Spec.new do |s|
# NPM package specification
package = JSON.parse(File.read(File.join(File.dirname(__FILE__), "package.json")))

s.name = "RNGestureHandler"
s.version = package["version"]
s.summary = package["description"]
s.homepage = "https://github.com/software-mansion/react-native-gesture-handler"
s.license = "MIT"
s.author = { package["author"]["name"] => package["author"]["email"] }
s.source = { :git => "https://github.com/software-mansion/react-native-gesture-handler", :tag => "#{s.version}" }
s.source_files = "ios/**/*.{h,m,mm}"
s.requires_arc = true

if fabric_enabled
# Utility function to install dependencies if React Native's
# install_modules_dependencies is not defined
def install_dependencies(s, new_arch_enabled)
if new_arch_enabled
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'

s.pod_target_xcconfig = {
'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/boost" "$(PODS_ROOT)/boost-for-react-native" "$(PODS_ROOT)/RCT-Folly"',
'CLANG_CXX_LANGUAGE_STANDARD' => 'c++17',
}
s.platforms = { ios: '11.0', tvos: '11.0' }
s.compiler_flags = folly_compiler_flags + ' -DRCT_NEW_ARCH_ENABLED'

s.dependency "React"
Expand All @@ -34,8 +23,28 @@ Pod::Spec.new do |s|
s.dependency "RCTTypeSafety"
s.dependency "ReactCommon/turbomodule/core"
else
s.platforms = { :ios => "9.0", :tvos => "9.0" }

s.dependency "React-Core"
end
end

Pod::Spec.new do |s|
# NPM package specification
package = JSON.parse(File.read(File.join(File.dirname(__FILE__), "package.json")))

s.name = "RNGestureHandler"
s.version = package["version"]
s.summary = package["description"]
s.homepage = "https://github.com/software-mansion/react-native-gesture-handler"
s.license = "MIT"
s.author = { package["author"]["name"] => package["author"]["email"] }
s.source = { :git => "https://github.com/software-mansion/react-native-gesture-handler", :tag => "#{s.version}" }
s.source_files = "ios/**/*.{h,m,mm}"
s.requires_arc = true
s.platforms = { ios: apple_platform, tvos: apple_platform }

if defined?(install_modules_dependencies()) != nil
install_modules_dependencies(s);
else
install_dependencies(s, new_arch_enabled)
end
end

0 comments on commit 2300af7

Please sign in to comment.