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
d897a371
Commit
d897a371
authored
Jul 26, 2014
by
Fabio Pelosin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[XCConfigIntegrator] Migrate old installations
parent
d80a7386
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
104 additions
and
62 deletions
+104
-62
Gemfile.lock
Gemfile.lock
+1
-1
project.pbxproj
...xample/AFNetworking Mac Example.xcodeproj/project.pbxproj
+6
-4
project.pbxproj
...xample/AFNetworking iOS Example.xcodeproj/project.pbxproj
+6
-4
aggregate_target_installer.rb
.../installer/target_installer/aggregate_target_installer.rb
+1
-1
target_integrator.rb
...ds/installer/user_project_integrator/target_integrator.rb
+5
-4
xcconfig_integrator.rb
...oject_integrator/target_integrator/xcconfig_integrator.rb
+26
-0
cocoapods-integration-specs
spec/cocoapods-integration-specs
+1
-1
xcconfig_integrator_spec.rb
..._integrator/target_integrator/xcconfig_integrator_spec.rb
+58
-47
No files found.
Gemfile.lock
View file @
d897a371
...
...
@@ -18,7 +18,7 @@ GIT
GIT
remote: https://github.com/CocoaPods/Xcodeproj.git
revision: f
835e6e1145812ac04ac4b658321c727c2967547
revision: f
7e2a798464b7f4fce49379a748490a8ba83549a
branch: master
specs:
xcodeproj (0.18.0)
...
...
examples/AFNetworking Example/AFNetworking Mac Example.xcodeproj/project.pbxproj
View file @
d897a371
...
...
@@ -19,9 +19,10 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
118DF2C9405612B45655D94E
/* Pods-AFNetworking Example.Release.xcconfig */
=
{
isa
=
PBXFileReference
;
includeInIndex
=
1
;
lastKnownFileType
=
text.xcconfig
;
name
=
"Pods-AFNetworking Example.Release.xcconfig"
;
path
=
"Pods/Pods-AFNetworking Example.Release.xcconfig"
;
sourceTree
=
"<group>"
;
};
1BC0FB7006F49381520A8545
/* Pods-AFNetworking Example.Debug.xcconfig */
=
{
isa
=
PBXFileReference
;
includeInIndex
=
1
;
lastKnownFileType
=
text.xcconfig
;
name
=
"Pods-AFNetworking Example.Debug.xcconfig"
;
path
=
"Pods/Pods-AFNetworking Example.Debug.xcconfig"
;
sourceTree
=
"<group>"
;
};
6935B1E417A24F0E958977ED
/* libPods-AFNetworking Example.a */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
archive.ar
;
includeInIndex
=
0
;
path
=
"libPods-AFNetworking Example.a"
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
B304CCE7177D58DD00F4FC85
/* adn.cer */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file
;
path
=
adn.cer
;
sourceTree
=
SOURCE_ROOT
;
};
E74E8E7AFD3F4DCF9FEAB5B4
/* Pods-AFNetworking Example.xcconfig */
=
{
isa
=
PBXFileReference
;
includeInIndex
=
1
;
lastKnownFileType
=
text.xcconfig
;
name
=
"Pods-AFNetworking Example.xcconfig"
;
path
=
"Pods/Pods-AFNetworking Example.xcconfig"
;
sourceTree
=
"<group>"
;
};
F8129BFB1591061B009BFE23
/* AFNetworking Example.app */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.application
;
includeInIndex
=
0
;
path
=
"AFNetworking Example.app"
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
F8129BFF1591061B009BFE23
/* Cocoa.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
Cocoa.framework
;
path
=
System/Library/Frameworks/Cocoa.framework
;
sourceTree
=
SDKROOT
;
};
F8129C021591061B009BFE23
/* AppKit.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
AppKit.framework
;
path
=
System/Library/Frameworks/AppKit.framework
;
sourceTree
=
SDKROOT
;
};
...
...
@@ -60,7 +61,8 @@
F8129C051591061B009BFE23
/* Classes */
,
F8129BFE1591061B009BFE23
/* Frameworks */
,
F8129BFC1591061B009BFE23
/* Products */
,
E74E8E7AFD3F4DCF9FEAB5B4
/* Pods-AFNetworking Example.xcconfig */
,
1BC0FB7006F49381520A8545
/* Pods-AFNetworking Example.Debug.xcconfig */
,
118DF2C9405612B45655D94E
/* Pods-AFNetworking Example.Release.xcconfig */
,
);
indentWidth
=
4
;
sourceTree
=
"<group>"
;
...
...
@@ -296,7 +298,7 @@
};
F8129C1A1591061B009BFE23
/* Debug */
=
{
isa
=
XCBuildConfiguration
;
baseConfigurationReference
=
E74E8E7AFD3F4DCF9FEAB5B4
/* Pods-AFNetworking Example
.xcconfig */
;
baseConfigurationReference
=
1BC0FB7006F49381520A8545
/* Pods-AFNetworking Example.Debug
.xcconfig */
;
buildSettings
=
{
CODE_SIGN_IDENTITY
=
""
;
COMBINE_HIDPI_IMAGES
=
YES
;
...
...
@@ -310,7 +312,7 @@
};
F8129C1B1591061B009BFE23
/* Release */
=
{
isa
=
XCBuildConfiguration
;
baseConfigurationReference
=
E74E8E7AFD3F4DCF9FEAB5B4
/* Pods-AFNetworking Exampl
e.xcconfig */
;
baseConfigurationReference
=
118DF2C9405612B45655D94E
/* Pods-AFNetworking Example.Releas
e.xcconfig */
;
buildSettings
=
{
CODE_SIGN_IDENTITY
=
""
;
COMBINE_HIDPI_IMAGES
=
YES
;
...
...
examples/AFNetworking Example/AFNetworking iOS Example.xcodeproj/project.pbxproj
View file @
d897a371
...
...
@@ -35,8 +35,9 @@
/* Begin PBXFileReference section */
2982AD3117107C0000FFF048
/* adn.cer */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file
;
path
=
adn.cer
;
sourceTree
=
SOURCE_ROOT
;
};
50ABD6EC159FC2CE001BE42C
/* MobileCoreServices.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
MobileCoreServices.framework
;
path
=
System/Library/Frameworks/MobileCoreServices.framework
;
sourceTree
=
SDKROOT
;
};
7384432FCC95B62DB577C5D3
/* Pods-AFNetworking iOS Example.Release.xcconfig */
=
{
isa
=
PBXFileReference
;
includeInIndex
=
1
;
lastKnownFileType
=
text.xcconfig
;
name
=
"Pods-AFNetworking iOS Example.Release.xcconfig"
;
path
=
"Pods/Pods-AFNetworking iOS Example.Release.xcconfig"
;
sourceTree
=
"<group>"
;
};
9D87F8FEDE4A4313B0D579A3
/* libPods-AFNetworking iOS Example.a */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
archive.ar
;
includeInIndex
=
0
;
path
=
"libPods-AFNetworking iOS Example.a"
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
AE3A9F4CC86440AAA3CF5792
/* Pods-AFNetworking iOS Example.xcconfig */
=
{
isa
=
PBXFileReference
;
includeInIndex
=
1
;
lastKnownFileType
=
text.xcconfig
;
name
=
"Pods-AFNetworking iOS Example.xcconfig"
;
path
=
"Pods/Pods-AFNetworking iOS Example
.xcconfig"
;
sourceTree
=
"<group>"
;
};
B5BF8B2301C54A4C220FBB61
/* Pods-AFNetworking iOS Example.Debug.xcconfig */
=
{
isa
=
PBXFileReference
;
includeInIndex
=
1
;
lastKnownFileType
=
text.xcconfig
;
name
=
"Pods-AFNetworking iOS Example.Debug.xcconfig"
;
path
=
"Pods/Pods-AFNetworking iOS Example.Debug
.xcconfig"
;
sourceTree
=
"<group>"
;
};
F8129C3815910830009BFE23
/* Prefix.pch */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
Prefix.pch
;
sourceTree
=
SOURCE_ROOT
;
};
F8129C7215910C37009BFE23
/* AppDelegate.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
AppDelegate.m
;
sourceTree
=
SOURCE_ROOT
;
};
F8129C7315910C37009BFE23
/* AppDelegate.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
AppDelegate.h
;
sourceTree
=
SOURCE_ROOT
;
};
...
...
@@ -130,7 +131,8 @@
F8E469ED1395812A00DB05C8
/* Images */
,
F8E469631395739D00DB05C8
/* Frameworks */
,
F8E469611395739C00DB05C8
/* Products */
,
AE3A9F4CC86440AAA3CF5792
/* Pods-AFNetworking iOS Example.xcconfig */
,
B5BF8B2301C54A4C220FBB61
/* Pods-AFNetworking iOS Example.Debug.xcconfig */
,
7384432FCC95B62DB577C5D3
/* Pods-AFNetworking iOS Example.Release.xcconfig */
,
);
indentWidth
=
4
;
sourceTree
=
"<group>"
;
...
...
@@ -356,7 +358,7 @@
};
F8E469821395739D00DB05C8
/* Debug */
=
{
isa
=
XCBuildConfiguration
;
baseConfigurationReference
=
AE3A9F4CC86440AAA3CF5792
/* Pods-AFNetworking iOS Example
.xcconfig */
;
baseConfigurationReference
=
B5BF8B2301C54A4C220FBB61
/* Pods-AFNetworking iOS Example.Debug
.xcconfig */
;
buildSettings
=
{
ALWAYS_SEARCH_USER_PATHS
=
NO
;
CLANG_ENABLE_OBJC_ARC
=
YES
;
...
...
@@ -378,7 +380,7 @@
};
F8E469831395739D00DB05C8
/* Release */
=
{
isa
=
XCBuildConfiguration
;
baseConfigurationReference
=
AE3A9F4CC86440AAA3CF5792
/* Pods-AFNetworking iOS Exampl
e.xcconfig */
;
baseConfigurationReference
=
7384432FCC95B62DB577C5D3
/* Pods-AFNetworking iOS Example.Releas
e.xcconfig */
;
buildSettings
=
{
ALWAYS_SEARCH_USER_PATHS
=
NO
;
CLANG_ENABLE_OBJC_ARC
=
YES
;
...
...
lib/cocoapods/installer/target_installer/aggregate_target_installer.rb
View file @
d897a371
...
...
@@ -33,7 +33,7 @@ module Pod
#
def
create_xcconfig_file
target
.
build_configurations
.
each
do
|
configuration
|
path
=
library
.
xcconfig_path
(
configuration
)
path
=
library
.
xcconfig_path
(
configuration
.
name
)
UI
.
message
"- Generating
#{
configuration
.
name
}
xcconfig file at
#{
UI
.
path
(
path
)
}
"
do
gen
=
Generator
::
XCConfig
::
AggregateXCConfig
.
new
(
library
,
configuration
.
name
)
gen
.
save_as
(
path
)
...
...
lib/cocoapods/installer/user_project_integrator/target_integrator.rb
View file @
d897a371
...
...
@@ -30,10 +30,11 @@ module Pod
def
integrate!
UI
.
section
(
integration_message
)
do
XCConfigIntegrator
.
integrate
(
target
,
native_targets
)
return
if
native_targets_to_integrate
.
empty?
add_pods_library
add_copy_resources_script_phase
add_check_manifest_lock_script_phase
unless
native_targets_to_integrate
.
empty?
add_pods_library
add_copy_resources_script_phase
add_check_manifest_lock_script_phase
end
user_project
.
save
end
end
...
...
lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb
View file @
d897a371
...
...
@@ -18,6 +18,7 @@ module Pod
def
self
.
integrate
(
pod_bundle
,
targets
)
targets
.
each
do
|
target
|
target
.
build_configurations
.
each
do
|
config
|
update_from_cocoapods_0_33_1
(
pod_bundle
,
targets
)
set_target_xcconfig
(
pod_bundle
,
config
)
check_overrides
(
pod_bundle
,
target
,
config
)
end
...
...
@@ -29,6 +30,31 @@ module Pod
# @!group Integration steps
#-------------------------------------------------------------------#
# Removes the xcconfig used up to CocoaPods 0.33 from the project and
# deletes the file it if exists.
#
# @param [Target::AggregateTarget] pod_bundle
# The Pods bundle.
#
# @param [XcodeProj::PBXNativeTarget] target
# The native targets.
#
# @todo This can be removed for CocoaPods 1.0
#
def
self
.
update_from_cocoapods_0_33_1
(
pod_bundle
,
targets
)
targets
.
map
(
&
:project
).
uniq
.
each
do
|
project
|
path
=
pod_bundle
.
xcconfig_relative_path
(
nil
)
file_ref
=
project
.
files
.
find
{
|
f
|
f
.
path
==
path
}
if
file_ref
UI
.
message
"- Removing (
#{
path
}
)"
do
file_ref
.
remove_from_project
absolute_path
=
pod_bundle
.
xcconfig_path
File
.
delete
(
absolute_path
)
if
File
.
exist?
(
absolute_path
)
end
end
end
end
# Creates a file reference to the xcconfig generated by
# CocoaPods (if needed) and sets it as the base configuration of
# build configuration of the user target.
...
...
cocoapods-integration-specs
@
40b03ee3
Subproject commit
cd2f35e69c8bacf6bcff1af404d8702d4019f773
Subproject commit
40b03ee32f6f2d7935ee7bd7b0379ca550ad828c
spec/unit/installer/user_project_integrator/target_integrator/xcconfig_integrator_spec.rb
View file @
d897a371
...
...
@@ -3,58 +3,69 @@ require File.expand_path('../../../../../spec_helper', __FILE__)
module
Pod
describe
XCConfigIntegrator
=
Installer
::
UserProjectIntegrator
::
TargetIntegrator
::
XCConfigIntegrator
do
before
do
project_path
=
SpecHelper
.
create_sample_app_copy_from_fixture
(
'SampleProject'
)
@project
=
Xcodeproj
::
Project
.
open
(
project_path
)
Xcodeproj
::
Project
.
new
(
config
.
sandbox
.
project_path
).
save
@target
=
@project
.
targets
.
first
target_definition
=
Podfile
::
TargetDefinition
.
new
(
'Pods'
,
nil
)
target_definition
.
link_with_first_target
=
true
@pod_bundle
=
AggregateTarget
.
new
(
target_definition
,
config
.
sandbox
)
@pod_bundle
.
user_project_path
=
project_path
@pod_bundle
.
client_root
=
project_path
.
dirname
@pod_bundle
.
user_target_uuids
=
[
@target
.
uuid
]
configuration
=
Xcodeproj
::
Config
.
new
({
'GCC_PREPROCESSOR_DEFINITIONS'
=>
'$(inherited) COCOAPODS=1'
})
@pod_bundle
.
xcconfigs
[
'Debug'
]
=
configuration
@pod_bundle
.
xcconfigs
[
'Test'
]
=
configuration
@pod_bundle
.
xcconfigs
[
'Release'
]
=
configuration
@pod_bundle
.
xcconfigs
[
'App Store'
]
=
configuration
end
before
do
project_path
=
SpecHelper
.
create_sample_app_copy_from_fixture
(
'SampleProject'
)
@project
=
Xcodeproj
::
Project
.
open
(
project_path
)
Xcodeproj
::
Project
.
new
(
config
.
sandbox
.
project_path
).
save
@target
=
@project
.
targets
.
first
target_definition
=
Podfile
::
TargetDefinition
.
new
(
'Pods'
,
nil
)
target_definition
.
link_with_first_target
=
true
@pod_bundle
=
AggregateTarget
.
new
(
target_definition
,
config
.
sandbox
)
@pod_bundle
.
user_project_path
=
project_path
@pod_bundle
.
client_root
=
project_path
.
dirname
@pod_bundle
.
user_target_uuids
=
[
@target
.
uuid
]
configuration
=
Xcodeproj
::
Config
.
new
({
'GCC_PREPROCESSOR_DEFINITIONS'
=>
'$(inherited) COCOAPODS=1'
})
@pod_bundle
.
xcconfigs
[
'Debug'
]
=
configuration
@pod_bundle
.
xcconfigs
[
'Test'
]
=
configuration
@pod_bundle
.
xcconfigs
[
'Release'
]
=
configuration
@pod_bundle
.
xcconfigs
[
'App Store'
]
=
configuration
end
it
'sets the Pods xcconfig as the base config for each build configuration'
do
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
@target
.
build_configurations
.
each
do
|
config
|
xcconfig_file
=
@project
.
files
.
find
{
|
f
|
f
.
path
==
@pod_bundle
.
xcconfig_relative_path
(
config
)
}
config
.
base_configuration_reference
.
should
==
xcconfig_file
end
end
it
'cleans the xcconfig used up to CocoaPods 0.33.1'
do
path
=
@pod_bundle
.
xcconfig_path
file_ref
=
@project
.
new_file
(
path
)
config
=
@target
.
build_configuration_list
[
'Release'
]
config
.
base_configuration_reference
=
file_ref
File
.
expects
(
:exist?
).
returns
(
true
)
File
.
expects
(
:delete
).
with
(
path
)
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
@project
.
files
.
find
{
|
f
|
f
.
path
==
path
}.
should
.
be
.
nil
end
it
'does not duplicate the file reference to the CocoaPods xcconfig in the user project'
do
path
=
@pod_bundle
.
xcconfig_relative_path
(
'Release'
)
existing
=
@project
.
new_file
(
path
)
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
config
=
@target
.
build_configuration_list
[
'Release'
]
config
.
base_configuration_reference
.
should
.
equal
existing
it
'sets the Pods xcconfig as the base config for each build configuration'
do
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
@target
.
build_configurations
.
each
do
|
config
|
xcconfig_file
=
@project
.
files
.
find
{
|
f
|
f
.
path
==
@pod_bundle
.
xcconfig_relative_path
(
config
)
}
config
.
base_configuration_reference
.
should
==
xcconfig_file
end
end
it
'check that the integrated target does not override the CocoaPods build settings'
do
UI
.
warnings
=
''
config
=
@target
.
build_configuration_list
[
'Release'
]
config
.
build_settings
[
'GCC_PREPROCESSOR_DEFINITIONS'
]
=
'FLAG=1'
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
UI
.
warnings
.
should
.
include
'The `SampleProject [Release]` target '
\
'overrides the `GCC_PREPROCESSOR_DEFINITIONS` build setting'
end
it
'does not duplicate the file reference to the CocoaPods xcconfig in the user project'
do
path
=
@pod_bundle
.
xcconfig_relative_path
(
'Release'
)
existing
=
@project
.
new_file
(
path
)
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
config
=
@target
.
build_configuration_list
[
'Release'
]
config
.
base_configuration_reference
.
should
.
equal
existing
end
it
'allows build settings which inherit the settings form the CocoaPods xcconfig'
do
UI
.
warnings
=
''
config
=
@target
.
build_configuration_list
[
'Release'
]
config
.
build_settings
[
'GCC_PREPROCESSOR_DEFINITIONS'
]
=
'$(inherited)'
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
UI
.
warnings
.
should
.
not
.
include
'GCC_PREPROCESSOR_DEFINITIONS'
end
it
'check that the integrated target does not override the CocoaPods build settings'
do
UI
.
warnings
=
''
config
=
@target
.
build_configuration_list
[
'Release'
]
config
.
build_settings
[
'GCC_PREPROCESSOR_DEFINITIONS'
]
=
'FLAG=1'
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
UI
.
warnings
.
should
.
include
'The `SampleProject [Release]` target '
\
'overrides the `GCC_PREPROCESSOR_DEFINITIONS` build setting'
end
it
'allows build settings which inherit the settings form the CocoaPods xcconfig'
do
UI
.
warnings
=
''
config
=
@target
.
build_configuration_list
[
'Release'
]
config
.
build_settings
[
'GCC_PREPROCESSOR_DEFINITIONS'
]
=
'$(inherited)'
XCConfigIntegrator
.
integrate
(
@pod_bundle
,
[
@target
])
UI
.
warnings
.
should
.
not
.
include
'GCC_PREPROCESSOR_DEFINITIONS'
end
end
end
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