diff --git a/patches/expo-modules-core+1.1.1.patch b/patches/expo-modules-core+1.1.1.patch new file mode 100644 --- /dev/null +++ b/patches/expo-modules-core+1.1.1.patch @@ -0,0 +1,21 @@ +diff --git a/node_modules/expo-modules-core/ios/EXDefines.h b/node_modules/expo-modules-core/ios/EXDefines.h +index 33b4d72..91b639f 100644 +--- a/node_modules/expo-modules-core/ios/EXDefines.h ++++ b/node_modules/expo-modules-core/ios/EXDefines.h +@@ -10,6 +10,8 @@ + #define EX_EXTERN_C_END + #endif + ++#import ++ + EX_EXTERN_C_BEGIN + + #define EX_EXPORTED_METHODS_PREFIX __ex_export__ +@@ -79,7 +81,6 @@ if (var == nil) { return; } + #define EXNullIfNil(value) (value ?: [NSNull null]) + + #import +-#import + + typedef struct EXMethodInfo { + const char *const jsName; diff --git a/patches/react-native+0.70.8.patch b/patches/react-native+0.70.9.patch rename from patches/react-native+0.70.8.patch rename to patches/react-native+0.70.9.patch --- a/patches/react-native+0.70.8.patch +++ b/patches/react-native+0.70.9.patch @@ -59,7 +59,7 @@ index 92371bc..e991835 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.m +++ b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.m -@@ -164,8 +164,12 @@ - (void)setSelectedTextRange:(UITextRange *)selectedTextRange notifyDelegate:(BO +@@ -164,8 +164,12 @@ static UIColor *defaultPlaceholderColor() - (void)paste:(id)sender { @@ -74,7 +74,7 @@ } // Turn off scroll animation to fix flaky scrolling. -@@ -254,6 +258,10 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender +@@ -254,6 +258,10 @@ static UIColor *defaultPlaceholderColor() return NO; } @@ -111,7 +111,7 @@ @implementation RCTBaseTextInputView { __weak RCTBridge *_bridge; __weak id _eventDispatcher; -@@ -491,6 +493,46 @@ - (void)textInputDidChangeSelection +@@ -491,6 +493,46 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithFrame:(CGRect)frame) }); } @@ -162,7 +162,7 @@ index b1ecf85..3462f98 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.m +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.m -@@ -33,6 +33,7 @@ @implementation RCTBaseTextInputViewManager +@@ -33,6 +33,7 @@ RCT_EXPORT_MODULE() #pragma mark - Unified properties @@ -170,3 +170,93 @@ RCT_REMAP_VIEW_PROPERTY(autoCapitalize, backedTextInputView.autocapitalizationType, UITextAutocapitalizationType) RCT_REMAP_VIEW_PROPERTY(autoCorrect, backedTextInputView.autocorrectionType, UITextAutocorrectionType) RCT_REMAP_VIEW_PROPERTY(contextMenuHidden, backedTextInputView.contextMenuHidden, BOOL) +diff --git a/node_modules/react-native/sdks/hermes/hermes-engine.podspec b/node_modules/react-native/sdks/hermes/hermes-engine.podspec +new file mode 100644 +index 0000000..8d331e0 +--- /dev/null ++++ b/node_modules/react-native/sdks/hermes/hermes-engine.podspec +@@ -0,0 +1,84 @@ ++# Copyright (c) Meta Platforms, Inc. and affiliates. ++# ++# This source code is licensed under the MIT license found in the ++# LICENSE file in the root directory of this source tree. ++ ++require "json" ++require "open3" ++ ++# sdks/hermesc/osx-bin/ImportHermesc.cmake ++import_hermesc_file=File.join(__dir__, "..", "hermesc", "osx-bin", "ImportHermesc.cmake") ++ ++# package.json ++package_file = File.join(__dir__, "..", "..", "package.json") ++package = JSON.parse(File.read(package_file)) ++version = package['version'] ++ ++# We need to check the current git branch/remote to verify if ++# we're on a React Native release branch to actually build Hermes. ++currentbranch, err = Open3.capture3("git rev-parse --abbrev-ref HEAD") ++currentremote, err = Open3.capture3("git config --get remote.origin.url") ++ ++source = {} ++git = "https://github.com/facebook/hermes.git" ++ ++if ENV.has_key?('HERMES_ENGINE_TARBALL_PATH') ++ Pod::UI.puts '[Hermes] Using pre-built Hermes binaries from local path.' if Object.const_defined?("Pod::UI") ++ source[:http] = "file://#{ENV['HERMES_ENGINE_TARBALL_PATH']}" ++elsif version == '1000.0.0' ++ Pod::UI.puts '[Hermes] Hermes needs to be compiled, installing hermes-engine may take a while...'.yellow if Object.const_defined?("Pod::UI") ++ source[:git] = git ++ source[:commit] = `git ls-remote https://github.com/facebook/hermes main | cut -f 1`.strip ++elsif currentremote.strip.end_with?("facebook/react-native.git") and currentbranch.strip.end_with?("-stable") ++ Pod::UI.puts '[Hermes] Detected that you are on a React Native release branch, building Hermes from source...'.yellow if Object.const_defined?("Pod::UI") ++ hermestag_file = File.join(__dir__, "..", ".hermesversion") ++ hermestag = File.read(hermestag_file).strip ++ source[:git] = git ++ source[:tag] = hermestag ++else ++ source[:http] = "https://github.com/facebook/react-native/releases/download/v#{version}/hermes-runtime-darwin-v#{version}.tar.gz" ++end ++ ++module HermesHelper ++ # BUILD_TYPE = :debug ++ BUILD_TYPE = :release ++end ++ ++Pod::Spec.new do |spec| ++ spec.name = "hermes-engine" ++ spec.version = version ++ spec.summary = "Hermes is a small and lightweight JavaScript engine optimized for running React Native." ++ spec.description = "Hermes is a JavaScript engine optimized for fast start-up of React Native apps. It features ahead-of-time static optimization and compact bytecode." ++ spec.homepage = "https://hermesengine.dev" ++ spec.license = package["license"] ++ spec.author = "Facebook" ++ spec.source = source ++ spec.platforms = { :osx => "10.13", :ios => "12.4" } ++ ++ spec.preserve_paths = ["destroot/bin/*"].concat(HermesHelper::BUILD_TYPE == :debug ? ["**/*.{h,c,cpp}"] : []) ++ spec.source_files = "destroot/include/**/*.h" ++ spec.header_mappings_dir = "destroot/include" ++ ++ spec.ios.vendored_frameworks = "destroot/Library/Frameworks/universal/hermes.xcframework" ++ spec.osx.vendored_frameworks = "destroot/Library/Frameworks/macosx/hermes.framework" ++ ++ spec.xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++17", "CLANG_CXX_LIBRARY" => "compiler-default", "GCC_PREPROCESSOR_DEFINITIONS" => "HERMES_ENABLE_DEBUGGER=1" } ++ ++ if source[:git] then ++ spec.prepare_command = <<-EOS ++ # When true, debug build will be used. ++ # See `build-apple-framework.sh` for details ++ DEBUG=#{HermesHelper::BUILD_TYPE == :debug} ++ ++ # Set HERMES_OVERRIDE_HERMESC_PATH if pre-built HermesC is available ++ #{File.exist?(import_hermesc_file) ? "export HERMES_OVERRIDE_HERMESC_PATH=#{import_hermesc_file}" : ""} ++ #{File.exist?(import_hermesc_file) ? "echo \"Overriding HermesC path...\"" : ""} ++ ++ # Build iOS framework ++ ./utils/build-ios-framework.sh ++ ++ # Build Mac framework ++ ./utils/build-mac-framework.sh ++ EOS ++ end ++end