From 7c3f06ddd8cd61277e041b538da68fd5b8be9dde Mon Sep 17 00:00:00 2001 From: William Light Date: Thu, 26 Sep 2013 17:49:31 +0200 Subject: Implement gembox-relative gemdir paths In the case where a relative path is specified to a gembox from build_config.rb, it was previously tricky to specify relative gem paths from inside that gembox. For example, consider a project in which mruby is checked out as a submodule in the project root: +- project_root | +- mruby/ | | | +- build_config.rb | | | +- ... | +- my_gembox/ | +- my_gembox.gembox | +- my_gem/ | +- mrbgem.rake | +- ... If build_config.rb refers to my_gembox with a relative path, it's difficult for my_gembox to then refer to my_gem. With this proposed change, my_gembox.gembox can look like this: MRuby::GemBox.new do |conf| conf.gem "my_gem" end --- tasks/mrbgem_spec.rake | 2 ++ tasks/mruby_build_gem.rake | 5 +++++ 2 files changed, 7 insertions(+) (limited to 'tasks') diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake index 94f24af26..70c44ed5e 100644 --- a/tasks/mrbgem_spec.rake +++ b/tasks/mrbgem_spec.rake @@ -297,6 +297,8 @@ module MRuby GemBox = Object.new class << GemBox + attr_accessor :path + def new(&block); block.call(self); end def config=(obj); @config = obj; end def gem(gemdir, &block); @config.gem(gemdir, &block); end diff --git a/tasks/mruby_build_gem.rake b/tasks/mruby_build_gem.rake index 39be984ad..4b8b79682 100644 --- a/tasks/mruby_build_gem.rake +++ b/tasks/mruby_build_gem.rake @@ -3,7 +3,10 @@ module MRuby def gembox(gemboxfile) gembox = File.expand_path("#{gemboxfile}.gembox", "#{MRUBY_ROOT}/mrbgems") fail "Can't find gembox '#{gembox}'" unless File.exists?(gembox) + GemBox.config = self + GemBox.path = gembox + instance_eval File.read(gembox) end @@ -11,6 +14,8 @@ module MRuby caller_dir = File.expand_path(File.dirname(/^(.*?):\d/.match(caller.first).to_a[1])) if gemdir.is_a?(Hash) gemdir = load_special_path_gem(gemdir) + elsif gemdir.is_a?(String) + gemdir = "#{File.dirname(GemBox.path)}/#{gemdir}" else gemdir = File.expand_path(gemdir, caller_dir) end -- cgit v1.2.3