From c05cb7645ddb7751a9b8a2ca91689d6a093b805e Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Fri, 20 May 2022 15:48:29 +0200 Subject: [PATCH 1/9] Move use flipper logic inside use_react_native --- packages/rn-tester/Podfile | 6 +- scripts/cocoapods/__tests__/flipper-test.rb | 91 ++++++--------------- scripts/cocoapods/flipper.rb | 71 ++++++++-------- scripts/react_native_pods.rb | 9 +- 4 files changed, 72 insertions(+), 105 deletions(-) diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index 91811ab85812..9181967e9010 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -20,6 +20,7 @@ def pods(options = {}) project 'RNTesterPods.xcodeproj' fabric_enabled = true + flipper_enabled = true hermes_enabled = ENV['USE_HERMES'] == '1' puts "Building RNTester with Fabric #{fabric_enabled ? "enabled" : "disabled"}.#{hermes_enabled ? " Using Hermes engine." : ""}" @@ -32,8 +33,10 @@ def pods(options = {}) path: @prefix_path, fabric_enabled: fabric_enabled, hermes_enabled: hermes_enabled, + flipper_enabled: flipper_enabled, app_path: "#{Dir.pwd}", config_file_dir: "#{Dir.pwd}/node_modules", + production: !ENV['PRODUCTION'].nil? ) pod 'ReactCommon/turbomodule/samples', :path => "#{@prefix_path}/ReactCommon" @@ -48,9 +51,6 @@ end target 'RNTester' do pods() - if !USE_FRAMEWORKS - use_flipper! - end end target 'RNTesterUnitTests' do diff --git a/scripts/cocoapods/__tests__/flipper-test.rb b/scripts/cocoapods/__tests__/flipper-test.rb index 300d80406b48..ac8024623c7b 100644 --- a/scripts/cocoapods/__tests__/flipper-test.rb +++ b/scripts/cocoapods/__tests__/flipper-test.rb @@ -16,61 +16,25 @@ def setup # =========================== # # TEST - Install Dependencies # # =========================== # - def test_installFlipperDependencies_whenProductionIsFalse_installDependencies + def test_installFlipperDependencies_installDependencies # Act - install_flipper_dependencies(false, '../..') + install_flipper_dependencies('../..') # Assert assert_equal($podInvocationCount, 1) assert_equal($podInvocation['React-Core/DevSupport'][:path], "../../" ) end - def test_installFlipperDependencies_whenProductionIsTrue_skipDependencies - # Act - install_flipper_dependencies(true, '../..') - - # Assert - assert_equal($podInvocationCount, 0) - assert_true($podInvocation.empty?) - end - # ======================= # # TEST - Use Flipper Pods # # ======================= # def test_UseFlipperPods_WithDefaultValues_InstallsPods - # Arrange - configurations = ['Debug'] - # Act use_flipper_pods() # Assert - check_all_flipper_pods($flipper_default_versions, configurations) - # the number of times the `pod` function has been invoked to install a dependency - assert_equal($podInvocationCount, 22) - end - - def test_UseFlipperPods_WithCustomValues_InstallsPods - # Arrange - versions = { - "Flipper" => "1.0.0", - "Flipper-Boost-iOSX" => "1.1.0", - "Flipper-DoubleConversion" => "1.1.1", - "Flipper-Fmt" => "1.2.1", - "Flipper-Folly" => "2.1.1", - "Flipper-Glog" => "0.1.2", - "Flipper-PeerTalk" => "0.0.1", - "Flipper-RSocket" => "0.1.4", - "OpenSSL-Universal" => "2.2.2200", - } - configurations = ['Debug', 'CI'] - - # Act - use_flipper_pods(versions, :configurations => configurations) - - # Assert - check_all_flipper_pods(versions, configurations) + check_all_flipper_pods($flipper_default_versions) # the number of times the `pod` function has been invoked to install a dependency assert_equal($podInvocationCount, 22) end @@ -106,35 +70,34 @@ def test_postInstall_updatesThePodCorrectly # HELPERS # # ======= # - def check_all_flipper_pods(versions, configurations) - check_flipper_pod('Flipper', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FlipperKitReactPlugin', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/Core', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/CppBridge', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FBDefines', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FKPortForwarding', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], configurations) - check_flipper_pod('FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], configurations) - check_flipper_pod('Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX'], configurations) - check_flipper_pod('Flipper-DoubleConversion', versions['Flipper-DoubleConversion'], configurations) - check_flipper_pod('Flipper-Fmt', versions['Flipper-Fmt'], configurations) - check_flipper_pod('Flipper-Folly', versions['Flipper-Folly'], configurations) - check_flipper_pod('Flipper-Glog', versions['Flipper-Glog'], configurations) - check_flipper_pod('Flipper-PeerTalk', versions['Flipper-PeerTalk'], configurations) - check_flipper_pod('Flipper-RSocket', versions['Flipper-RSocket'], configurations) - check_flipper_pod('OpenSSL-Universal', versions['OpenSSL-Universal'], configurations) + def check_all_flipper_pods(versions) + check_flipper_pod('Flipper', versions['Flipper']) + check_flipper_pod('FlipperKit', versions['Flipper']) + check_flipper_pod('FlipperKit/FlipperKitLayoutPlugin', versions['Flipper']) + check_flipper_pod('FlipperKit/SKIOSNetworkPlugin', versions['Flipper']) + check_flipper_pod('FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper']) + check_flipper_pod('FlipperKit/FlipperKitReactPlugin', versions['Flipper']) + check_flipper_pod('FlipperKit/Core', versions['Flipper']) + check_flipper_pod('FlipperKit/CppBridge', versions['Flipper']) + check_flipper_pod('FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper']) + check_flipper_pod('FlipperKit/FBDefines', versions['Flipper']) + check_flipper_pod('FlipperKit/FKPortForwarding', versions['Flipper']) + check_flipper_pod('FlipperKit/FlipperKitHighlightOverlay', versions['Flipper']) + check_flipper_pod('FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper']) + check_flipper_pod('FlipperKit/FlipperKitNetworkPlugin', versions['Flipper']) + check_flipper_pod('Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX']) + check_flipper_pod('Flipper-DoubleConversion', versions['Flipper-DoubleConversion']) + check_flipper_pod('Flipper-Fmt', versions['Flipper-Fmt']) + check_flipper_pod('Flipper-Folly', versions['Flipper-Folly']) + check_flipper_pod('Flipper-Glog', versions['Flipper-Glog']) + check_flipper_pod('Flipper-PeerTalk', versions['Flipper-PeerTalk']) + check_flipper_pod('Flipper-RSocket', versions['Flipper-RSocket']) + check_flipper_pod('OpenSSL-Universal', versions['OpenSSL-Universal']) end - def check_flipper_pod(name, expectedVersion, expectedConfigurations) + def check_flipper_pod(name, expectedVersion) params = $podInvocation[name] assert_equal(params[:version], expectedVersion) - assert_equal(params[:configurations], expectedConfigurations) end def prepare_mocked_installer diff --git a/scripts/cocoapods/flipper.rb b/scripts/cocoapods/flipper.rb index 798eb0f0457d..5055fd135d23 100644 --- a/scripts/cocoapods/flipper.rb +++ b/scripts/cocoapods/flipper.rb @@ -22,10 +22,8 @@ # # @parameter production: a boolean that indicates whether we are in production or not. # @parameter pathToReactNative: the path to the React Native installation -def install_flipper_dependencies(production, pathToReactNative) - unless production - pod 'React-Core/DevSupport', :path => "#{pathToReactNative}/" - end +def install_flipper_dependencies(pathToReactNative) + pod 'React-Core/DevSupport', :path => "#{pathToReactNative}/" end @@ -33,40 +31,41 @@ def install_flipper_dependencies(production, pathToReactNative) # # @parameter versions: a dictionary to specify a version of a dependencies. Default versions will be used if not specified # @parameter configurations: an array of configurations to install the flipper dependencies. Defaults to ['Debug']. -def use_flipper_pods(versions = {}, configurations: ['Debug']) - versions['Flipper'] ||= $flipper_default_versions['Flipper'] - versions['Flipper-Boost-iOSX'] ||= $flipper_default_versions['Flipper-Boost-iOSX'] - versions['Flipper-DoubleConversion'] ||= $flipper_default_versions['Flipper-DoubleConversion'] - versions['Flipper-Fmt'] ||= $flipper_default_versions['Flipper-Fmt'] - versions['Flipper-Folly'] ||= $flipper_default_versions['Flipper-Folly'] - versions['Flipper-Glog'] ||= $flipper_default_versions['Flipper-Glog'] - versions['Flipper-PeerTalk'] ||= $flipper_default_versions['Flipper-PeerTalk'] - versions['Flipper-RSocket'] ||= $flipper_default_versions['Flipper-RSocket'] - versions['OpenSSL-Universal'] ||= $flipper_default_versions['OpenSSL-Universal'] - pod 'FlipperKit', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configurations => configurations +def use_flipper_pods() + versions = {} + versions['Flipper'] = $flipper_default_versions['Flipper'] + versions['Flipper-Boost-iOSX'] = $flipper_default_versions['Flipper-Boost-iOSX'] + versions['Flipper-DoubleConversion'] = $flipper_default_versions['Flipper-DoubleConversion'] + versions['Flipper-Fmt'] = $flipper_default_versions['Flipper-Fmt'] + versions['Flipper-Folly'] = $flipper_default_versions['Flipper-Folly'] + versions['Flipper-Glog'] = $flipper_default_versions['Flipper-Glog'] + versions['Flipper-PeerTalk'] = $flipper_default_versions['Flipper-PeerTalk'] + versions['Flipper-RSocket'] = $flipper_default_versions['Flipper-RSocket'] + versions['OpenSSL-Universal'] = $flipper_default_versions['OpenSSL-Universal'] + pod 'FlipperKit', versions['Flipper'] + pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'] + pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'] + pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'] + pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'] # List all transitive dependencies for FlipperKit pods # to avoid them being linked in Release builds - pod 'Flipper', versions['Flipper'], :configurations => configurations - pod 'Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX'], :configurations => configurations - pod 'Flipper-DoubleConversion', versions['Flipper-DoubleConversion'], :configurations => configurations - pod 'Flipper-Fmt', versions['Flipper-Fmt'], :configurations => configurations - pod 'Flipper-Folly', versions['Flipper-Folly'], :configurations => configurations - pod 'Flipper-Glog', versions['Flipper-Glog'], :configurations => configurations - pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configurations => configurations - pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configurations => configurations - pod 'FlipperKit/Core', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/CppBridge', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FBDefines', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configurations => configurations - pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configurations => configurations - pod 'OpenSSL-Universal', versions['OpenSSL-Universal'], :configurations => configurations + pod 'Flipper', versions['Flipper'] + pod 'Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX'] + pod 'Flipper-DoubleConversion', versions['Flipper-DoubleConversion'] + pod 'Flipper-Fmt', versions['Flipper-Fmt'] + pod 'Flipper-Folly', versions['Flipper-Folly'] + pod 'Flipper-Glog', versions['Flipper-Glog'] + pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'] + pod 'Flipper-RSocket', versions['Flipper-RSocket'] + pod 'FlipperKit/Core', versions['Flipper'] + pod 'FlipperKit/CppBridge', versions['Flipper'] + pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'] + pod 'FlipperKit/FBDefines', versions['Flipper'] + pod 'FlipperKit/FKPortForwarding', versions['Flipper'] + pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'] + pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'] + pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'] + pod 'OpenSSL-Universal', versions['OpenSSL-Universal'] end # Applies some changes to some pods of the project: diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index 52a18c6a3e2a..c5e2f916a812 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -33,6 +33,8 @@ def use_react_native! (options={}) # Include Hermes dependencies hermes_enabled = options[:hermes_enabled] ||= false + use_flipper = (options[:flipper_enabled] ||= false) && !production + if `/usr/sbin/sysctl -n hw.optional.arm64 2>&1`.to_i == 1 && !RUBY_PLATFORM.include?('arm64') Pod::UI.warn 'Do not use "pod install" from inside Rosetta2 (x86_64 emulation on arm64).' Pod::UI.warn ' - Emulated x86_64 is slower than native arm64' @@ -59,8 +61,6 @@ def use_react_native! (options={}) pod 'React-RCTVibration', :path => "#{prefix}/Libraries/Vibration" pod 'React-Core/RCTWebSocket', :path => "#{prefix}/" - install_flipper_dependencies(production, prefix) - pod 'React-bridging', :path => "#{prefix}/ReactCommon/react/bridging" pod 'React-cxxreact', :path => "#{prefix}/ReactCommon/cxxreact" pod 'React-jsi', :path => "#{prefix}/ReactCommon/jsi" @@ -108,6 +108,11 @@ def use_react_native! (options={}) pod 'libevent', '~> 2.1.12' end + if use_flipper + install_flipper_dependencies(prefix) + use_flipper_pods() + end + pods_to_update = LocalPodspecPatch.pods_to_update(options) if !pods_to_update.empty? if Pod::Lockfile.public_instance_methods.include?(:detect_changes_with_podfile) From c3d8783450dfe5f7fbedc237a49fa46774df4a22 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Fri, 20 May 2022 19:40:07 +0200 Subject: [PATCH 2/9] Add configuration for flipper --- packages/rn-tester/Podfile | 3 +- scripts/cocoapods/__tests__/flipper-test.rb | 80 ++++++++++++------- scripts/cocoapods/flipper.rb | 85 +++++++++++++-------- scripts/react_native_pods.rb | 7 +- 4 files changed, 111 insertions(+), 64 deletions(-) diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index 9181967e9010..ef2a845e90a1 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -20,7 +20,6 @@ def pods(options = {}) project 'RNTesterPods.xcodeproj' fabric_enabled = true - flipper_enabled = true hermes_enabled = ENV['USE_HERMES'] == '1' puts "Building RNTester with Fabric #{fabric_enabled ? "enabled" : "disabled"}.#{hermes_enabled ? " Using Hermes engine." : ""}" @@ -33,7 +32,7 @@ def pods(options = {}) path: @prefix_path, fabric_enabled: fabric_enabled, hermes_enabled: hermes_enabled, - flipper_enabled: flipper_enabled, + flipper_configuration: FlipperConfiguation.enabled, app_path: "#{Dir.pwd}", config_file_dir: "#{Dir.pwd}/node_modules", production: !ENV['PRODUCTION'].nil? diff --git a/scripts/cocoapods/__tests__/flipper-test.rb b/scripts/cocoapods/__tests__/flipper-test.rb index ac8024623c7b..a260d4ea50a7 100644 --- a/scripts/cocoapods/__tests__/flipper-test.rb +++ b/scripts/cocoapods/__tests__/flipper-test.rb @@ -18,7 +18,7 @@ def setup # =========================== # def test_installFlipperDependencies_installDependencies # Act - install_flipper_dependencies('../..') + install_flipper_dependencies(false, '../..') # Assert assert_equal($podInvocationCount, 1) @@ -30,11 +30,38 @@ def test_installFlipperDependencies_installDependencies # ======================= # def test_UseFlipperPods_WithDefaultValues_InstallsPods + # Arrange + configurations = ['Debug'] + # Act use_flipper_pods() # Assert - check_all_flipper_pods($flipper_default_versions) + check_all_flipper_pods($flipper_default_versions, configurations) + # the number of times the `pod` function has been invoked to install a dependency + assert_equal($podInvocationCount, 22) + end + + def test_UseFlipperPods_WithCustomValues_InstallsPods + # Arrange + versions = { + "Flipper" => "1.0.0", + "Flipper-Boost-iOSX" => "1.1.0", + "Flipper-DoubleConversion" => "1.1.1", + "Flipper-Fmt" => "1.2.1", + "Flipper-Folly" => "2.1.1", + "Flipper-Glog" => "0.1.2", + "Flipper-PeerTalk" => "0.0.1", + "Flipper-RSocket" => "0.1.4", + "OpenSSL-Universal" => "2.2.2200", + } + configurations = ['Debug', 'CI'] + + # Act + use_flipper_pods(versions, :configurations => configurations) + + # Assert + check_all_flipper_pods(versions, configurations) # the number of times the `pod` function has been invoked to install a dependency assert_equal($podInvocationCount, 22) end @@ -70,34 +97,35 @@ def test_postInstall_updatesThePodCorrectly # HELPERS # # ======= # - def check_all_flipper_pods(versions) - check_flipper_pod('Flipper', versions['Flipper']) - check_flipper_pod('FlipperKit', versions['Flipper']) - check_flipper_pod('FlipperKit/FlipperKitLayoutPlugin', versions['Flipper']) - check_flipper_pod('FlipperKit/SKIOSNetworkPlugin', versions['Flipper']) - check_flipper_pod('FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper']) - check_flipper_pod('FlipperKit/FlipperKitReactPlugin', versions['Flipper']) - check_flipper_pod('FlipperKit/Core', versions['Flipper']) - check_flipper_pod('FlipperKit/CppBridge', versions['Flipper']) - check_flipper_pod('FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper']) - check_flipper_pod('FlipperKit/FBDefines', versions['Flipper']) - check_flipper_pod('FlipperKit/FKPortForwarding', versions['Flipper']) - check_flipper_pod('FlipperKit/FlipperKitHighlightOverlay', versions['Flipper']) - check_flipper_pod('FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper']) - check_flipper_pod('FlipperKit/FlipperKitNetworkPlugin', versions['Flipper']) - check_flipper_pod('Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX']) - check_flipper_pod('Flipper-DoubleConversion', versions['Flipper-DoubleConversion']) - check_flipper_pod('Flipper-Fmt', versions['Flipper-Fmt']) - check_flipper_pod('Flipper-Folly', versions['Flipper-Folly']) - check_flipper_pod('Flipper-Glog', versions['Flipper-Glog']) - check_flipper_pod('Flipper-PeerTalk', versions['Flipper-PeerTalk']) - check_flipper_pod('Flipper-RSocket', versions['Flipper-RSocket']) - check_flipper_pod('OpenSSL-Universal', versions['OpenSSL-Universal']) + def check_all_flipper_pods(versions, configurations) + check_flipper_pod('Flipper', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FlipperKitReactPlugin', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/Core', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/CppBridge', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FBDefines', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FKPortForwarding', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], configurations) + check_flipper_pod('FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], configurations) + check_flipper_pod('Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX'], configurations) + check_flipper_pod('Flipper-DoubleConversion', versions['Flipper-DoubleConversion'], configurations) + check_flipper_pod('Flipper-Fmt', versions['Flipper-Fmt'], configurations) + check_flipper_pod('Flipper-Folly', versions['Flipper-Folly'], configurations) + check_flipper_pod('Flipper-Glog', versions['Flipper-Glog'], configurations) + check_flipper_pod('Flipper-PeerTalk', versions['Flipper-PeerTalk'], configurations) + check_flipper_pod('Flipper-RSocket', versions['Flipper-RSocket'], configurations) + check_flipper_pod('OpenSSL-Universal', versions['OpenSSL-Universal'], configurations) end - def check_flipper_pod(name, expectedVersion) + def check_flipper_pod(name, expectedVersion, expectedConfigurations) params = $podInvocation[name] assert_equal(params[:version], expectedVersion) + assert_equal(params[:configurations], expectedConfigurations) end def prepare_mocked_installer diff --git a/scripts/cocoapods/flipper.rb b/scripts/cocoapods/flipper.rb index 5055fd135d23..62bb34b9473e 100644 --- a/scripts/cocoapods/flipper.rb +++ b/scripts/cocoapods/flipper.rb @@ -31,41 +31,40 @@ def install_flipper_dependencies(pathToReactNative) # # @parameter versions: a dictionary to specify a version of a dependencies. Default versions will be used if not specified # @parameter configurations: an array of configurations to install the flipper dependencies. Defaults to ['Debug']. -def use_flipper_pods() - versions = {} - versions['Flipper'] = $flipper_default_versions['Flipper'] - versions['Flipper-Boost-iOSX'] = $flipper_default_versions['Flipper-Boost-iOSX'] - versions['Flipper-DoubleConversion'] = $flipper_default_versions['Flipper-DoubleConversion'] - versions['Flipper-Fmt'] = $flipper_default_versions['Flipper-Fmt'] - versions['Flipper-Folly'] = $flipper_default_versions['Flipper-Folly'] - versions['Flipper-Glog'] = $flipper_default_versions['Flipper-Glog'] - versions['Flipper-PeerTalk'] = $flipper_default_versions['Flipper-PeerTalk'] - versions['Flipper-RSocket'] = $flipper_default_versions['Flipper-RSocket'] - versions['OpenSSL-Universal'] = $flipper_default_versions['OpenSSL-Universal'] - pod 'FlipperKit', versions['Flipper'] - pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'] - pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'] - pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'] - pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'] +def use_flipper_pods(versions = {}, configurations: ['Debug']) + versions['Flipper'] ||= $flipper_default_versions['Flipper'] + versions['Flipper-Boost-iOSX'] ||= $flipper_default_versions['Flipper-Boost-iOSX'] + versions['Flipper-DoubleConversion'] ||= $flipper_default_versions['Flipper-DoubleConversion'] + versions['Flipper-Fmt'] ||= $flipper_default_versions['Flipper-Fmt'] + versions['Flipper-Folly'] ||= $flipper_default_versions['Flipper-Folly'] + versions['Flipper-Glog'] ||= $flipper_default_versions['Flipper-Glog'] + versions['Flipper-PeerTalk'] ||= $flipper_default_versions['Flipper-PeerTalk'] + versions['Flipper-RSocket'] ||= $flipper_default_versions['Flipper-RSocket'] + versions['OpenSSL-Universal'] ||= $flipper_default_versions['OpenSSL-Universal'] + pod 'FlipperKit', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configurations => configurations # List all transitive dependencies for FlipperKit pods # to avoid them being linked in Release builds - pod 'Flipper', versions['Flipper'] - pod 'Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX'] - pod 'Flipper-DoubleConversion', versions['Flipper-DoubleConversion'] - pod 'Flipper-Fmt', versions['Flipper-Fmt'] - pod 'Flipper-Folly', versions['Flipper-Folly'] - pod 'Flipper-Glog', versions['Flipper-Glog'] - pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'] - pod 'Flipper-RSocket', versions['Flipper-RSocket'] - pod 'FlipperKit/Core', versions['Flipper'] - pod 'FlipperKit/CppBridge', versions['Flipper'] - pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'] - pod 'FlipperKit/FBDefines', versions['Flipper'] - pod 'FlipperKit/FKPortForwarding', versions['Flipper'] - pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'] - pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'] - pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'] - pod 'OpenSSL-Universal', versions['OpenSSL-Universal'] + pod 'Flipper', versions['Flipper'], :configurations => configurations + pod 'Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX'], :configurations => configurations + pod 'Flipper-DoubleConversion', versions['Flipper-DoubleConversion'], :configurations => configurations + pod 'Flipper-Fmt', versions['Flipper-Fmt'], :configurations => configurations + pod 'Flipper-Folly', versions['Flipper-Folly'], :configurations => configurations + pod 'Flipper-Glog', versions['Flipper-Glog'], :configurations => configurations + pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configurations => configurations + pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configurations => configurations + pod 'FlipperKit/Core', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/CppBridge', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FBDefines', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configurations => configurations + pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configurations => configurations + pod 'OpenSSL-Universal', versions['OpenSSL-Universal'], :configurations => configurations end # Applies some changes to some pods of the project: @@ -91,3 +90,23 @@ def flipper_post_install(installer) end end end + +class FlipperConfiguation + attr_reader :flipper_enabled + attr_reader :configurations + attr_reader :versions + + def initialize(flipper_enabled, configurations, versions) + @flipper_enabled = flipper_enabled + @configurations = configurations + @versions = versions + end + + def self.enabled(configurations = ["Debug"], versions = {}) + return FlipperConfiguation.new(true, configurations, versions) + end + + def self.disabled + return FlipperConfiguation.new(false, [], {}) + end +end diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index c5e2f916a812..c29e79759380 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -33,7 +33,7 @@ def use_react_native! (options={}) # Include Hermes dependencies hermes_enabled = options[:hermes_enabled] ||= false - use_flipper = (options[:flipper_enabled] ||= false) && !production + flipper_configuration = options[:flipper_configuration] ||= FlipperConfiguation.disabled if `/usr/sbin/sysctl -n hw.optional.arm64 2>&1`.to_i == 1 && !RUBY_PLATFORM.include?('arm64') Pod::UI.warn 'Do not use "pod install" from inside Rosetta2 (x86_64 emulation on arm64).' @@ -108,9 +108,9 @@ def use_react_native! (options={}) pod 'libevent', '~> 2.1.12' end - if use_flipper + if flipper_configuration.flipper_enabled install_flipper_dependencies(prefix) - use_flipper_pods() + use_flipper_pods(flipper_configuration.versions, :configurations => flipper_configuration.configurations) end pods_to_update = LocalPodspecPatch.pods_to_update(options) @@ -127,6 +127,7 @@ def get_default_flags() flags = { :fabric_enabled => false, :hermes_enabled => false, + :flipper_configuration => FlipperConfiguation.disabled } if ENV['RCT_NEW_ARCH_ENABLED'] == '1' From fdd92c884f1aad06c84df483cffe40a16647a44e Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Fri, 20 May 2022 19:41:11 +0200 Subject: [PATCH 3/9] Fix tests --- scripts/cocoapods/__tests__/flipper-test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cocoapods/__tests__/flipper-test.rb b/scripts/cocoapods/__tests__/flipper-test.rb index a260d4ea50a7..60961b8050f0 100644 --- a/scripts/cocoapods/__tests__/flipper-test.rb +++ b/scripts/cocoapods/__tests__/flipper-test.rb @@ -18,7 +18,7 @@ def setup # =========================== # def test_installFlipperDependencies_installDependencies # Act - install_flipper_dependencies(false, '../..') + install_flipper_dependencies('../..') # Assert assert_equal($podInvocationCount, 1) From 0bc843f32d41fab8cd8dce453b36137db3e7a8a4 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Mon, 23 May 2022 10:19:16 +0200 Subject: [PATCH 4/9] Disable flipper if USE_FRAMEWORK is enabled --- packages/rn-tester/Podfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index ef2a845e90a1..9c8e69302a39 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -32,7 +32,7 @@ def pods(options = {}) path: @prefix_path, fabric_enabled: fabric_enabled, hermes_enabled: hermes_enabled, - flipper_configuration: FlipperConfiguation.enabled, + flipper_configuration: USE_FRAMEWORKS ? FlipperConfiguation.disabled : FlipperConfiguation.enabled, app_path: "#{Dir.pwd}", config_file_dir: "#{Dir.pwd}/node_modules", production: !ENV['PRODUCTION'].nil? From 7be8a3eec1eebc46dc0fb81eec4d62aeaed7f928 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Mon, 23 May 2022 10:25:39 +0200 Subject: [PATCH 5/9] Add production flag --- scripts/react_native_pods.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index c29e79759380..5a55b4854414 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -108,7 +108,7 @@ def use_react_native! (options={}) pod 'libevent', '~> 2.1.12' end - if flipper_configuration.flipper_enabled + if flipper_configuration.flipper_enabled && !production install_flipper_dependencies(prefix) use_flipper_pods(flipper_configuration.versions, :configurations => flipper_configuration.configurations) end From 3e9545fcdf550f1f27a4dd20d443489bce4d9245 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Mon, 23 May 2022 10:45:35 +0200 Subject: [PATCH 6/9] Update template --- template/ios/Podfile | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/template/ios/Podfile b/template/ios/Podfile index c814edb8d9d0..62944f81df37 100644 --- a/template/ios/Podfile +++ b/template/ios/Podfile @@ -16,6 +16,11 @@ target 'HelloWorld' do # You can enabled/disable it manually by replacing `flags[:hermes_enabled]` with `true` or `false`. :hermes_enabled => flags[:hermes_enabled], :fabric_enabled => flags[:fabric_enabled], + # Enables Flipper. + # + # Note that if you have use_frameworks! enabled, Flipper will not work and + # you should disable the next line. + :flipper_configuration => FlipperConfiguation.enabled, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) @@ -25,12 +30,6 @@ target 'HelloWorld' do # Pods for testing end - # Enables Flipper. - # - # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable the next line. - use_flipper!() - post_install do |installer| react_native_post_install(installer) __apply_Xcode_12_5_M1_post_install_workaround(installer) From 543f1d8b243e2270a419f4dd41124dfcae252659 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Mon, 23 May 2022 11:51:35 +0200 Subject: [PATCH 7/9] Fix typo Co-authored-by: Lorenzo Sciandra --- packages/rn-tester/Podfile | 2 +- scripts/cocoapods/flipper.rb | 6 +++--- scripts/react_native_pods.rb | 4 ++-- template/ios/Podfile | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index 9c8e69302a39..0f9a1ab1d18e 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -32,7 +32,7 @@ def pods(options = {}) path: @prefix_path, fabric_enabled: fabric_enabled, hermes_enabled: hermes_enabled, - flipper_configuration: USE_FRAMEWORKS ? FlipperConfiguation.disabled : FlipperConfiguation.enabled, + flipper_configuration: USE_FRAMEWORKS ? Flipper Configuration.disabled : FlipperConfiguration.enabled, app_path: "#{Dir.pwd}", config_file_dir: "#{Dir.pwd}/node_modules", production: !ENV['PRODUCTION'].nil? diff --git a/scripts/cocoapods/flipper.rb b/scripts/cocoapods/flipper.rb index 62bb34b9473e..965a20060b0a 100644 --- a/scripts/cocoapods/flipper.rb +++ b/scripts/cocoapods/flipper.rb @@ -91,7 +91,7 @@ def flipper_post_install(installer) end end -class FlipperConfiguation +class FlipperConfiguration attr_reader :flipper_enabled attr_reader :configurations attr_reader :versions @@ -103,10 +103,10 @@ def initialize(flipper_enabled, configurations, versions) end def self.enabled(configurations = ["Debug"], versions = {}) - return FlipperConfiguation.new(true, configurations, versions) + return FlipperConfiguration.new(true, configurations, versions) end def self.disabled - return FlipperConfiguation.new(false, [], {}) + return FlipperConfiguration.new(false, [], {}) end end diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index 5a55b4854414..1a24e8aa4e0e 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -33,7 +33,7 @@ def use_react_native! (options={}) # Include Hermes dependencies hermes_enabled = options[:hermes_enabled] ||= false - flipper_configuration = options[:flipper_configuration] ||= FlipperConfiguation.disabled + flipper_configuration = options[:flipper_configuration] ||= FlipperConfiguration.disabled if `/usr/sbin/sysctl -n hw.optional.arm64 2>&1`.to_i == 1 && !RUBY_PLATFORM.include?('arm64') Pod::UI.warn 'Do not use "pod install" from inside Rosetta2 (x86_64 emulation on arm64).' @@ -127,7 +127,7 @@ def get_default_flags() flags = { :fabric_enabled => false, :hermes_enabled => false, - :flipper_configuration => FlipperConfiguation.disabled + :flipper_configuration => FlipperConfiguration.disabled } if ENV['RCT_NEW_ARCH_ENABLED'] == '1' diff --git a/template/ios/Podfile b/template/ios/Podfile index 62944f81df37..938146d23e83 100644 --- a/template/ios/Podfile +++ b/template/ios/Podfile @@ -20,7 +20,7 @@ target 'HelloWorld' do # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. - :flipper_configuration => FlipperConfiguation.enabled, + :flipper_configuration => FlipperConfiguration.enabled, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) From b2d71d50e6786741a0204b21514abefe55c3f7f7 Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Mon, 23 May 2022 12:03:41 +0200 Subject: [PATCH 8/9] Fix space from previous commit --- packages/rn-tester/Podfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index 0f9a1ab1d18e..116fdb9e4706 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -32,7 +32,7 @@ def pods(options = {}) path: @prefix_path, fabric_enabled: fabric_enabled, hermes_enabled: hermes_enabled, - flipper_configuration: USE_FRAMEWORKS ? Flipper Configuration.disabled : FlipperConfiguration.enabled, + flipper_configuration: USE_FRAMEWORKS ? FlipperConfiguration.disabled : FlipperConfiguration.enabled, app_path: "#{Dir.pwd}", config_file_dir: "#{Dir.pwd}/node_modules", production: !ENV['PRODUCTION'].nil? From b3a0bc686eeb8f76e3a670bf6921ed3afa6e9eeb Mon Sep 17 00:00:00 2001 From: Franco Meloni Date: Mon, 23 May 2022 19:58:21 +0200 Subject: [PATCH 9/9] Add warning for use_flipper --- scripts/react_native_pods.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index 1a24e8aa4e0e..420be1c03e5f 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -139,6 +139,7 @@ def get_default_flags() end def use_flipper!(versions = {}, configurations: ['Debug']) + Pod::UI.warn "use_flipper is deprecated, use the flipper_configuration option in the use_react_native function" use_flipper_pods(versions, :configurations => configurations) end