cocoapods-xcremotecache 0.0.5 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4eece05bcb4153a716f7646326bb8dae03fc01f22f829ed016a3bca53c2df720
|
4
|
+
data.tar.gz: de181437326d7553a3345c1811d1a16f343de388373f9c5d2747c03fd2dca212
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 108860776e61d492b3a530d57441cdac752c4d509bfb2260d11dae80250bd50c54cd029076993a8237da0aed67e289de7dedb790c9cc2f1fd7e4800df30df24e
|
7
|
+
data.tar.gz: 962ad32c264c26fa98d37efb335e6b6e8016e2a4432c5f9f5240041045aa9c1d66f1cb2bbc1eede2fcfbbaf8150a06217927b9805f42c3b93640f485bd84ee23
|
@@ -82,8 +82,8 @@ module CocoapodsXCRemoteCacheModifier
|
|
82
82
|
end
|
83
83
|
|
84
84
|
mode = @@configuration['mode']
|
85
|
-
unless mode == 'consumer' || mode == 'producer'
|
86
|
-
throw "Incorrect 'mode' value. Allowed values are ['consumer', 'producer'], but you provided '#{mode}'. A typo?"
|
85
|
+
unless mode == 'consumer' || mode == 'producer' || mode == 'producer-fast'
|
86
|
+
throw "Incorrect 'mode' value. Allowed values are ['consumer', 'producer', 'producer-fast'], but you provided '#{mode}'. A typo?"
|
87
87
|
end
|
88
88
|
|
89
89
|
unless mode == 'consumer' || @@configuration.key?('final_target')
|
@@ -103,7 +103,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
103
103
|
# @param repo_distance [Integer] distance from the git repo root to the target's $SRCROOT
|
104
104
|
# @param xc_location [String] path to the dir with all XCRemoteCache binaries, relative to the repo root
|
105
105
|
# @param xc_cc_path [String] path to the XCRemoteCache clang wrapper, relative to the repo root
|
106
|
-
# @param mode [String] mode name ('consumer', 'producer' etc.)
|
106
|
+
# @param mode [String] mode name ('consumer', 'producer', 'producer-fast' etc.)
|
107
107
|
# @param exclude_build_configurations [String[]] list of targets that should have disabled remote cache
|
108
108
|
# @param final_target [String] name of target that should trigger marking
|
109
109
|
def self.enable_xcremotecache(target, repo_distance, xc_location, xc_cc_path, mode, exclude_build_configurations, final_target)
|
@@ -114,6 +114,8 @@ module CocoapodsXCRemoteCacheModifier
|
|
114
114
|
next if exclude_build_configurations.include?(config.name)
|
115
115
|
if mode == 'consumer'
|
116
116
|
config.build_settings['CC'] = ["$SRCROOT/#{parent_dir(xc_cc_path, repo_distance)}"]
|
117
|
+
elsif mode == 'producer' || mode == 'producer-fast'
|
118
|
+
config.build_settings.delete('CC') if config.build_settings.key?('CC')
|
117
119
|
end
|
118
120
|
config.build_settings['SWIFT_EXEC'] = ["$SRCROOT/#{srcroot_relative_xc_location}/xcswiftc"]
|
119
121
|
config.build_settings['LIBTOOL'] = ["$SRCROOT/#{srcroot_relative_xc_location}/xclibtool"]
|
@@ -133,7 +135,8 @@ module CocoapodsXCRemoteCacheModifier
|
|
133
135
|
phase.name != nil && phase.name.start_with?("[XCRC] Prebuild")
|
134
136
|
end
|
135
137
|
end
|
136
|
-
|
138
|
+
|
139
|
+
prebuild_script = existing_prebuild_script || target.new_shell_script_build_phase("[XCRC] Prebuild #{target.name}")
|
137
140
|
prebuild_script.shell_script = "\"$SCRIPT_INPUT_FILE_0\""
|
138
141
|
prebuild_script.input_paths = ["$SRCROOT/#{srcroot_relative_xc_location}/xcprebuild"]
|
139
142
|
prebuild_script.output_paths = [
|
@@ -142,9 +145,10 @@ module CocoapodsXCRemoteCacheModifier
|
|
142
145
|
]
|
143
146
|
prebuild_script.dependency_file = "$(TARGET_TEMP_DIR)/prebuild.d"
|
144
147
|
|
145
|
-
# Move prebuild (last element) to the
|
146
|
-
target.build_phases.
|
147
|
-
|
148
|
+
# Move prebuild (last element) to the position before compile sources phase (to make it real 'prebuild')
|
149
|
+
compile_phase_index = target.build_phases.index(target.source_build_phase)
|
150
|
+
target.build_phases.insert(compile_phase_index, target.build_phases.delete(prebuild_script))
|
151
|
+
elsif mode == 'producer' || mode == 'producer-fast'
|
148
152
|
# Delete existing prebuild build phase (to support switching between modes)
|
149
153
|
target.build_phases.delete_if do |phase|
|
150
154
|
if phase.respond_to?(:name)
|
@@ -159,7 +163,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
159
163
|
phase.name != nil && phase.name.start_with?("[XCRC] Postbuild")
|
160
164
|
end
|
161
165
|
end
|
162
|
-
postbuild_script = existing_postbuild_script || target.new_shell_script_build_phase("[XCRC] Postbuild")
|
166
|
+
postbuild_script = existing_postbuild_script || target.new_shell_script_build_phase("[XCRC] Postbuild #{target.name}")
|
163
167
|
postbuild_script.shell_script = "\"$SCRIPT_INPUT_FILE_0\""
|
164
168
|
postbuild_script.input_paths = ["$SRCROOT/#{srcroot_relative_xc_location}/xcpostbuild"]
|
165
169
|
postbuild_script.output_paths = [
|
@@ -169,14 +173,14 @@ module CocoapodsXCRemoteCacheModifier
|
|
169
173
|
postbuild_script.dependency_file = "$(TARGET_TEMP_DIR)/postbuild.d"
|
170
174
|
|
171
175
|
# Mark a sha as ready for a given platform and configuration when building the final_target
|
172
|
-
if mode == 'producer' && target.name == final_target
|
176
|
+
if (mode == 'producer' || mode == 'producer-fast') && target.name == final_target
|
173
177
|
existing_mark_script = target.build_phases.detect do |phase|
|
174
178
|
if phase.respond_to?(:name)
|
175
179
|
phase.name != nil && phase.name.start_with?("[XCRC] Mark")
|
176
180
|
end
|
177
181
|
end
|
178
182
|
mark_script = existing_mark_script || target.new_shell_script_build_phase("[XCRC] Mark")
|
179
|
-
mark_script.shell_script = "\"$SCRIPT_INPUT_FILE_0\" mark --configuration $CONFIGURATION --platform $PLATFORM_NAME"
|
183
|
+
mark_script.shell_script = "\"$SCRIPT_INPUT_FILE_0\" mark --configuration \"$CONFIGURATION\" --platform $PLATFORM_NAME"
|
180
184
|
mark_script.input_paths = ["$SRCROOT/#{srcroot_relative_xc_location}/xcprepare"]
|
181
185
|
else
|
182
186
|
# Delete existing mark build phase (to support switching between modes or changing the final target)
|
@@ -194,8 +198,9 @@ module CocoapodsXCRemoteCacheModifier
|
|
194
198
|
config.build_settings.delete('SWIFT_EXEC') if config.build_settings.key?('SWIFT_EXEC')
|
195
199
|
config.build_settings.delete('LIBTOOL') if config.build_settings.key?('LIBTOOL')
|
196
200
|
config.build_settings.delete('LD') if config.build_settings.key?('LD')
|
197
|
-
#
|
201
|
+
# Remove Fake src root for ObjC & Swift
|
198
202
|
config.build_settings.delete('XCREMOTE_CACHE_FAKE_SRCROOT')
|
203
|
+
config.build_settings.delete('XCRC_PLATFORM_PREFERRED_ARCH')
|
199
204
|
remove_cflags!(config.build_settings, '-fdebug-prefix-map')
|
200
205
|
remove_swiftflags!(config.build_settings, '-debug-prefix-map')
|
201
206
|
end
|
@@ -257,14 +262,14 @@ module CocoapodsXCRemoteCacheModifier
|
|
257
262
|
end
|
258
263
|
|
259
264
|
def self.add_cflags!(options, key, value)
|
260
|
-
return if options.fetch('OTHER_CFLAGS',[]).include?(
|
261
|
-
options['OTHER_CFLAGS'] = remove_cflags!(options, key) << "
|
265
|
+
return if options.fetch('OTHER_CFLAGS',[]).include?(value)
|
266
|
+
options['OTHER_CFLAGS'] = remove_cflags!(options, key) << "#{key}=#{value}"
|
262
267
|
end
|
263
268
|
|
264
269
|
def self.remove_cflags!(options, key)
|
265
270
|
cflags_arr = options.fetch('OTHER_CFLAGS', ['$(inherited)'])
|
266
271
|
cflags_arr = [cflags_arr] if cflags_arr.kind_of? String
|
267
|
-
options['OTHER_CFLAGS'] = cflags_arr.delete_if {|flag| flag.
|
272
|
+
options['OTHER_CFLAGS'] = cflags_arr.delete_if {|flag| flag.include?("#{key}=") }
|
268
273
|
options['OTHER_CFLAGS']
|
269
274
|
end
|
270
275
|
|
@@ -279,12 +284,27 @@ module CocoapodsXCRemoteCacheModifier
|
|
279
284
|
end
|
280
285
|
|
281
286
|
# Uninstall the XCRemoteCache
|
282
|
-
def self.disable_xcremotecache(user_project)
|
287
|
+
def self.disable_xcremotecache(user_project, pods_project = nil)
|
283
288
|
user_project.targets.each do |target|
|
284
289
|
disable_xcremotecache_for_target(target)
|
285
290
|
end
|
286
291
|
user_project.save()
|
287
292
|
|
293
|
+
unless pods_project.nil?
|
294
|
+
pods_project.native_targets.each do |target|
|
295
|
+
disable_xcremotecache_for_target(target)
|
296
|
+
end
|
297
|
+
pods_proj_directory = pods_project.project_dir
|
298
|
+
pods_project.root_object.project_references.each do |subproj_ref|
|
299
|
+
generated_project = Xcodeproj::Project.open("#{pods_proj_directory}/#{subproj_ref[:project_ref].path}")
|
300
|
+
generated_project.native_targets.each do |target|
|
301
|
+
disable_xcremotecache_for_target(target)
|
302
|
+
end
|
303
|
+
generated_project.save()
|
304
|
+
end
|
305
|
+
pods_project.save()
|
306
|
+
end
|
307
|
+
|
288
308
|
# Remove .lldbinit rewrite
|
289
309
|
save_lldbinit_rewrite(nil) unless !@@configuration['modify_lldb_init']
|
290
310
|
end
|
@@ -375,7 +395,9 @@ module CocoapodsXCRemoteCacheModifier
|
|
375
395
|
# Always integrate XCRemoteCache to all Pods, in case it will be needed later
|
376
396
|
unless installer_context.pods_project.nil?
|
377
397
|
# Attach XCRemoteCache to Pods targets
|
378
|
-
|
398
|
+
# Enable only for native targets which can have compilation steps
|
399
|
+
installer_context.pods_project.native_targets.each do |target|
|
400
|
+
next if target.source_build_phase.files_references.empty?
|
379
401
|
next if target.name.start_with?("Pods-")
|
380
402
|
next if target.name.end_with?("Tests")
|
381
403
|
next if exclude_targets.include?(target.name)
|
@@ -385,6 +407,18 @@ module CocoapodsXCRemoteCacheModifier
|
|
385
407
|
# Create .rcinfo into `Pods` directory as that .xcodeproj reads configuration from .xcodeproj location
|
386
408
|
pods_proj_directory = installer_context.sandbox_root
|
387
409
|
|
410
|
+
# Attach XCRemoteCache to Generated Pods projects
|
411
|
+
installer_context.pods_project.root_object.project_references.each do |subproj_ref|
|
412
|
+
generated_project = Xcodeproj::Project.open("#{pods_proj_directory}/#{subproj_ref[:project_ref].path}")
|
413
|
+
generated_project.native_targets.each do |target|
|
414
|
+
next if target.source_build_phase.files_references.empty?
|
415
|
+
next if target.name.end_with?("Tests")
|
416
|
+
next if exclude_targets.include?(target.name)
|
417
|
+
enable_xcremotecache(target, 1, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target)
|
418
|
+
end
|
419
|
+
generated_project.save()
|
420
|
+
end
|
421
|
+
|
388
422
|
# Manual Pods/.rcinfo generation
|
389
423
|
|
390
424
|
# all paths in .rcinfo are relative to the root so paths used in Pods.xcodeproj need to be aligned
|
@@ -406,12 +440,12 @@ module CocoapodsXCRemoteCacheModifier
|
|
406
440
|
prepare_result = YAML.load`#{xcrc_location_absolute}/xcprepare --configuration #{check_build_configuration} --platform #{check_platform}`
|
407
441
|
unless prepare_result['result'] || mode != 'consumer'
|
408
442
|
# Uninstall the XCRemoteCache for the consumer mode
|
409
|
-
disable_xcremotecache(user_project)
|
443
|
+
disable_xcremotecache(user_project, installer_context.pods_project)
|
410
444
|
Pod::UI.puts "[XCRC] XCRemoteCache disabled - no artifacts available"
|
411
445
|
next
|
412
446
|
end
|
413
447
|
rescue => error
|
414
|
-
disable_xcremotecache(user_project)
|
448
|
+
disable_xcremotecache(user_project, installer_context.pods_project)
|
415
449
|
Pod::UI.puts "[XCRC] XCRemoteCache failed with an error: #{error}."
|
416
450
|
next
|
417
451
|
end
|
@@ -436,7 +470,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
436
470
|
rescue Exception => e
|
437
471
|
Pod::UI.puts "[XCRC] XCRemoteCache disabled with error: #{e}"
|
438
472
|
puts e.full_message(highlight: true, order: :top)
|
439
|
-
disable_xcremotecache(user_project)
|
473
|
+
disable_xcremotecache(user_project, installer_context.pods_project)
|
440
474
|
end
|
441
475
|
end
|
442
476
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-xcremotecache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bartosz Polaczyk
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-04-04 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: CocoaPods plugin that enables XCRemoteCache with the project.
|
15
15
|
email:
|