From d04c0096b836680eef550f222ecd30f80431c6f9 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jan 2025 17:41:43 +0100 Subject: [PATCH 01/27] Run `pod deintegrate` and remove CocoaPods automation --- Gutenberg/cocoapods_helpers.rb | 234 ------------- Podfile | 126 ------- Podfile.lock | 32 -- Rakefile | 57 +--- WordPress/WordPress.xcodeproj/project.pbxproj | 311 +----------------- 5 files changed, 4 insertions(+), 756 deletions(-) delete mode 100644 Gutenberg/cocoapods_helpers.rb delete mode 100644 Podfile delete mode 100644 Podfile.lock diff --git a/Gutenberg/cocoapods_helpers.rb b/Gutenberg/cocoapods_helpers.rb deleted file mode 100644 index 4aca165b5a7b..000000000000 --- a/Gutenberg/cocoapods_helpers.rb +++ /dev/null @@ -1,234 +0,0 @@ -# frozen_string_literal: true - -# Helpers and configurations for integrating Gutenberg in Jetpack and WordPress via CocoaPods. - -require 'json' -require 'yaml' - -DEFAULT_GUTENBERG_LOCATION = File.join(__dir__, '..', '..', 'gutenberg-mobile') - -GUTENBERG_CONFIG_PATH = File.join(__dir__, '..', 'Gutenberg', 'config.yml') - -# We skip the simulator architecture as we only need to extract the bundle and source map for installable builds. -GUTENBERG_FRAMEWORK_FOLDER = File.join(__dir__, '..', 'Pods', 'Gutenberg', 'Frameworks', 'Gutenberg.xcframework', 'ios-arm64', 'Gutenberg.framework') -GUTENBERG_BUNDLE_SOURCE_MAP_TARGET = File.join(__dir__, '..', 'Pods', 'Gutenberg', 'react-native-bundle-source-map') - -LOCAL_GUTENBERG_KEY = 'LOCAL_GUTENBERG' - -# Note that the pods in this array might seem unused if you look for -# `import` statements in this codebase. However, make sure to also check -# whether they are used in the gutenberg-mobile and Gutenberg projects. -# -# See https://github.com/wordpress-mobile/gutenberg-mobile/issues/5025 -DEPENDENCIES = %w[ - react-native-safe-area - react-native-safe-area-context - react-native-video - react-native-webview - RNSVG - react-native-slider - BVLinearGradient - react-native-get-random-values - react-native-blur - RNScreens - RNReanimated - RNGestureHandler - RNCMaskedView - RNCClipboard - RNFastImage -].freeze - -def gutenberg_pod - # We check local_gutenberg first because it should take precedence, being an override set by the user. - return gutenberg_local_pod if should_use_local_gutenberg - - raise "Could not find config YAML at path #{GUTENBERG_CONFIG_PATH}" unless File.exist?(GUTENBERG_CONFIG_PATH) - - config = YAML.safe_load_file(GUTENBERG_CONFIG_PATH, symbolize_names: true) - - raise 'Gutenberg config does not contain expected key :ref' if config[:ref].nil? - - id = config[:ref][:tag] || config[:ref][:commit] - - # Notice there's no period at the end of the message as CocoaPods will add it. - raise 'Neither tag nor commit to use for Gutenberg found' unless id - - pod 'Gutenberg', podspec: "https://cdn.a8c-ci.services/gutenberg-mobile/Gutenberg-#{id}.podspec" -end - -def gutenberg_local_pod - options_gb = gutenberg_pod_options(name: 'Gutenberg', path: local_gutenberg_path) - options_aztec = gutenberg_pod_options(name: 'RNTAztecView', path: "#{local_gutenberg_path}/gutenberg/packages/react-native-aztec") - - react_native_path = require_react_native_helpers!(gutenberg_path: local_gutenberg_path) - - # It seems like React Native prepends $PWD to the path internally in the post install hook. - # To workaround, we make sure the path is relative to Dir.pwd - react_native_path = Pathname.new(react_native_path).relative_path_from(Dir.pwd).to_s - - use_react_native! path: react_native_path - - pod 'Gutenberg', options_gb - pod 'RNTAztecView', options_aztec - - gutenberg_dependencies(options: options_gb) -end - -def gutenberg_pod_options(name:, path:) - raise "Could not find #{name} pod at #{path}. You can configure the path using the #{LOCAL_GUTENBERG_KEY} environment variable." unless File.exist?(path) - - puts "[Gutenberg] Installing pods using local #{name} version from #{path}" - { path: path } -end - -def gutenberg_dependencies(options:) - # When referencing via a tag or commit, we download pre-built frameworks. - return if options.key?(:tag) || options.key?(:commit) - - podspec_prefix = options[:path] - gutenberg_path = options[:path] - - raise "Unexpected Gutenberg dependencies configuration '#{options}'" if podspec_prefix.nil? - - podspec_prefix += '/third-party-podspecs' - podspec_extension = 'podspec.json' - - computed_dependencies = DEPENDENCIES.dup - - react_native_version = react_native_version!(gutenberg_path: gutenberg_path) - # We need to apply a workaround for the RNReanimated library when using React Native 0.71+. - apply_rnreanimated_workaround!(dependencies: computed_dependencies, gutenberg_path: gutenberg_path) unless react_native_version[1] < 71 - - computed_dependencies.each do |pod_name| - pod pod_name, podspec: "#{podspec_prefix}/#{pod_name}.#{podspec_extension}" - end -end - -def apply_rnreanimated_workaround!(dependencies:, gutenberg_path:) - # Use a custom RNReanimated version while we coordinate a fix upstream - dependencies.delete('RNReanimated') - - # This is required to workaround an issue with RNReanimated after upgrading to version 2.17.0 - rn_node_modules = File.join(gutenberg_path, 'gutenberg', 'node_modules') - raise "Could not find node modules at given path #{rn_node_modules}" unless File.exist? rn_node_modules - - ENV['REACT_NATIVE_NODE_MODULES_DIR'] = rn_node_modules - puts "[Gutenberg] Set REACT_NATIVE_NODE_MODULES_DIR env var for RNReanimated to #{rn_node_modules}" - - pod 'RNReanimated', git: 'https://github.com/wordpress-mobile/react-native-reanimated', branch: 'wp-fork-3.6.2' -end - -def gutenberg_post_install(installer:) - extract_bundle_source_map_files unless should_use_local_gutenberg - - return unless should_use_local_gutenberg - - raise "[Gutenberg] Could not find local Gutenberg at given path #{local_gutenberg_path}" unless File.exist?(local_gutenberg_path) - - react_native_path = require_react_native_helpers!(gutenberg_path: local_gutenberg_path) - - puts "[Gutenberg] Running Gutenberg post install hook (RN path: #{react_native_path})" - - # It seems like React Native prepends $PWD to the path internally in the post install hook. - # To workaround, we make sure the path is relative to Dir.pwd - react_native_path = Pathname.new(react_native_path).relative_path_from(Dir.pwd) - - react_native_post_install(installer, react_native_path) -end - -def gutenberg_post_integrate - return unless should_use_local_gutenberg - - # If the this workaround runs in the post_install step, the changes it makes get overridden somehow. - workaround_broken_search_paths -end - -private - -def should_use_local_gutenberg - value = ENV.fetch(LOCAL_GUTENBERG_KEY, nil) - - return false if value.nil? - - value -end - -def local_gutenberg_path - local_gutenberg = ENV.fetch(LOCAL_GUTENBERG_KEY, nil) - - return nil if local_gutenberg.nil? - - return local_gutenberg if File.exist?(local_gutenberg) - - DEFAULT_GUTENBERG_LOCATION -end - -def require_react_native_helpers!(gutenberg_path:) - react_native_path = react_native_path!(gutenberg_path: gutenberg_path) - - require_relative File.join(react_native_path, 'scripts', 'react_native_pods') - - react_native_path -end - -def react_native_path!(gutenberg_path:) - react_native_path = File.join(gutenberg_path, 'gutenberg', 'node_modules', 'react-native') - - raise "[Gutenberg] Could not find React Native at given path #{react_native_path}" unless File.exist?(react_native_path) - - react_native_path -end - -def react_native_version!(gutenberg_path:) - react_native_path = react_native_path!(gutenberg_path: gutenberg_path) - package_json_path = File.join(react_native_path, 'package.json') - package_json_content = File.read(package_json_path) - package_json_version = JSON.parse(package_json_content)['version'] - - raise "[Gutenberg] Could not find React native version at #{react_native_path}" unless package_json_version - - package_json_version.split('.').map(&:to_i) -end - -# A workaround for the issue described at -# https://github.com/wordpress-mobile/WordPress-iOS/pull/21504#issuecomment-1789466523 -# -# For some yet-to-discover reason, something in the process installing the pods -# using local sources messes up the LIBRARY_SEARCH_PATHS. -def workaround_broken_search_paths - project = Xcodeproj::Project.open('WordPress/WordPress.xcodeproj') - - library_search_paths_key = 'LIBRARY_SEARCH_PATHS' - broken_search_paths = '$(SDKROOT)/usr/lib/swift$(inherited)' - - project.targets.each do |target| - target.build_configurations.each do |config| - original_search_paths = config.build_settings[library_search_paths_key] - - if original_search_paths == broken_search_paths - config.build_settings[library_search_paths_key] = ['$(SDKROOT)/usr/lib/swift', '$(inherited)'] - puts "[Gutenberg] Post-processed #{library_search_paths_key} for #{target.name} target to fix incorrect '#{broken_search_paths}' value." - end - end - end - project.save -end - -# Copy Gutenberg bundle and source map files so they can be upload it to Sentry during the build process. -def extract_bundle_source_map_files - puts '[Gutenberg] Extracting bundle and source map files' - - FileUtils.mkdir_p(GUTENBERG_BUNDLE_SOURCE_MAP_TARGET) - bundle_from_path = File.join(GUTENBERG_FRAMEWORK_FOLDER, 'App.js') - bundle_destination_path = File.join(GUTENBERG_BUNDLE_SOURCE_MAP_TARGET, 'main.jsbundle') - FileUtils.cp(bundle_from_path, bundle_destination_path) - - # Source map file is moved instead of copied to avoid including it in the binary. - source_map_from_path = File.join(GUTENBERG_FRAMEWORK_FOLDER, 'App.composed.js.map') - source_map_destination_path = File.join(GUTENBERG_BUNDLE_SOURCE_MAP_TARGET, 'main.jsbundle.map') - if File.exist?(source_map_from_path) - FileUtils.mv(source_map_from_path, source_map_destination_path) - elsif !File.exist?(source_map_destination_path) - raise "[Gutenberg] Source map \"#{source_map_from_path}\" could not be found. Please verify that the Gutenberg version includes the file or reinstall the pod." - end -end diff --git a/Podfile b/Podfile deleted file mode 100644 index dad355a77816..000000000000 --- a/Podfile +++ /dev/null @@ -1,126 +0,0 @@ -# frozen_string_literal: true - -require_relative 'Gutenberg/cocoapods_helpers' -require 'xcodeproj' - -# For security reasons, please always keep the wordpress-mobile source first and the CDN second. -# For more info, see https://github.com/wordpress-mobile/cocoapods-specs#source-order-and-security-considerations -install! 'cocoapods', warn_for_multiple_pod_sources: false -source 'https://github.com/wordpress-mobile/cocoapods-specs.git' -source 'https://cdn.cocoapods.org/' - -raise 'Please run CocoaPods via `bundle exec`' unless %w[BUNDLE_BIN_PATH BUNDLE_GEMFILE].any? { |k| ENV.key?(k) } - -VERSION_XCCONFIG_PATH = File.join(File.expand_path(__dir__), 'config', 'Common.xcconfig') -APP_IOS_DEPLOYMENT_TARGET = Gem::Version.new(Xcodeproj::Config.new(VERSION_XCCONFIG_PATH).to_hash['IPHONEOS_DEPLOYMENT_TARGET']) - -platform :ios, APP_IOS_DEPLOYMENT_TARGET.version -inhibit_all_warnings! -use_frameworks! -workspace 'WordPress.xcworkspace' - -def aztec - ## When using a tagged version, feel free to comment out the WordPress-Aztec-iOS line below. - ## When using a commit number (during development) you should provide the same commit number for both pods. - ## - # pod 'WordPress-Aztec-iOS', git: 'https://github.com/wordpress-mobile/AztecEditor-iOS.git', commit: '' - # pod 'WordPress-Editor-iOS', git: 'https://github.com/wordpress-mobile/AztecEditor-iOS.git', commit: '' - # pod 'WordPress-Editor-iOS', git: 'https://github.com/wordpress-mobile/AztecEditor-iOS.git', tag: '' - pod 'WordPress-Editor-iOS', '~> 1.19.11' -end - -abstract_target 'Apps' do - project 'WordPress/WordPress.xcodeproj' - - ## Gutenberg (React Native) - ## ===================== - ## - gutenberg_pod - - ## Automattic libraries - ## ==================== - ## - aztec - - ## WordPress App iOS - ## ================= - ## - target 'WordPress' do - target 'WordPressTest' do - inherit! :search_paths - - gutenberg_pod - end - end - - ## Jetpack App iOS - ## =============== - ## - target 'Jetpack' -end - -## Share Extension -## =============== -## -target 'WordPressShareExtension' do - project 'WordPress/WordPress.xcodeproj' - - aztec -end - -target 'JetpackShareExtension' do - project 'WordPress/WordPress.xcodeproj' - - aztec -end - -## DraftAction Extension -## ===================== -## -target 'WordPressDraftActionExtension' do - project 'WordPress/WordPress.xcodeproj' - - aztec -end - -target 'JetpackDraftActionExtension' do - project 'WordPress/WordPress.xcodeproj' - - aztec -end - -## Tools -## =================== -## - -def swiftlint_version - require 'yaml' - - YAML.load_file('.swiftlint.yml')['swiftlint_version'] -end - -abstract_target 'Tools' do - pod 'SwiftLint', swiftlint_version -end - -post_install do |installer| - gutenberg_post_install(installer: installer) - - # Fix a code signing issue in Xcode 14 beta. - # This solution is suggested here: https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1189861270 - # ==================================== - installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['CODE_SIGN_IDENTITY'] = '' - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' - end - end - - yellow_marker = "\033[33m" - reset_marker = "\033[0m" - puts "#{yellow_marker}The abstract target warning below is expected. Feel free to ignore it.#{reset_marker}" -end - -post_integrate do - gutenberg_post_integrate -end diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index faad3e2dd70e..000000000000 --- a/Podfile.lock +++ /dev/null @@ -1,32 +0,0 @@ -PODS: - - Gutenberg (1.121.0) - - SwiftLint (0.54.0) - - WordPress-Aztec-iOS (1.19.11) - - WordPress-Editor-iOS (1.19.11): - - WordPress-Aztec-iOS (= 1.19.11) - -DEPENDENCIES: - - Gutenberg (from `https://cdn.a8c-ci.services/gutenberg-mobile/Gutenberg-v1.121.0.podspec`) - - SwiftLint (= 0.54.0) - - WordPress-Editor-iOS (~> 1.19.11) - -SPEC REPOS: - https://github.com/wordpress-mobile/cocoapods-specs.git: - - WordPress-Aztec-iOS - - WordPress-Editor-iOS - trunk: - - SwiftLint - -EXTERNAL SOURCES: - Gutenberg: - :podspec: https://cdn.a8c-ci.services/gutenberg-mobile/Gutenberg-v1.121.0.podspec - -SPEC CHECKSUMS: - Gutenberg: 3e8f78cbb35f0572a696ac55bafac3aec5d0fc2e - SwiftLint: c1de071d9d08c8aba837545f6254315bc900e211 - WordPress-Aztec-iOS: 3732c6d865a5c9f35788377bdeda8a80ea10d0a1 - WordPress-Editor-iOS: 453345420ced3d3ef20f0051b3df46ff10281e0c - -PODFILE CHECKSUM: 99aff5ecb96391804fd8f28b29fd4e350ecd4b2e - -COCOAPODS: 1.16.2 diff --git a/Rakefile b/Rakefile index 5176a266c2f9..56e7a4f0b5f1 100644 --- a/Rakefile +++ b/Rakefile @@ -24,7 +24,7 @@ desc 'Install required dependencies' task dependencies: %w[dependencies:check assets:check] namespace :dependencies do - task check: %w[ruby:check bundler:check bundle:check credentials:apply pod:check lint:check] + task check: %w[ruby:check bundler:check bundle:check credentials:apply lint:check] namespace :ruby do task :check do @@ -103,42 +103,9 @@ bundle exec fastlane run configure_apply force:true end end - namespace :pod do - task :check do - unless podfile_locked? && lockfiles_match? - dependency_failed('CocoaPods') - Rake::Task['dependencies:pod:install'].invoke - end - end - - task :install do - fold('install.cocoapods') do - pod %w[install] - rescue StandardError - puts "`pod install` failed. Will attempt to update the Gutenberg-Mobile XCFramework — a common reason for the failure — then retrying…\n\n" - Rake::Task['dependencies:pod:update_gutenberg'].invoke - pod %w[install] - end - end - - task :update_gutenberg do - pod %w[update Gutenberg] - end - - task :clean do - fold('clean.cocoapods') do - FileUtils.rm_rf('Pods') - end - end - CLOBBER << 'Pods' - end - namespace :lint do task :check do - if swiftlint_needs_install - dependency_failed('SwiftLint') - Rake::Task['dependencies:pod:install'].invoke - end + swiftlint_needs_install if dependency_failed('SwiftLint') end end end @@ -648,26 +615,6 @@ def fold(_) yield end -def pod(args) - args = %w[bundle exec pod] + args - sh(*args) -end - -def lockfile_hash - YAML.load_file('Podfile.lock') -end - -def lockfiles_match? - File.file?('Pods/Manifest.lock') && FileUtils.compare_file('Podfile.lock', 'Pods/Manifest.lock') -end - -def podfile_locked? - podfile_checksum = Digest::SHA1.file('Podfile') - lockfile_checksum = lockfile_hash['PODFILE CHECKSUM'] - - podfile_checksum == lockfile_checksum -end - def swiftlint(args) args = [SWIFTLINT_BIN] + args sh(*args) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 3bba6654b1e5..1d6beca57d57 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -323,7 +323,6 @@ 1D91080729F847A2003F9A5E /* MediaServiceUpdateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D91080629F847A2003F9A5E /* MediaServiceUpdateTests.m */; }; 1DE9F2B32BA30E820044AA53 /* GutenbergFileUploadProcessorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DE9F2B22BA30E820044AA53 /* GutenbergFileUploadProcessorTests.swift */; }; 1DF7A0D32BA0B1810003CBA3 /* GutenbergContentParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DF7A0D22BA0B1810003CBA3 /* GutenbergContentParser.swift */; }; - 223EA61E212A7C26A456C32C /* Pods_JetpackDraftActionExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 430F7B409FE22699ADB1A724 /* Pods_JetpackDraftActionExtension.framework */; }; 2422A2C02C5846DB00402A81 /* Blog+RestAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2422A2BF2C5846DB00402A81 /* Blog+RestAPITests.swift */; }; 24351254264DCA08009BB2B6 /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24351253264DCA08009BB2B6 /* Secrets.swift */; }; 24351255264DCA08009BB2B6 /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24351253264DCA08009BB2B6 /* Secrets.swift */; }; @@ -680,7 +679,6 @@ 4AD955C82C2171F000D0EEFA /* MemoryManagementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AD955982C2171F000D0EEFA /* MemoryManagementTests.swift */; }; 4AEF2DD929A84B2C00345734 /* ReaderSiteServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AEF2DD829A84B2C00345734 /* ReaderSiteServiceTests.swift */; }; 4AFB8FBF2824999500A2F4B2 /* ContextManager+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AFB8FBE2824999400A2F4B2 /* ContextManager+Helpers.swift */; }; - 4BB2296498BE66D515E3D610 /* Pods_JetpackShareExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23052F0F1F9B2503E33D0A26 /* Pods_JetpackShareExtension.framework */; }; 570BFD902282418A007859A8 /* PostBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 570BFD8F2282418A007859A8 /* PostBuilder.swift */; }; 572FB401223A806000933C76 /* NoticeStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 572FB400223A806000933C76 /* NoticeStoreTests.swift */; }; 575802132357C41200E4C63C /* MediaCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 575802122357C41200E4C63C /* MediaCoordinatorTests.swift */; }; @@ -1033,11 +1031,8 @@ 98E58A2F2360D23400E5534B /* TodayWidgetStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98E58A2E2360D23400E5534B /* TodayWidgetStats.swift */; }; 9A9D34FD23607CCC00BC95A3 /* AsyncOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A9D34FC23607CCC00BC95A3 /* AsyncOperationTests.swift */; }; 9A9D34FF2360A4E200BC95A3 /* StatsPeriodAsyncOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A9D34FE2360A4E200BC95A3 /* StatsPeriodAsyncOperationTests.swift */; }; - 9C86CF3E1EAC13181A593D00 /* Pods_Apps_Jetpack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57E15BC2269B6B7419464B6F /* Pods_Apps_Jetpack.framework */; }; A01C542E0E24E88400D411F2 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A01C542D0E24E88400D411F2 /* SystemConfiguration.framework */; }; A01C55480E25E0D000D411F2 /* defaultPostTemplate.html in Resources */ = {isa = PBXBuildFile; fileRef = A01C55470E25E0D000D411F2 /* defaultPostTemplate.html */; }; - A1C54EBE8C34FFD5015F8FC9 /* Pods_Apps_WordPress.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E826CD5B4B116AF78FF391C /* Pods_Apps_WordPress.framework */; }; - A2C95CCF203760D9372C5857 /* Pods_WordPressDraftActionExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92B40A77F0765C1E93B11727 /* Pods_WordPressDraftActionExtension.framework */; }; AB2211F425ED6E7A00BF72FC /* CommentServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB2211F325ED6E7A00BF72FC /* CommentServiceTests.swift */; }; AC68C9CA28E5DF14009030A9 /* NotificationsViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC68C9C928E5DF14009030A9 /* NotificationsViewControllerTests.swift */; }; ACACE3AE28D729FA000992F9 /* NoResultsViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACACE3AD28D729FA000992F9 /* NoResultsViewControllerTests.swift */; }; @@ -1145,7 +1140,6 @@ CCBC9EB4251258FB008E1D5F /* WPUITestCredentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC8A5EAA22159FA6001B7874 /* WPUITestCredentials.swift */; }; CE39E17220CB117B00CABA05 /* RemoteBlog+Capabilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE39E17120CB117B00CABA05 /* RemoteBlog+Capabilities.swift */; }; CE39E17320CB117B00CABA05 /* RemoteBlog+Capabilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE39E17120CB117B00CABA05 /* RemoteBlog+Capabilities.swift */; }; - D0E2AA7C4D4CB1679173958E /* Pods_WordPressShareExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 213A62FF811EBDB969FA7669 /* Pods_WordPressShareExtension.framework */; }; D81C2F5420F85DB1002AE1F1 /* ApproveCommentActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D81C2F5320F85DB1002AE1F1 /* ApproveCommentActionTests.swift */; }; D81C2F5820F86CEA002AE1F1 /* NetworkStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = D81C2F5720F86CEA002AE1F1 /* NetworkStatus.swift */; }; D81C2F5A20F86E94002AE1F1 /* LikeCommentActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D81C2F5920F86E94002AE1F1 /* LikeCommentActionTests.swift */; }; @@ -1249,7 +1243,6 @@ E66969C81B9E0A6800EC9C00 /* ReaderTopicServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E66969C71B9E0A6800EC9C00 /* ReaderTopicServiceTest.swift */; }; E6A215901D1065F200DE5270 /* AbstractPostTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A2158F1D1065F200DE5270 /* AbstractPostTest.swift */; }; E6B9B8AF1B94FA1C0001B92F /* ReaderStreamViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B9B8AE1B94FA1C0001B92F /* ReaderStreamViewControllerTests.swift */; }; - E8DEE110E4BC3FA1974AB1BB /* Pods_WordPressTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B921F5DD9A1F257C792EC225 /* Pods_WordPressTest.framework */; }; EA14532A29AD874C001F3143 /* ReaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB10E3F27487F5D000DA4C1 /* ReaderTests.swift */; }; EA14532B29AD874C001F3143 /* EditorAztecTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BED4D82F1FF11DEF00A11345 /* EditorAztecTests.swift */; }; EA14532C29AD874C001F3143 /* EditorGutenbergTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC2BB0CF228ACF710034F9AB /* EditorGutenbergTests.swift */; }; @@ -1910,7 +1903,6 @@ 0107E1832900043200DE87DB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0107E1842900059300DE87DB /* LocalizationConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationConfiguration.swift; sourceTree = ""; }; 0107E1862900065400DE87DB /* LocalizationConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizationConfiguration.swift; sourceTree = ""; }; - 011A2815DB0DE7E3973CBC0E /* Pods-Apps-Jetpack.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-Jetpack.release.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack.release.xcconfig"; sourceTree = ""; }; 011F52C52A15413800B04114 /* FreeToPaidPlansDashboardCardHelperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FreeToPaidPlansDashboardCardHelperTests.swift; sourceTree = ""; }; 01281E9B2A051EEA00464F8F /* MySiteTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MySiteTests.swift; sourceTree = ""; }; 0141929F2983F5E800CAEDB0 /* SupportConfigurationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportConfigurationTests.swift; sourceTree = ""; }; @@ -1956,7 +1948,6 @@ 082EA3D62B4C202600E7F361 /* NotificationsViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsViewModelTests.swift; sourceTree = ""; }; 084D94AE1EDF842600C385A6 /* test-video-device-gps.m4v */ = {isa = PBXFileReference; lastKnownFileType = file; path = "test-video-device-gps.m4v"; sourceTree = ""; }; 084FC3B629913B1B00A17BCF /* JetpackPluginOverlayViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackPluginOverlayViewModelTests.swift; sourceTree = ""; }; - 084FF460C7742309671B3A86 /* Pods-WordPressTest.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressTest.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressTest/Pods-WordPressTest.debug.xcconfig"; sourceTree = ""; }; 0879FC151E9301DD00E1EFC8 /* MediaTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaTests.swift; sourceTree = ""; }; 088134FE2A56C5240027C086 /* CompliancePopoverViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompliancePopoverViewModelTests.swift; sourceTree = ""; }; 0885A3661E837AFE00619B4D /* URLIncrementalFilenameTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLIncrementalFilenameTests.swift; sourceTree = ""; }; @@ -2020,7 +2011,6 @@ 09C8BB8227DFF9C900974175 /* is */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = is; path = is.lproj/InfoPlist.strings; sourceTree = ""; }; 09C8BB8327DFF9CB00974175 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; }; 09C8BB8427DFF9CC00974175 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = ""; }; - 09F367D2BE684EDE2E4A40E3 /* Pods-WordPressDraftActionExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressDraftActionExtension.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressDraftActionExtension/Pods-WordPressDraftActionExtension.debug.xcconfig"; sourceTree = ""; }; 0A69300A28B5AA5E00E98DE1 /* FullScreenCommentReplyViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullScreenCommentReplyViewModelTests.swift; sourceTree = ""; }; 0A9687BB28B40771009DCD2F /* FullScreenCommentReplyViewModelMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullScreenCommentReplyViewModelMock.swift; sourceTree = ""; }; 0C0DF8932C2DF12A00011B7D /* LoginFacadeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginFacadeTests.m; sourceTree = ""; }; @@ -2049,9 +2039,6 @@ 0CD542C82CEFAE5F00666F44 /* wporg-blog-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "wporg-blog-icon.png"; sourceTree = ""; }; 0CD6299A2B9AAA9A00325EA4 /* Foundation+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Foundation+Extensions.swift"; sourceTree = ""; }; 0CF7D6C22ABB753A006D1E89 /* MediaImageServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaImageServiceTests.swift; sourceTree = ""; }; - 131D0EE49695795ECEDAA446 /* Pods-WordPressTest.release-alpha.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressTest.release-alpha.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressTest/Pods-WordPressTest.release-alpha.xcconfig"; sourceTree = ""; }; - 150B6590614A28DF9AD25491 /* Pods-Apps-Jetpack.release-alpha.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-Jetpack.release-alpha.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack.release-alpha.xcconfig"; sourceTree = ""; }; - 152F25D5C232985E30F56CAC /* Pods-Apps-Jetpack.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-Jetpack.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack.debug.xcconfig"; sourceTree = ""; }; 17222D45261DDDF10047B163 /* celadon-classic-icon-app-76x76.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "celadon-classic-icon-app-76x76.png"; sourceTree = ""; }; 17222D46261DDDF10047B163 /* celadon-classic-icon-app-76x76@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "celadon-classic-icon-app-76x76@2x.png"; sourceTree = ""; }; 17222D47261DDDF10047B163 /* celadon-classic-icon-app-83.5x83.5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "celadon-classic-icon-app-83.5x83.5@2x.png"; sourceTree = ""; }; @@ -2143,16 +2130,12 @@ 17C1D6F426711ED0006C8970 /* Emoji.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Emoji.txt; sourceTree = ""; }; 17C3F8BE25E4438100EFFE12 /* notifications-button-text-content.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "notifications-button-text-content.json"; sourceTree = ""; }; 17FC0031264D728E00FCBD37 /* SharingServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingServiceTests.swift; sourceTree = ""; }; - 1BC96E982E9B1A6DD86AF491 /* Pods-WordPressShareExtension.release-alpha.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressShareExtension.release-alpha.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressShareExtension/Pods-WordPressShareExtension.release-alpha.xcconfig"; sourceTree = ""; }; 1D19C56529C9DB0A00FB0087 /* GutenbergVideoPressUploadProcessorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GutenbergVideoPressUploadProcessorTests.swift; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D6058910D05DD3D006BFB54 /* WordPress.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WordPress.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1D91080629F847A2003F9A5E /* MediaServiceUpdateTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MediaServiceUpdateTests.m; sourceTree = ""; }; 1DE9F2B22BA30E820044AA53 /* GutenbergFileUploadProcessorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GutenbergFileUploadProcessorTests.swift; sourceTree = ""; }; 1DF7A0D22BA0B1810003CBA3 /* GutenbergContentParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GutenbergContentParser.swift; sourceTree = ""; }; - 1E826CD5B4B116AF78FF391C /* Pods_Apps_WordPress.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Apps_WordPress.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 213A62FF811EBDB969FA7669 /* Pods_WordPressShareExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WordPressShareExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 23052F0F1F9B2503E33D0A26 /* Pods_JetpackShareExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_JetpackShareExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 2422A2BF2C5846DB00402A81 /* Blog+RestAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Blog+RestAPITests.swift"; sourceTree = ""; }; 24350E7C264DB76E009BB2B6 /* Jetpack.debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Jetpack.debug.xcconfig; sourceTree = ""; }; 24351059264DC1E2009BB2B6 /* Jetpack.release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Jetpack.release.xcconfig; sourceTree = ""; }; @@ -2208,7 +2191,6 @@ 24CDE3402C5863A1005E5E43 /* TestKeychain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestKeychain.swift; sourceTree = ""; }; 24E55D4D2CC9A5C8008D071D /* ImagePlayground.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImagePlayground.framework; path = System/Library/Frameworks/ImagePlayground.framework; sourceTree = SDKROOT; }; 28A0AAE50D9B0CCF005BE974 /* WordPress_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WordPress_Prefix.pch; sourceTree = ""; }; - 293E283D7339E7B6D13F6E09 /* Pods-JetpackShareExtension.release-internal.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JetpackShareExtension.release-internal.xcconfig"; path = "../Pods/Target Support Files/Pods-JetpackShareExtension/Pods-JetpackShareExtension.release-internal.xcconfig"; sourceTree = ""; }; 296890770FE971DC00770264 /* Security.framework */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 2FAE97040E33B21600CA8540 /* defaultPostTemplate_old.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = defaultPostTemplate_old.html; path = Resources/HTML/defaultPostTemplate_old.html; sourceTree = ""; }; 2FAE97070E33B21600CA8540 /* xhtml1-transitional.dtd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = "xhtml1-transitional.dtd"; path = "Resources/HTML/xhtml1-transitional.dtd"; sourceTree = ""; }; @@ -2224,7 +2206,6 @@ 3211056A250C0F750048446F /* valid-png-header */ = {isa = PBXFileReference; lastKnownFileType = file; path = "valid-png-header"; sourceTree = ""; }; 321955C024BE4EBF00E3F316 /* ReaderSelectInterestsCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReaderSelectInterestsCoordinatorTests.swift; sourceTree = ""; }; 3236F7A024B61B950088E8F3 /* ReaderInterestsDataSourceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReaderInterestsDataSourceTests.swift; sourceTree = ""; }; - 32387A1D541851E82ED957CE /* Pods-WordPressShareExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressShareExtension.release.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressShareExtension/Pods-WordPressShareExtension.release.xcconfig"; sourceTree = ""; }; 325D3B3C23A8376400766DF6 /* FullScreenCommentReplyViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullScreenCommentReplyViewControllerTests.swift; sourceTree = ""; }; 32C6CDDA23A1FF0D002556FF /* SiteCreationRotatingMessageViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteCreationRotatingMessageViewTests.swift; sourceTree = ""; }; 374CB16115B93C0800DD0EBC /* AudioToolbox.framework */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; @@ -2302,7 +2283,6 @@ 406A0EEF224D39C50016AD6A /* Flags.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Flags.xcassets; sourceTree = ""; }; 40ACCF13224E167900190713 /* FlagsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagsTest.swift; sourceTree = ""; }; 40E4698E2017E0700030DB5F /* PluginDirectoryEntryStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginDirectoryEntryStateTests.swift; sourceTree = ""; }; - 430F7B409FE22699ADB1A724 /* Pods_JetpackDraftActionExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_JetpackDraftActionExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 433840C622C2BA5B00CB13F8 /* AppImages.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = AppImages.xcassets; path = Resources/AppImages.xcassets; sourceTree = ""; }; 436D55EF2115CB6800CEAA33 /* RegisterDomainDetailsSectionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterDomainDetailsSectionTests.swift; sourceTree = ""; }; 436D55F4211632B700CEAA33 /* RegisterDomainDetailsViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterDomainDetailsViewModelTests.swift; sourceTree = ""; }; @@ -2568,13 +2548,11 @@ 4AD955982C2171F000D0EEFA /* MemoryManagementTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MemoryManagementTests.swift; sourceTree = ""; }; 4AEF2DD829A84B2C00345734 /* ReaderSiteServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReaderSiteServiceTests.swift; sourceTree = ""; }; 4AFB8FBE2824999400A2F4B2 /* ContextManager+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ContextManager+Helpers.swift"; sourceTree = ""; }; - 51A5F017948878F7E26979A0 /* Pods-Apps-WordPress.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-WordPress.release.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-WordPress/Pods-Apps-WordPress.release.xcconfig"; sourceTree = ""; }; 570BFD8F2282418A007859A8 /* PostBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostBuilder.swift; sourceTree = ""; }; 572FB400223A806000933C76 /* NoticeStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeStoreTests.swift; sourceTree = ""; }; 575802122357C41200E4C63C /* MediaCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaCoordinatorTests.swift; path = Services/MediaCoordinatorTests.swift; sourceTree = ""; }; 57889AB723589DF100DAE56D /* PageBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = PageBuilder.swift; path = TestUtilities/PageBuilder.swift; sourceTree = ""; }; 57B71D4D230DB5F200789A68 /* BlogBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlogBuilder.swift; sourceTree = ""; }; - 57E15BC2269B6B7419464B6F /* Pods_Apps_Jetpack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Apps_Jetpack.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5948AD101AB73D19006E8882 /* WPAppAnalyticsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = WPAppAnalyticsTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 5960967E1CF7959300848496 /* PostTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostTests.swift; sourceTree = ""; }; 5981FE041AB8A89A0009E080 /* WPUserAgentTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WPUserAgentTests.m; sourceTree = ""; }; @@ -2585,8 +2563,6 @@ 5D69DBC3165428CA00A2D1F7 /* n.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = n.caf; path = Resources/Sounds/n.caf; sourceTree = ""; }; 5DB767401588F64D00EBE36C /* postPreview.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = postPreview.html; path = Resources/HTML/postPreview.html; sourceTree = ""; }; 5DE8A0401912D95B00B2FF59 /* ReaderPostServiceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReaderPostServiceTest.m; sourceTree = ""; }; - 5E48AA7F709A5B0F2318A7E3 /* Pods-JetpackDraftActionExtension.release-internal.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JetpackDraftActionExtension.release-internal.xcconfig"; path = "../Pods/Target Support Files/Pods-JetpackDraftActionExtension/Pods-JetpackDraftActionExtension.release-internal.xcconfig"; sourceTree = ""; }; - 67832AB9D81652460A80BE66 /* Pods-Apps-Jetpack.release-internal.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-Jetpack.release-internal.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack.release-internal.xcconfig"; sourceTree = ""; }; 6E5BA46826A59D620043A6F2 /* SupportScreenTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportScreenTests.swift; sourceTree = ""; }; 6EDC0E8E105881A800F68A1D /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = file; path = iTunesArtwork; sourceTree = ""; }; 730354B921C867E500CD18C2 /* SiteCreatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteCreatorTests.swift; sourceTree = ""; }; @@ -2679,7 +2655,6 @@ 74F89406202A1965008610FA /* ExtensionNotificationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionNotificationManager.swift; sourceTree = ""; }; 74FA2EE3200E8A6C001DDC13 /* AppExtensionsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppExtensionsService.swift; sourceTree = ""; }; 74FA4BE41FBFA0660031EAAD /* Extensions.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Extensions.xcdatamodel; sourceTree = ""; }; - 75305C06D345590B757E3890 /* Pods-Apps-WordPress.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-WordPress.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-WordPress/Pods-Apps-WordPress.debug.xcconfig"; sourceTree = ""; }; 77A141162B68546100BF75DD /* BooleanUserDefaultsDebugViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BooleanUserDefaultsDebugViewModelTests.swift; sourceTree = ""; }; 7E21C760202BBC8D00837CF5 /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; 7E442FC620F677CB00DEACA5 /* ActivityLogRangesTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityLogRangesTest.swift; sourceTree = ""; }; @@ -2701,7 +2676,6 @@ 7E987F57210811CC00CAFB88 /* NotificationContentRouterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationContentRouterTests.swift; sourceTree = ""; }; 7E987F592108122A00CAFB88 /* NotificationUtility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationUtility.swift; sourceTree = ""; }; 7EAA66EE22CB36FD00869038 /* TestAnalyticsTracker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestAnalyticsTracker.swift; sourceTree = ""; }; - 7EC2116478565023EDB57703 /* Pods-JetpackShareExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JetpackShareExtension.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JetpackShareExtension/Pods-JetpackShareExtension.release.xcconfig"; sourceTree = ""; }; 7EC9FE0A22C627DB00C5A888 /* PostEditorAnalyticsSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostEditorAnalyticsSessionTests.swift; sourceTree = ""; }; 7EF2EE9F210A67B60007A76B /* notifications-unapproved-comment.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "notifications-unapproved-comment.json"; sourceTree = ""; }; 800035C229230A0B007D2D26 /* ExtensionConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionConfiguration.swift; sourceTree = ""; }; @@ -2799,12 +2773,8 @@ 8BEE845927B1DC9D0001A93C /* dashboard-200-with-drafts-and-scheduled.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "dashboard-200-with-drafts-and-scheduled.json"; sourceTree = ""; }; 8BFE36FE230F1C850061EBA8 /* AbstractPost+fixLocalMediaURLsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AbstractPost+fixLocalMediaURLsTests.swift"; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8DCE7542239FBC709B90EA85 /* Pods_WordPressUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WordPressUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8DE205D2AC15F16289E7D21A /* Pods-WordPressDraftActionExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressDraftActionExtension.release.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressDraftActionExtension/Pods-WordPressDraftActionExtension.release.xcconfig"; sourceTree = ""; }; - 9149D34BF5182F360C84EDB9 /* Pods-JetpackDraftActionExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JetpackDraftActionExtension.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-JetpackDraftActionExtension/Pods-JetpackDraftActionExtension.debug.xcconfig"; sourceTree = ""; }; 91BE834D2C48FF0F00BB5B3B /* UIImageView+Additions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImageView+Additions.swift"; sourceTree = ""; }; 91CFB9542CE21196005CD369 /* URLHelpersTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLHelpersTests.swift; sourceTree = ""; }; - 92B40A77F0765C1E93B11727 /* Pods_WordPressDraftActionExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WordPressDraftActionExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 930C6374182BD86400976C21 /* WordPress-Internal-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "WordPress-Internal-Info.plist"; sourceTree = ""; }; 930FD0A519882742000CC81D /* BlogServiceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlogServiceTest.m; sourceTree = ""; }; 931215E0267DE1C0008C3B69 /* StatsTotalRowDataTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsTotalRowDataTests.swift; sourceTree = ""; }; @@ -2915,8 +2885,6 @@ B5FA22821C99F6180016CA7C /* Tracks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Tracks.swift; path = WordPressShareExtension/Tracks.swift; sourceTree = SOURCE_ROOT; wrapsLines = 0; }; B5FA868A1D10A41600AB5F7E /* UIImage+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIImage+Extensions.swift"; path = "WordPressShareExtension/UIImage+Extensions.swift"; sourceTree = SOURCE_ROOT; }; B7556D1D8CFA5CEAEAC481B9 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B921F5DD9A1F257C792EC225 /* Pods_WordPressTest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WordPressTest.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BBA98A42A5503D734AC9C936 /* Pods-Apps-WordPress.release-internal.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-WordPress.release-internal.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-WordPress/Pods-Apps-WordPress.release-internal.xcconfig"; sourceTree = ""; }; BE2B4E9E1FD664F5007AE3E4 /* BaseScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseScreen.swift; sourceTree = ""; }; BE6787F41FFF2886005D9F01 /* ShareModularViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareModularViewController.swift; sourceTree = ""; }; BEA0E4841BD83565000AEE81 /* WP3DTouchShortcutCreatorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WP3DTouchShortcutCreatorTests.swift; path = System/3DTouch/WP3DTouchShortcutCreatorTests.swift; sourceTree = ""; }; @@ -2936,7 +2904,6 @@ C3C70C552835C5BB00DD2546 /* SiteDesignSectionLoaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteDesignSectionLoaderTests.swift; sourceTree = ""; }; C3E42AAF27F4D30E00546706 /* MenuItemsViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItemsViewControllerTests.swift; sourceTree = ""; }; C3E77F88293A4EA10034AE5A /* MigrationLoadWordPressViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationLoadWordPressViewModel.swift; sourceTree = ""; }; - C5E82422F47D9BF7E682262B /* Pods-JetpackDraftActionExtension.release-alpha.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JetpackDraftActionExtension.release-alpha.xcconfig"; path = "../Pods/Target Support Files/Pods-JetpackDraftActionExtension/Pods-JetpackDraftActionExtension.release-alpha.xcconfig"; sourceTree = ""; }; C7124E4C2638528F00929318 /* JetpackPrologueViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JetpackPrologueViewController.xib; sourceTree = ""; }; C7124E4D2638528F00929318 /* JetpackPrologueViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JetpackPrologueViewController.swift; sourceTree = ""; }; C72A52CE2649B157009CA633 /* JetpackWindowManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackWindowManager.swift; sourceTree = ""; }; @@ -2944,7 +2911,6 @@ C738CB0C28623F07001BE107 /* QRLoginURLParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QRLoginURLParserTests.swift; sourceTree = ""; }; C738CB0E28626466001BE107 /* QRLoginScanningCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QRLoginScanningCoordinatorTests.swift; sourceTree = ""; }; C738CB1028626606001BE107 /* QRLoginVerifyCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QRLoginVerifyCoordinatorTests.swift; sourceTree = ""; }; - C7AEA9D1F1AC3F501B6DE0C8 /* Pods-JetpackShareExtension.release-alpha.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JetpackShareExtension.release-alpha.xcconfig"; path = "../Pods/Target Support Files/Pods-JetpackShareExtension/Pods-JetpackShareExtension.release-alpha.xcconfig"; sourceTree = ""; }; C7D30C642638B07A00A1695B /* JetpackPrologueStyleGuide.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackPrologueStyleGuide.swift; sourceTree = ""; }; C7E5F24D2799BD52009BC263 /* cool-blue-icon-app-76x76.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cool-blue-icon-app-76x76.png"; sourceTree = ""; }; C7E5F24E2799BD52009BC263 /* cool-blue-icon-app-60x60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cool-blue-icon-app-60x60@3x.png"; sourceTree = ""; }; @@ -2959,13 +2925,11 @@ C81CCD69243AEE1100A83E27 /* TenorAPIResponseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TenorAPIResponseTests.swift; sourceTree = ""; }; C81CCD6B243AEFBF00A83E27 /* TenorReponseData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TenorReponseData.swift; sourceTree = ""; }; C81CCD85243C00E000A83E27 /* TenorPageableTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TenorPageableTests.swift; sourceTree = ""; }; - C82B4C5ECF11C9FEE39CD9A0 /* Pods-WordPressShareExtension.release-internal.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressShareExtension.release-internal.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressShareExtension/Pods-WordPressShareExtension.release-internal.xcconfig"; sourceTree = ""; }; C8567491243F3751001A995E /* tenor-search-response.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "tenor-search-response.json"; sourceTree = ""; }; C8567493243F388F001A995E /* tenor-invalid-search-reponse.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "tenor-invalid-search-reponse.json"; sourceTree = ""; }; C8567495243F3D37001A995E /* TenorResultsPageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TenorResultsPageTests.swift; sourceTree = ""; }; C8567497243F41CA001A995E /* MockTenorService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockTenorService.swift; sourceTree = ""; }; C8567499243F4292001A995E /* TenorMockDataHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TenorMockDataHelper.swift; sourceTree = ""; }; - C9264D275F6288F66C33D2CE /* Pods-WordPressTest.release-internal.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressTest.release-internal.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressTest/Pods-WordPressTest.release-internal.xcconfig"; sourceTree = ""; }; C9B4778329C85949008CBF49 /* LockScreenStatsWidgetEntry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockScreenStatsWidgetEntry.swift; sourceTree = ""; }; C9B477A729CC13C6008CBF49 /* LockScreenSiteListProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockScreenSiteListProvider.swift; sourceTree = ""; }; C9B477AB29CC15D9008CBF49 /* WidgetDataReader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WidgetDataReader.swift; sourceTree = ""; }; @@ -2979,7 +2943,6 @@ C9FE383029C2053300D39841 /* LockScreenSingleStatView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockScreenSingleStatView.swift; sourceTree = ""; }; C9FE383C29C2A3D100D39841 /* LockScreenTodayViewsStatWidgetConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockScreenTodayViewsStatWidgetConfig.swift; sourceTree = ""; }; C9FE383F29C2A3D200D39841 /* LockScreenStatsWidgetConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockScreenStatsWidgetConfig.swift; sourceTree = ""; }; - CB1DAFB7DE085F2FF0314622 /* Pods-WordPressShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressShareExtension.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressShareExtension/Pods-WordPressShareExtension.debug.xcconfig"; sourceTree = ""; }; CB1FD8D926E605CF00EDAF06 /* Extensions 4.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Extensions 4.xcdatamodel"; sourceTree = ""; }; CB48172926E0D93D008C2D9B /* SharePostTypePickerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharePostTypePickerViewController.swift; sourceTree = ""; }; CBF6201226E8FB520061A1F8 /* RemotePost+ShareData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RemotePost+ShareData.swift"; sourceTree = ""; }; @@ -2992,9 +2955,7 @@ CC8A5EAA22159FA6001B7874 /* WPUITestCredentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WPUITestCredentials.swift; sourceTree = ""; }; CCCF53BC237B13760035E9CA /* WordPressUnitTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = WordPressUnitTests.xctestplan; sourceTree = ""; }; CCCF53BD237B13EA0035E9CA /* WordPressUITests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = WordPressUITests.xctestplan; sourceTree = ""; }; - CDA9AED50FDA27959A5CD1B2 /* Pods-WordPressDraftActionExtension.release-internal.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressDraftActionExtension.release-internal.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressDraftActionExtension/Pods-WordPressDraftActionExtension.release-internal.xcconfig"; sourceTree = ""; }; CE39E17120CB117B00CABA05 /* RemoteBlog+Capabilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RemoteBlog+Capabilities.swift"; sourceTree = ""; }; - CE5249687F020581B14F4172 /* Pods-JetpackDraftActionExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JetpackDraftActionExtension.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JetpackDraftActionExtension/Pods-JetpackDraftActionExtension.release.xcconfig"; sourceTree = ""; }; D81C2F5320F85DB1002AE1F1 /* ApproveCommentActionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApproveCommentActionTests.swift; sourceTree = ""; }; D81C2F5720F86CEA002AE1F1 /* NetworkStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkStatus.swift; sourceTree = ""; }; D81C2F5920F86E94002AE1F1 /* LikeCommentActionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LikeCommentActionTests.swift; sourceTree = ""; }; @@ -3124,7 +3085,6 @@ EA14534629AEF479001F3143 /* JetpackUITests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = JetpackUITests.xctestplan; sourceTree = ""; }; EAB10E3F27487F5D000DA4C1 /* ReaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReaderTests.swift; sourceTree = ""; }; EAD2BF4127594DAB00A847BB /* StatsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatsTests.swift; sourceTree = ""; }; - EF379F0A70B6AC45330EE287 /* Pods-WordPressTest.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressTest.release.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressTest/Pods-WordPressTest.release.xcconfig"; sourceTree = ""; }; F11023A0231863CE00C4E84A /* MediaServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaServiceTests.swift; sourceTree = ""; }; F11023A223186BCA00C4E84A /* MediaBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaBuilder.swift; sourceTree = ""; }; F111B88B2658102700057942 /* Combine.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Combine.framework; path = System/Library/Frameworks/Combine.framework; sourceTree = SDKROOT; }; @@ -3145,7 +3105,6 @@ F1F083F5241FFE930056D3B1 /* AtomicAuthenticationServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicAuthenticationServiceTests.swift; sourceTree = ""; }; F1F163C025658B4D003DC13B /* IntentHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentHandler.swift; sourceTree = ""; }; F1F163C825658B4D003DC13B /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; }; - F373612EEEEF10E500093FF3 /* Pods-Apps-WordPress.release-alpha.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Apps-WordPress.release-alpha.xcconfig"; path = "../Pods/Target Support Files/Pods-Apps-WordPress/Pods-Apps-WordPress.release-alpha.xcconfig"; sourceTree = ""; }; F406F3EC2B55960700AFC04A /* CompliancePopoverCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompliancePopoverCoordinatorTests.swift; sourceTree = ""; }; F41BDD72290BBDCA00B7F2B0 /* MigrationActionsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationActionsView.swift; sourceTree = ""; }; F41BDD782910AFCA00B7F2B0 /* MigrationFlowCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationFlowCoordinator.swift; sourceTree = ""; }; @@ -3307,8 +3266,6 @@ F5A34D0C25DF2F7700C9654B /* Noticons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Noticons.ttf; sourceTree = ""; }; F5C00EAD242179780047846F /* WeekdaysHeaderViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeekdaysHeaderViewTests.swift; sourceTree = ""; }; F5D0A65123CCD3B600B20D27 /* PreviewWebKitViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewWebKitViewControllerTests.swift; sourceTree = ""; }; - F75F3A68DCE524B4BAFCE76E /* Pods-WordPressDraftActionExtension.release-alpha.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WordPressDraftActionExtension.release-alpha.xcconfig"; path = "../Pods/Target Support Files/Pods-WordPressDraftActionExtension/Pods-WordPressDraftActionExtension.release-alpha.xcconfig"; sourceTree = ""; }; - F85B762A18D018C22DF2A40D /* Pods-JetpackShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JetpackShareExtension.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-JetpackShareExtension/Pods-JetpackShareExtension.debug.xcconfig"; sourceTree = ""; }; F93735F722D53C3B00A3C312 /* LoggingURLRedactorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoggingURLRedactorTests.swift; sourceTree = ""; }; F9463A7221C05EE90081F11E /* ScreenshotCredentials.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScreenshotCredentials.swift; sourceTree = ""; }; FA25FA332609AAAA0005E08F /* AppConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppConfiguration.swift; sourceTree = ""; }; @@ -3813,7 +3770,6 @@ B5AA54D51A8E7510003BDD12 /* WebKit.framework in Frameworks */, 93F2E5401E9E5A180050D489 /* libsqlite3.tbd in Frameworks */, FF4DEAD8244B56E300ACA032 /* CoreServices.framework in Frameworks */, - A1C54EBE8C34FFD5015F8FC9 /* Pods_Apps_WordPress.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3855,7 +3811,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A2C95CCF203760D9372C5857 /* Pods_WordPressDraftActionExtension.framework in Frameworks */, 0C6AC6162C364A3B00BF7600 /* XcodeTarget_DraftActionExtension in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3864,7 +3819,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4BB2296498BE66D515E3D610 /* Pods_JetpackShareExtension.framework in Frameworks */, 0C6AC61E2C364A6F00BF7600 /* XcodeTarget_ShareExtension in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3873,7 +3827,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 223EA61E212A7C26A456C32C /* Pods_JetpackDraftActionExtension.framework in Frameworks */, 0C6AC6202C364A7500BF7600 /* XcodeTarget_DraftActionExtension in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3897,7 +3850,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D0E2AA7C4D4CB1679173958E /* Pods_WordPressShareExtension.framework in Frameworks */, 0C6AC6142C364A3100BF7600 /* XcodeTarget_ShareExtension in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3907,7 +3859,6 @@ buildActionMask = 2147483647; files = ( 0C235BD22C3862D400D0E163 /* XcodeTarget_WordPressTests in Frameworks */, - E8DEE110E4BC3FA1974AB1BB /* Pods_WordPressTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3954,7 +3905,6 @@ FABB263B2602FC2C00C8785C /* libsqlite3.tbd in Frameworks */, 24E55D4E2CC9A5C8008D071D /* ImagePlayground.framework in Frameworks */, FABB263F2602FC2C00C8785C /* CoreServices.framework in Frameworks */, - 9C86CF3E1EAC13181A593D00 /* Pods_Apps_Jetpack.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4430,7 +4380,7 @@ path = Classes; sourceTree = ""; }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { + 29B97314FDCFA39411CA2CEA = { isa = PBXGroup; children = ( F14B5F6F208E648200439554 /* config */, @@ -4460,7 +4410,6 @@ 93FA0F0218E451A80007903B /* README.md */, E16273E21B2AD89A00088AF7 /* MIGRATIONS.md */, FF37F90822385C9F00AFA3DB /* RELEASE-NOTES.txt */, - B565D41C3DB27630CD503F9A /* Pods */, ); name = CustomTemplate; sourceTree = ""; @@ -4551,18 +4500,10 @@ B5AA54D41A8E7510003BDD12 /* WebKit.framework */, 93F2E53F1E9E5A180050D489 /* libsqlite3.tbd */, B7556D1D8CFA5CEAEAC481B9 /* Pods.framework */, - B921F5DD9A1F257C792EC225 /* Pods_WordPressTest.framework */, 733F36052126197800988727 /* UserNotificationsUI.framework */, - 8DCE7542239FBC709B90EA85 /* Pods_WordPressUITests.framework */, 3F526C4D2538CF2A0069706C /* WidgetKit.framework */, 3F526C4F2538CF2A0069706C /* SwiftUI.framework */, F1F163C825658B4D003DC13B /* IntentsUI.framework */, - 57E15BC2269B6B7419464B6F /* Pods_Apps_Jetpack.framework */, - 1E826CD5B4B116AF78FF391C /* Pods_Apps_WordPress.framework */, - 23052F0F1F9B2503E33D0A26 /* Pods_JetpackShareExtension.framework */, - 213A62FF811EBDB969FA7669 /* Pods_WordPressShareExtension.framework */, - 430F7B409FE22699ADB1A724 /* Pods_JetpackDraftActionExtension.framework */, - 92B40A77F0765C1E93B11727 /* Pods_WordPressDraftActionExtension.framework */, ); name = Frameworks; sourceTree = ""; @@ -6274,41 +6215,6 @@ name = Tools; sourceTree = ""; }; - B565D41C3DB27630CD503F9A /* Pods */ = { - isa = PBXGroup; - children = ( - 75305C06D345590B757E3890 /* Pods-Apps-WordPress.debug.xcconfig */, - 51A5F017948878F7E26979A0 /* Pods-Apps-WordPress.release.xcconfig */, - BBA98A42A5503D734AC9C936 /* Pods-Apps-WordPress.release-internal.xcconfig */, - F373612EEEEF10E500093FF3 /* Pods-Apps-WordPress.release-alpha.xcconfig */, - 084FF460C7742309671B3A86 /* Pods-WordPressTest.debug.xcconfig */, - EF379F0A70B6AC45330EE287 /* Pods-WordPressTest.release.xcconfig */, - C9264D275F6288F66C33D2CE /* Pods-WordPressTest.release-internal.xcconfig */, - 131D0EE49695795ECEDAA446 /* Pods-WordPressTest.release-alpha.xcconfig */, - 152F25D5C232985E30F56CAC /* Pods-Apps-Jetpack.debug.xcconfig */, - 011A2815DB0DE7E3973CBC0E /* Pods-Apps-Jetpack.release.xcconfig */, - 67832AB9D81652460A80BE66 /* Pods-Apps-Jetpack.release-internal.xcconfig */, - 150B6590614A28DF9AD25491 /* Pods-Apps-Jetpack.release-alpha.xcconfig */, - 09F367D2BE684EDE2E4A40E3 /* Pods-WordPressDraftActionExtension.debug.xcconfig */, - 8DE205D2AC15F16289E7D21A /* Pods-WordPressDraftActionExtension.release.xcconfig */, - CDA9AED50FDA27959A5CD1B2 /* Pods-WordPressDraftActionExtension.release-internal.xcconfig */, - CB1DAFB7DE085F2FF0314622 /* Pods-WordPressShareExtension.debug.xcconfig */, - 32387A1D541851E82ED957CE /* Pods-WordPressShareExtension.release.xcconfig */, - C82B4C5ECF11C9FEE39CD9A0 /* Pods-WordPressShareExtension.release-internal.xcconfig */, - 1BC96E982E9B1A6DD86AF491 /* Pods-WordPressShareExtension.release-alpha.xcconfig */, - F85B762A18D018C22DF2A40D /* Pods-JetpackShareExtension.debug.xcconfig */, - 7EC2116478565023EDB57703 /* Pods-JetpackShareExtension.release.xcconfig */, - 293E283D7339E7B6D13F6E09 /* Pods-JetpackShareExtension.release-internal.xcconfig */, - C7AEA9D1F1AC3F501B6DE0C8 /* Pods-JetpackShareExtension.release-alpha.xcconfig */, - 9149D34BF5182F360C84EDB9 /* Pods-JetpackDraftActionExtension.debug.xcconfig */, - CE5249687F020581B14F4172 /* Pods-JetpackDraftActionExtension.release.xcconfig */, - 5E48AA7F709A5B0F2318A7E3 /* Pods-JetpackDraftActionExtension.release-internal.xcconfig */, - C5E82422F47D9BF7E682262B /* Pods-JetpackDraftActionExtension.release-alpha.xcconfig */, - F75F3A68DCE524B4BAFCE76E /* Pods-WordPressDraftActionExtension.release-alpha.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; B58CE5DD1DC1284C004AA81D /* Notifications */ = { isa = PBXGroup; children = ( @@ -7825,7 +7731,6 @@ isa = PBXNativeTarget; buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "WordPress" */; buildPhases = ( - E00F6488DE2D86BDC84FBB0B /* [CP] Check Pods Manifest.lock */, 09607CE7281C9CA6002D2E5A /* [Lint] Check AppLocalizedString usage */, 825F0EBF1F7EBF7C00321528 /* App Icons: Add Version For Internal Releases */, 24E55D502CCC143F008D071D /* Build Acknowledgements Bundle */, @@ -7834,7 +7739,6 @@ 1D60588E0D05DD3D006BFB54 /* Sources */, 1D60588F0D05DD3D006BFB54 /* Frameworks */, 93E5284E19A7741A003A1A9C /* Embed Foundation Extensions */, - 37399571B0D91BBEAE911024 /* [CP] Embed Pods Frameworks */, E1C5456F219F10E000896227 /* Copy Gutenberg JS */, 4AD953C92C21451800D0EEFA /* Embed Frameworks */, ); @@ -7946,7 +7850,6 @@ isa = PBXNativeTarget; buildConfigurationList = 74576681202B558C00F42E40 /* Build configuration list for PBXNativeTarget "WordPressDraftActionExtension" */; buildPhases = ( - 74CC431A202B5C73000DAE1A /* [CP] Check Pods Manifest.lock */, 7457666E202B558C00F42E40 /* Sources */, 7457666F202B558C00F42E40 /* Frameworks */, 74576670202B558C00F42E40 /* Resources */, @@ -7968,7 +7871,6 @@ isa = PBXNativeTarget; buildConfigurationList = 8096211E28E540D700940A5D /* Build configuration list for PBXNativeTarget "JetpackShareExtension" */; buildPhases = ( - 72BB9EE3CC91D92F3735F4F3 /* [CP] Check Pods Manifest.lock */, 809620D128E540D700940A5D /* Sources */, 8096211428E540D700940A5D /* Frameworks */, 8096211628E540D700940A5D /* Resources */, @@ -7990,7 +7892,6 @@ isa = PBXNativeTarget; buildConfigurationList = 8096218028E55C9400940A5D /* Build configuration list for PBXNativeTarget "JetpackDraftActionExtension" */; buildPhases = ( - 36FB55DCF44141E140E108F8 /* [CP] Check Pods Manifest.lock */, 8096213228E55C9400940A5D /* Sources */, 8096217528E55C9400940A5D /* Frameworks */, 8096217728E55C9400940A5D /* Resources */, @@ -8051,7 +7952,6 @@ isa = PBXNativeTarget; buildConfigurationList = 932225B71C7CE50400443B02 /* Build configuration list for PBXNativeTarget "WordPressShareExtension" */; buildPhases = ( - 4F4D5C2BB6478A3E90ADC3C5 /* [CP] Check Pods Manifest.lock */, 932225A31C7CE50300443B02 /* Sources */, 932225A41C7CE50300443B02 /* Frameworks */, 932225A51C7CE50300443B02 /* Resources */, @@ -8073,11 +7973,9 @@ isa = PBXNativeTarget; buildConfigurationList = E16AB93D14D978240047A2E5 /* Build configuration list for PBXNativeTarget "WordPressTest" */; buildPhases = ( - E0E31D6E60F2BCE2D0A53E39 /* [CP] Check Pods Manifest.lock */, E16AB92514D978240047A2E5 /* Sources */, E16AB92614D978240047A2E5 /* Frameworks */, E16AB92714D978240047A2E5 /* Resources */, - EC72BCA3BF5A395143D8690B /* [CP] Embed Pods Frameworks */, 0C43FF922C3602BE0084B698 /* Embed Frameworks */, ); buildRules = ( @@ -8119,7 +8017,6 @@ isa = PBXNativeTarget; buildConfigurationList = FABB264D2602FC2C00C8785C /* Build configuration list for PBXNativeTarget "Jetpack" */; buildPhases = ( - FABB1FA72602FC2C00C8785C /* [CP] Check Pods Manifest.lock */, 09607CE8281C9D0F002D2E5A /* [Lint] Check AppLocalizedString usage */, 3F32E4AE270EAF5100A33D51 /* Generate Credentials */, FABB1FA92602FC2C00C8785C /* App Icons: Add Version For Internal Releases */, @@ -8129,7 +8026,6 @@ FABB20C22602FC2C00C8785C /* Sources */, FABB261F2602FC2C00C8785C /* Frameworks */, FABB26402602FC2C00C8785C /* Embed Foundation Extensions */, - FABB264A2602FC2C00C8785C /* [CP] Embed Pods Frameworks */, FABB264C2602FC2C00C8785C /* Copy Gutenberg JS */, 4AD9555E2C21716A00D0EEFA /* Embed Frameworks */, ); @@ -8360,7 +8256,7 @@ bg, sk, ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; + mainGroup = 29B97314FDCFA39411CA2CEA; preferredProjectObjectVersion = 77; productRefGroup = 19C28FACFE9D520D11CA2CBB /* Products */; projectDirPath = ""; @@ -9065,45 +8961,6 @@ shellPath = /bin/bash; shellScript = "#!/bin/bash\n\nbash ../Scripts/BuildPhases/GenerateAcknowledgementsBundle.sh\n"; }; - 36FB55DCF44141E140E108F8 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-JetpackDraftActionExtension-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 37399571B0D91BBEAE911024 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Apps-WordPress/Pods-Apps-WordPress-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Apps-WordPress/Pods-Apps-WordPress-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Apps-WordPress/Pods-Apps-WordPress-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 3F32E4AE270EAF5100A33D51 /* Generate Credentials */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -9144,64 +9001,6 @@ shellScript = "$SRCROOT/../Scripts/BuildPhases/ConfigureSimulatorForUITesting.sh\n"; showEnvVarsInLog = 0; }; - 4F4D5C2BB6478A3E90ADC3C5 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-WordPressShareExtension-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 72BB9EE3CC91D92F3735F4F3 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-JetpackShareExtension-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 74CC431A202B5C73000DAE1A /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-WordPressDraftActionExtension-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 825F0EBF1F7EBF7C00321528 /* App Icons: Add Version For Internal Releases */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -9230,42 +9029,6 @@ shellScript = "# sh ../run-oclint.sh \nsh ../Scripts/run-oclint.sh"; showEnvVarsInLog = 0; }; - E00F6488DE2D86BDC84FBB0B /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Apps-WordPress-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - E0E31D6E60F2BCE2D0A53E39 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-WordPressTest-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; E1C5456F219F10E000896227 /* Copy Gutenberg JS */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -9285,23 +9048,6 @@ shellPath = /bin/sh; shellScript = "\"$SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.sh\"\n"; }; - EC72BCA3BF5A395143D8690B /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-WordPressTest/Pods-WordPressTest-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-WordPressTest/Pods-WordPressTest-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-WordPressTest/Pods-WordPressTest-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; F9C5CF0222CD5DB0007CEF56 /* Copy Alternate Internal Icons (if needed) */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -9320,24 +9066,6 @@ shellPath = /bin/sh; shellScript = "# Overwrite the icons in the bundle with the updated internal icons\nif [ \"${CONFIGURATION}\" != \"Release-Internal\" ]; then\nexit 0;\nfi\n\ncp -R ${PROJECT_DIR}/Resources/Icons-Internal/*.png \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\n"; }; - FABB1FA72602FC2C00C8785C /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Apps-Jetpack-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; FABB1FA92602FC2C00C8785C /* App Icons: Add Version For Internal Releases */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -9370,23 +9098,6 @@ shellPath = /bin/sh; shellScript = "# Overwrite the icons in the bundle with the updated internal icons\nif [ \"${CONFIGURATION}\" != \"Release-Internal\" ]; then\nexit 0;\nfi\n\ncp -R ${PROJECT_DIR}/Resources/Icons-Internal/*.png \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\n"; }; - FABB264A2602FC2C00C8785C /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; FABB264C2602FC2C00C8785C /* Copy Gutenberg JS */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -11148,7 +10859,6 @@ }; 1D6058940D05DD3E006BFB54 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 75305C06D345590B757E3890 /* Pods-Apps-WordPress.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; APPLICATION_EXTENSION_API_ONLY = NO; @@ -11217,7 +10927,6 @@ }; 1D6058950D05DD3E006BFB54 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 51A5F017948878F7E26979A0 /* Pods-Apps-WordPress.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; APPLICATION_EXTENSION_API_ONLY = NO; @@ -11853,7 +11562,6 @@ }; 7457667D202B558C00F42E40 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 09F367D2BE684EDE2E4A40E3 /* Pods-WordPressDraftActionExtension.debug.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = "extension-icon"; @@ -11906,7 +11614,6 @@ }; 7457667E202B558C00F42E40 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DE205D2AC15F16289E7D21A /* Pods-WordPressDraftActionExtension.release.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = "extension-icon"; @@ -11958,7 +11665,6 @@ }; 74576680202B558C00F42E40 /* Release-Alpha */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F75F3A68DCE524B4BAFCE76E /* Pods-WordPressDraftActionExtension.release-alpha.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = "extension-icon"; @@ -12011,7 +11717,6 @@ }; 8096211F28E540D700940A5D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F85B762A18D018C22DF2A40D /* Pods-JetpackShareExtension.debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; APPLICATION_EXTENSION_API_ONLY = YES; @@ -12081,7 +11786,6 @@ }; 8096212028E540D700940A5D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7EC2116478565023EDB57703 /* Pods-JetpackShareExtension.release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; APPLICATION_EXTENSION_API_ONLY = YES; @@ -12148,7 +11852,6 @@ }; 8096212228E540D700940A5D /* Release-Alpha */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C7AEA9D1F1AC3F501B6DE0C8 /* Pods-JetpackShareExtension.release-alpha.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; APPLICATION_EXTENSION_API_ONLY = YES; @@ -12217,7 +11920,6 @@ }; 8096218128E55C9400940A5D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9149D34BF5182F360C84EDB9 /* Pods-JetpackDraftActionExtension.debug.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = "jp-extension-icon"; @@ -12271,7 +11973,6 @@ }; 8096218228E55C9400940A5D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CE5249687F020581B14F4172 /* Pods-JetpackDraftActionExtension.release.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = "jp-extension-icon"; @@ -12324,7 +12025,6 @@ }; 8096218428E55C9400940A5D /* Release-Alpha */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5E82422F47D9BF7E682262B /* Pods-JetpackDraftActionExtension.release-alpha.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = "jp-extension-icon"; @@ -12715,7 +12415,6 @@ }; 8546B4441BEAD39700193C07 /* Release-Alpha */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F373612EEEEF10E500093FF3 /* Pods-Apps-WordPress.release-alpha.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; APPLICATION_EXTENSION_API_ONLY = NO; @@ -12781,7 +12480,6 @@ }; 8546B4451BEAD39700193C07 /* Release-Alpha */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 131D0EE49695795ECEDAA446 /* Pods-WordPressTest.release-alpha.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/WordPress.app/WordPress"; @@ -12824,7 +12522,6 @@ }; 932225B21C7CE50400443B02 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CB1DAFB7DE085F2FF0314622 /* Pods-WordPressShareExtension.debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; APPLICATION_EXTENSION_API_ONLY = YES; @@ -12893,7 +12590,6 @@ }; 932225B31C7CE50400443B02 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 32387A1D541851E82ED957CE /* Pods-WordPressShareExtension.release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; APPLICATION_EXTENSION_API_ONLY = YES; @@ -12959,7 +12655,6 @@ }; 932225B51C7CE50400443B02 /* Release-Alpha */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1BC96E982E9B1A6DD86AF491 /* Pods-WordPressShareExtension.release-alpha.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; APPLICATION_EXTENSION_API_ONLY = YES; @@ -13162,7 +12857,6 @@ }; E16AB93914D978240047A2E5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 084FF460C7742309671B3A86 /* Pods-WordPressTest.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/WordPress.app/WordPress"; @@ -13203,7 +12897,6 @@ }; E16AB93A14D978240047A2E5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EF379F0A70B6AC45330EE287 /* Pods-WordPressTest.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/WordPress.app/WordPress"; From 73242bfee413bf4cb20b19181d59970933096519 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jan 2025 17:44:15 +0100 Subject: [PATCH 02/27] Add `Makefile` automation to download Gutenberg framework --- WordPress/.gitignore | 4 ++++ WordPress/Makefile | 10 ++++++++++ 2 files changed, 14 insertions(+) create mode 100644 WordPress/.gitignore create mode 100644 WordPress/Makefile diff --git a/WordPress/.gitignore b/WordPress/.gitignore new file mode 100644 index 000000000000..0c883c2e8ea0 --- /dev/null +++ b/WordPress/.gitignore @@ -0,0 +1,4 @@ +# Gutenberg binary framework +Frameworks/*.xcframework +Frameworks/*.tar.gz +Frameworks/react-native-bundle-source-map diff --git a/WordPress/Makefile b/WordPress/Makefile new file mode 100644 index 000000000000..a1b82dfd5d54 --- /dev/null +++ b/WordPress/Makefile @@ -0,0 +1,10 @@ + +dependencies: xcframeworks + + +xcframeworks: + curl https://cdn.a8c-ci.services/gutenberg-mobile/Gutenberg-v1.121.0.tar.gz --output Frameworks/Gutenberg.tar.gz -C - + tar -xvf Frameworks/Gutenberg.tar.gz -C Frameworks/ -k + mv -n Frameworks/Frameworks/*.xcframework Frameworks/ + rm -rf Frameworks/Frameworks Frameworks/dummy.txt + mkdir -p Frameworks/hermes.xcframework/ios-arm64/dSYMs Frameworks/hermes.xcframework/ios-arm64_x86_64-simulator/dSYMs From f1dca71cbbbfe0c82b56f61289cb1032b23a0336 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jan 2025 17:45:27 +0100 Subject: [PATCH 03/27] Remove dead reference to `Pods.framework` in project --- WordPress/WordPress.xcodeproj/project.pbxproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 1d6beca57d57..083489031b35 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -2884,7 +2884,6 @@ B5EFB1D01B33630C007608A3 /* notifications-settings.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "notifications-settings.json"; sourceTree = ""; }; B5FA22821C99F6180016CA7C /* Tracks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Tracks.swift; path = WordPressShareExtension/Tracks.swift; sourceTree = SOURCE_ROOT; wrapsLines = 0; }; B5FA868A1D10A41600AB5F7E /* UIImage+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIImage+Extensions.swift"; path = "WordPressShareExtension/UIImage+Extensions.swift"; sourceTree = SOURCE_ROOT; }; - B7556D1D8CFA5CEAEAC481B9 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BE2B4E9E1FD664F5007AE3E4 /* BaseScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseScreen.swift; sourceTree = ""; }; BE6787F41FFF2886005D9F01 /* ShareModularViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareModularViewController.swift; sourceTree = ""; }; BEA0E4841BD83565000AEE81 /* WP3DTouchShortcutCreatorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WP3DTouchShortcutCreatorTests.swift; path = System/3DTouch/WP3DTouchShortcutCreatorTests.swift; sourceTree = ""; }; @@ -4499,7 +4498,6 @@ 93F2E5521E9E5CF00050D489 /* VideoToolbox.framework */, B5AA54D41A8E7510003BDD12 /* WebKit.framework */, 93F2E53F1E9E5A180050D489 /* libsqlite3.tbd */, - B7556D1D8CFA5CEAEAC481B9 /* Pods.framework */, 733F36052126197800988727 /* UserNotificationsUI.framework */, 3F526C4D2538CF2A0069706C /* WidgetKit.framework */, 3F526C4F2538CF2A0069706C /* SwiftUI.framework */, From 0eb4bf55090455e77841e681d6d5a05bcebba811 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jan 2025 17:46:51 +0100 Subject: [PATCH 04/27] Remove dead reference to pods from workspace --- WordPress.xcworkspace/contents.xcworkspacedata | 3 --- 1 file changed, 3 deletions(-) diff --git a/WordPress.xcworkspace/contents.xcworkspacedata b/WordPress.xcworkspace/contents.xcworkspacedata index 01f66d855f98..655e53664895 100644 --- a/WordPress.xcworkspace/contents.xcworkspacedata +++ b/WordPress.xcworkspace/contents.xcworkspacedata @@ -7,7 +7,4 @@ - - From 10355894e98a0a613a4f371810d6dc40d7e39d85 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jan 2025 17:55:31 +0100 Subject: [PATCH 05/27] Remove SwiftLint-via-CocoaPods from `Rakefile` --- Rakefile | 53 +++++------------------------------------------------ 1 file changed, 5 insertions(+), 48 deletions(-) diff --git a/Rakefile b/Rakefile index 56e7a4f0b5f1..eac33904e239 100644 --- a/Rakefile +++ b/Rakefile @@ -16,15 +16,13 @@ EXPECTED_XCODE_VERSION = File.read('.xcode-version').rstrip PROJECT_DIR = __dir__ abort('Project directory contains one or more spaces – unable to continue.') if PROJECT_DIR.include?(' ') -SWIFTLINT_BIN = File.join(PROJECT_DIR, 'Pods', 'SwiftLint', 'swiftlint') - task default: %w[test] desc 'Install required dependencies' task dependencies: %w[dependencies:check assets:check] namespace :dependencies do - task check: %w[ruby:check bundler:check bundle:check credentials:apply lint:check] + task check: %w[ruby:check bundler:check bundle:check credentials:apply] namespace :ruby do task :check do @@ -102,12 +100,6 @@ bundle exec fastlane run configure_apply force:true sh(command) end end - - namespace :lint do - task :check do - swiftlint_needs_install if dependency_failed('SwiftLint') - end - end end namespace :assets do @@ -161,15 +153,8 @@ task :clean do end desc 'Checks the source for style errors' -task lint: %w[dependencies:lint:check] do - swiftlint %w[lint --quiet] -end - -namespace :lint do - desc 'Automatically corrects style errors where possible' - task autocorrect: %w[dependencies:lint:check] do - swiftlint %w[lint --autocorrect --quiet] - end +task :lint do + puts 'No linter configured at the moment.' end namespace :git do @@ -227,10 +212,8 @@ namespace :git do end namespace :git do - task pre_commit: %(dependencies:lint:check) do - swiftlint %w[lint --quiet --strict] - rescue StandardError - exit $CHILD_STATUS.exitstatus + task :pre_commit do + puts 'No precommit hook configured to run at this time.' end task :post_merge do @@ -253,7 +236,6 @@ namespace :init do install:xcode:check dependencies install:tools:check_oss - install:lint:check credentials:setup ] @@ -262,7 +244,6 @@ namespace :init do install:xcode:check dependencies install:tools:check_developer - install:lint:check credentials:setup gpg_key:setup ] @@ -425,21 +406,6 @@ namespace :install do end end end - - namespace :lint do - task :check do - unless git_initialized? - puts 'Initializing git repository' - sh 'git init', verbose: false - end - - Rake::Task['git:install_hooks'].invoke - end - - def git_initialized? - sh 'git rev-parse --is-inside-work-tree > /dev/null 2>&1', verbose: false - end - end end # Credentials deals with the setting up the developer's WPCOM API app ID and app Secret @@ -615,15 +581,6 @@ def fold(_) yield end -def swiftlint(args) - args = [SWIFTLINT_BIN] + args - sh(*args) -end - -def swiftlint_needs_install - File.exist?(SWIFTLINT_BIN) == false -end - def xcodebuild(*build_cmds) cmd = 'xcodebuild' cmd += " -destination 'platform=iOS Simulator,name=iPhone 6s'" From 9f32176d9b95a42708fd8d68805feee7fb747d41 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 06:39:44 +0100 Subject: [PATCH 06/27] Remove unnecessary `$(inherited)` flag from a couple of targets That's for the value `CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER`, but it's useless to set `$(inherited)` for a Yes or No value because removing the value from the target will automatically make Xcode read it from the project, achieving the same result. --- WordPress/WordPress.xcodeproj/project.pbxproj | 6 ------ 1 file changed, 6 deletions(-) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 083489031b35..965e68a03309 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -10541,7 +10541,6 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = "JetpackStatsWidgets/Supporting Files/JetpackStatsWidgets.entitlements"; CODE_SIGN_STYLE = Manual; @@ -10592,7 +10591,6 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = "JetpackStatsWidgets/Supporting Files/JetpackStatsWidgets.entitlements"; CODE_SIGN_IDENTITY = "Apple Distribution: Automattic, Inc. (PZYM8XX95Q)"; @@ -10643,7 +10641,6 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = "JetpackStatsWidgets/Supporting Files/JetpackStatsWidgetsRelease-Alpha.entitlements"; CODE_SIGN_IDENTITY = "iPhone Distribution: Automattic, Inc."; @@ -10693,7 +10690,6 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = "JetpackIntents/Supporting Files/JetpackIntents.entitlements"; CODE_SIGN_STYLE = Manual; @@ -10742,7 +10738,6 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = "JetpackIntents/Supporting Files/JetpackIntents.entitlements"; CODE_SIGN_IDENTITY = "Apple Distribution: Automattic, Inc. (PZYM8XX95Q)"; @@ -10791,7 +10786,6 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = "JetpackIntents/Supporting Files/JetpackIntentsRelease-Alpha.entitlements"; CODE_SIGN_IDENTITY = "iPhone Distribution: Automattic, Inc."; From 4af73638ae7b1c1111f05a777df91dfc711d2046 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 06:42:37 +0100 Subject: [PATCH 07/27] Remove CocoaPods instruction from the README --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 57ff7820799b..0272dd1b8bf8 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,6 @@ The steps above will help you configure the WordPress app to run and compile. B We use a few tools to help with development. Running `rake dependencies` will configure or update them for you. -#### CocoaPods - -WordPress for iOS uses [CocoaPods](http://cocoapods.org/) to manage third party libraries. -Third party libraries and resources managed by CocoaPods will be installed by the `rake dependencies` command above. - #### SwiftLint We use [SwiftLint](https://github.com/realm/SwiftLint) to enforce a common style for Swift code. The app should build and work without it, but if you plan to write code, you are encouraged to install it. No commit should have lint warnings or errors. From 4383c67365ad8b97284641b842f7b39a50f6cde2 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 06:43:07 +0100 Subject: [PATCH 08/27] Remove SwiftLint instructions from the `README` --- README.md | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/README.md b/README.md index 0272dd1b8bf8..626fc042824d 100644 --- a/README.md +++ b/README.md @@ -35,28 +35,6 @@ The steps above will help you configure the WordPress app to run and compile. B We use a few tools to help with development. Running `rake dependencies` will configure or update them for you. -#### SwiftLint - -We use [SwiftLint](https://github.com/realm/SwiftLint) to enforce a common style for Swift code. The app should build and work without it, but if you plan to write code, you are encouraged to install it. No commit should have lint warnings or errors. - -You can set up a Git [pre-commit hook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) to run SwiftLint automatically when committing by running: - -`rake git:install_hooks` - -This is the recommended way to include SwiftLint in your workflow, as it catches lint issues locally before your code makes its way to Github. - -Alternately, a SwiftLint scheme is exposed within the project; Xcode will show a warning if you don't have SwiftLint installed. - -Finally, you can also run SwiftLint manually from the command line with: - -`rake lint` - -If your code has any style violations, you can try to automatically correct them by running: - -`rake lint:autocorrect` - -Otherwise you have to fix them manually. - ### Open Xcode Launch the workspace by running the following from the command line: From 1d47e96ec633d02543942716e82a4d2919df7cd7 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 06:48:15 +0100 Subject: [PATCH 09/27] Add a version of Aztec fetched via SwiftPM --- Modules/Package.swift | 5 +++++ .../xcshareddata/swiftpm/Package.resolved | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Modules/Package.swift b/Modules/Package.swift index 784600c6d15e..21082fb156b9 100644 --- a/Modules/Package.swift +++ b/Modules/Package.swift @@ -50,6 +50,7 @@ let package = Package( .package(url: "https://github.com/Automattic/wordpress-rs", revision: "alpha-20241116"), .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "v0.0.3"), .package(url: "https://github.com/Automattic/color-studio", branch: "trunk"), + .package(url: "https://github.com/allenhumphreys/AztecEditor-iOS", branch: "ah/spm"), ], targets: XcodeSupport.targets + [ .target(name: "JetpackStatsWidgetsCore", swiftSettings: [.swiftLanguageMode(.v5)]), @@ -130,6 +131,8 @@ enum XcodeSupport { .product(name: "SVProgressHUD", package: "SVProgressHUD"), .product(name: "ZIPFoundation", package: "ZIPFoundation"), .product(name: "ColorStudio", package: "color-studio"), + .product(name: "Aztec", package: "AztecEditor-iOS"), + .product(name: "WordPressEditor", package: "AztecEditor-iOS"), ] let testDependencies: [Target.Dependency] = [ @@ -173,6 +176,8 @@ enum XcodeSupport { .product(name: "ZIPFoundation", package: "ZIPFoundation"), .product(name: "WordPressAPI", package: "wordpress-rs"), .product(name: "ColorStudio", package: "color-studio"), + .product(name: "Aztec", package: "AztecEditor-iOS"), + .product(name: "WordPressEditor", package: "AztecEditor-iOS"), ]), .xcodeTarget("XcodeTarget_WordPressTests", dependencies: testDependencies + [ "WordPressShared", diff --git a/WordPress.xcworkspace/xcshareddata/swiftpm/Package.resolved b/WordPress.xcworkspace/xcshareddata/swiftpm/Package.resolved index 4888e01b33f6..f5766b999dd4 100644 --- a/WordPress.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/WordPress.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "e67326cf4e0b967f85976c160b6e3742a401276eabf3e18b25fce8bb219e1350", + "originHash" : "69f6228075ada2e7ec8ade65f3d84ae0ce1ca5dcc34cd08df29f99bb0501ea54", "pins" : [ { "identity" : "alamofire", @@ -37,6 +37,15 @@ "version" : "1.1.4" } }, + { + "identity" : "azteceditor-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/allenhumphreys/AztecEditor-iOS", + "state" : { + "branch" : "ah/spm", + "revision" : "1719ce90f714af51ef46f69bd65decad5c5166c3" + } + }, { "identity" : "charts", "kind" : "remoteSourceControl", From 2fbd32df125006e98dc1e3dc14780e7a49412b22 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 06:48:38 +0100 Subject: [PATCH 10/27] Add Gutenberg XCFrameworks via drag-n-drop from local paths --- WordPress/WordPress.xcodeproj/project.pbxproj | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 965e68a03309..0f76dd653aa7 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -370,6 +370,16 @@ 3F56F55C2AEA2F67006BDCEA /* ReaderPostBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F56F55B2AEA2F67006BDCEA /* ReaderPostBuilder.swift */; }; 3F593FDD2A81DC6D00B29E86 /* NSError+TestInstance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F593FDC2A81DC6D00B29E86 /* NSError+TestInstance.swift */; }; 3F5C865D25C9EBEF00BABE64 /* HomeWidgetAllTimeData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F5C861925C9EA2500BABE64 /* HomeWidgetAllTimeData.swift */; }; + 3F60D3942D2C4BA4008ACD86 /* React.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D38F2D2C4BA3008ACD86 /* React.xcframework */; }; + 3F60D3952D2C4BA4008ACD86 /* React.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D38F2D2C4BA3008ACD86 /* React.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3F60D3962D2C4BA4008ACD86 /* Gutenberg.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3902D2C4BA3008ACD86 /* Gutenberg.xcframework */; }; + 3F60D3972D2C4BA4008ACD86 /* Gutenberg.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3902D2C4BA3008ACD86 /* Gutenberg.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3F60D3982D2C4BA4008ACD86 /* RNTAztecView.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3912D2C4BA3008ACD86 /* RNTAztecView.xcframework */; }; + 3F60D3992D2C4BA4008ACD86 /* RNTAztecView.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3912D2C4BA3008ACD86 /* RNTAztecView.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3F60D39A2D2C4BA4008ACD86 /* hermes.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3922D2C4BA3008ACD86 /* hermes.xcframework */; }; + 3F60D39B2D2C4BA4008ACD86 /* hermes.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3922D2C4BA3008ACD86 /* hermes.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3F60D39C2D2C4BA4008ACD86 /* yoga.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3932D2C4BA4008ACD86 /* yoga.xcframework */; }; + 3F60D39D2D2C4BA4008ACD86 /* yoga.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3932D2C4BA4008ACD86 /* yoga.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 3F6DA04125646F96002AB88F /* HomeWidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6DA04025646F96002AB88F /* HomeWidgetData.swift */; }; 3F751D462491A93D0008A2B1 /* ZendeskUtilsTests+Plans.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F751D452491A93D0008A2B1 /* ZendeskUtilsTests+Plans.swift */; }; 3F759FBA2A2DA93B0039A845 /* WPAccount+Fixture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F759FB92A2DA93B0039A845 /* WPAccount+Fixture.swift */; }; @@ -1848,7 +1858,12 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( + 3F60D3972D2C4BA4008ACD86 /* Gutenberg.xcframework in Embed Frameworks */, + 3F60D3992D2C4BA4008ACD86 /* RNTAztecView.xcframework in Embed Frameworks */, 4AD953C82C21451700D0EEFA /* WordPressAuthenticator.framework in Embed Frameworks */, + 3F60D3952D2C4BA4008ACD86 /* React.xcframework in Embed Frameworks */, + 3F60D39B2D2C4BA4008ACD86 /* hermes.xcframework in Embed Frameworks */, + 3F60D39D2D2C4BA4008ACD86 /* yoga.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -2234,6 +2249,11 @@ 3F593FDC2A81DC6D00B29E86 /* NSError+TestInstance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSError+TestInstance.swift"; sourceTree = ""; }; 3F5C861925C9EA2500BABE64 /* HomeWidgetAllTimeData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeWidgetAllTimeData.swift; sourceTree = ""; }; 3F5C86BF25CA197500BABE64 /* HomeWidgetAllTime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeWidgetAllTime.swift; sourceTree = ""; }; + 3F60D38F2D2C4BA3008ACD86 /* React.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = React.xcframework; path = Frameworks/React.xcframework; sourceTree = ""; }; + 3F60D3902D2C4BA3008ACD86 /* Gutenberg.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Gutenberg.xcframework; path = Frameworks/Gutenberg.xcframework; sourceTree = ""; }; + 3F60D3912D2C4BA3008ACD86 /* RNTAztecView.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = RNTAztecView.xcframework; path = Frameworks/RNTAztecView.xcframework; sourceTree = ""; }; + 3F60D3922D2C4BA3008ACD86 /* hermes.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = hermes.xcframework; path = Frameworks/hermes.xcframework; sourceTree = ""; }; + 3F60D3932D2C4BA4008ACD86 /* yoga.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = yoga.xcframework; path = Frameworks/yoga.xcframework; sourceTree = ""; }; 3F63B93B258179D100F581BE /* StatsWidgetEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsWidgetEntry.swift; sourceTree = ""; }; 3F6DA04025646F96002AB88F /* HomeWidgetData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeWidgetData.swift; sourceTree = ""; }; 3F751D452491A93D0008A2B1 /* ZendeskUtilsTests+Plans.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ZendeskUtilsTests+Plans.swift"; sourceTree = ""; }; @@ -3738,6 +3758,7 @@ buildActionMask = 2147483647; files = ( F111B88D2658103C00057942 /* Combine.framework in Frameworks */, + 3F60D39A2D2C4BA4008ACD86 /* hermes.xcframework in Frameworks */, 7E21C761202BBC8E00837CF5 /* iAd.framework in Frameworks */, 8298F3921EEF3BA7008EB7F0 /* StoreKit.framework in Frameworks */, 93F2E5441E9E5A570050D489 /* CoreSpotlight.framework in Frameworks */, @@ -3745,6 +3766,7 @@ 0C6AC6122C364A2800BF7600 /* XcodeTarget_App in Frameworks */, 93F2E53E1E9E5A010050D489 /* CoreText.framework in Frameworks */, E185474E1DED8D8800D875D7 /* UserNotifications.framework in Frameworks */, + 3F60D39C2D2C4BA4008ACD86 /* yoga.xcframework in Frameworks */, FF75933B1BE2423800814D3B /* Photos.framework in Frameworks */, 93E5285619A77BAC003A1A9C /* NotificationCenter.framework in Frameworks */, 93A3F7DE1843F6F00082FEEA /* CoreTelephony.framework in Frameworks */, @@ -3755,8 +3777,11 @@ 24E55D4F2CC9A5CD008D071D /* ImagePlayground.framework in Frameworks */, E10B3654158F2D4500419A93 /* UIKit.framework in Frameworks */, E10B3652158F2D3F00419A93 /* QuartzCore.framework in Frameworks */, + 3F60D3942D2C4BA4008ACD86 /* React.xcframework in Frameworks */, + 3F60D3982D2C4BA4008ACD86 /* RNTAztecView.xcframework in Frameworks */, E1A386CB14DB063800954CF8 /* MediaPlayer.framework in Frameworks */, E1A386CA14DB05F700954CF8 /* CoreMedia.framework in Frameworks */, + 3F60D3962D2C4BA4008ACD86 /* Gutenberg.xcframework in Frameworks */, E1A386C814DB05C300954CF8 /* AVFoundation.framework in Frameworks */, 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 296890780FE971DC00770264 /* Security.framework in Frameworks */, @@ -4379,7 +4404,7 @@ path = Classes; sourceTree = ""; }; - 29B97314FDCFA39411CA2CEA = { + 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( F14B5F6F208E648200439554 /* config */, @@ -4455,6 +4480,11 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + 3F60D3902D2C4BA3008ACD86 /* Gutenberg.xcframework */, + 3F60D3922D2C4BA3008ACD86 /* hermes.xcframework */, + 3F60D38F2D2C4BA3008ACD86 /* React.xcframework */, + 3F60D3912D2C4BA3008ACD86 /* RNTAztecView.xcframework */, + 3F60D3932D2C4BA4008ACD86 /* yoga.xcframework */, 24E55D4D2CC9A5C8008D071D /* ImagePlayground.framework */, 0C43FF802C3601770084B698 /* UIKit.framework */, 3FA640652670CEFE0064401E /* XCTest.framework */, @@ -8254,7 +8284,7 @@ bg, sk, ); - mainGroup = 29B97314FDCFA39411CA2CEA; + mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; preferredProjectObjectVersion = 77; productRefGroup = 19C28FACFE9D520D11CA2CBB /* Products */; projectDirPath = ""; From 4a29aeacd770482bf998d01aa3bea74a09cfcf15 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 06:50:52 +0100 Subject: [PATCH 11/27] Disable `CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER` Was giving errors in Yoga: > Double-quoted include "YGEnums.h" in framework header, expected angle-bracketed instead --- WordPress/WordPress.xcodeproj/project.pbxproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 0f76dd653aa7..88284f2efc40 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -12398,7 +12398,7 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -12782,7 +12782,7 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -12840,7 +12840,7 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; From fbb0997a21089d01890222fa8568c9e67946c49c Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 06:53:10 +0100 Subject: [PATCH 12/27] Disable `CLANG_WARN_STRICT_PROTOTYPES` It resulted in a build failure: > React.framework/Headers/RCTAppearance.h:16:60: > A function declaration without a prototype is deprecated in all versions of C --- WordPress/WordPress.xcodeproj/project.pbxproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 88284f2efc40..70b77830a0b2 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -12400,7 +12400,7 @@ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_STRICT_PROTOTYPES = NO; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -12784,7 +12784,7 @@ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_STRICT_PROTOTYPES = NO; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -12842,7 +12842,7 @@ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_STRICT_PROTOTYPES = NO; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; From 785c6cccc577cd3abbc2fa5447fdd67034d310b7 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 07:46:11 +0100 Subject: [PATCH 13/27] Update search path for Gutenberg React Native bundle in script --- .../CopyGutenbergJS.inputs.xcfilelist | 5 +--- Scripts/BuildPhases/CopyGutenbergJS.sh | 23 +++++++------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/Scripts/BuildPhases/CopyGutenbergJS.inputs.xcfilelist b/Scripts/BuildPhases/CopyGutenbergJS.inputs.xcfilelist index 7ff6b14aa57b..3edf10a4ee61 100644 --- a/Scripts/BuildPhases/CopyGutenbergJS.inputs.xcfilelist +++ b/Scripts/BuildPhases/CopyGutenbergJS.inputs.xcfilelist @@ -1,4 +1 @@ -# Gutenberg when extracted as an XCFramework via CocoaPods -$PODS_XCFRAMEWORKS_BUILD_DIR/Gutenberg/Gutenberg.framework -# Gutenberg when compiled from source via CocoaPods -$PODS_ROOT/Gutenberg/bundle/ios +$SRCROOT/Frameworks/Gutenberg diff --git a/Scripts/BuildPhases/CopyGutenbergJS.sh b/Scripts/BuildPhases/CopyGutenbergJS.sh index ef3687f88c6c..e3cb4b7e4c44 100755 --- a/Scripts/BuildPhases/CopyGutenbergJS.sh +++ b/Scripts/BuildPhases/CopyGutenbergJS.sh @@ -3,36 +3,29 @@ # Update the matching .outputs.xcfilelist when changing this DEST="$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" -# CocoaPods fetches Gutenberg in two possible ways: XCFramework and source. -# -# We check first for the XCFramework setup, falling back to source only if that is not there. -# -# Because the XCFramework location is in `PODS_XCFRAMEWORKS_BUILD_DIR`, it will only appear if CocoaPods use XCFrameworks. -# This makes the setup robust against having both a copy of the XCFramework and of the Gutenberg source code in the Pods folder. - # Update the matching .inputs.xcfilelist when changing these -XCFRAMEWORK_BUNDLE_ROOT="$PODS_XCFRAMEWORKS_BUILD_DIR/Gutenberg/Gutenberg.framework" -PODS_BUNDLE_ROOT="$PODS_ROOT/Gutenberg/bundle/ios" -LOCAL_BUNDLE="$PODS_ROOT/../../gutenberg-mobile/bundle/ios" +# +# Notice we read from the ios-arm64 build, but given what we are after are JS +# files and assets, any architecture would do because they are always the same. +XCFRAMEWORK_BUNDLE_ROOT="$SRCROOT/Frameworks/Gutenberg.xcframework/ios-arm64/Gutenberg.framework" +LOCAL_BUNDLE="$SRCROOT/../gutenberg-mobile/bundle/ios" BUNDLE_FILE="$DEST/main.jsbundle" BUNDLE_ASSETS="$DEST/assets/" if [[ -d $XCFRAMEWORK_BUNDLE_ROOT ]]; then + set +x cp "$XCFRAMEWORK_BUNDLE_ROOT/App.js" "$BUNDLE_FILE" # It appears we don't need to copy the assets when working with the XCFramework -elif [[ -d $PODS_BUNDLE_ROOT ]]; then - cp "$PODS_BUNDLE_ROOT/App.js" "$BUNDLE_FILE" - cp -r "$PODS_BUNDLE_ROOT/assets" "$BUNDLE_ASSETS" elif [[ -d $LOCAL_BUNDLE ]]; then echo "warning: Using local bundle." cp "$LOCAL_BUNDLE/App.js" "$BUNDLE_FILE" cp -r "$LOCAL_BUNDLE/assets" "$BUNDLE_ASSETS" else if [[ "$CONFIGURATION" = *Debug* ]]; then - echo "warning: Could not find Gutenberg bundle in either XCFramework or Pods. But running in Debug configuration so will assume you are working with a local version of Gutenberg." + echo "warning: Could not find Gutenberg bundle in the XCFramework. But running in Debug configuration so will assume you are working with a local version of Gutenberg." else - echo "error: Could not find Gutenberg bundle in either XCFramework or Pods." + echo "error: Could not find Gutenberg bundle in XCFramework." exit 1 fi fi From 450f968aa55bf7c2ff4c668edca25099a8318dd2 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 08:03:12 +0100 Subject: [PATCH 14/27] Remove some leftover bits of CocoaPods set up for automation --- .buildkite/commands/build-for-testing.sh | 3 -- .buildkite/commands/log-outdated-pods.sh | 25 --------- .../commands/prototype-build-jetpack.sh | 3 -- .../commands/prototype-build-wordpress.sh | 4 -- .buildkite/commands/release-build-jetpack.sh | 3 -- .../commands/release-build-wordpress.sh | 3 -- .buildkite/commands/run-pod-tests.sh | 49 ----------------- .rubocop.yml | 6 --- Dangerfile | 2 - Gemfile | 1 - Gemfile.lock | 52 ------------------- Gutenberg/config.yml | 14 ----- fastlane/lanes/build.rb | 24 --------- fastlane/lanes/localization.rb | 9 ++-- fastlane/lanes/screenshots.rb | 2 - 15 files changed, 3 insertions(+), 197 deletions(-) delete mode 100755 .buildkite/commands/log-outdated-pods.sh delete mode 100755 .buildkite/commands/run-pod-tests.sh delete mode 100644 Gutenberg/config.yml diff --git a/.buildkite/commands/build-for-testing.sh b/.buildkite/commands/build-for-testing.sh index 94cee0d5d395..18a06acdd026 100755 --- a/.buildkite/commands/build-for-testing.sh +++ b/.buildkite/commands/build-for-testing.sh @@ -14,9 +14,6 @@ brew install swift-package-list echo "--- :rubygems: Setting up Gems" install_gems -echo "--- :cocoapods: Setting up Pods" -install_cocoapods - echo "--- :writing_hand: Copy Files" mkdir -pv ~/.configure/wordpress-ios/secrets cp -v fastlane/env/project.env-example ~/.configure/wordpress-ios/secrets/project.env diff --git a/.buildkite/commands/log-outdated-pods.sh b/.buildkite/commands/log-outdated-pods.sh deleted file mode 100755 index 5bef2f1972ee..000000000000 --- a/.buildkite/commands/log-outdated-pods.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -eu - -RELEASE_NUMBER=$1 - -if [[ -z "${RELEASE_NUMBER}" ]]; then - echo "Usage $0 " - exit 1 -fi - -echo '--- :robot_face: Use bot for Git operations' -source use-bot-for-git - -.buildkite/commands/checkout-release-branch.sh "$RELEASE_NUMBER" - -echo '--- :ruby: Setup Ruby tools' -install_gems - -echo '--- :cocoapods: Install Pods (required to check for outdated next)' -install_cocoapods - -# Expand this group to surface the information. -# -# It's simpler than capturing the CocoaPods output, filtering, and annotating the build with it. -echo '+++ :cocoapods: Outdated Pods' -bundle exec pod outdated diff --git a/.buildkite/commands/prototype-build-jetpack.sh b/.buildkite/commands/prototype-build-jetpack.sh index 9e5977c62c1a..e5fadfd2499c 100644 --- a/.buildkite/commands/prototype-build-jetpack.sh +++ b/.buildkite/commands/prototype-build-jetpack.sh @@ -11,9 +11,6 @@ brew install swift-package-list echo "--- :rubygems: Setting up Gems" install_gems -echo "--- :cocoapods: Setting up Pods" -install_cocoapods - echo "--- :closed_lock_with_key: Installing Secrets" bundle exec fastlane run configure_apply diff --git a/.buildkite/commands/prototype-build-wordpress.sh b/.buildkite/commands/prototype-build-wordpress.sh index 94e68c8fda75..b2c46a05c606 100644 --- a/.buildkite/commands/prototype-build-wordpress.sh +++ b/.buildkite/commands/prototype-build-wordpress.sh @@ -7,13 +7,9 @@ brew upgrade sentry-cli brew tap FelixHerrmann/tap brew install swift-package-list - echo "--- :rubygems: Setting up Gems" install_gems -echo "--- :cocoapods: Setting up Pods" -install_cocoapods - echo "--- :closed_lock_with_key: Installing Secrets" bundle exec fastlane run configure_apply diff --git a/.buildkite/commands/release-build-jetpack.sh b/.buildkite/commands/release-build-jetpack.sh index bf0157cb1fd5..a93acaada62e 100755 --- a/.buildkite/commands/release-build-jetpack.sh +++ b/.buildkite/commands/release-build-jetpack.sh @@ -13,9 +13,6 @@ brew install ghostscript echo "--- :rubygems: Setting up Gems" install_gems -echo "--- :cocoapods: Setting up Pods" -install_cocoapods - echo "--- :swift: Setting up Swift Packages" install_swiftpm_dependencies diff --git a/.buildkite/commands/release-build-wordpress.sh b/.buildkite/commands/release-build-wordpress.sh index d7e02239f0ae..42694426b9b9 100755 --- a/.buildkite/commands/release-build-wordpress.sh +++ b/.buildkite/commands/release-build-wordpress.sh @@ -13,9 +13,6 @@ brew install ghostscript echo "--- :rubygems: Setting up Gems" install_gems -echo "--- :cocoapods: Setting up Pods" -install_cocoapods - echo "--- :swift: Setting up Swift Packages" install_swiftpm_dependencies diff --git a/.buildkite/commands/run-pod-tests.sh b/.buildkite/commands/run-pod-tests.sh deleted file mode 100755 index 5d8a49c08cf5..000000000000 --- a/.buildkite/commands/run-pod-tests.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -eu - -echo "--- :rubygems: Setting up Gems" -install_gems - -echo "--- :cocoapods: Setting up Pods" -install_cocoapods - -echo "--- :writing_hand: Copy Files" -mkdir -pv ~/.configure/wordpress-ios/secrets -cp -v fastlane/env/project.env-example ~/.configure/wordpress-ios/secrets/project.env - -echo "--- :closed_lock_with_key: Installing Secrets" -bundle exec fastlane run configure_apply - -echo "--- :swift: Setting up Swift Packages" -install_swiftpm_dependencies - -scheme=$1 -echo "--- 🔬 Testing $scheme" -set +e -bundle exec fastlane test_pod "name:$scheme" -TESTS_EXIT_STATUS=$? -set -e - -if [[ $TESTS_EXIT_STATUS -ne 0 ]]; then - # Keep the (otherwise collapsed) current "Testing" section open in Buildkite logs on error. See https://buildkite.com/docs/pipelines/managing-log-output#collapsing-output - echo "^^^ +++" - echo "Unit Tests failed!" -fi - -echo "--- 📦 Zipping test results" -cd build/results/ && zip -rq "$scheme.xcresult.zip" "$scheme.xcresult" && cd - - -echo "--- 🚦 Report Tests Status" -if [[ $TESTS_EXIT_STATUS -eq 0 ]]; then - echo "Unit Tests seems to have passed (exit code 0). All good 👍" -else - echo "The Unit Tests, ran during the '🔬 Testing' step above, have failed." - echo "For more details about the failed tests, check the Buildkite annotation, the logs under the '🔬 Testing' section and the \`.xcresult\` and test reports in Buildkite artifacts." -fi - -if [[ $BUILDKITE_BRANCH == trunk ]] || [[ $BUILDKITE_BRANCH == release/* ]]; then - annotate_test_failures "build/results/$scheme.xml" --slack "build-and-ship" -else - annotate_test_failures "build/results/$scheme.xml" -fi - -exit $TESTS_EXIT_STATUS diff --git a/.rubocop.yml b/.rubocop.yml index 2d169d214fe5..e57e1b4e262f 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -26,12 +26,6 @@ Layout/LineLength: Layout/EmptyLines: Exclude: *xfiles -Style/MutableConstant: - Exclude: - # CocoaPods mutates some input values. - # It's simpler to relax this rule than to address each individually by passing mutable copies. - - Gutenberg/cocoapods_helpers.rb - Style/AsciiComments: Exclude: *xfiles diff --git a/Dangerfile b/Dangerfile index 5deb44319af1..b80512209314 100644 --- a/Dangerfile +++ b/Dangerfile @@ -7,8 +7,6 @@ rubocop.lint(files: [], force_exclusion: true, inline_comment: true, fail_on_inl manifest_pr_checker.check_all_manifest_lock_updated -podfile_checker.check_podfile_does_not_have_branch_references - ios_release_checker.check_core_data_model_changed ios_release_checker.check_release_notes_and_app_store_strings diff --git a/Gemfile b/Gemfile index d58115a4a854..5a695848f690 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,6 @@ source 'https://rubygems.org' -gem 'cocoapods', '~> 1.16' gem 'danger-dangermattic', '~> 1.2' gem 'dotenv' # 2.223.1 includes a fix for an ASC-interfacing issue diff --git a/Gemfile.lock b/Gemfile.lock index 120a6044c025..1e61f63a071a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -19,9 +19,6 @@ GEM tzinfo (~> 2.0, >= 2.0.5) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) - algoliasearch (1.27.5) - httpclient (~> 2.8, >= 2.8.3) - json (>= 1.5.1) artifactory (3.0.17) ast (2.4.2) atomos (0.1.3) @@ -53,43 +50,6 @@ GEM cork nap open4 (~> 1.3) - cocoapods (1.16.2) - addressable (~> 2.8) - claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.16.2) - cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 2.1, < 3.0) - cocoapods-plugins (>= 1.0.0, < 2.0) - cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.6.0, < 2.0) - cocoapods-try (>= 1.1.0, < 2.0) - colored2 (~> 3.1) - escape (~> 0.0.4) - fourflusher (>= 2.3.0, < 3.0) - gh_inspector (~> 1.0) - molinillo (~> 0.8.0) - nap (~> 1.0) - ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.27.0, < 2.0) - cocoapods-core (1.16.2) - activesupport (>= 5.0, < 8) - addressable (~> 2.8) - algoliasearch (~> 1.0) - concurrent-ruby (~> 1.1) - fuzzy_match (~> 2.0.4) - nap (~> 1.0) - netrc (~> 0.11) - public_suffix (~> 4.0) - typhoeus (~> 1.0) - cocoapods-deintegrate (1.0.5) - cocoapods-downloader (2.1) - cocoapods-plugins (1.0.0) - nap - cocoapods-search (1.0.1) - cocoapods-trunk (1.6.0) - nap (>= 0.8, < 2.0) - netrc (~> 0.11) - cocoapods-try (1.2.0) colored (1.2) colored2 (3.1.2) commander (4.6.0) @@ -130,9 +90,6 @@ GEM dotenv (2.8.1) drb (2.2.1) emoji_regex (3.2.3) - escape (0.0.4) - ethon (0.16.0) - ffi (>= 1.15.0) excon (0.112.0) faraday (1.10.4) faraday-em_http (~> 1.0) @@ -229,9 +186,6 @@ GEM xcodeproj (~> 1.22) fastlane-sirp (1.0.0) sysrandom (~> 1.0) - ffi (1.17.0) - fourflusher (2.3.1) - fuzzy_match (2.0.4) gh_inspector (1.1.3) git (1.19.1) addressable (~> 2.8) @@ -293,13 +247,11 @@ GEM mini_mime (1.1.5) mini_portile2 (2.8.8) minitest (5.25.4) - molinillo (0.8.0) multi_json (1.15.0) multipart-post (2.4.1) nanaimo (0.4.0) nap (1.1.0) naturally (2.2.1) - netrc (0.11.0) nkf (0.2.0) nokogiri (1.17.2) mini_portile2 (~> 2.8.2) @@ -352,7 +304,6 @@ GEM parser (>= 3.3.1.0) rubocop-rake (0.6.0) rubocop (~> 1.0) - ruby-macho (2.5.1) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -378,8 +329,6 @@ GEM tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) - typhoeus (1.4.1) - ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) @@ -401,7 +350,6 @@ PLATFORMS ruby DEPENDENCIES - cocoapods (~> 1.16) danger-dangermattic (~> 1.2) dotenv fastlane (~> 2.226) diff --git a/Gutenberg/config.yml b/Gutenberg/config.yml deleted file mode 100644 index 204d29aff591..000000000000 --- a/Gutenberg/config.yml +++ /dev/null @@ -1,14 +0,0 @@ - # 'ref' should have either a commit or tag key. - # If both are set, tag will take precedence. - # - # We have automation that reads and updates this file. - # Leaving commented keys is discouraged, because the automation would ignore them and the resulting updates would be noisy - # If you want to use a local version, please use the LOCAL_GUTENBERG environment variable when calling CocoaPods. - # - # Example: - # - # LOCAL_GUTENBERG=../my-gutenberg-fork bundle exec pod install -ref: - tag: v1.121.0 -github_org: wordpress-mobile -repo_name: gutenberg-mobile diff --git a/fastlane/lanes/build.rb b/fastlane/lanes/build.rb index ed75d66f1378..2deaf38d18df 100644 --- a/fastlane/lanes/build.rb +++ b/fastlane/lanes/build.rb @@ -124,30 +124,6 @@ trainer(path: lane_context[SharedValues::SCAN_GENERATED_XCRESULT_PATH], fail_build: true) end - # Run tests of given pod in the Pods project - # - # @option [String] name Shared scheme in the Pods.xcodeproj - # - # @called_by CI - # - desc 'Run tests of given pod in the Pods project' - lane :test_pod do |options| - run_tests( - project: 'Pods/Pods.xcodeproj', - scheme: options[:name], - device: options[:device], - deployment_target_version: options[:ios_version], - ensure_devices_found: true, - output_directory: File.join(PROJECT_ROOT_FOLDER, 'build', 'results'), - reset_simulator: true, - result_bundle: true, - output_types: '', - fail_build: false - ) - - trainer(path: lane_context[SharedValues::SCAN_GENERATED_XCRESULT_PATH], fail_build: true) - end - # Builds the WordPress app and uploads it to TestFlight, for beta-testing or final release # # @option [Boolean] skip_confirm (default: false) If true, avoids any interactive prompt diff --git a/fastlane/lanes/localization.rb b/fastlane/lanes/localization.rb index 8fd63e01a376..764f3695cf4e 100644 --- a/fastlane/lanes/localization.rb +++ b/fastlane/lanes/localization.rb @@ -129,12 +129,9 @@ # @called_by complete_code_freeze # lane :generate_strings_file_for_glotpress do |skip_commit: false, derived_data_path: DERIVED_DATA_PATH, gutenberg_absolute_path: nil| - # Fetch fresh pods to read the latest localizations from them. - # In CI, we expect the pods to be already available and up to date. - cocoapods unless is_ci - - # For the same reason, fetch fresh packages. - # However, notice we currently need to do this in CI as well. + # Fetch fresh packages to read the latest localizations from them. + # + # Notice we currently need to do this in CI as well as locally. # That's because we haven't yet implemented a method to share the derived data folder explicitly between the CI SPM caching logic and this lane. # # See also: diff --git a/fastlane/lanes/screenshots.rb b/fastlane/lanes/screenshots.rb index 8eda07d2ee6c..1e95b9600c88 100644 --- a/fastlane/lanes/screenshots.rb +++ b/fastlane/lanes/screenshots.rb @@ -41,8 +41,6 @@ # desc 'Generate localised screenshots' lane :screenshots do |options| - cocoapods # pod install - FileUtils.rm_rf(DERIVED_DATA_PATH) unless options[:skip_clean] scheme = options[:scheme] || 'WordPressScreenshotGeneration' From 250711e8518fa775b5374adcc24cff3f951851f1 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 08:04:54 +0100 Subject: [PATCH 15/27] Remove leftover `COCOAPODS` precompiler flag Strange that `pod deintegrate` did not remove it. Maybe it was some custom piece of setup... --- WordPress/WordPress.xcodeproj/project.pbxproj | 23 ++++--------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 70b77830a0b2..2e3718b0627d 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -10631,7 +10631,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -10681,7 +10680,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", ALPHA_BUILD, "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); @@ -10778,7 +10776,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -10826,7 +10823,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", ALPHA_BUILD, "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); @@ -10897,7 +10893,6 @@ GCC_PREFIX_HEADER = WordPress_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "NSLOGGER_BUILD_USERNAME=\"${USER}\"", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); @@ -11325,7 +11320,6 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", "DEBUG=1", ); @@ -11373,7 +11367,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -11419,7 +11412,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -11464,7 +11456,6 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", "DEBUG=1", ); @@ -11512,7 +11503,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -11558,7 +11548,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -11793,7 +11782,7 @@ "@executable_path/../../Frameworks", ); MTL_ENABLE_DEBUG_INFO = YES; - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG"; + OTHER_SWIFT_FLAGS = "$(inherited) -D DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = com.automattic.jetpack.JetpackShare; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "Jetpack iOS Development Share Extension"; @@ -11928,7 +11917,7 @@ "@executable_path/../../Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D ALPHA_BUILD -D INTERNAL_BUILD"; + OTHER_SWIFT_FLAGS = "$(inherited) -D ALPHA_BUILD -D INTERNAL_BUILD"; PRODUCT_BUNDLE_IDENTIFIER = com.jetpack.alpha.JetpackShare; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "match InHouse com.jetpack.alpha.JetpackShare"; @@ -12120,7 +12109,6 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", "DEBUG=1", ); @@ -12169,7 +12157,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -12216,7 +12203,6 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -12597,7 +12583,7 @@ "@executable_path/../../Frameworks", ); MTL_ENABLE_DEBUG_INFO = YES; - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG"; + OTHER_SWIFT_FLAGS = "$(inherited) -D DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = org.wordpress.WordPressShare; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "WordPress Share Extension Development"; @@ -12730,7 +12716,7 @@ "@executable_path/../../Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D ALPHA_BUILD -D INTERNAL_BUILD"; + OTHER_SWIFT_FLAGS = "$(inherited) -D ALPHA_BUILD -D INTERNAL_BUILD"; PRODUCT_BUNDLE_IDENTIFIER = org.wordpress.alpha.WordPressShare; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "match InHouse org.wordpress.alpha.WordPressShare"; @@ -13106,7 +13092,6 @@ GCC_PREFIX_HEADER = WordPress_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", - "COCOAPODS=1", "NSLOGGER_BUILD_USERNAME=\"${USER}\"", "WPCOM_SCHEME=\\@\\\"${WPCOM_SCHEME}\\\"", ); From 8720c7edef3d95d82441eb44a59475f825ad2a8e Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 08:09:05 +0100 Subject: [PATCH 16/27] Remove a couple of CocoaPods-specific code branches --- .../Utility/NSBundle+WordPressShared.swift | 4 ---- .../Classes/System/WordPressAppDelegate.swift | 5 ----- WordPress/WordPress.xcodeproj/project.pbxproj | 10 ---------- .../Authenticator/WordPressAuthenticator.swift | 18 +----------------- .../Sources/Private/WPAuthenticator-Swift.h | 8 -------- .../Sources/Services/LoginFacade.m | 2 +- .../Services/WordPressXMLRPCAPIFacade.m | 2 +- 7 files changed, 3 insertions(+), 46 deletions(-) delete mode 100644 WordPressAuthenticator/Sources/Private/WPAuthenticator-Swift.h diff --git a/Modules/Sources/WordPressShared/Utility/NSBundle+WordPressShared.swift b/Modules/Sources/WordPressShared/Utility/NSBundle+WordPressShared.swift index 6b8e03a44624..5ab409f81fb9 100644 --- a/Modules/Sources/WordPressShared/Utility/NSBundle+WordPressShared.swift +++ b/Modules/Sources/WordPressShared/Utility/NSBundle+WordPressShared.swift @@ -4,10 +4,6 @@ private class BundleFinder: NSObject {} extension Bundle { - /// Returns the WordPressShared Bundle - /// If installed via CocoaPods, this will be WordPressShared.bundle, - /// otherwise it will be the framework bundle. - /// @objc public class var wordPressSharedBundle: Bundle { #if DEBUG // Workaround for https://forums.swift.org/t/swift-5-3-swiftpm-resources-in-tests-uses-wrong-bundle-path/37051 diff --git a/WordPress/Classes/System/WordPressAppDelegate.swift b/WordPress/Classes/System/WordPressAppDelegate.swift index fd78c601c94d..81d471a5cc9f 100644 --- a/WordPress/Classes/System/WordPressAppDelegate.swift +++ b/WordPress/Classes/System/WordPressAppDelegate.swift @@ -400,11 +400,6 @@ extension WordPressAppDelegate { } func configureSelfHostedChallengeHandler() { - /// Note: - /// WordPressKit, now imported via CocoaPods, has the `AppExtension Safe API Only` flag set to *true*. Meaning that - /// the host app is, effectively as of now, responsible for presenting any alert onscreen (whenever a HTTP Challenge is - /// received). Capicci? - /// WordPressOrgXMLRPCApi.onChallenge = { (challenge, completionHandler) in guard let alertController = HTTPAuthenticationAlertController.controller(for: challenge, handler: completionHandler) else { completionHandler(.performDefaultHandling, nil) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 2e3718b0627d..0b2f689f29e6 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -2440,7 +2440,6 @@ 4AD9542D2C2145CB00D0EEFA /* WPNUXMainButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WPNUXMainButton.m; sourceTree = ""; }; 4AD954342C2145CB00D0EEFA /* WPWalkthroughTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WPWalkthroughTextField.h; sourceTree = ""; }; 4AD954352C2145CB00D0EEFA /* WPWalkthroughTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WPWalkthroughTextField.m; sourceTree = ""; }; - 4AD954372C2145CB00D0EEFA /* WPAuthenticator-Swift.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "WPAuthenticator-Swift.h"; sourceTree = ""; }; 4AD954432C2145CB00D0EEFA /* LoginFacade.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginFacade.h; sourceTree = ""; }; 4AD954442C2145CB00D0EEFA /* LoginFacade.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginFacade.m; sourceTree = ""; }; 4AD954452C2145CB00D0EEFA /* LoginFacade.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginFacade.swift; sourceTree = ""; }; @@ -5054,14 +5053,6 @@ path = NUX; sourceTree = ""; }; - 4AD954382C2145CB00D0EEFA /* Private */ = { - isa = PBXGroup; - children = ( - 4AD954372C2145CB00D0EEFA /* WPAuthenticator-Swift.h */, - ); - path = Private; - sourceTree = ""; - }; 4AD954422C2145CB00D0EEFA /* Resources */ = { isa = PBXGroup; children = ( @@ -5281,7 +5272,6 @@ 4AD954152C2145CB00D0EEFA /* Model */, 4AD9541D2C2145CB00D0EEFA /* Navigation */, 4AD954362C2145CB00D0EEFA /* NUX */, - 4AD954382C2145CB00D0EEFA /* Private */, 4AD954422C2145CB00D0EEFA /* Resources */, 4AD954502C2145CB00D0EEFA /* Services */, 4AD954642C2145CB00D0EEFA /* Signin */, diff --git a/WordPressAuthenticator/Sources/Authenticator/WordPressAuthenticator.swift b/WordPressAuthenticator/Sources/Authenticator/WordPressAuthenticator.swift index 966dd50f8526..529378a82e74 100644 --- a/WordPressAuthenticator/Sources/Authenticator/WordPressAuthenticator.swift +++ b/WordPressAuthenticator/Sources/Authenticator/WordPressAuthenticator.swift @@ -526,24 +526,8 @@ import WordPressKit UIApplication.shared.open(forgotPasswordURL) } - /// Returns the WordPressAuthenticator Bundle - /// If installed via CocoaPods, this will be WordPressAuthenticator.bundle, - /// otherwise it will be the framework bundle. - /// public class var bundle: Bundle { - let defaultBundle = Bundle(for: WordPressAuthenticator.self) - - #if COCOAPODS - // If installed with CocoaPods, resources will be in WordPressAuthenticator.bundle - if let bundleURL = defaultBundle.resourceURL, - // TODO: Update bundle lookup - let resourceBundle = Bundle(url: bundleURL.appendingPathComponent("WordPressAuthenticatorResources.bundle")) { - return resourceBundle - } - #endif - - // Otherwise, the default bundle is used for resources - return defaultBundle + Bundle(for: WordPressAuthenticator.self) } } diff --git a/WordPressAuthenticator/Sources/Private/WPAuthenticator-Swift.h b/WordPressAuthenticator/Sources/Private/WPAuthenticator-Swift.h deleted file mode 100644 index a6e267a2aa72..000000000000 --- a/WordPressAuthenticator/Sources/Private/WPAuthenticator-Swift.h +++ /dev/null @@ -1,8 +0,0 @@ -// Import this header instead of -// This allows the pod to be built as a static or dynamic framework -// See https://github.com/CocoaPods/CocoaPods/issues/7594 -#if __has_include("WordPressAuthenticator-Swift.h") - #import "WordPressAuthenticator-Swift.h" -#else - #import -#endif diff --git a/WordPressAuthenticator/Sources/Services/LoginFacade.m b/WordPressAuthenticator/Sources/Services/LoginFacade.m index 014c480c665e..333865b345d6 100644 --- a/WordPressAuthenticator/Sources/Services/LoginFacade.m +++ b/WordPressAuthenticator/Sources/Services/LoginFacade.m @@ -1,6 +1,6 @@ #import "LoginFacade.h" #import "WordPressXMLRPCAPIFacade.h" -#import "WPAuthenticator-Swift.h" +#import @import NSURL_IDN; @import WordPressKit; diff --git a/WordPressAuthenticator/Sources/Services/WordPressXMLRPCAPIFacade.m b/WordPressAuthenticator/Sources/Services/WordPressXMLRPCAPIFacade.m index cd36a5457c7b..fb32c4f502a2 100644 --- a/WordPressAuthenticator/Sources/Services/WordPressXMLRPCAPIFacade.m +++ b/WordPressAuthenticator/Sources/Services/WordPressXMLRPCAPIFacade.m @@ -1,5 +1,5 @@ #import "WordPressXMLRPCAPIFacade.h" -#import "WPAuthenticator-Swift.h" +#import @import WordPressKit; From 3111efaf123712e0d733c8d93784b0fc38be5dbb Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 08:21:35 +0100 Subject: [PATCH 17/27] Temporarily switch to CI toolkit branch compatible with no CocoaPods --- .buildkite/shared-pipeline-vars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/shared-pipeline-vars b/.buildkite/shared-pipeline-vars index 5f16b165204a..52d6b4e8dbe0 100755 --- a/.buildkite/shared-pipeline-vars +++ b/.buildkite/shared-pipeline-vars @@ -5,7 +5,7 @@ # The ~> modifier is not currently used, but we check for it just in case XCODE_VERSION=$(sed -E 's/^~> ?//' .xcode-version) -CI_TOOLKIT_PLUGIN_VERSION="3.7.1" +CI_TOOLKIT_PLUGIN_VERSION="mokagio/bypass-cp-localization-lint" export IMAGE_ID="xcode-$XCODE_VERSION-macos-14.7.1-v1" export CI_TOOLKIT_PLUGIN="automattic/a8c-ci-toolkit#$CI_TOOLKIT_PLUGIN_VERSION" From 80df5af50aad5a4d728d4886ee3d9580672b03fb Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 08:31:11 +0100 Subject: [PATCH 18/27] Fetch XCFrameworks in CI --- .buildkite/commands/build-for-testing.sh | 6 +----- .buildkite/commands/prototype-build-jetpack.sh | 6 +----- .buildkite/commands/prototype-build-wordpress.sh | 6 +----- .buildkite/commands/release-build-jetpack.sh | 6 +----- .buildkite/commands/run-ui-tests.sh | 4 +--- .buildkite/commands/run-unit-tests.sh | 4 +--- .buildkite/commands/shared-set-up.sh | 12 ++++++++++++ 7 files changed, 18 insertions(+), 26 deletions(-) create mode 100755 .buildkite/commands/shared-set-up.sh diff --git a/.buildkite/commands/build-for-testing.sh b/.buildkite/commands/build-for-testing.sh index 18a06acdd026..7b70ac9cc209 100755 --- a/.buildkite/commands/build-for-testing.sh +++ b/.buildkite/commands/build-for-testing.sh @@ -11,8 +11,7 @@ echo "--- :beer: Installing Homebrew Dependencies" brew tap FelixHerrmann/tap brew install swift-package-list -echo "--- :rubygems: Setting up Gems" -install_gems +"$(dirname "${BASH_SOURCE[0]}")/shared-set-up.sh" echo "--- :writing_hand: Copy Files" mkdir -pv ~/.configure/wordpress-ios/secrets @@ -21,9 +20,6 @@ cp -v fastlane/env/project.env-example ~/.configure/wordpress-ios/secrets/projec echo "--- :closed_lock_with_key: Installing Secrets" bundle exec fastlane run configure_apply -echo "--- :swift: Setting up Swift Packages" -install_swiftpm_dependencies - echo "--- :hammer_and_wrench: Building" bundle exec fastlane build_${APP}_for_testing diff --git a/.buildkite/commands/prototype-build-jetpack.sh b/.buildkite/commands/prototype-build-jetpack.sh index e5fadfd2499c..c920e20ba95c 100644 --- a/.buildkite/commands/prototype-build-jetpack.sh +++ b/.buildkite/commands/prototype-build-jetpack.sh @@ -8,14 +8,10 @@ brew upgrade sentry-cli brew tap FelixHerrmann/tap brew install swift-package-list -echo "--- :rubygems: Setting up Gems" -install_gems +"$(dirname "${BASH_SOURCE[0]}")/shared-set-up.sh" echo "--- :closed_lock_with_key: Installing Secrets" bundle exec fastlane run configure_apply -echo "--- :swift: Setting up Swift Packages" -install_swiftpm_dependencies - echo "--- :hammer_and_wrench: Building" bundle exec fastlane build_and_upload_jetpack_prototype_build diff --git a/.buildkite/commands/prototype-build-wordpress.sh b/.buildkite/commands/prototype-build-wordpress.sh index b2c46a05c606..5dac21969026 100644 --- a/.buildkite/commands/prototype-build-wordpress.sh +++ b/.buildkite/commands/prototype-build-wordpress.sh @@ -7,14 +7,10 @@ brew upgrade sentry-cli brew tap FelixHerrmann/tap brew install swift-package-list -echo "--- :rubygems: Setting up Gems" -install_gems +"$(dirname "${BASH_SOURCE[0]}")/shared-set-up.sh" echo "--- :closed_lock_with_key: Installing Secrets" bundle exec fastlane run configure_apply -echo "--- :swift: Setting up Swift Packages" -install_swiftpm_dependencies - echo "--- :hammer_and_wrench: Building" bundle exec fastlane build_and_upload_wordpress_prototype_build diff --git a/.buildkite/commands/release-build-jetpack.sh b/.buildkite/commands/release-build-jetpack.sh index a93acaada62e..b6dd3f4de70b 100755 --- a/.buildkite/commands/release-build-jetpack.sh +++ b/.buildkite/commands/release-build-jetpack.sh @@ -10,11 +10,7 @@ brew install swift-package-list brew install imagemagick brew install ghostscript -echo "--- :rubygems: Setting up Gems" -install_gems - -echo "--- :swift: Setting up Swift Packages" -install_swiftpm_dependencies +"$(dirname "${BASH_SOURCE[0]}")/shared-set-up.sh" echo "--- :closed_lock_with_key: Installing Secrets" bundle exec fastlane run configure_apply diff --git a/.buildkite/commands/run-ui-tests.sh b/.buildkite/commands/run-ui-tests.sh index 707706a66df9..ed7d35fbb879 100755 --- a/.buildkite/commands/run-ui-tests.sh +++ b/.buildkite/commands/run-ui-tests.sh @@ -18,12 +18,10 @@ echo "--- 📦 Downloading Build Artifacts" download_artifact build-products-jetpack.tar tar -xf build-products-jetpack.tar +# Only the gems are needed here, given we run the tests on a pre-built binary echo "--- :rubygems: Setting up Gems" install_gems -echo "--- :swift: Setting up Swift Packages" -install_swiftpm_dependencies - echo "--- 🔬 Testing" xcrun simctl list >> /dev/null rake mocks & diff --git a/.buildkite/commands/run-unit-tests.sh b/.buildkite/commands/run-unit-tests.sh index 828f7ea1d9b4..09fd91e0db8e 100755 --- a/.buildkite/commands/run-unit-tests.sh +++ b/.buildkite/commands/run-unit-tests.sh @@ -8,12 +8,10 @@ echo "--- 📦 Downloading Build Artifacts" download_artifact build-products-wordpress.tar tar -xf build-products-wordpress.tar +# Only the gems are needed here, given we run the tests on a pre-built binary echo "--- :rubygems: Setting up Gems" install_gems -echo "--- :swift: Setting up Swift Packages" -install_swiftpm_dependencies - echo "--- 🔬 Testing" set +e bundle exec fastlane test_without_building name:WordPressUnitTests diff --git a/.buildkite/commands/shared-set-up.sh b/.buildkite/commands/shared-set-up.sh new file mode 100755 index 000000000000..2a4ac9c1e8d8 --- /dev/null +++ b/.buildkite/commands/shared-set-up.sh @@ -0,0 +1,12 @@ +#!/bin/bash -eu + +echo "--- :rubygems: Setting up Gems" +install_gems + +echo "--- :swift: Setting up Swift Packages" +install_swiftpm_dependencies + +echo "--- :xcode: Fetch XCFrameworks" +pushd WordPress +make dependencies +popd From cacf57ea0552ad1a873b2ea6292a216bbe909309 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 08:43:17 +0100 Subject: [PATCH 19/27] Update Gutenberg checkout logic in localization lint for CP-less setup --- fastlane/Fastfile | 14 -------------- fastlane/lanes/localization.rb | 29 +++++++---------------------- fastlane/lanes/release.rb | 26 -------------------------- 3 files changed, 7 insertions(+), 62 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index dca5fe8a87e8..b652009de547 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -77,20 +77,6 @@ def get_required_env(key) ENV.fetch(key, nil) end -def gutenberg_config! - require 'yaml' - - gutenberg_config_path = File.join(PROJECT_ROOT_FOLDER, 'Gutenberg', 'config.yml') - - UI.user_error!("Could not find config YAML at path #{gutenberg_config_path}") unless File.exist?(gutenberg_config_path) - - begin - YAML.safe_load_file(gutenberg_config_path, symbolize_names: true) - rescue StandardError => e - UI.user_error!("Could not parse config YAML. Failed with: #{e.message}") - end -end - ######################################################################## # Version Methods ######################################################################## diff --git a/fastlane/lanes/localization.rb b/fastlane/lanes/localization.rb index 764f3695cf4e..754c6e806c63 100644 --- a/fastlane/lanes/localization.rb +++ b/fastlane/lanes/localization.rb @@ -4,6 +4,9 @@ # Constants ################################################# +# See WordPress/Makefile +GUTENBERG_TAG = 'v1.121.0' + # URL of the GlotPress project containing the app's strings GLOTPRESS_APP_STRINGS_PROJECT_URL = 'https://translate.wordpress.org/projects/apps/ios/dev/' @@ -151,39 +154,21 @@ UI.message("Using Gutenberg from #{gutenberg_absolute_path} instead of cloning it...") generate_strings_file(gutenberg_path: gutenberg_absolute_path, derived_data_path: derived_data_path) else - # On top of fetching the latest Pods, we also need to fetch the source for the Gutenberg code. + # On top of fetching the latest dependencies, we also need to fetch the source for the Gutenberg code. # To get it, we need to manually clone the repo, since Gutenberg is distributed via XCFramework. # XCFrameworks are binary targets and cannot extract strings via genstrings from there. - config = gutenberg_config! - - ref_node = config[:ref] - UI.user_error!('Could not find Gutenberg ref to clone the repository in order to access its strings.') if ref_node.nil? - - ref = ref_node[:tag] || ref_node[:commit] - UI.user_error!('The ref to clone Gutenberg in order to access its strings has neither tag nor commit values.') if ref.nil? - - github_org = config[:github_org] - UI.user_error!('Could not find GitHub organization name to clone Gutenberg in order to access its strings.') if github_org.nil? - - repo_name = config[:repo_name] - UI.user_error!('Could not find GitHub repository name to clone Gutenberg in order to access its strings.') if repo_name.nil? # Create a temporary directory to clone Gutenberg into. Dir.mktmpdir do |tempdir| gutenberg_clone_name = 'Gutenberg-Strings-Clone' gutenberg_path = File.join(tempdir, gutenberg_clone_name) - repo_url = "https://github.com/#{github_org}/#{repo_name}" + repo_url = 'https://github.com/wordpress-mobile/gutenberg-mobile' UI.message("Cloning Gutenberg from #{repo_url} into #{gutenberg_clone_name}. This might take a few minutes…") sh('git', 'clone', '--depth', '1', repo_url, gutenberg_path) Dir.chdir(gutenberg_path) do - if ref_node[:tag] - sh('git', 'fetch', 'origin', "refs/tags/#{ref}:refs/tags/#{ref}") - sh('git', 'checkout', "refs/tags/#{ref}") - else - sh('git', 'fetch', 'origin', ref) - sh('git', 'checkout', ref) - end + sh('git', 'fetch', 'origin', "refs/tags/#{GUTENBERG_TAG}:refs/tags/#{GUTENBERG_TAG}") + sh('git', 'checkout', "refs/tags/#{GUTENBERG_TAG}") end generate_strings_file(gutenberg_path: gutenberg_path, derived_data_path: derived_data_path) diff --git a/fastlane/lanes/release.rb b/fastlane/lanes/release.rb index e1db30bf20a6..0322cc309b2d 100644 --- a/fastlane/lanes/release.rb +++ b/fastlane/lanes/release.rb @@ -21,9 +21,6 @@ # Checks if internal dependencies are on a stable version check_pods_references - # Make sure that Gutenberg is configured as expected for a successful code freeze - gutenberg_dep_check - release_branch_name = compute_release_branch_name(options: options, version: release_version_next) ensure_branch_does_not_exist!(release_branch_name) @@ -499,29 +496,6 @@ def trigger_buildkite_release_build(branch:, beta:) end end -# Checks that the Gutenberg pod is reference by a tag and not a commit -# -desc 'Verifies that Gutenberg is referenced by release version and not by commit' -lane :gutenberg_dep_check do - source = gutenberg_config![:ref] - - UI.user_error!('Gutenberg config does not contain expected key :ref') if source.nil? - - case [source[:tag], source[:commit]] - when [nil, nil] - UI.user_error!('Could not find any Gutenberg version reference.') - when [nil, commit = source[:commit]] - if UI.confirm("Gutenberg referenced by commit (#{commit}) instead than by tag. Do you want to continue anyway?") - UI.message("Gutenberg version: #{commit}") - else - UI.user_error!('Aborting...') - end - else - # If a tag is present, the commit value is ignored - UI.message("Gutenberg version: #{source[:tag]}") - end -end - lane :lint_localizations do |options| ios_lint_localizations( input_dir: 'WordPress/Resources', From f3bb1229c5f49106855f483d59cdd71100fccccf Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 08:43:43 +0100 Subject: [PATCH 20/27] Update source map upload for CP-less Gutenberg setup --- fastlane/lanes/build.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/lanes/build.rb b/fastlane/lanes/build.rb index 2deaf38d18df..54e8e7aa3dc2 100644 --- a/fastlane/lanes/build.rb +++ b/fastlane/lanes/build.rb @@ -490,7 +490,7 @@ def upload_build_to_app_center( end def upload_gutenberg_sourcemaps(sentry_project_slug:, release_version:, build_version:, app_identifier:) - gutenberg_bundle_source_map_folder = File.join(PROJECT_ROOT_FOLDER, 'Pods', 'Gutenberg', 'react-native-bundle-source-map') + gutenberg_bundle_source_map_folder = File.join(PROJECT_ROOT_FOLDER, 'WordPress', 'Frameworks', 'react-native-bundle-source-map') # To generate the full release version string to attach the source maps, we need to specify: # - App identifier From 13473f94d92e1c1d5f047d1cbeaccaae3e4140e0 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 08:45:33 +0100 Subject: [PATCH 21/27] Ensure `Frameworks` folder exist, otherwise tar will fail --- WordPress/Frameworks/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 WordPress/Frameworks/.gitkeep diff --git a/WordPress/Frameworks/.gitkeep b/WordPress/Frameworks/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 From 8e6ff0f65b07cd7434da1a050347b659f4931ae6 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 09:00:43 +0100 Subject: [PATCH 22/27] Remove "Log Outdated Pods" step from code freeze We don't have pods anymore --- .buildkite/release-pipelines/complete-code-freeze.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.buildkite/release-pipelines/complete-code-freeze.yml b/.buildkite/release-pipelines/complete-code-freeze.yml index aad2868d3f46..8f848bd53d79 100644 --- a/.buildkite/release-pipelines/complete-code-freeze.yml +++ b/.buildkite/release-pipelines/complete-code-freeze.yml @@ -17,12 +17,3 @@ steps: manual: # If those jobs fail, one should always prefer re-triggering a new build from ReleaseV2 rather than retrying the individual job from Buildkite allowed: false - - - label: Log Outdated Pods - depends_on: complete_code_freeze - plugins: [$CI_TOOLKIT_PLUGIN] - command: .buildkite/commands/log-outdated-pods.sh "$RELEASE_VERSION" - retry: - manual: - # If those jobs fail, one should always prefer re-triggering a new build from ReleaseV2 rather than retrying the individual job from Buildkite - allowed: false From cd6946da571c1bf5154a5e0360b6735efc5ead55 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 09:03:56 +0100 Subject: [PATCH 23/27] Remove Pods from lists in `.gitignore` and RuboCop We don't use Pods anymore --- .gitignore | 1 - .rubocop.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index 20127ebe6e21..3db0883baf6a 100644 --- a/.gitignore +++ b/.gitignore @@ -36,7 +36,6 @@ $RECYCLE.BIN/ # Project /Entitlements.plist -Pods/ WordPress.xcworkspace/*.mode1v3 WordPress.xcworkspace/*.mode2v3 WordPress.xcworkspace/*.pbxuser diff --git a/.rubocop.yml b/.rubocop.yml index e57e1b4e262f..ac394adddb51 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,7 +1,6 @@ AllCops: Exclude: - DerivedData/**/* - - Pods/**/* - vendor/**/* - WordPressAuthenticator/**/* - WordPressKit/**/* From 56dfbceb749f8d98c2e47965bc1396af6dbafb95 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 09:04:27 +0100 Subject: [PATCH 24/27] Remove imports of Pods xcconfigs --- config/Jetpack.alpha.xcconfig | 1 - config/Jetpack.debug.xcconfig | 1 - config/Jetpack.release.xcconfig | 2 -- 3 files changed, 4 deletions(-) diff --git a/config/Jetpack.alpha.xcconfig b/config/Jetpack.alpha.xcconfig index e0a1e6d3b000..26e3946e4953 100644 --- a/config/Jetpack.alpha.xcconfig +++ b/config/Jetpack.alpha.xcconfig @@ -1,4 +1,3 @@ -#include "../Pods/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack.release-alpha.xcconfig" #include "Common.enterprise.xcconfig" BUILD_SCHEME=Jetpack diff --git a/config/Jetpack.debug.xcconfig b/config/Jetpack.debug.xcconfig index 72919bb1e71d..6992cb79c495 100644 --- a/config/Jetpack.debug.xcconfig +++ b/config/Jetpack.debug.xcconfig @@ -1,4 +1,3 @@ -#include "../Pods/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack.debug.xcconfig" #include "Common.debug.xcconfig" BUILD_SCHEME=Jetpack diff --git a/config/Jetpack.release.xcconfig b/config/Jetpack.release.xcconfig index f36c18d80122..b00dfd5b8fa7 100644 --- a/config/Jetpack.release.xcconfig +++ b/config/Jetpack.release.xcconfig @@ -1,3 +1 @@ -#include "../Pods/Target Support Files/Pods-Apps-Jetpack/Pods-Apps-Jetpack.release.xcconfig" - BUILD_SCHEME=Jetpack From 89884bddb6e85a327765e27a0e67e89047aca0f4 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 09:04:39 +0100 Subject: [PATCH 25/27] No longer look in Pods folder to extract localizations --- fastlane/lanes/localization.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/fastlane/lanes/localization.rb b/fastlane/lanes/localization.rb index 754c6e806c63..410ab77cfec2 100644 --- a/fastlane/lanes/localization.rb +++ b/fastlane/lanes/localization.rb @@ -189,7 +189,6 @@ def generate_strings_file(gutenberg_path:, derived_data_path:) ios_generate_strings_file_from_code( paths: [ 'WordPress/', - 'Pods/WordPress*/', 'Modules/Sources/', 'WordPressAuthenticator/Sources/', gutenberg_path, From b636e1692e192422373b40f70dc6e6b3fb294426 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 09:22:15 +0100 Subject: [PATCH 26/27] Link Gutenberg XCFramework in Jetpack target too! --- WordPress/WordPress.xcodeproj/project.pbxproj | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 0b2f689f29e6..cc6eeda319d1 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -370,6 +370,16 @@ 3F56F55C2AEA2F67006BDCEA /* ReaderPostBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F56F55B2AEA2F67006BDCEA /* ReaderPostBuilder.swift */; }; 3F593FDD2A81DC6D00B29E86 /* NSError+TestInstance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F593FDC2A81DC6D00B29E86 /* NSError+TestInstance.swift */; }; 3F5C865D25C9EBEF00BABE64 /* HomeWidgetAllTimeData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F5C861925C9EA2500BABE64 /* HomeWidgetAllTimeData.swift */; }; + 3F608F7F2D2D1A9E008ACD86 /* Gutenberg.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3902D2C4BA3008ACD86 /* Gutenberg.xcframework */; }; + 3F608F802D2D1A9E008ACD86 /* Gutenberg.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3902D2C4BA3008ACD86 /* Gutenberg.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3F608F812D2D1A9E008ACD86 /* hermes.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3922D2C4BA3008ACD86 /* hermes.xcframework */; }; + 3F608F822D2D1A9E008ACD86 /* hermes.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3922D2C4BA3008ACD86 /* hermes.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3F608F832D2D1A9E008ACD86 /* React.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D38F2D2C4BA3008ACD86 /* React.xcframework */; }; + 3F608F842D2D1A9E008ACD86 /* React.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D38F2D2C4BA3008ACD86 /* React.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3F608F852D2D1A9E008ACD86 /* RNTAztecView.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3912D2C4BA3008ACD86 /* RNTAztecView.xcframework */; }; + 3F608F862D2D1A9E008ACD86 /* RNTAztecView.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3912D2C4BA3008ACD86 /* RNTAztecView.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3F608F872D2D1A9E008ACD86 /* yoga.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3932D2C4BA4008ACD86 /* yoga.xcframework */; }; + 3F608F882D2D1A9E008ACD86 /* yoga.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3932D2C4BA4008ACD86 /* yoga.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 3F60D3942D2C4BA4008ACD86 /* React.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D38F2D2C4BA3008ACD86 /* React.xcframework */; }; 3F60D3952D2C4BA4008ACD86 /* React.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D38F2D2C4BA3008ACD86 /* React.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 3F60D3962D2C4BA4008ACD86 /* Gutenberg.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F60D3902D2C4BA3008ACD86 /* Gutenberg.xcframework */; }; @@ -1875,6 +1885,11 @@ dstSubfolderSpec = 10; files = ( 4AD9555B2C21716A00D0EEFA /* WordPressAuthenticator.framework in Embed Frameworks */, + 3F608F822D2D1A9E008ACD86 /* hermes.xcframework in Embed Frameworks */, + 3F608F802D2D1A9E008ACD86 /* Gutenberg.xcframework in Embed Frameworks */, + 3F608F842D2D1A9E008ACD86 /* React.xcframework in Embed Frameworks */, + 3F608F862D2D1A9E008ACD86 /* RNTAztecView.xcframework in Embed Frameworks */, + 3F608F882D2D1A9E008ACD86 /* yoga.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -3898,11 +3913,13 @@ buildActionMask = 2147483647; files = ( FABB26202602FC2C00C8785C /* iAd.framework in Frameworks */, + 3F608F812D2D1A9E008ACD86 /* hermes.xcframework in Frameworks */, FABB26212602FC2C00C8785C /* StoreKit.framework in Frameworks */, FABB26222602FC2C00C8785C /* CoreSpotlight.framework in Frameworks */, FABB26232602FC2C00C8785C /* QuickLook.framework in Frameworks */, FABB26242602FC2C00C8785C /* CoreText.framework in Frameworks */, FABB26252602FC2C00C8785C /* UserNotifications.framework in Frameworks */, + 3F608F832D2D1A9E008ACD86 /* React.xcframework in Frameworks */, FABB26262602FC2C00C8785C /* Photos.framework in Frameworks */, FABB26272602FC2C00C8785C /* NotificationCenter.framework in Frameworks */, FABB26282602FC2C00C8785C /* CoreTelephony.framework in Frameworks */, @@ -3912,10 +3929,13 @@ FABB262C2602FC2C00C8785C /* UIKit.framework in Frameworks */, FABB262D2602FC2C00C8785C /* QuartzCore.framework in Frameworks */, FABB262E2602FC2C00C8785C /* MediaPlayer.framework in Frameworks */, + 3F608F7F2D2D1A9E008ACD86 /* Gutenberg.xcframework in Frameworks */, FABB262F2602FC2C00C8785C /* CoreMedia.framework in Frameworks */, + 3F608F852D2D1A9E008ACD86 /* RNTAztecView.xcframework in Frameworks */, FABB26302602FC2C00C8785C /* AVFoundation.framework in Frameworks */, FABB26312602FC2C00C8785C /* Foundation.framework in Frameworks */, 4AD9555A2C21716A00D0EEFA /* WordPressAuthenticator.framework in Frameworks */, + 3F608F872D2D1A9E008ACD86 /* yoga.xcframework in Frameworks */, FABB26322602FC2C00C8785C /* Security.framework in Frameworks */, FABB26332602FC2C00C8785C /* MapKit.framework in Frameworks */, FABB26342602FC2C00C8785C /* CoreLocation.framework in Frameworks */, From c61cb2dc4b2c75479d5d0012962171c489e65cd0 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jan 2025 09:47:56 +0100 Subject: [PATCH 27/27] Add instruction in README to run `make dependencies` --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 626fc042824d..3025008125a1 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Please refer to the sections below for more detailed information. The instructio 1. [Download](https://developer.apple.com/downloads/index.action) and install Xcode. Refer to the [.xcode-version](./.xcode-version) file for the minimum required version. 1. [Clone this repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) in the folder of your preference. +1. Run `cd WordPress; make dependencies; cd ..` #### Create WordPress.com API Credentials