From 2ac3da90355519848988206bc84e75ce960becd3 Mon Sep 17 00:00:00 2001 From: Vasily Fedorov Date: Sun, 30 Jan 2022 15:43:44 +0300 Subject: [PATCH] Deintegrate XCRemoteCache from all projects on errors --- .../cocoapods-xcremotecache/command/hooks.rb | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/cocoapods-plugin/lib/cocoapods-xcremotecache/command/hooks.rb b/cocoapods-plugin/lib/cocoapods-xcremotecache/command/hooks.rb index 06bf27c..d4f3f6e 100644 --- a/cocoapods-plugin/lib/cocoapods-xcremotecache/command/hooks.rb +++ b/cocoapods-plugin/lib/cocoapods-xcremotecache/command/hooks.rb @@ -196,8 +196,9 @@ module CocoapodsXCRemoteCacheModifier config.build_settings.delete('SWIFT_EXEC') if config.build_settings.key?('SWIFT_EXEC') config.build_settings.delete('LIBTOOL') if config.build_settings.key?('LIBTOOL') config.build_settings.delete('LD') if config.build_settings.key?('LD') - # Add Fake src root for ObjC & Swift + # Remove Fake src root for ObjC & Swift config.build_settings.delete('XCREMOTE_CACHE_FAKE_SRCROOT') + config.build_settings.delete('XCRC_PLATFORM_PREFERRED_ARCH') remove_cflags!(config.build_settings, '-fdebug-prefix-map') remove_swiftflags!(config.build_settings, '-debug-prefix-map') end @@ -281,12 +282,27 @@ module CocoapodsXCRemoteCacheModifier end # Uninstall the XCRemoteCache - def self.disable_xcremotecache(user_project) + def self.disable_xcremotecache(user_project, pods_project = nil) user_project.targets.each do |target| disable_xcremotecache_for_target(target) end user_project.save() + unless pods_project.nil? + pods_project.native_targets.each do |target| + disable_xcremotecache_for_target(target) + end + pods_proj_directory = pods_project.project_dir + pods_project.root_object.project_references.each do |subproj_ref| + generated_project = Xcodeproj::Project.open("#{pods_proj_directory}/#{subproj_ref[:project_ref].path}") + generated_project.native_targets.each do |target| + disable_xcremotecache_for_target(target) + end + generated_project.save() + end + pods_project.save() + end + # Remove .lldbinit rewrite save_lldbinit_rewrite(nil) unless !@@configuration['modify_lldb_init'] end @@ -422,12 +438,12 @@ module CocoapodsXCRemoteCacheModifier prepare_result = YAML.load`#{xcrc_location_absolute}/xcprepare --configuration #{check_build_configuration} --platform #{check_platform}` unless prepare_result['result'] || mode != 'consumer' # Uninstall the XCRemoteCache for the consumer mode - disable_xcremotecache(user_project) + disable_xcremotecache(user_project, installer_context.pods_project) Pod::UI.puts "[XCRC] XCRemoteCache disabled - no artifacts available" next end rescue => error - disable_xcremotecache(user_project) + disable_xcremotecache(user_project, installer_context.pods_project) Pod::UI.puts "[XCRC] XCRemoteCache failed with an error: #{error}." next end @@ -452,7 +468,7 @@ module CocoapodsXCRemoteCacheModifier rescue Exception => e Pod::UI.puts "[XCRC] XCRemoteCache disabled with error: #{e}" puts e.full_message(highlight: true, order: :top) - disable_xcremotecache(user_project) + disable_xcremotecache(user_project, installer_context.pods_project) end end end