cocoapods 1.2.1 → 1.3.0.beta.1
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 +89 -1
- data/lib/cocoapods/command/lib/lint.rb +3 -0
- data/lib/cocoapods/command/repo/push.rb +1 -1
- data/lib/cocoapods/command/spec/lint.rb +3 -0
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +11 -11
- data/lib/cocoapods/generator/embed_frameworks_script.rb +18 -6
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +6 -66
- data/lib/cocoapods/generator/xcconfig/pod_xcconfig.rb +16 -3
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +102 -6
- data/lib/cocoapods/installer.rb +17 -76
- data/lib/cocoapods/installer/analyzer.rb +48 -44
- data/lib/cocoapods/installer/xcode.rb +1 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator.rb +22 -9
- data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_installer.rb +11 -5
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +78 -5
- data/lib/cocoapods/installer/xcode/target_validator.rb +126 -0
- data/lib/cocoapods/project.rb +5 -0
- data/lib/cocoapods/resolver.rb +1 -1
- data/lib/cocoapods/resolver/lazy_specification.rb +2 -2
- data/lib/cocoapods/sandbox.rb +23 -0
- data/lib/cocoapods/target/pod_target.rb +72 -5
- data/lib/cocoapods/validator.rb +101 -46
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85b8c7d56dc05bce8e651e54f7b9d2af2ffefaea
|
4
|
+
data.tar.gz: fa049011f0e3c0f28a40d444d74450445be75ed1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e03f894668359510702db376e92692ad0bac0fa0334c25cbdeab29420d4e9cea080a135695b5d614208b9545ab4c2797e90566c4fa47055c751990a7272d51fa
|
7
|
+
data.tar.gz: e6f6cc8935c87cc50084cc2224cb47a70ab9b9c8a0906ffe55dacff18aab74cc5c16cef6eaac718cd3ca66db1e6f190f622b000b928da92ac3b6027660e73a54
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,88 @@ 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.3.0.beta.1 (2017-06-06)
|
8
|
+
|
9
|
+
##### Enhancements
|
10
|
+
|
11
|
+
* Add validator support to run test specs during lint
|
12
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
13
|
+
[#6753](https://github.com/CocoaPods/CocoaPods/pull/6753)
|
14
|
+
|
15
|
+
* Fix to include proper runtime search paths for test native targets
|
16
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
17
|
+
[#6727](https://github.com/CocoaPods/CocoaPods/pull/6727)
|
18
|
+
|
19
|
+
* Aggregate targets should not include pod targets only used by tests
|
20
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
21
|
+
[#6726](https://github.com/CocoaPods/CocoaPods/pull/6726)
|
22
|
+
|
23
|
+
* Add support for test target creation in the pods project generator
|
24
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
25
|
+
[#6703](https://github.com/CocoaPods/CocoaPods/pull/6703)
|
26
|
+
|
27
|
+
* Copy dSYM for vendored frameworks.
|
28
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
29
|
+
[#1698](https://github.com/CocoaPods/CocoaPods/issues/1698)
|
30
|
+
|
31
|
+
* Prevents need for .swift-version file in Objective-C pods
|
32
|
+
[Austin Emmons](https://github.com/atreat)
|
33
|
+
[#6742](https://github.com/CocoaPods/CocoaPods/issues/6742)
|
34
|
+
|
35
|
+
##### Bug Fixes
|
36
|
+
|
37
|
+
* Do not double add search paths to test xcconfig from parent
|
38
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
39
|
+
[#6767](https://github.com/CocoaPods/CocoaPods/pull/6767)
|
40
|
+
|
41
|
+
* Link `swiftSwiftOnoneSupport` for test xcconfigs
|
42
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
43
|
+
[#6769](https://github.com/CocoaPods/CocoaPods/pull/6769)
|
44
|
+
|
45
|
+
* Ensure product name for tests is not overridden by custom build settings
|
46
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
47
|
+
[#6766](https://github.com/CocoaPods/CocoaPods/pull/6766)
|
48
|
+
|
49
|
+
* Do not use the same product name for test targets
|
50
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
51
|
+
[#6762](https://github.com/CocoaPods/CocoaPods/pull/6762)
|
52
|
+
|
53
|
+
* Use unique temp folder during lint for parallel execution
|
54
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
55
|
+
[#5117](https://github.com/CocoaPods/CocoaPods/issues/5117)
|
56
|
+
|
57
|
+
* Stop adding `$(inherited)` for every static library linked
|
58
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
59
|
+
[#6756](https://github.com/CocoaPods/CocoaPods/pull/6756)
|
60
|
+
|
61
|
+
* Settings for dependent targets should include the parent target for test xcconfigs
|
62
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
63
|
+
[#6755](https://github.com/CocoaPods/CocoaPods/pull/6755)
|
64
|
+
|
65
|
+
* Only check for valid Swift version for pod targets that use Swift
|
66
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
67
|
+
[#6733](https://github.com/CocoaPods/CocoaPods/pull/6733)
|
68
|
+
|
69
|
+
* Fix pod install error from 1.2.1 when working with static lib-only projects.
|
70
|
+
[Ben Asher](https://github.com/benasher44)
|
71
|
+
[#6673](https://github.com/CocoaPods/CocoaPods/issues/6673)
|
72
|
+
|
73
|
+
* Use `git!` when executing `push` command in order to raise informative and set exit code.
|
74
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
75
|
+
[#6700](https://github.com/CocoaPods/CocoaPods/pull/6700)
|
76
|
+
|
77
|
+
* Make copy resources echoes always return true to work around issue where Xcode stops handling build script output greater than ~440 characters (rdar://30607704).
|
78
|
+
[postmechanical](https://github.com/postmechanical)
|
79
|
+
[#6595](https://github.com/CocoaPods/CocoaPods/issues/6595)
|
80
|
+
|
81
|
+
* Inherit pod defined values for `SWIFT_ACTIVE_COMPILATION_CONDITIONS`.
|
82
|
+
[Louis D'hauwe](https://github.com/louisdh)
|
83
|
+
[#6629](https://github.com/CocoaPods/CocoaPods/pull/6629)
|
84
|
+
|
85
|
+
* Delete extraneous files in rsync destination.
|
86
|
+
[jgavris](https://github.com/jgavris)
|
87
|
+
[#6694](https://github.com/CocoaPods/CocoaPods/pull/6694)
|
88
|
+
|
7
89
|
## 1.2.1 (2017-04-11)
|
8
90
|
|
9
91
|
##### Enhancements
|
@@ -12,7 +94,9 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
|
|
12
94
|
|
13
95
|
##### Bug Fixes
|
14
96
|
|
15
|
-
*
|
97
|
+
* No master specs cloning when not needed for `pod lib lint`.
|
98
|
+
[Alfredo Delli Bovi](https://github.com/adellibovi)
|
99
|
+
[#6154](https://github.com/CocoaPods/CocoaPods/issues/6154)
|
16
100
|
|
17
101
|
|
18
102
|
## 1.2.1.rc.1 (2017-04-05)
|
@@ -155,6 +239,10 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
|
|
155
239
|
[Danielle Tomlinson](https://github.com/dantoml)
|
156
240
|
[#5937](https://github.com/CocoaPods/CocoaPods/issues/5937)
|
157
241
|
|
242
|
+
* Move Installer target verification into the Xcode namespace
|
243
|
+
[Danielle Tomlinson](https://github.com/DanToml)
|
244
|
+
[#5607](https://github.com/CocoaPods/CocoaPods/pull/5607)
|
245
|
+
|
158
246
|
##### Bug Fixes
|
159
247
|
|
160
248
|
* None.
|
@@ -24,6 +24,7 @@ module Pod
|
|
24
24
|
['--swift-version=VERSION', 'The SWIFT_VERSION that should be used to lint the spec. ' \
|
25
25
|
'This takes precedence over a .swift-version file.'],
|
26
26
|
['--skip-import-validation', 'Lint skips validating that the pod can be imported'],
|
27
|
+
['--skip-tests', 'Lint skips building and running tests during validation'],
|
27
28
|
].concat(super)
|
28
29
|
end
|
29
30
|
|
@@ -39,6 +40,7 @@ module Pod
|
|
39
40
|
@private = argv.flag?('private', false)
|
40
41
|
@swift_version = argv.option('swift-version', nil)
|
41
42
|
@skip_import_validation = argv.flag?('skip-import-validation', false)
|
43
|
+
@skip_tests = argv.flag?('skip-tests', false)
|
42
44
|
@podspecs_paths = argv.arguments!
|
43
45
|
super
|
44
46
|
end
|
@@ -62,6 +64,7 @@ module Pod
|
|
62
64
|
validator.ignore_public_only_results = @private
|
63
65
|
validator.swift_version = @swift_version
|
64
66
|
validator.skip_import_validation = @skip_import_validation
|
67
|
+
validator.skip_tests = @skip_tests
|
65
68
|
validator.validate
|
66
69
|
|
67
70
|
unless @clean
|
@@ -213,7 +213,7 @@ module Pod
|
|
213
213
|
#
|
214
214
|
def push_repo
|
215
215
|
UI.puts "\nPushing the `#{@repo}' repo\n".yellow
|
216
|
-
|
216
|
+
repo_git('-C', repo_dir, 'push', 'origin', 'master')
|
217
217
|
end
|
218
218
|
|
219
219
|
#---------------------------------------------------------------------#
|
@@ -30,6 +30,7 @@ module Pod
|
|
30
30
|
['--swift-version=VERSION', 'The SWIFT_VERSION that should be used to lint the spec. ' \
|
31
31
|
'This takes precedence over a .swift-version file.'],
|
32
32
|
['--skip-import-validation', 'Lint skips validating that the pod can be imported'],
|
33
|
+
['--skip-tests', 'Lint skips building and running tests during validation'],
|
33
34
|
].concat(super)
|
34
35
|
end
|
35
36
|
|
@@ -45,6 +46,7 @@ module Pod
|
|
45
46
|
@private = argv.flag?('private', false)
|
46
47
|
@swift_version = argv.option('swift-version', nil)
|
47
48
|
@skip_import_validation = argv.flag?('skip-import-validation', false)
|
49
|
+
@skip_tests = argv.flag?('skip-tests', false)
|
48
50
|
@podspecs_paths = argv.arguments!
|
49
51
|
super
|
50
52
|
end
|
@@ -64,6 +66,7 @@ module Pod
|
|
64
66
|
validator.ignore_public_only_results = @private
|
65
67
|
validator.swift_version = @swift_version
|
66
68
|
validator.skip_import_validation = @skip_import_validation
|
69
|
+
validator.skip_tests = @skip_tests
|
67
70
|
validator.validate
|
68
71
|
failure_reasons << validator.failure_reason
|
69
72
|
|
@@ -140,29 +140,29 @@ EOM
|
|
140
140
|
fi
|
141
141
|
case $RESOURCE_PATH in
|
142
142
|
*\.storyboard)
|
143
|
-
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$RESOURCE_PATH\\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
143
|
+
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$RESOURCE_PATH\\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
144
144
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$RESOURCE_PATH\\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
145
145
|
;;
|
146
146
|
*\.xib)
|
147
|
-
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$RESOURCE_PATH\\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
147
|
+
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$RESOURCE_PATH\\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
148
148
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$RESOURCE_PATH\\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
149
149
|
;;
|
150
150
|
*.framework)
|
151
|
-
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
151
|
+
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
152
152
|
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
153
|
-
echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
154
|
-
rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
153
|
+
echo "rsync --delete -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
154
|
+
rsync --delete -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
155
155
|
;;
|
156
156
|
*.xcdatamodel)
|
157
|
-
echo "xcrun momc \\"$RESOURCE_PATH\\" \\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\\""
|
157
|
+
echo "xcrun momc \\"$RESOURCE_PATH\\" \\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\\"" || true
|
158
158
|
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
|
159
159
|
;;
|
160
160
|
*.xcdatamodeld)
|
161
|
-
echo "xcrun momc \\"$RESOURCE_PATH\\" \\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\\""
|
161
|
+
echo "xcrun momc \\"$RESOURCE_PATH\\" \\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\\"" || true
|
162
162
|
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
|
163
163
|
;;
|
164
164
|
*.xcmappingmodel)
|
165
|
-
echo "xcrun mapc \\"$RESOURCE_PATH\\" \\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\\""
|
165
|
+
echo "xcrun mapc \\"$RESOURCE_PATH\\" \\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\\"" || true
|
166
166
|
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
|
167
167
|
;;
|
168
168
|
*.xcassets)
|
@@ -170,7 +170,7 @@ EOM
|
|
170
170
|
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
|
171
171
|
;;
|
172
172
|
*)
|
173
|
-
echo "$RESOURCE_PATH"
|
173
|
+
echo "$RESOURCE_PATH" || true
|
174
174
|
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
|
175
175
|
;;
|
176
176
|
esac
|
@@ -180,10 +180,10 @@ EOS
|
|
180
180
|
RSYNC_CALL = <<EOS
|
181
181
|
|
182
182
|
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
183
|
-
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
183
|
+
rsync --delete -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
184
184
|
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
|
185
185
|
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
186
|
-
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
186
|
+
rsync --delete -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
187
187
|
fi
|
188
188
|
rm -f "$RESOURCES_TO_COPY"
|
189
189
|
EOS
|
@@ -61,8 +61,8 @@ module Pod
|
|
61
61
|
fi
|
62
62
|
|
63
63
|
# use filter instead of exclude so missing patterns dont' throw errors
|
64
|
-
echo "rsync -av --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" --filter \\"- Headers\\" --filter \\"- PrivateHeaders\\" --filter \\"- Modules\\" \\"${source}\\" \\"${destination}\\""
|
65
|
-
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
64
|
+
echo "rsync --delete -av --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" --filter \\"- Headers\\" --filter \\"- PrivateHeaders\\" --filter \\"- Modules\\" \\"${source}\\" \\"${destination}\\""
|
65
|
+
rsync --delete -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
66
66
|
|
67
67
|
local basename
|
68
68
|
basename="$(basename -s .framework "$1")"
|
@@ -91,6 +91,15 @@ module Pod
|
|
91
91
|
fi
|
92
92
|
}
|
93
93
|
|
94
|
+
# Copies the dSYM of a vendored framework
|
95
|
+
install_dsym() {
|
96
|
+
local source="$1"
|
97
|
+
if [ -r "$source" ]; then
|
98
|
+
echo "rsync --delete -av --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" --filter \\"- Headers\\" --filter \\"- PrivateHeaders\\" --filter \\"- Modules\\" \\"${source}\\" \\"${DWARF_DSYM_FOLDER_PATH}\\""
|
99
|
+
rsync --delete -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DWARF_DSYM_FOLDER_PATH}"
|
100
|
+
fi
|
101
|
+
}
|
102
|
+
|
94
103
|
# Signs a framework with the provided identity
|
95
104
|
code_sign_if_enabled() {
|
96
105
|
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
|
@@ -126,11 +135,14 @@ module Pod
|
|
126
135
|
|
127
136
|
SH
|
128
137
|
script << "\n" unless frameworks_by_config.values.all?(&:empty?)
|
129
|
-
frameworks_by_config.each do |config,
|
130
|
-
unless
|
138
|
+
frameworks_by_config.each do |config, frameworks_with_dsyms|
|
139
|
+
unless frameworks_with_dsyms.empty?
|
131
140
|
script << %(if [[ "$CONFIGURATION" == "#{config}" ]]; then\n)
|
132
|
-
|
133
|
-
script << %( install_framework "#{framework}"\n)
|
141
|
+
frameworks_with_dsyms.each do |framework_with_dsym|
|
142
|
+
script << %( install_framework "#{framework_with_dsym[:framework]}"\n)
|
143
|
+
# Vendored frameworks might have a dSYM file next to them so ensure its copied. Frameworks built from
|
144
|
+
# sources will have their dSYM generated and copied by Xcode.
|
145
|
+
script << %( install_dsym "#{framework_with_dsym[:dSYM]}"\n) unless framework_with_dsym[:dSYM].nil?
|
134
146
|
end
|
135
147
|
script << "fi\n"
|
136
148
|
end
|
@@ -71,8 +71,9 @@ module Pod
|
|
71
71
|
|
72
72
|
XCConfigHelper.add_target_specific_settings(target, @xcconfig)
|
73
73
|
|
74
|
-
|
75
|
-
|
74
|
+
targets = pod_targets + target.search_paths_aggregate_targets.flat_map(&:pod_targets)
|
75
|
+
XCConfigHelper.generate_vendored_build_settings(target, targets, @xcconfig)
|
76
|
+
XCConfigHelper.generate_other_ld_flags(target, pod_targets, @xcconfig)
|
76
77
|
|
77
78
|
# TODO: Need to decide how we are going to ensure settings like these
|
78
79
|
# are always excluded from the user's project.
|
@@ -84,7 +85,9 @@ module Pod
|
|
84
85
|
# update the runpath search paths.
|
85
86
|
vendored_dynamic_artifacts = pod_targets.flat_map(&:file_accessors).flat_map(&:vendored_dynamic_artifacts)
|
86
87
|
|
87
|
-
|
88
|
+
symbol_type = target.user_targets.map(&:symbol_type).uniq.first
|
89
|
+
test_bundle = symbol_type == :octest_bundle || symbol_type == :unit_test_bundle || symbol_type == :ui_test_bundle
|
90
|
+
XCConfigHelper.generate_ld_runpath_search_paths(target, target.requires_host_target?, test_bundle, @xcconfig) if target.requires_frameworks? || vendored_dynamic_artifacts.count > 0
|
88
91
|
|
89
92
|
@xcconfig
|
90
93
|
end
|
@@ -176,69 +179,6 @@ module Pod
|
|
176
179
|
end
|
177
180
|
end
|
178
181
|
|
179
|
-
# Add custom build settings and required build settings to link to
|
180
|
-
# vendored libraries and frameworks.
|
181
|
-
#
|
182
|
-
# @note
|
183
|
-
# In case of generated pod targets, which require frameworks, the
|
184
|
-
# vendored frameworks and libraries are already linked statically
|
185
|
-
# into the framework binary and must not be linked again to the
|
186
|
-
# user target.
|
187
|
-
#
|
188
|
-
def generate_vendored_build_settings
|
189
|
-
targets = pod_targets + target.search_paths_aggregate_targets.flat_map(&:pod_targets)
|
190
|
-
|
191
|
-
targets.each do |pod_target|
|
192
|
-
unless pod_target.should_build? && pod_target.requires_frameworks?
|
193
|
-
XCConfigHelper.add_settings_for_file_accessors_of_target(target, pod_target, @xcconfig)
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
# Add pod target to list of frameworks / libraries that are linked
|
199
|
-
# with the user’s project.
|
200
|
-
#
|
201
|
-
def generate_other_ld_flags
|
202
|
-
other_ld_flags = pod_targets.select(&:should_build?).map do |pod_target|
|
203
|
-
if pod_target.requires_frameworks?
|
204
|
-
%(-framework "#{pod_target.product_basename}")
|
205
|
-
else
|
206
|
-
%(-l "#{pod_target.product_basename}") if XCConfigHelper.links_dependency?(target, pod_target)
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
@xcconfig.merge!('OTHER_LDFLAGS' => other_ld_flags.compact.join(' '))
|
211
|
-
end
|
212
|
-
|
213
|
-
# Ensure to add the default linker run path search paths as they could
|
214
|
-
# be not present due to being historically absent in the project or
|
215
|
-
# target template or just being removed by being superficial when
|
216
|
-
# linking third-party dependencies exclusively statically. This is not
|
217
|
-
# something a project needs specifically for the integration with
|
218
|
-
# CocoaPods, but makes sure that it is self-contained for the given
|
219
|
-
# constraints.
|
220
|
-
#
|
221
|
-
def generate_ld_runpath_search_paths
|
222
|
-
ld_runpath_search_paths = ['$(inherited)']
|
223
|
-
if target.platform.symbolic_name == :osx
|
224
|
-
ld_runpath_search_paths << "'@executable_path/../Frameworks'"
|
225
|
-
symbol_type = target.user_targets.map(&:symbol_type).uniq.first
|
226
|
-
ld_runpath_search_paths << \
|
227
|
-
if symbol_type == :unit_test_bundle
|
228
|
-
"'@loader_path/../Frameworks'"
|
229
|
-
else
|
230
|
-
"'@loader_path/Frameworks'"
|
231
|
-
end
|
232
|
-
else
|
233
|
-
ld_runpath_search_paths << [
|
234
|
-
"'@executable_path/Frameworks'",
|
235
|
-
"'@loader_path/Frameworks'",
|
236
|
-
]
|
237
|
-
ld_runpath_search_paths << "'@executable_path/../../Frameworks'" if target.requires_host_target?
|
238
|
-
end
|
239
|
-
@xcconfig.merge!('LD_RUNPATH_SEARCH_PATHS' => ld_runpath_search_paths.join(' '))
|
240
|
-
end
|
241
|
-
|
242
182
|
private
|
243
183
|
|
244
184
|
#---------------------------------------------------------------------#
|
@@ -16,8 +16,12 @@ module Pod
|
|
16
16
|
#
|
17
17
|
# @param [Target] target @see target
|
18
18
|
#
|
19
|
-
|
19
|
+
# @param [Boolean] test_xcconfig
|
20
|
+
# whether this is an xcconfig for a test native target.
|
21
|
+
#
|
22
|
+
def initialize(target, test_xcconfig = false)
|
20
23
|
@target = target
|
24
|
+
@test_xcconfig = test_xcconfig
|
21
25
|
end
|
22
26
|
|
23
27
|
# @return [Xcodeproj::Config] The generated xcconfig.
|
@@ -49,11 +53,12 @@ module Pod
|
|
49
53
|
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1',
|
50
54
|
'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(search_paths),
|
51
55
|
'LIBRARY_SEARCH_PATHS' => '$(inherited) ',
|
52
|
-
'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target),
|
56
|
+
'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target, @test_xcconfig),
|
53
57
|
'PODS_ROOT' => '${SRCROOT}',
|
54
58
|
'PODS_TARGET_SRCROOT' => target.pod_target_srcroot,
|
55
59
|
'PRODUCT_BUNDLE_IDENTIFIER' => 'org.cocoapods.${PRODUCT_NAME:rfc1034identifier}',
|
56
60
|
'SKIP_INSTALL' => 'YES',
|
61
|
+
'SWIFT_ACTIVE_COMPILATION_CONDITIONS' => '$(inherited) ',
|
57
62
|
# 'USE_HEADERMAP' => 'NO'
|
58
63
|
}
|
59
64
|
|
@@ -64,7 +69,15 @@ module Pod
|
|
64
69
|
@xcconfig.merge!(file_accessor.spec_consumer.pod_target_xcconfig)
|
65
70
|
end
|
66
71
|
XCConfigHelper.add_target_specific_settings(target, @xcconfig)
|
67
|
-
|
72
|
+
recursive_dependent_targets = target.recursive_dependent_targets
|
73
|
+
@xcconfig.merge! XCConfigHelper.settings_for_dependent_targets(target, recursive_dependent_targets)
|
74
|
+
if @test_xcconfig
|
75
|
+
test_dependent_targets = [target, *target.test_dependent_targets]
|
76
|
+
@xcconfig.merge! XCConfigHelper.settings_for_dependent_targets(target, test_dependent_targets - recursive_dependent_targets)
|
77
|
+
XCConfigHelper.generate_vendored_build_settings(nil, test_dependent_targets, @xcconfig)
|
78
|
+
XCConfigHelper.generate_other_ld_flags(nil, test_dependent_targets, @xcconfig)
|
79
|
+
XCConfigHelper.generate_ld_runpath_search_paths(target, false, true, @xcconfig)
|
80
|
+
end
|
68
81
|
@xcconfig
|
69
82
|
end
|
70
83
|
|
@@ -45,13 +45,15 @@ module Pod
|
|
45
45
|
# the target, which is used to check if the ARC compatibility
|
46
46
|
# flag is required.
|
47
47
|
#
|
48
|
-
# @
|
49
|
-
#
|
50
|
-
# Podfile.
|
48
|
+
# @param [Boolean] include_objc_flag
|
49
|
+
# whether to include `-ObjC` in the other linker flags
|
51
50
|
#
|
52
|
-
|
51
|
+
# @return [String] the default linker flags. `-ObjC` is optionally included depending
|
52
|
+
# on the target while `-fobjc-arc` is included only if requested in the Podfile.
|
53
|
+
#
|
54
|
+
def self.default_ld_flags(target, include_objc_flag = false)
|
53
55
|
ld_flags = ''
|
54
|
-
ld_flags << '-ObjC' if
|
56
|
+
ld_flags << '-ObjC' if include_objc_flag
|
55
57
|
if target.podfile.set_arc_compatibility_flag? &&
|
56
58
|
target.spec_consumers.any?(&:requires_arc?)
|
57
59
|
ld_flags << ' -fobjc-arc'
|
@@ -210,7 +212,7 @@ module Pod
|
|
210
212
|
name = File.basename(library_path, extension).sub(/\Alib/, '')
|
211
213
|
dirname = '${PODS_ROOT}/' + library_path.dirname.relative_path_from(sandbox_root).to_s
|
212
214
|
build_settings = {
|
213
|
-
'LIBRARY_SEARCH_PATHS' =>
|
215
|
+
'LIBRARY_SEARCH_PATHS' => quote([dirname]),
|
214
216
|
}
|
215
217
|
build_settings['OTHER_LDFLAGS'] = "-l#{name}" if include_other_ldflags
|
216
218
|
xcconfig.merge!(build_settings)
|
@@ -296,6 +298,100 @@ module Pod
|
|
296
298
|
build_settings
|
297
299
|
end
|
298
300
|
|
301
|
+
# Add custom build settings and required build settings to link to
|
302
|
+
# vendored libraries and frameworks.
|
303
|
+
#
|
304
|
+
# @param [AggregateTarget] aggregate_target
|
305
|
+
# The aggregate target, may be nil.
|
306
|
+
#
|
307
|
+
# @param [Array<PodTarget] pod_targets
|
308
|
+
# The pod targets to add the vendored build settings for.
|
309
|
+
#
|
310
|
+
# @param [Xcodeproj::Config] xcconfig
|
311
|
+
# The xcconfig to edit.
|
312
|
+
#
|
313
|
+
# @note
|
314
|
+
# In case of generated pod targets, which require frameworks, the
|
315
|
+
# vendored frameworks and libraries are already linked statically
|
316
|
+
# into the framework binary and must not be linked again to the
|
317
|
+
# user target.
|
318
|
+
#
|
319
|
+
def self.generate_vendored_build_settings(aggregate_target, pod_targets, xcconfig)
|
320
|
+
pod_targets.each do |pod_target|
|
321
|
+
unless pod_target.should_build? && pod_target.requires_frameworks?
|
322
|
+
XCConfigHelper.add_settings_for_file_accessors_of_target(aggregate_target, pod_target, xcconfig)
|
323
|
+
end
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
# Ensure to add the default linker run path search paths as they could
|
328
|
+
# be not present due to being historically absent in the project or
|
329
|
+
# target template or just being removed by being superficial when
|
330
|
+
# linking third-party dependencies exclusively statically. This is not
|
331
|
+
# something a project needs specifically for the integration with
|
332
|
+
# CocoaPods, but makes sure that it is self-contained for the given
|
333
|
+
# constraints.
|
334
|
+
#
|
335
|
+
# @param [Target] target
|
336
|
+
# The target, this can be an aggregate target or a pod target.
|
337
|
+
#
|
338
|
+
# @param [Boolean] requires_host_target
|
339
|
+
# If this target requires a host target
|
340
|
+
#
|
341
|
+
# @param [Boolean] test_bundle
|
342
|
+
# Whether this is a test bundle or not. This has an effect when the platform is `osx` and changes
|
343
|
+
# the runtime search paths accordingly.
|
344
|
+
#
|
345
|
+
# @param [Xcodeproj::Config] xcconfig
|
346
|
+
# The xcconfig to edit.
|
347
|
+
#
|
348
|
+
# @return [void]
|
349
|
+
#
|
350
|
+
def self.generate_ld_runpath_search_paths(target, requires_host_target, test_bundle, xcconfig)
|
351
|
+
ld_runpath_search_paths = ['$(inherited)']
|
352
|
+
if target.platform.symbolic_name == :osx
|
353
|
+
ld_runpath_search_paths << "'@executable_path/../Frameworks'"
|
354
|
+
ld_runpath_search_paths << \
|
355
|
+
if test_bundle
|
356
|
+
"'@loader_path/../Frameworks'"
|
357
|
+
else
|
358
|
+
"'@loader_path/Frameworks'"
|
359
|
+
end
|
360
|
+
else
|
361
|
+
ld_runpath_search_paths << [
|
362
|
+
"'@executable_path/Frameworks'",
|
363
|
+
"'@loader_path/Frameworks'",
|
364
|
+
]
|
365
|
+
ld_runpath_search_paths << "'@executable_path/../../Frameworks'" if requires_host_target
|
366
|
+
end
|
367
|
+
xcconfig.merge!('LD_RUNPATH_SEARCH_PATHS' => ld_runpath_search_paths.join(' '))
|
368
|
+
end
|
369
|
+
|
370
|
+
# Add pod target to list of frameworks / libraries that are linked
|
371
|
+
# with the user’s project.
|
372
|
+
#
|
373
|
+
# @param [AggregateTarget] aggregate_target
|
374
|
+
# The aggregate target, may be nil.
|
375
|
+
#
|
376
|
+
# @param [Array<PodTarget] pod_targets
|
377
|
+
# The pod targets to add the vendored build settings for.
|
378
|
+
#
|
379
|
+
# @param [Xcodeproj::Config] xcconfig
|
380
|
+
# The xcconfig to edit.
|
381
|
+
#
|
382
|
+
# @return [void]
|
383
|
+
#
|
384
|
+
def self.generate_other_ld_flags(aggregate_target, pod_targets, xcconfig)
|
385
|
+
other_ld_flags = pod_targets.select(&:should_build?).map do |pod_target|
|
386
|
+
if pod_target.requires_frameworks?
|
387
|
+
%(-framework "#{pod_target.product_basename}")
|
388
|
+
elsif XCConfigHelper.links_dependency?(aggregate_target, pod_target)
|
389
|
+
%(-l "#{pod_target.product_basename}")
|
390
|
+
end
|
391
|
+
end
|
392
|
+
xcconfig.merge!('OTHER_LDFLAGS' => other_ld_flags.compact.join(' '))
|
393
|
+
end
|
394
|
+
|
299
395
|
# Checks if the given target requires language specific settings and
|
300
396
|
# configures the given Xcconfig.
|
301
397
|
#
|