Files
upstream-jitsi-meet/ios/Podfile
upstream-mirror 1d2bfcac0c
Some checks failed
Prosody Plugin Tests / test (push) Failing after 10m11s
Close stale issues and PRs / stale (push) Failing after 1s
snapshot of https://github.com/jitsi/jitsi-meet.git @ fd1749dd28f4138aa80234fc7f311b19aaffa0e7 (2026-09-15)
2026-09-15 15:56:32 +05:00

166 lines
5.2 KiB
Ruby

# Resolve react_native_pods.rb with node to allow for hoisting.
require Pod::Executable.execute_command('node', ['-p',
'require.resolve(
"react-native/scripts/react_native_pods.rb",
{paths: [process.argv[1]]},
)', __dir__]).strip
platform :ios, '15.1'
workspace 'jitsi-meet'
ENV['RCT_NEW_ARCH_ENABLED'] = '1'
ENV['RCT_HERMES_V1_ENABLED'] = '0'
# Build RN deps and Core from source so we don't depend on the prebuilt RN xcframeworks.
ENV['RCT_USE_RN_DEP'] = '0'
ENV['RCT_USE_PREBUILT_RNCORE'] = '0'
# hermes-engine bakes an absolute path into HERMES_CLI_PATH, which makes the
# Podfile.lock SPEC CHECKSUM differ on every machine. Rewrite it to a relative
# path so the lockfile is portable (e.g. `pod install --deployment` in CI).
module HermesCliPathRelativizer
def store_attribute(name, value, platform_name = nil)
if name == :user_target_xcconfig &&
value.is_a?(Hash) &&
value['HERMES_CLI_PATH'] &&
self.name.to_s.start_with?('hermes-engine')
value = value.merge(
'HERMES_CLI_PATH' => '${REACT_NATIVE_PATH}/../hermes-compiler/hermesc/osx-bin/hermesc'
)
end
super
end
end
Pod::Specification.prepend(HermesCliPathRelativizer)
install! 'cocoapods', :deterministic_uuids => false
def cocoa_utilities
pod 'CocoaLumberjack', '3.7.4'
end
# Giphy is excluded from iOS autolinking to keep it out of the lite SDK,
# but the full SDK needs its TurboModule spec
# and we re-add it to autolinking.json so react native codegen generates it.
def include_giphy_in_codegen!
require 'json'
autolinking_json = File.join(
Pod::Config.instance.installation_root.to_s,
'build/generated/autolinking/autolinking.json'
)
return unless File.exist?(autolinking_json)
json = JSON.parse(File.read(autolinking_json))
giphy_root = File.expand_path('../node_modules/@giphy/react-native-sdk', __dir__)
json['dependencies'] ||= {}
json['dependencies']['@giphy/react-native-sdk'] = {
'name' => '@giphy/react-native-sdk',
'root' => giphy_root,
'platforms' => {
'ios' => {
'podspecPath' => File.join(giphy_root, 'giphy-react-native-sdk.podspec'),
'scriptPhases' => [],
'configurations' => []
}
}
}
File.write(autolinking_json, JSON.pretty_generate(json))
end
target 'JitsiMeet' do
project 'app/app.xcodeproj'
pod 'Firebase/Analytics', '~> 8.0'
pod 'Firebase/Crashlytics', '~> 8.0'
end
target 'JitsiMeetSDK' do
project 'sdk/sdk.xcodeproj'
# React Native and its dependencies
#
config = use_native_modules!
include_giphy_in_codegen!
use_react_native!(
:path => config[:reactNativePath],
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
# We use auto linking, but some dependencies are excluded from the lite build
# (see react-native.config.js) so we add them here.
pod 'giphy-react-native-sdk', :path => '../node_modules/@giphy/react-native-sdk'
pod 'RNCalendarEvents', :path => '../node_modules/react-native-calendar-events'
pod 'RNGoogleSignin', :path => '../node_modules/@react-native-google-signin/google-signin'
# Native pod dependencies
#
cocoa_utilities
pod 'ObjectiveDropboxOfficial', '6.2.3'
end
target 'JitsiMeetSDKLite' do
project 'sdk/sdk.xcodeproj'
# This is a more lightweight target, which removes some functionality.
# Check the react-native.config.js for the list of excluded packages.
# React Native and its dependencies
#
config = use_native_modules!
use_react_native!(
:path => config[:reactNativePath],
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
# Native pod dependencies
#
cocoa_utilities
end
post_install do |installer|
react_native_post_install(
installer,
use_native_modules![:reactNativePath],
:mac_catalyst_enabled => false,
# :ccache_enabled => true
)
installer.pods_project.targets.each do |target|
# https://github.com/CocoaPods/CocoaPods/issues/11402
if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
target.build_configurations.each do |config|
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
end
end
target.build_configurations.each do |config|
config.build_settings['SUPPORTS_MACCATALYST'] = 'NO'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.1'
config.build_settings['OTHER_SWIFT_FLAGS'] = '$(inherited) -no-verify-emitted-module-interface'
end
end
# Patch SocketRocket to support TLS 1.3
%x(patch Pods/SocketRocket/SocketRocket/SRSecurityPolicy.m -N < patches/ws-tls13.diff)
# GiphyUISDK.xcframework already embeds libwebp; Giphy's podspec also
# declares libwebp as a dependency, which makes CocoaPods statically link
# libwebp into JitsiMeetSDK as well. The two copies trigger a duplicate
# `PodsDummy_libwebp` warning at runtime. Drop the redundant link.
['Pods-JitsiMeetSDK', 'Pods-JitsiMeet'].each do |aggregate_name|
Dir.glob("Pods/Target Support Files/#{aggregate_name}/*.xcconfig").each do |path|
contents = File.read(path)
patched = contents.gsub(/ -l"?libwebp"?/, '')
File.write(path, patched) if patched != contents
end
end
end