cocoapods-xcremotecache 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/lib/cocoapods-xcremotecache/command/hooks.rb +68 -24
- data/lib/cocoapods-xcremotecache/gem_version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d10f7d00729ae888941fcef52d599379a094020de82b5540005ae970d814929
|
4
|
+
data.tar.gz: 391aee8027c9796ac45b3703b5f5eafc24fd6a555d211e6aa02629ace9f9b887
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9df9bb0c507814034d0af16d24337eaec451a1d0456ff727952c9d76a8abef63384bcf5e8fd436d0ee212d5455e65934d409123bba3d2f9e1a81d3f70b91a39f
|
7
|
+
data.tar.gz: c583acfc889027a047b5144919469a2477b4391994f72d82568838a839a44c91fe982c772dcb3c7296c47f7bb27db2da334907b8cd9640fe1ad17aabb9eaf5ea
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ plugin 'cocoapods-xcremotecache'
|
|
28
28
|
2. Configure XCRemoteCache at the top of your `Podfile` definition:
|
29
29
|
```ruby
|
30
30
|
xcremotecache({
|
31
|
-
'cache_addresses' => ['http://localhost:8080/cache/pods'],
|
31
|
+
'cache_addresses' => ['http://localhost:8080/cache/pods'],
|
32
32
|
'primary_repo' => 'https://your.primary.repo.git',
|
33
33
|
'mode' => 'consumer'
|
34
34
|
})
|
@@ -48,13 +48,14 @@ An object that is passed to the `xcremotecache` can contain all properties suppo
|
|
48
48
|
| `exclude_build_configurations` | Comma-separated list of configurations that shouldn't use XCRemoteCache | `[]`| ⬜️ |
|
49
49
|
| `final_target` | A target name that is build at the end of the build chain. Relevant only for a 'producer' mode to mark a given sha as ready to use from cache | `Debug` | ⬜️ |
|
50
50
|
| `check_build_configuration` | A build configuration for which the remote cache availability is performed. Relevant only for a 'consumer' mode | `Debug` | ⬜️ |
|
51
|
-
| `check_platform` | A platform for which the remote cache availability is performed. Relevant only for a 'consumer' mode | `iphonesimulator` | ⬜️
|
51
|
+
| `check_platform` | A platform for which the remote cache availability is performed. Relevant only for a 'consumer' mode | `iphonesimulator` | ⬜️
|
52
52
|
| `modify_lldb_init` | Controls if the pod integration should modify `~/.lldbinit` | `true` | ⬜️ |
|
53
53
|
| `xccc_file` | The path where should be placed the `xccc` binary (in the pod installation phase) | `{podfile_dir}/.rc/xccc` | ⬜️ |
|
54
54
|
| `remote_commit_file` | The path of the file with the remote commit sha (in the pod installation phase) | `{podfile_dir}/.rc/arc.rc`| ⬜️ |
|
55
55
|
| `prettify_meta_files` | A Boolean value that opts-in pretty JSON formatting for meta files | `false` | ⬜️ |
|
56
56
|
| `fake_src_root` | An arbitrary source location shared between producers and consumers. Should be unique for a project. | `/xxxxxxxxxx` | ⬜️ |
|
57
57
|
| `disable_certificate_verification` | A Boolean value that opts-in SSL certificate validation is disabled | `false` | ⬜️ |
|
58
|
+
| `exclude_sdks_configurations` | array of sdks to not integrate XCRemoteCache (e.g. "watchos*, watchsimulator*") (Experimental) | `[]`| ⬜️ |
|
58
59
|
|
59
60
|
## Uninstalling
|
60
61
|
|
@@ -40,6 +40,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
40
40
|
'check_platform',
|
41
41
|
'modify_lldb_init',
|
42
42
|
'fake_src_root',
|
43
|
+
'exclude_sdks_configurations'
|
43
44
|
]
|
44
45
|
|
45
46
|
class XCRemoteCache
|
@@ -64,7 +65,8 @@ module CocoapodsXCRemoteCacheModifier
|
|
64
65
|
'prettify_meta_files' => false,
|
65
66
|
'fake_src_root' => "/#{'x' * 10 }",
|
66
67
|
'disable_certificate_verification' => false,
|
67
|
-
'custom_rewrite_envs' => []
|
68
|
+
'custom_rewrite_envs' => [],
|
69
|
+
'exclude_sdks_configurations' => []
|
68
70
|
}
|
69
71
|
@@configuration.merge! default_values.select { |k, v| !@@configuration.key?(k) }
|
70
72
|
# Always include XCRC_COOCAPODS_ROOT_KEY in custom_rewrite_envs
|
@@ -111,7 +113,18 @@ module CocoapodsXCRemoteCacheModifier
|
|
111
113
|
# @param mode [String] mode name ('consumer', 'producer', 'producer-fast' etc.)
|
112
114
|
# @param exclude_build_configurations [String[]] list of targets that should have disabled remote cache
|
113
115
|
# @param final_target [String] name of target that should trigger marking
|
114
|
-
|
116
|
+
# @param exclude_sdks_configurations [String[]] list of sdks that should have disabled remote cache
|
117
|
+
def self.enable_xcremotecache(
|
118
|
+
target,
|
119
|
+
repo_distance,
|
120
|
+
xc_location,
|
121
|
+
xc_cc_path,
|
122
|
+
mode,
|
123
|
+
exclude_build_configurations,
|
124
|
+
final_target,
|
125
|
+
fake_src_root,
|
126
|
+
exclude_sdks_configurations
|
127
|
+
)
|
115
128
|
srcroot_relative_xc_location = parent_dir(xc_location, repo_distance)
|
116
129
|
# location of the entrite CocoaPods project, relative to SRCROOT
|
117
130
|
srcroot_relative_project_location = parent_dir('', repo_distance)
|
@@ -120,23 +133,27 @@ module CocoapodsXCRemoteCacheModifier
|
|
120
133
|
# apply only for relevant Configurations
|
121
134
|
next if exclude_build_configurations.include?(config.name)
|
122
135
|
if mode == 'consumer'
|
123
|
-
config.build_settings
|
136
|
+
reset_build_setting(config.build_settings, 'CC', "$SRCROOT/#{parent_dir(xc_cc_path, repo_distance)}", exclude_sdks_configurations)
|
124
137
|
elsif mode == 'producer' || mode == 'producer-fast'
|
125
138
|
config.build_settings.delete('CC') if config.build_settings.key?('CC')
|
126
139
|
end
|
127
|
-
config.build_settings
|
128
|
-
config.build_settings
|
129
|
-
|
130
|
-
config.build_settings
|
131
|
-
config.build_settings
|
132
|
-
config.build_settings
|
133
|
-
|
134
|
-
config.build_settings
|
135
|
-
|
136
|
-
config.build_settings
|
140
|
+
reset_build_setting(config.build_settings, 'SWIFT_EXEC', "$SRCROOT/#{srcroot_relative_xc_location}/xcswiftc", exclude_sdks_configurations)
|
141
|
+
reset_build_setting(config.build_settings, 'LIBTOOL', "$SRCROOT/#{srcroot_relative_xc_location}/xclibtool", exclude_sdks_configurations)
|
142
|
+
# Setting LIBTOOL to '' breaks SwiftDriver intengration so resetting it to the original value 'libtool' for all excluded configurations
|
143
|
+
add_build_setting_for_sdks(config.build_settings, 'LIBTOOL', 'libtool', exclude_sdks_configurations)
|
144
|
+
reset_build_setting(config.build_settings, 'LD', "$SRCROOT/#{srcroot_relative_xc_location}/xcld", exclude_sdks_configurations)
|
145
|
+
reset_build_setting(config.build_settings, 'LDPLUSPLUS', "$SRCROOT/#{srcroot_relative_xc_location}/xcldplusplus", exclude_sdks_configurations)
|
146
|
+
reset_build_setting(config.build_settings, 'LIPO', "$SRCROOT/#{srcroot_relative_xc_location}/xclipo", exclude_sdks_configurations)
|
147
|
+
reset_build_setting(config.build_settings, 'SWIFT_USE_INTEGRATED_DRIVER', 'NO', exclude_sdks_configurations)
|
148
|
+
|
149
|
+
reset_build_setting(config.build_settings, 'XCREMOTE_CACHE_FAKE_SRCROOT', fake_src_root, exclude_sdks_configurations)
|
150
|
+
reset_build_setting(config.build_settings, 'XCRC_PLATFORM_PREFERRED_ARCH', "$(LINK_FILE_LIST_$(CURRENT_VARIANT)_$(PLATFORM_PREFERRED_ARCH):dir:standardizepath:file:default=arm64)", exclude_sdks_configurations)
|
151
|
+
reset_build_setting(config.build_settings, XCRC_COOCAPODS_ROOT_KEY, "$SRCROOT/#{srcroot_relative_project_location}", exclude_sdks_configurations)
|
137
152
|
debug_prefix_map_replacement = '$(SRCROOT' + ':dir:standardizepath' * repo_distance + ')'
|
138
|
-
add_cflags!(config.build_settings, '-fdebug-prefix-map', "#{debug_prefix_map_replacement}=$(XCREMOTE_CACHE_FAKE_SRCROOT)")
|
139
|
-
add_swiftflags!(config.build_settings, '-debug-prefix-map', "#{debug_prefix_map_replacement}=$(XCREMOTE_CACHE_FAKE_SRCROOT)")
|
153
|
+
add_cflags!(config.build_settings, '-fdebug-prefix-map', "#{debug_prefix_map_replacement}=$(XCREMOTE_CACHE_FAKE_SRCROOT)", exclude_sdks_configurations)
|
154
|
+
add_swiftflags!(config.build_settings, '-debug-prefix-map', "#{debug_prefix_map_replacement}=$(XCREMOTE_CACHE_FAKE_SRCROOT)", exclude_sdks_configurations)
|
155
|
+
delete_build_setting(config.build_settings, 'XCRC_DISABLED')
|
156
|
+
add_build_setting_for_sdks(config.build_settings, 'XCRC_DISABLED', 'YES', exclude_sdks_configurations)
|
140
157
|
end
|
141
158
|
|
142
159
|
# Prebuild
|
@@ -283,9 +300,8 @@ module CocoapodsXCRemoteCacheModifier
|
|
283
300
|
end
|
284
301
|
end
|
285
302
|
|
286
|
-
def self.add_cflags!(options, key, value)
|
287
|
-
|
288
|
-
options['OTHER_CFLAGS'] = remove_cflags!(options, key) << "#{key}=#{value}"
|
303
|
+
def self.add_cflags!(options, key, value, exclude_sdks_configurations)
|
304
|
+
reset_build_setting(options, 'OTHER_CFLAGS', remove_cflags!(options, key) << "#{key}=#{value}", exclude_sdks_configurations)
|
289
305
|
end
|
290
306
|
|
291
307
|
def self.remove_cflags!(options, key)
|
@@ -295,9 +311,8 @@ module CocoapodsXCRemoteCacheModifier
|
|
295
311
|
options['OTHER_CFLAGS']
|
296
312
|
end
|
297
313
|
|
298
|
-
def self.add_swiftflags!(options, key, value)
|
299
|
-
|
300
|
-
options['OTHER_SWIFT_FLAGS'] = remove_swiftflags!(options, key) + " #{key} #{value}"
|
314
|
+
def self.add_swiftflags!(options, key, value, exclude_sdks_configurations)
|
315
|
+
reset_build_setting(options, 'OTHER_SWIFT_FLAGS', remove_swiftflags!(options, key) + " #{key} #{value}", exclude_sdks_configurations)
|
301
316
|
end
|
302
317
|
|
303
318
|
def self.remove_swiftflags!(options, key)
|
@@ -305,6 +320,34 @@ module CocoapodsXCRemoteCacheModifier
|
|
305
320
|
options['OTHER_SWIFT_FLAGS']
|
306
321
|
end
|
307
322
|
|
323
|
+
def self.add_build_setting(build_settings, key, value, exclude_sdks_configurations)
|
324
|
+
build_settings[key] = value
|
325
|
+
for exclude_sdks_configuration in exclude_sdks_configurations
|
326
|
+
build_settings["#{key}[sdk=#{exclude_sdks_configuration}]"] = [""]
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
330
|
+
# Deletes all previous build settings for a key, and sets a new value to all configurations
|
331
|
+
# but the sdks in exclude_sdks_configurations
|
332
|
+
def self.reset_build_setting(build_settings, key, value, exclude_sdks_configurations)
|
333
|
+
delete_build_setting(build_settings, key)
|
334
|
+
add_build_setting(build_settings, key, value, exclude_sdks_configurations)
|
335
|
+
end
|
336
|
+
|
337
|
+
# Delete all build setting for a key, including settings like "[skd=*,arch=*]"
|
338
|
+
def self.delete_build_setting(build_settings, key)
|
339
|
+
for build_setting_key in build_settings.keys
|
340
|
+
build_settings.delete(build_setting_key) if build_setting_key == key || build_setting_key.start_with?("#{key}[")
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
# Sets value for a key only for a subset of sdk configurations
|
345
|
+
def self.add_build_setting_for_sdks(build_settings, key, value, sdk_configurations)
|
346
|
+
for sdk_configuration in sdk_configurations
|
347
|
+
build_settings["#{key}[sdk=#{sdk_configuration}]"] = value
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
308
351
|
# Uninstall the XCRemoteCache
|
309
352
|
def self.disable_xcremotecache(user_project, pods_project = nil)
|
310
353
|
user_project.targets.each do |target|
|
@@ -454,6 +497,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
454
497
|
check_build_configuration = @@configuration['check_build_configuration']
|
455
498
|
check_platform = @@configuration['check_platform']
|
456
499
|
fake_src_root = @@configuration['fake_src_root']
|
500
|
+
exclude_sdks_configurations = @@configuration['exclude_sdks_configurations'] || []
|
457
501
|
|
458
502
|
xccc_location_absolute = "#{user_proj_directory}/#{xccc_location}"
|
459
503
|
xcrc_location_absolute = "#{user_proj_directory}/#{xcrc_location}"
|
@@ -477,7 +521,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
477
521
|
next if target.name.start_with?("Pods-")
|
478
522
|
next if target.name.end_with?("Tests")
|
479
523
|
next if exclude_targets.include?(target.name)
|
480
|
-
enable_xcremotecache(target, 1, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target,fake_src_root)
|
524
|
+
enable_xcremotecache(target, 1, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target,fake_src_root, exclude_sdks_configurations)
|
481
525
|
end
|
482
526
|
|
483
527
|
# Create .rcinfo into `Pods` directory as that .xcodeproj reads configuration from .xcodeproj location
|
@@ -490,7 +534,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
490
534
|
next if target.source_build_phase.files_references.empty?
|
491
535
|
next if target.name.end_with?("Tests")
|
492
536
|
next if exclude_targets.include?(target.name)
|
493
|
-
enable_xcremotecache(target, 1, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target,fake_src_root)
|
537
|
+
enable_xcremotecache(target, 1, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target,fake_src_root, exclude_sdks_configurations)
|
494
538
|
end
|
495
539
|
generated_project.save()
|
496
540
|
end
|
@@ -531,7 +575,7 @@ module CocoapodsXCRemoteCacheModifier
|
|
531
575
|
# Attach XCRC to the app targets
|
532
576
|
user_project.targets.each do |target|
|
533
577
|
next if exclude_targets.include?(target.name)
|
534
|
-
enable_xcremotecache(target, 0, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target,fake_src_root)
|
578
|
+
enable_xcremotecache(target, 0, xcrc_location, xccc_location, mode, exclude_build_configurations, final_target,fake_src_root, exclude_sdks_configurations)
|
535
579
|
end
|
536
580
|
|
537
581
|
# Set Target sourcemap
|
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.16
|
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: 2023-
|
12
|
+
date: 2023-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: CocoaPods plugin that enables XCRemoteCache with the project.
|
15
15
|
email:
|