summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-06-13 12:39:55 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-06-13 12:39:55 +0900
commit81db9b709096b011033fa8ddf02927f2ff08d5e0 (patch)
tree02d214f8b31892bc9507b883022d9680ac010dc5
parent2067f1f9ffc77b4110d73c4960d098adb3a01470 (diff)
parenteebb94410f52c88974390b8240ce5496d08074cc (diff)
downloadmruby-81db9b709096b011033fa8ddf02927f2ff08d5e0.tar.gz
mruby-81db9b709096b011033fa8ddf02927f2ff08d5e0.zip
Merge branch 'add_conflicts' of https://github.com/take-cheeze/mruby into take-cheeze-add_conflicts
-rw-r--r--tasks/mrbgem_spec.rake18
1 files changed, 16 insertions, 2 deletions
diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake
index c8868fe9c..d38471739 100644
--- a/tasks/mrbgem_spec.rake
+++ b/tasks/mrbgem_spec.rake
@@ -32,7 +32,7 @@ module MRuby
attr_accessor :bins
attr_accessor :requirements
- attr_reader :dependencies
+ attr_reader :dependencies, :conflicts
attr_accessor :export_include_paths
@@ -72,7 +72,7 @@ module MRuby
@bins = []
@requirements = []
- @dependencies = []
+ @dependencies, @conflicts = [], []
@export_include_paths = []
@export_include_paths << "#{dir}/include" if File.directory? "#{dir}/include"
@@ -102,6 +102,14 @@ module MRuby
@dependencies << {:gem => name, :requirements => requirements, :default => default_gem}
end
+ def add_conflicts(*names)
+ @conflicts += names.map { |n| {:gem => n} }
+ end
+
+ def add_conflict(name, *req)
+ @conflicts << {:gem => name, :requirements => req.empty? ? nil : req}
+ end
+
def self.bin=(bin)
@bins = [bin].flatten
end
@@ -323,6 +331,12 @@ module MRuby
fail "#{name} version should be #{req_versions.join(' and ')} but was '#{dep_g.version}'"
end
end
+
+ cfls = g.conflicts.select { |c|
+ cfl_g = gem_table[c[:gem]]
+ cfl_g and cfl_g.version_ok?(c[:requirements] || ['>= 0.0.0'])
+ }.map { |c| "#{c[:gem]}(#{gem_table[c[:gem]].version})" }
+ fail "Conflicts of gem `#{g.name}` found: #{cfls.join ', '}" unless cfls.empty?
end
class << gem_table