diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-06-13 12:50:11 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-06-13 12:50:11 +0900 |
| commit | 7275096f563dfea06f43a3a80e9a35aa6ff96849 (patch) | |
| tree | f64f6cfc767a7648a75e2eda51d4f0fe557f6a2e | |
| parent | 2067f1f9ffc77b4110d73c4960d098adb3a01470 (diff) | |
| parent | 8ef971a3735a85d0f2ed3c9f4896555944075a96 (diff) | |
| download | mruby-7275096f563dfea06f43a3a80e9a35aa6ff96849.tar.gz mruby-7275096f563dfea06f43a3a80e9a35aa6ff96849.zip | |
git push origin masterMerge branch 'take-cheeze-add_conflicts'
| -rw-r--r-- | tasks/mrbgem_spec.rake | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake index c8868fe9c..2a15a1f46 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,10 @@ module MRuby @dependencies << {:gem => name, :requirements => requirements, :default => default_gem} 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 +327,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 |
