cocoapods 1.9.0.beta.2 → 1.9.3
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/CHANGELOG.md +94 -0
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +1 -1
- data/lib/cocoapods/generator/embed_frameworks_script.rb +26 -8
- data/lib/cocoapods/generator/prepare_artifacts_script.rb +27 -14
- data/lib/cocoapods/installer/analyzer.rb +8 -7
- data/lib/cocoapods/installer/project_cache/target_cache_key.rb +12 -2
- data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +4 -1
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +4 -2
- data/lib/cocoapods/sandbox/path_list.rb +24 -2
- data/lib/cocoapods/target/build_settings.rb +35 -6
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa7878249570ad66ff3930c61f35b24bc7a3a5447425f64711363d0bf1081bdc
|
4
|
+
data.tar.gz: 0f7bf9791f2907f913c57d73c55a6d9a72fb25f765d53f1743c9111c8cc3273c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe71aa5cf13d5c88f007ee5946d64deb9b1114742b244af9a1528cc80dd0649f2de012d80ac24a63c9a2195d4c86ab79a29383bab545db68167c6da76d37ff9b
|
7
|
+
data.tar.gz: 20442eda6adb03829c5496623a4fa7e63f0ef36dff4b7bff3fa55e85e553c6c680765cadb46764db71b7b60280a35e16e92eea915215c5a3a557a8f2d274d5b2
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,100 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
|
|
4
4
|
|
5
5
|
To install release candidates run `[sudo] gem install cocoapods --pre`
|
6
6
|
|
7
|
+
## 1.9.3 (2020-05-29)
|
8
|
+
|
9
|
+
##### Enhancements
|
10
|
+
|
11
|
+
* None.
|
12
|
+
|
13
|
+
##### Bug Fixes
|
14
|
+
|
15
|
+
* None.
|
16
|
+
|
17
|
+
|
18
|
+
## 1.9.2 (2020-05-22)
|
19
|
+
|
20
|
+
##### Enhancements
|
21
|
+
|
22
|
+
* None.
|
23
|
+
|
24
|
+
##### Bug Fixes
|
25
|
+
|
26
|
+
* None.
|
27
|
+
|
28
|
+
|
29
|
+
## 1.9.1 (2020-03-09)
|
30
|
+
|
31
|
+
##### Enhancements
|
32
|
+
|
33
|
+
* None.
|
34
|
+
|
35
|
+
##### Bug Fixes
|
36
|
+
|
37
|
+
* Apply correct `SYSTEM_FRAMEWORK_SEARCH_PATHS` for `XCTUnwrap` fix.
|
38
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
39
|
+
[#9579](https://github.com/CocoaPods/CocoaPods/pull/9579)
|
40
|
+
|
41
|
+
* Fix an issue that caused a build failure with vendored XCFrameworks on macOS
|
42
|
+
[Eric Amorde](https://github.com/amorde)
|
43
|
+
[#9572](https://github.com/CocoaPods/CocoaPods/issues/9572)
|
44
|
+
|
45
|
+
* Fix an issue that prevented the correct XCFramework slice from being selected for watchOS extensions
|
46
|
+
[Eric Amorde](https://github.com/amorde)
|
47
|
+
[#9569](https://github.com/CocoaPods/CocoaPods/issues/9569)
|
48
|
+
|
49
|
+
|
50
|
+
## 1.9.0 (2020-02-25)
|
51
|
+
|
52
|
+
##### Enhancements
|
53
|
+
|
54
|
+
* None.
|
55
|
+
|
56
|
+
##### Bug Fixes
|
57
|
+
|
58
|
+
* Also apply Xcode 11 `XCTUnwrap` fix to library and framework targets that weakly link `XCTest`.
|
59
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
60
|
+
[#9518](https://github.com/CocoaPods/CocoaPods/pull/9518)
|
61
|
+
|
62
|
+
* Fix dSYM handling for XCFrameworks.
|
63
|
+
[Eric Amorde](https://github.com/amorde)
|
64
|
+
[#9530](https://github.com/CocoaPods/CocoaPods/issues/9530)
|
65
|
+
|
66
|
+
|
67
|
+
## 1.9.0.beta.3 (2020-02-04)
|
68
|
+
|
69
|
+
##### Enhancements
|
70
|
+
|
71
|
+
* PathList optimizations related to file system reads.
|
72
|
+
[manuyavuz](https://github.com/manuyavuz)
|
73
|
+
[#9428](https://github.com/CocoaPods/CocoaPods/pull/9428)
|
74
|
+
|
75
|
+
##### Bug Fixes
|
76
|
+
|
77
|
+
* Apply Xcode 11 `XCTUnwrap` fix to library and framework targets.
|
78
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
79
|
+
[#9500](https://github.com/CocoaPods/CocoaPods/pull/9500)
|
80
|
+
|
81
|
+
* Fix resources script when building a project from a symlink.
|
82
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
83
|
+
[#9423](https://github.com/CocoaPods/CocoaPods/issues/9423)
|
84
|
+
|
85
|
+
* Fix `pod install` crash on projects with atypical configuration names.
|
86
|
+
[Paul Beusterien](https://github.com/paulb777)
|
87
|
+
[#9465](https://github.com/CocoaPods/CocoaPods/pull/9465)
|
88
|
+
|
89
|
+
* Fix an issue that caused iOS archives to be invalid when including a vendored XCFramework
|
90
|
+
[Eric Amorde](https://github.com/amorde)
|
91
|
+
[#9458](https://github.com/CocoaPods/CocoaPods/issues/9458)
|
92
|
+
|
93
|
+
* Fix a bug where an incremental install missed library resources.
|
94
|
+
[Igor Makarov](https://github.com/igor-makarov)
|
95
|
+
[#9431](https://github.com/CocoaPods/CocoaPods/pull/9431)
|
96
|
+
|
97
|
+
* Fix an issue that caused an incorrect warning to be emitted for CLI targets with static libraries
|
98
|
+
[Eric Amorde](https://github.com/amorde)
|
99
|
+
[#9498](https://github.com/CocoaPods/CocoaPods/issues/9498)
|
100
|
+
|
7
101
|
## 1.9.0.beta.2 (2019-12-17)
|
8
102
|
|
9
103
|
##### Enhancements
|
@@ -216,7 +216,7 @@ EOS
|
|
216
216
|
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
|
217
217
|
then
|
218
218
|
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
|
219
|
-
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
|
219
|
+
OTHER_XCASSETS=$(find -L "$PWD" -iname "*.xcassets" -type d)
|
220
220
|
while read line; do
|
221
221
|
if [[ $line != "${PODS_ROOT}*" ]]; then
|
222
222
|
XCASSET_FILES+=("$line")
|
@@ -129,27 +129,29 @@ module Pod
|
|
129
129
|
# Copies and strips a vendored dSYM
|
130
130
|
install_dsym() {
|
131
131
|
local source="$1"
|
132
|
+
warn_missing_arch=${2:-true}
|
132
133
|
if [ -r "$source" ]; then
|
133
|
-
# Copy the dSYM into
|
134
|
+
# Copy the dSYM into the targets temp dir.
|
134
135
|
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" --filter \\"- Headers\\" --filter \\"- PrivateHeaders\\" --filter \\"- Modules\\" \\"${source}\\" \\"${DERIVED_FILES_DIR}\\""
|
135
136
|
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
|
136
137
|
|
137
138
|
local basename
|
138
|
-
basename="$(basename -s .
|
139
|
-
|
139
|
+
basename="$(basename -s .dSYM "$source")"
|
140
|
+
binary_name="$(ls "$source/Contents/Resources/DWARF")"
|
141
|
+
binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}"
|
140
142
|
|
141
143
|
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
142
144
|
if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
|
143
|
-
strip_invalid_archs "$binary"
|
145
|
+
strip_invalid_archs "$binary" "$warn_missing_arch"
|
144
146
|
fi
|
145
147
|
|
146
148
|
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
|
147
149
|
# Move the stripped file into its final destination.
|
148
150
|
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" --filter \\"- Headers\\" --filter \\"- PrivateHeaders\\" --filter \\"- Modules\\" \\"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\\" \\"${DWARF_DSYM_FOLDER_PATH}\\""
|
149
|
-
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.
|
151
|
+
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
|
150
152
|
else
|
151
153
|
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
|
152
|
-
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.
|
154
|
+
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM"
|
153
155
|
fi
|
154
156
|
fi
|
155
157
|
}
|
@@ -180,13 +182,16 @@ module Pod
|
|
180
182
|
# Strip invalid architectures
|
181
183
|
strip_invalid_archs() {
|
182
184
|
binary="$1"
|
185
|
+
warn_missing_arch=${2:-true}
|
183
186
|
# Get architectures for current target binary
|
184
187
|
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
|
185
188
|
# Intersect them with the architectures we are building for
|
186
189
|
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\\n' | sort | uniq -d)"
|
187
190
|
# If there are no archs supported by this binary then warn the user
|
188
191
|
if [[ -z "$intersected_archs" ]]; then
|
189
|
-
|
192
|
+
if [[ "$warn_missing_arch" == "true" ]]; then
|
193
|
+
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
|
194
|
+
fi
|
190
195
|
STRIP_BINARY_RETVAL=0
|
191
196
|
return
|
192
197
|
fi
|
@@ -212,7 +217,8 @@ module Pod
|
|
212
217
|
install_framework "$artifact"
|
213
218
|
;;
|
214
219
|
*.dSYM)
|
215
|
-
|
220
|
+
# Suppress arch warnings since XCFrameworks will include many dSYM files
|
221
|
+
install_dsym "$artifact" "false"
|
216
222
|
;;
|
217
223
|
*.bcsymbolmap)
|
218
224
|
install_bcsymbolmap "$artifact"
|
@@ -259,6 +265,18 @@ module Pod
|
|
259
265
|
SH
|
260
266
|
script
|
261
267
|
end
|
268
|
+
|
269
|
+
# @param [Xcode::FrameworkPaths] framework_path
|
270
|
+
# the framework path containing the dSYM
|
271
|
+
#
|
272
|
+
# @return [String, Nil] the name of the dSYM binary, if found
|
273
|
+
#
|
274
|
+
def dsym_binary_name(framework_path)
|
275
|
+
return nil if framework_path.dsym_path.nil?
|
276
|
+
if (path = Pathname.glob(framework_path.dsym_path.join('Contents/Resources/DWARF', '**/*')).first)
|
277
|
+
File.basename(path)
|
278
|
+
end
|
279
|
+
end
|
262
280
|
end
|
263
281
|
end
|
264
282
|
end
|
@@ -117,7 +117,7 @@ module Pod
|
|
117
117
|
fi
|
118
118
|
|
119
119
|
local record_artifact=${2:-true}
|
120
|
-
local destination="${
|
120
|
+
local destination="${CONFIGURATION_BUILD_DIR}"
|
121
121
|
|
122
122
|
if [ -L "${source}" ]; then
|
123
123
|
echo "Symlinked..."
|
@@ -136,18 +136,23 @@ module Pod
|
|
136
136
|
|
137
137
|
install_xcframework() {
|
138
138
|
local basepath="$1"
|
139
|
-
local
|
139
|
+
local dsym_folder="$2"
|
140
|
+
local embed="$3"
|
140
141
|
shift
|
141
142
|
local paths=("$@")
|
142
143
|
|
143
144
|
# Locate the correct slice of the .xcframework for the current architectures
|
144
145
|
local target_path=""
|
145
146
|
local target_arch="$ARCHS"
|
147
|
+
|
148
|
+
# Replace spaces in compound architectures with _ to match slice format
|
149
|
+
target_arch=${target_arch//\ /_}
|
150
|
+
|
146
151
|
local target_variant=""
|
147
152
|
if [[ "$PLATFORM_NAME" == *"simulator" ]]; then
|
148
153
|
target_variant="simulator"
|
149
154
|
fi
|
150
|
-
if [[ "$EFFECTIVE_PLATFORM_NAME" == *"maccatalyst" ]]; then
|
155
|
+
if [[ ! -z ${EFFECTIVE_PLATFORM_NAME+x} && "$EFFECTIVE_PLATFORM_NAME" == *"maccatalyst" ]]; then
|
151
156
|
target_variant="maccatalyst"
|
152
157
|
fi
|
153
158
|
for i in ${!paths[@]}; do
|
@@ -165,6 +170,17 @@ module Pod
|
|
165
170
|
fi
|
166
171
|
|
167
172
|
install_framework "$basepath/$target_path" "$embed"
|
173
|
+
|
174
|
+
if [[ -z "$dsym_folder" || ! -d "$dsym_folder" ]]; then
|
175
|
+
return
|
176
|
+
fi
|
177
|
+
|
178
|
+
dsyms=($(ls "$dsym_folder"))
|
179
|
+
|
180
|
+
local target_dsym=""
|
181
|
+
for i in ${!dsyms[@]}; do
|
182
|
+
install_artifact "$dsym_folder/${dsyms[$i]}" "$CONFIGURATION_BUILD_DIR" "true"
|
183
|
+
done
|
168
184
|
}
|
169
185
|
|
170
186
|
SH
|
@@ -186,12 +202,6 @@ module Pod
|
|
186
202
|
args = install_xcframework_args(xcframework.path, static_slices, true)
|
187
203
|
contents_by_config[config] << %( install_xcframework #{args}\n)
|
188
204
|
end
|
189
|
-
|
190
|
-
dsyms = PrepareArtifactsScript.dsym_paths(xcframework.path)
|
191
|
-
dsyms.each do |path|
|
192
|
-
source = shell_escape("${PODS_ROOT}/#{path.relative_path_from(sandbox_root)}")
|
193
|
-
contents_by_config[config] << %( install_artifact #{source} "${TARGET_BUILD_DIR}" "true"\n)
|
194
|
-
end
|
195
205
|
end
|
196
206
|
end
|
197
207
|
|
@@ -215,6 +225,12 @@ module Pod
|
|
215
225
|
|
216
226
|
def install_xcframework_args(root, slices, static)
|
217
227
|
args = [shell_escape("${PODS_ROOT}/#{root.relative_path_from(sandbox_root)}")]
|
228
|
+
dsym_folder_arg = if (dsym_folder = PrepareArtifactsScript.dsym_folder(root))
|
229
|
+
shell_escape("${PODS_ROOT}/#{dsym_folder.relative_path_from(sandbox_root)}")
|
230
|
+
else
|
231
|
+
'""'
|
232
|
+
end
|
233
|
+
args << dsym_folder_arg
|
218
234
|
embed = static ? 'false' : 'true'
|
219
235
|
args << shell_escape(embed)
|
220
236
|
slices.each do |slice|
|
@@ -229,14 +245,11 @@ module Pod
|
|
229
245
|
#
|
230
246
|
# @return [Array<Pathname>] all found .dSYM paths
|
231
247
|
#
|
232
|
-
def
|
248
|
+
def dsym_folder(xcframework_path)
|
233
249
|
basename = File.basename(xcframework_path, '.xcframework')
|
234
250
|
dsym_basename = basename + '.dSYMs'
|
235
251
|
path = xcframework_path.dirname + dsym_basename
|
236
|
-
|
237
|
-
|
238
|
-
pattern = path + '*.dSYM'
|
239
|
-
Dir.glob(pattern).map { |s| Pathname.new(s) }
|
252
|
+
Pathname.new(path) if File.directory?(path)
|
240
253
|
end
|
241
254
|
end
|
242
255
|
end
|
@@ -334,15 +334,16 @@ module Pod
|
|
334
334
|
#
|
335
335
|
def analyze_host_targets_in_podfile(aggregate_targets, embedded_aggregate_targets)
|
336
336
|
target_definitions_by_uuid = {}
|
337
|
-
|
337
|
+
cli_host_with_dynamic_linkage = []
|
338
338
|
cli_product_type = 'com.apple.product-type.tool'
|
339
339
|
# Collect aggregate target definitions by uuid to later lookup host target
|
340
340
|
# definitions and verify their compatibility with their embedded targets
|
341
341
|
aggregate_targets.each do |target|
|
342
342
|
target.user_targets.each do |user_target|
|
343
|
-
|
344
|
-
|
345
|
-
|
343
|
+
target_definition = target.target_definition
|
344
|
+
target_definitions_by_uuid[user_target.uuid] = target_definition
|
345
|
+
if user_target.product_type == cli_product_type && target_definition.build_type.linkage == :dynamic
|
346
|
+
cli_host_with_dynamic_linkage << user_target
|
346
347
|
end
|
347
348
|
end
|
348
349
|
end
|
@@ -368,10 +369,10 @@ module Pod
|
|
368
369
|
end
|
369
370
|
end
|
370
371
|
|
371
|
-
unless
|
372
|
-
UI.warn "The Podfile contains command line tool target(s) (#{
|
372
|
+
unless cli_host_with_dynamic_linkage.empty?
|
373
|
+
UI.warn "The Podfile contains command line tool target(s) (#{cli_host_with_dynamic_linkage.map(&:name).to_sentence}) which are attempting to integrate dynamic frameworks or libraries." \
|
373
374
|
"\n" \
|
374
|
-
'This may not behave as expected, because command line tools are usually distributed as a single binary and cannot contain their own dynamic
|
375
|
+
'This may not behave as expected, because command line tools are usually distributed as a single binary and cannot contain their own dynamic dependencies.'
|
375
376
|
end
|
376
377
|
|
377
378
|
unless embedded_targets_missing_hosts.empty?
|
@@ -51,10 +51,13 @@ module Pod
|
|
51
51
|
return :project if (other.key_hash.keys - key_hash.keys).any?
|
52
52
|
return :project if other.key_hash['CHECKSUM'] != key_hash['CHECKSUM']
|
53
53
|
return :project if other.key_hash['SPECS'] != key_hash['SPECS']
|
54
|
-
return :project if other.key_hash['FILES'] != key_hash['FILES']
|
55
54
|
return :project if other.key_hash['PROJECT_NAME'] != key_hash['PROJECT_NAME']
|
56
55
|
end
|
57
56
|
|
57
|
+
this_files = key_hash['FILES']
|
58
|
+
other_files = other.key_hash['FILES']
|
59
|
+
return :project if this_files != other_files
|
60
|
+
|
58
61
|
this_build_settings = key_hash['BUILD_SETTINGS_CHECKSUM']
|
59
62
|
other_build_settings = other.key_hash['BUILD_SETTINGS_CHECKSUM']
|
60
63
|
return :project if this_build_settings != other_build_settings
|
@@ -155,7 +158,14 @@ module Pod
|
|
155
158
|
build_settings[configuration] = Digest::MD5.hexdigest(aggregate_target.build_settings(configuration).xcconfig.to_s)
|
156
159
|
end
|
157
160
|
|
158
|
-
|
161
|
+
contents = {
|
162
|
+
'BUILD_SETTINGS_CHECKSUM' => build_settings,
|
163
|
+
}
|
164
|
+
if aggregate_target.includes_resources?
|
165
|
+
relative_file_paths = aggregate_target.resource_paths_by_config.values.flatten.uniq
|
166
|
+
contents['FILES'] = relative_file_paths.sort_by(&:downcase)
|
167
|
+
end
|
168
|
+
TargetCacheKey.new(sandbox, :aggregate, contents)
|
159
169
|
end
|
160
170
|
end
|
161
171
|
end
|
@@ -65,7 +65,10 @@ module Pod
|
|
65
65
|
# @return [void]
|
66
66
|
#
|
67
67
|
def refresh_file_accessors
|
68
|
-
file_accessors.
|
68
|
+
file_accessors.reject do |file_accessor|
|
69
|
+
pod_name = file_accessor.spec.name
|
70
|
+
sandbox.local?(pod_name)
|
71
|
+
end.map(&:path_list).uniq.each(&:read_file_system)
|
69
72
|
end
|
70
73
|
|
71
74
|
# Prepares the main groups to which all files will be added for the respective target
|
@@ -163,8 +163,10 @@ module Pod
|
|
163
163
|
def remove_pod_target_xcconfig_overrides_from_target(build_settings_by_config, native_target)
|
164
164
|
native_target.build_configurations.each do |configuration|
|
165
165
|
build_settings = build_settings_by_config[target.user_build_configurations[configuration.name]]
|
166
|
-
build_settings.
|
167
|
-
|
166
|
+
unless build_settings.nil?
|
167
|
+
build_settings.merged_pod_target_xcconfigs.each_key do |setting|
|
168
|
+
configuration.build_settings.delete(setting)
|
169
|
+
end
|
168
170
|
end
|
169
171
|
end
|
170
172
|
end
|
@@ -51,12 +51,15 @@ module Pod
|
|
51
51
|
unless root.exist?
|
52
52
|
raise Informative, "Attempt to read non existent folder `#{root}`."
|
53
53
|
end
|
54
|
-
|
55
54
|
dirs = []
|
56
55
|
files = []
|
57
56
|
root_length = root.cleanpath.to_s.length + File::SEPARATOR.length
|
58
|
-
|
57
|
+
escaped_root = escape_path_for_glob(root)
|
58
|
+
Dir.glob(escaped_root + '**/*', File::FNM_DOTMATCH).each do |f|
|
59
59
|
directory = File.directory?(f)
|
60
|
+
# Ignore `.` and `..` directories
|
61
|
+
next if directory && f =~ /\.\.?$/
|
62
|
+
|
60
63
|
f = f.slice(root_length, f.length - root_length)
|
61
64
|
next if f.nil?
|
62
65
|
|
@@ -214,6 +217,25 @@ module Pod
|
|
214
217
|
end
|
215
218
|
end
|
216
219
|
|
220
|
+
# Escapes the glob metacharacters from a given path so it can used in
|
221
|
+
# Dir#glob and similar methods.
|
222
|
+
#
|
223
|
+
# @note See CocoaPods/CocoaPods#862.
|
224
|
+
#
|
225
|
+
# @param [String, Pathname] path
|
226
|
+
# The path to escape.
|
227
|
+
#
|
228
|
+
# @return [Pathname] The escaped path.
|
229
|
+
#
|
230
|
+
def escape_path_for_glob(path)
|
231
|
+
result = path.to_s
|
232
|
+
characters_to_escape = ['[', ']', '{', '}', '?', '*']
|
233
|
+
characters_to_escape.each do |character|
|
234
|
+
result.gsub!(character, "\\#{character}")
|
235
|
+
end
|
236
|
+
Pathname.new(result)
|
237
|
+
end
|
238
|
+
|
217
239
|
#-----------------------------------------------------------------------#
|
218
240
|
end
|
219
241
|
end
|
@@ -492,9 +492,15 @@ module Pod
|
|
492
492
|
attr_reader :test_xcconfig
|
493
493
|
alias test_xcconfig? test_xcconfig
|
494
494
|
|
495
|
+
# @return [Boolean]
|
496
|
+
# whether settings are being generated for an application bundle
|
497
|
+
#
|
495
498
|
attr_reader :app_xcconfig
|
496
499
|
alias app_xcconfig? app_xcconfig
|
497
500
|
|
501
|
+
# @return [Boolean]
|
502
|
+
# whether settings are being generated for an library bundle
|
503
|
+
#
|
498
504
|
attr_reader :library_xcconfig
|
499
505
|
alias library_xcconfig? library_xcconfig
|
500
506
|
|
@@ -683,6 +689,12 @@ module Pod
|
|
683
689
|
file_accessors.flat_map(&:vendored_xcframeworks).map { |path| Xcode::XCFramework.new(path) }
|
684
690
|
end
|
685
691
|
|
692
|
+
# @return [Array<String>]
|
693
|
+
define_build_settings_method :system_framework_search_paths, :build_setting => true, :memoized => true, :sorted => true, :uniqued => true do
|
694
|
+
return ['$(PLATFORM_DIR)/Developer/Library/Frameworks'] if should_apply_xctunwrap_fix?
|
695
|
+
[]
|
696
|
+
end
|
697
|
+
|
686
698
|
#-------------------------------------------------------------------------#
|
687
699
|
|
688
700
|
# @!group Libraries
|
@@ -737,16 +749,18 @@ module Pod
|
|
737
749
|
|
738
750
|
# @return [Array<String>]
|
739
751
|
define_build_settings_method :library_search_paths, :build_setting => true, :memoized => true, :sorted => true, :uniqued => true do
|
740
|
-
|
752
|
+
library_search_paths = should_apply_xctunwrap_fix? ? ['$(PLATFORM_DIR)/Developer/usr/lib'] : []
|
753
|
+
return library_search_paths if library_xcconfig? && target.build_as_static?
|
741
754
|
|
742
|
-
|
743
|
-
|
755
|
+
library_search_paths.concat library_search_paths_to_import.dup
|
756
|
+
library_search_paths.concat dependent_targets.flat_map { |pt| pt.build_settings[@configuration].vendored_dynamic_library_search_paths }
|
744
757
|
if library_xcconfig?
|
745
|
-
|
758
|
+
library_search_paths.delete(target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE))
|
746
759
|
else
|
747
|
-
|
760
|
+
library_search_paths.concat(dependent_targets.flat_map { |pt| pt.build_settings[@configuration].library_search_paths_to_import })
|
748
761
|
end
|
749
|
-
|
762
|
+
|
763
|
+
library_search_paths
|
750
764
|
end
|
751
765
|
|
752
766
|
# @return [Array<String>]
|
@@ -837,6 +851,7 @@ module Pod
|
|
837
851
|
define_build_settings_method :swift_include_paths, :build_setting => true, :memoized => true, :sorted => true, :uniqued => true do
|
838
852
|
paths = dependent_targets.flat_map { |pt| pt.build_settings[@configuration].swift_include_paths_to_import }
|
839
853
|
paths.concat swift_include_paths_to_import if non_library_xcconfig?
|
854
|
+
paths.concat ['$(PLATFORM_DIR)/Developer/usr/lib'] if should_apply_xctunwrap_fix?
|
840
855
|
paths
|
841
856
|
end
|
842
857
|
|
@@ -966,6 +981,20 @@ module Pod
|
|
966
981
|
end
|
967
982
|
end
|
968
983
|
|
984
|
+
# Xcode 11 causes an issue with frameworks or libraries before 12.2 deployment target that link or are part of
|
985
|
+
# test bundles that use XCTUnwrap. Apple has provided an official work around for this.
|
986
|
+
#
|
987
|
+
# @see https://developer.apple.com/documentation/xcode_release_notes/xcode_11_release_notes
|
988
|
+
#
|
989
|
+
# @return [Boolean] Whether to apply the fix or not.
|
990
|
+
#
|
991
|
+
define_build_settings_method :should_apply_xctunwrap_fix?, :memoized => true do
|
992
|
+
library_xcconfig? &&
|
993
|
+
target.platform.name == :ios &&
|
994
|
+
Version.new(target.platform.deployment_target) < Version.new('12.2') &&
|
995
|
+
(frameworks_to_import + weak_frameworks_to_import).uniq.include?('XCTest')
|
996
|
+
end
|
997
|
+
|
969
998
|
#-------------------------------------------------------------------------#
|
970
999
|
end
|
971
1000
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2020-05-29 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: cocoapods-core
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.9.
|
22
|
+
version: 1.9.3
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.9.
|
29
|
+
version: 1.9.3
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: claide
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|