cocoapods 1.2.1 → 1.3.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
#
|