Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
C
cocoapods
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gengmeiios
cocoapods
Commits
b1035d46
Commit
b1035d46
authored
Feb 21, 2018
by
Dimitris Koutsogiorgas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix legacy header search paths that broke due to #7116 and #7412
parent
d16f648e
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
84 additions
and
8 deletions
+84
-8
CHANGELOG.md
CHANGELOG.md
+3
-0
pod_target.rb
lib/cocoapods/target/pod_target.rb
+10
-4
cocoapods-integration-specs
spec/cocoapods-integration-specs
+1
-1
pod_xcconfig_spec.rb
spec/unit/generator/xcconfig/pod_xcconfig_spec.rb
+45
-3
pod_target_spec.rb
spec/unit/target/pod_target_spec.rb
+25
-0
No files found.
CHANGELOG.md
View file @
b1035d46
...
@@ -87,6 +87,9 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
...
@@ -87,6 +87,9 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
instead of via the sandbox headers store.
instead of via the sandbox headers store.
[
Samuel Giddins
](
https://github.com/segiddins
)
[
Samuel Giddins
](
https://github.com/segiddins
)
*
Fix legacy header search paths that broke due to #7116 and #7412.
[
Dimitris Koutsogiorgas
](
https://github.com/dnkoutso
)
[
#7445
](
https://github.com/CocoaPods/CocoaPods/pull/7445
)
## 1.4.0 (2018-01-18)
## 1.4.0 (2018-01-18)
...
...
lib/cocoapods/target/pod_target.rb
View file @
b1035d46
...
@@ -602,10 +602,16 @@ module Pod
...
@@ -602,10 +602,16 @@ module Pod
header_search_paths
=
[]
header_search_paths
=
[]
header_search_paths
.
concat
(
build_headers
.
search_paths
(
platform
,
nil
,
uses_modular_headers?
))
header_search_paths
.
concat
(
build_headers
.
search_paths
(
platform
,
nil
,
uses_modular_headers?
))
header_search_paths
.
concat
(
sandbox
.
public_headers
.
search_paths
(
platform
,
pod_name
,
uses_modular_headers?
))
header_search_paths
.
concat
(
sandbox
.
public_headers
.
search_paths
(
platform
,
pod_name
,
uses_modular_headers?
))
dependent_targets
=
recursive_dependent_targets
# Modular headers will only provide header search paths of the dependencies of the pod target. That is in
dependent_targets
+=
recursive_test_dependent_targets
if
include_test_dependent_targets
# contrast to legacy mode, which has always given access to all pods header search paths.
dependent_targets
.
each
do
|
dependent_target
|
if
uses_modular_headers?
header_search_paths
.
concat
(
sandbox
.
public_headers
.
search_paths
(
platform
,
dependent_target
.
pod_name
,
defines_module?
&&
dependent_target
.
uses_modular_headers?
(
false
)))
dependent_targets
=
recursive_dependent_targets
dependent_targets
+=
recursive_test_dependent_targets
if
include_test_dependent_targets
dependent_targets
.
each
do
|
dependent_target
|
header_search_paths
.
concat
(
sandbox
.
public_headers
.
search_paths
(
platform
,
dependent_target
.
pod_name
,
defines_module?
&&
dependent_target
.
uses_modular_headers?
(
false
)))
end
else
header_search_paths
.
concat
(
sandbox
.
public_headers
.
search_paths
(
platform
))
end
end
header_search_paths
.
uniq
header_search_paths
.
uniq
end
end
...
...
cocoapods-integration-specs
@
21bf4969
Subproject commit
5e83e892038cab89896eba2beb266d831a7318ea
Subproject commit
21bf4969be6345e4761a3cca3e91e8a3b953a302
spec/unit/generator/xcconfig/pod_xcconfig_spec.rb
View file @
b1035d46
...
@@ -259,11 +259,13 @@ module Pod
...
@@ -259,11 +259,13 @@ module Pod
xcconfig
.
to_hash
[
'LIBRARY_SEARCH_PATHS'
].
should
==
'$(inherited) "${PODS_ROOT}/../../spec/fixtures/banana-lib" "${PODS_CONFIGURATION_BUILD_DIR}/BananaLib" "${PODS_CONFIGURATION_BUILD_DIR}/CoconutLib"'
xcconfig
.
to_hash
[
'LIBRARY_SEARCH_PATHS'
].
should
==
'$(inherited) "${PODS_ROOT}/../../spec/fixtures/banana-lib" "${PODS_CONFIGURATION_BUILD_DIR}/BananaLib" "${PODS_CONFIGURATION_BUILD_DIR}/CoconutLib"'
end
end
it
'adds correct header search paths for dependent and test targets'
do
it
'adds correct header search paths for dependent and test targets
without modular headers
'
do
@monkey_pod_target
.
build_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@monkey_pod_target
.
build_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@monkey_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@monkey_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@banana_pod_target
.
build_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@banana_pod_target
.
build_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@banana_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@banana_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@coconut_pod_target
.
stubs
(
:uses_modular_headers?
).
returns
(
false
)
@coconut_pod_target
.
stubs
(
:defines_module?
).
returns
(
false
)
@coconut_pod_target
.
build_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
build_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
test_dependent_targets
=
[
@monkey_pod_target
]
@coconut_pod_target
.
test_dependent_targets
=
[
@monkey_pod_target
]
...
@@ -276,11 +278,13 @@ module Pod
...
@@ -276,11 +278,13 @@ module Pod
' "${PODS_ROOT}/Headers/Public/monkey" "${PODS_ROOT}/Headers/Public/monkey/monkey"'
' "${PODS_ROOT}/Headers/Public/monkey" "${PODS_ROOT}/Headers/Public/monkey/monkey"'
end
end
it
'adds correct header search paths for dependent and test targets for non test xcconfigs'
do
it
'adds correct header search paths for dependent and test targets for non test xcconfigs
without modular headers
'
do
@monkey_pod_target
.
build_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@monkey_pod_target
.
build_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@monkey_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@monkey_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@banana_pod_target
.
build_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@banana_pod_target
.
build_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@banana_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@banana_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@coconut_pod_target
.
stubs
(
:uses_modular_headers?
).
returns
(
false
)
@coconut_pod_target
.
stubs
(
:defines_module?
).
returns
(
false
)
@coconut_pod_target
.
build_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
build_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
test_dependent_targets
=
[
@monkey_pod_target
]
@coconut_pod_target
.
test_dependent_targets
=
[
@monkey_pod_target
]
...
@@ -290,7 +294,45 @@ module Pod
...
@@ -290,7 +294,45 @@ module Pod
xcconfig
=
generator
.
generate
xcconfig
=
generator
.
generate
xcconfig
.
to_hash
[
'HEADER_SEARCH_PATHS'
].
should
==
'$(inherited) "${PODS_ROOT}/Headers/Private/CoconutLib"'
\
xcconfig
.
to_hash
[
'HEADER_SEARCH_PATHS'
].
should
==
'$(inherited) "${PODS_ROOT}/Headers/Private/CoconutLib"'
\
' "${PODS_ROOT}/Headers/Public/BananaLib" "${PODS_ROOT}/Headers/Public/BananaLib/BananaLib"'
\
' "${PODS_ROOT}/Headers/Public/BananaLib" "${PODS_ROOT}/Headers/Public/BananaLib/BananaLib"'
\
' "${PODS_ROOT}/Headers/Public/CoconutLib" "${PODS_ROOT}/Headers/Public/CoconutLib/CoconutLib"'
' "${PODS_ROOT}/Headers/Public/CoconutLib" "${PODS_ROOT}/Headers/Public/CoconutLib/CoconutLib"'
\
' "${PODS_ROOT}/Headers/Public/monkey" "${PODS_ROOT}/Headers/Public/monkey/monkey"'
end
it
'adds correct header search paths for dependent and test targets with modular headers'
do
@monkey_pod_target
.
build_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@monkey_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@banana_pod_target
.
build_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@banana_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@coconut_pod_target
.
stubs
(
:uses_modular_headers?
).
returns
(
true
)
@coconut_pod_target
.
stubs
(
:defines_module?
).
returns
(
true
)
@coconut_pod_target
.
build_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
test_dependent_targets
=
[
@monkey_pod_target
]
@coconut_pod_target
.
dependent_targets
=
[
@banana_pod_target
]
generator
=
PodXCConfig
.
new
(
@coconut_pod_target
,
true
)
xcconfig
=
generator
.
generate
xcconfig
.
to_hash
[
'HEADER_SEARCH_PATHS'
].
should
==
'$(inherited) "${PODS_ROOT}/Headers/Private/CoconutLib"'
\
' "${PODS_ROOT}/Headers/Public/BananaLib"'
\
' "${PODS_ROOT}/Headers/Public/CoconutLib"'
\
' "${PODS_ROOT}/Headers/Public/monkey"'
end
it
'adds correct header search paths for dependent and test targets for non test xcconfigs with modular headers'
do
@monkey_pod_target
.
build_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@monkey_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@banana_pod_target
.
build_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@banana_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@coconut_pod_target
.
stubs
(
:uses_modular_headers?
).
returns
(
true
)
@coconut_pod_target
.
stubs
(
:defines_module?
).
returns
(
true
)
@coconut_pod_target
.
build_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'CoconutLib'
,
Platform
.
ios
)
@coconut_pod_target
.
test_dependent_targets
=
[
@monkey_pod_target
]
@coconut_pod_target
.
dependent_targets
=
[
@banana_pod_target
]
generator
=
PodXCConfig
.
new
(
@coconut_pod_target
,
false
)
xcconfig
=
generator
.
generate
xcconfig
.
to_hash
[
'HEADER_SEARCH_PATHS'
].
should
==
'$(inherited) "${PODS_ROOT}/Headers/Private/CoconutLib"'
\
' "${PODS_ROOT}/Headers/Public/BananaLib"'
\
' "${PODS_ROOT}/Headers/Public/CoconutLib"'
\
end
end
it
'does not include other ld flags for test dependent targets if its not a test xcconfig'
do
it
'does not include other ld flags for test dependent targets if its not a test xcconfig'
do
...
...
spec/unit/target/pod_target_spec.rb
View file @
b1035d46
...
@@ -280,6 +280,31 @@ module Pod
...
@@ -280,6 +280,31 @@ module Pod
'${PODS_ROOT}/Headers/Public/BananaLib/BananaLib'
,
'${PODS_ROOT}/Headers/Public/BananaLib/BananaLib'
,
]
]
end
end
# This is a legacy header search paths test support that adds header search paths for all dependencies
# even the ones that are not part of the podspec. It is how CocoaPods always worked until support for modular
# header search paths support was added in > 1.4.0
it
'includes header search paths for all dependent targets'
do
@pod_target
.
build_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'BananaLib'
,
Platform
.
ios
)
@pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'monkey'
,
Platform
.
ios
)
@pod_target
.
sandbox
.
public_headers
.
add_search_path
(
'matryoshka'
,
Platform
.
ios
)
monkey_spec
=
fixture_spec
(
'monkey/monkey.podspec'
)
monkey_pod_target
=
PodTarget
.
new
([
monkey_spec
],
[
@target_definition
],
config
.
sandbox
)
monkey_pod_target
.
stubs
(
:platform
).
returns
(
Platform
.
ios
)
# Notice that pod target does not depend on `matryoshka` but it will still include its header search paths
@pod_target
.
stubs
(
:dependent_targets
).
returns
([
monkey_pod_target
])
header_search_paths
=
@pod_target
.
header_search_paths
header_search_paths
.
sort
.
should
==
[
'${PODS_ROOT}/Headers/Private/BananaLib'
,
'${PODS_ROOT}/Headers/Public/BananaLib'
,
'${PODS_ROOT}/Headers/Public/BananaLib/BananaLib'
,
'${PODS_ROOT}/Headers/Public/matryoshka'
,
'${PODS_ROOT}/Headers/Public/matryoshka/matryoshka'
,
'${PODS_ROOT}/Headers/Public/monkey'
,
'${PODS_ROOT}/Headers/Public/monkey/monkey'
,
]
end
end
end
describe
'modular header search paths'
do
describe
'modular header search paths'
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment