Skip to content

Commit

Permalink
Merge pull request #104 from roothybrid7/hotfix/prevent_dup_cleaning
Browse files Browse the repository at this point in the history
fixed bug of directory cleaning.
  • Loading branch information
kommen committed Jan 14, 2012
2 parents eb15d11 + dab9bf6 commit 9e98797
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 8 deletions.
4 changes: 4 additions & 0 deletions lib/cocoapods/config.rb
Expand Up @@ -40,6 +40,10 @@ def project_podfile
@project_podfile
end

def headers_symlink_root
@headers_symlink_root ||= "#{project_pods_root}/Headers"
end

# Returns the spec at the pat returned from `project_podfile`.
def rootspec
unless @rootspec
Expand Down
4 changes: 4 additions & 0 deletions lib/cocoapods/installer.rb
Expand Up @@ -72,6 +72,10 @@ def install!
puts "Installing dependencies of: #{@podfile.defined_in_file}" if config.verbose?
install_dependencies!
root = config.project_pods_root
headers_symlink_root = config.headers_symlink_root

# Clean old header symlinks
FileUtils.rm_r(headers_symlink_root, :secure => true) if File.exists?(headers_symlink_root)

puts "Generating support files" unless config.silent?
target_installers.each do |target_installer|
Expand Down
9 changes: 1 addition & 8 deletions lib/cocoapods/installer/target_installer.rb
Expand Up @@ -61,18 +61,11 @@ def prefix_header_filename
"#{@definition.lib_name}-prefix.pch"
end

def headers_symlink_path_name
"#{config.project_pods_root}/Headers"
end

# TODO move xcconfig related code into the xcconfig method, like copy_resources_script and generate_bridge_support.
def install!
# First add the target to the project
@target = @project.targets.new_static_library(@definition.lib_name)

# Clean old header symlinks
FileUtils.rm_r(headers_symlink_path_name, :secure => true) if File.exists?(headers_symlink_path_name)

header_search_paths = []
build_specifications.each do |spec|
xcconfig.merge!(spec.xcconfig)
Expand All @@ -82,7 +75,7 @@ def install!
end
# Symlink header files to Pods/Headers
spec.copy_header_mappings.each do |header_dir, files|
target_dir = "#{headers_symlink_path_name}/#{header_dir}"
target_dir = "#{config.headers_symlink_root}/#{header_dir}"
FileUtils.mkdir_p(target_dir)
target_dir_real_path = Pathname.new(target_dir).realpath
files.each do |file|
Expand Down
27 changes: 27 additions & 0 deletions spec/integration_spec.rb
Expand Up @@ -337,6 +337,33 @@ def should_successfully_perform(command)
end
end

it "should prevent duplication cleaning headers symlinks with multiple targets" do
Pod::Source.reset!
Pod::Spec::Set.reset!

podfile = Pod::Podfile.new do
# first ensure that the correct info is available to the specs when they load
config.rootspec = self
self.platform platform
target(:debug) { dependency 'SSZipArchive' }
target(:test, :exclusive => true) { dependency 'JSONKit' }
dependency 'ASIHTTPRequest'
end

installer = Pod::Installer.new(podfile)
installer.install!

root = config.project_pods_root
(root + 'Pods.xcconfig').should.exist
(root + 'Headers').should.exist
(root + 'Headers/SSZipArchive').should.exist
(root + 'Headers/ASIHTTPRequest').should.exist
(root + 'Headers/JSONKit').should.exist
Pathname.glob(File.join(root.to_s, 'Headers/ASIHTTPRequest/*.h')).size.should.be > 0
Pathname.glob(File.join(root.to_s, 'Headers/SSZipArchive/*.h')).size.should.be > 0
Pathname.glob(File.join(root.to_s, 'Headers/JSONKit/*.h')).size.should.be > 0
end

end
end

Expand Down

0 comments on commit 9e98797

Please sign in to comment.