Commit dab9bf68 authored by Satoshi Ohki's avatar Satoshi Ohki

fixed bug of directory cleaning.

prevents multiple times to clean the root directory of symlink headers.
parent eb15d119
......@@ -40,6 +40,10 @@ module Pod
@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
......
......@@ -72,6 +72,10 @@ module Pod
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|
......
......@@ -61,18 +61,11 @@ module Pod
"#{@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)
......@@ -82,7 +75,7 @@ module Pod
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|
......
......@@ -337,6 +337,33 @@ else
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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment