summaryrefslogtreecommitdiffhomepage
path: root/tasks
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-06-22 10:04:00 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-06-22 10:04:00 +0900
commitc8229dbd19da9a3e92d69e8d6ecc820aa2b18d53 (patch)
tree0750d854f7f8509e18c61d6caa989d75e8d93605 /tasks
parent7cf94bac100931cd80ac0b851d3de298e351b5b9 (diff)
parent078d24d4d3f7b5aac436fb70e341e1a7668fdbbb (diff)
downloadmruby-c8229dbd19da9a3e92d69e8d6ecc820aa2b18d53.tar.gz
mruby-c8229dbd19da9a3e92d69e8d6ecc820aa2b18d53.zip
Merge pull request #2846 from take-cheeze/mgem_mrbgem
Add :mgem gem loading.
Diffstat (limited to 'tasks')
-rw-r--r--tasks/mrbgem_spec.rake15
-rw-r--r--tasks/mruby_build_gem.rake20
2 files changed, 33 insertions, 2 deletions
diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake
index e6e17e182..e22a39e19 100644
--- a/tasks/mrbgem_spec.rake
+++ b/tasks/mrbgem_spec.rake
@@ -304,7 +304,14 @@ module MRuby
default_gems = []
each do |g|
g.dependencies.each do |dep|
- default_gems << dep if dep[:default] and not gem_table.key? dep[:gem]
+ unless gem_table.key? dep[:gem]
+ if dep[:default]; default_gems << dep
+ elsif File.exist? "#{root}/mrbgems/#{dep[:gem]}" # check core
+ default_gems << { :gem => dep[:gem], :default => { :core => dep[:gem] } }
+ else # fallback to mgem-list
+ default_gems << { :gem => dep[:gem], :default => { :mgem => dep[:gem] } }
+ end
+ end
end
end
@@ -316,7 +323,11 @@ module MRuby
spec.setup
spec.dependencies.each do |dep|
- default_gems << dep if dep[:default] and not gem_table.key? dep[:gem]
+ unless gem_table.key? dep[:gem]
+ if dep[:default]; default_gems << dep
+ else default_gems << { :gem => dep[:gem], :default => { :mgem => dep[:gem] } }
+ end
+ end
end
gem_table[spec.name] = spec
end
diff --git a/tasks/mruby_build_gem.rake b/tasks/mruby_build_gem.rake
index dbbade487..d9d2575bd 100644
--- a/tasks/mruby_build_gem.rake
+++ b/tasks/mruby_build_gem.rake
@@ -52,6 +52,26 @@ module MRuby
else
params[:git] = "https://bitbucket.org/#{params[:bitbucket]}.git"
end
+ elsif params[:mgem]
+ mgem_list_dir = "#{gem_clone_dir}/mgem-list"
+ mgem_list_url = 'https://github.com/mruby/mgem-list.git'
+ if File.exist? mgem_list_dir
+ git.run_pull mgem_list_dir, mgem_list_url if $pull_gems
+ else
+ FileUtils.mkdir_p mgem_list_dir
+ git.run_clone mgem_list_dir, mgem_list_url
+ end
+
+ require 'yaml'
+
+ conf_path = "#{mgem_list_dir}/#{params[:mgem]}.gem"
+ conf_path = "#{mgem_list_dir}/mruby-#{params[:mgem]}.gem" unless File.exist? conf_path
+ fail "mgem not found: #{params[:mgem]}" unless File.exist? conf_path
+ conf = YAML.load File.read conf_path
+
+ fail "unknown mgem protocol: #{conf['protocol']}" if conf['protocol'] != 'git'
+ params[:git] = conf['repository']
+ params[:branch] = conf['branch"] if conf["branch']
end
if params[:core]