From 83f2037028062ef04fcfb6ccac5bd71eb5d3f9d4 Mon Sep 17 00:00:00 2001 From: Laurent Sansonetti Date: Fri, 9 Dec 2011 18:24:31 +0100 Subject: [PATCH] if build_dir can't be created, use a temporary directory instead --- lib/motion/project/config.rb | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/motion/project/config.rb b/lib/motion/project/config.rb index b5914767..33109b0e 100644 --- a/lib/motion/project/config.rb +++ b/lib/motion/project/config.rb @@ -37,8 +37,8 @@ module Motion; module Project @frameworks = ['UIKit', 'Foundation', 'CoreGraphics'] @delegate_class = 'AppDelegate' @name = 'Untitled' - @build_dir = File.join(project_dir, 'build') @resources_dir = File.join(project_dir, 'resources') + @build_dir = File.join(project_dir, 'build') @device_family = :iphone @bundle_signature = '????' @interface_orientations = [:portrait, :landscape_left, :landscape_right] @@ -72,6 +72,23 @@ module Motion; module Project end end + def build_dir + tried = false + begin + FileUtils.mkdir_p(@build_dir) + rescue Errno::EACCES + raise if tried + require 'digest/sha1' + hash = Digest::SHA1.hexdigest(File.expand_path(project_dir)) + tmp = File.join(ENV['TMPDIR'], hash) + $stderr.puts "Cannot create build_dir `#{@build_dir}'. Check the permissions. Using temporary build directory instead: `#{tmp}'" + @build_dir = tmp + tried = true + retry + end + @build_dir + end + attr_reader :project_dir def project_file