diff options
author | David RodrÃguez <[email protected]> | 2025-03-10 17:09:33 +0100 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2025-03-24 13:25:07 +0900 |
commit | 58663e8e2c1d787ef308029b2138e9b66c616714 (patch) | |
tree | 2d0f51cc75b9988c7bf7ea40e621b1bfd84e6e20 /lib/bundler | |
parent | 504b4bd9f5b3dda38f3b747e549b281719996078 (diff) |
[rubygems/rubygems] Change behavior when gemfile and gemspec dep deps conflict
https://github.com/rubygems/rubygems/commit/7026b5f2e5
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/12968
Diffstat (limited to 'lib/bundler')
-rw-r--r-- | lib/bundler/dsl.rb | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/lib/bundler/dsl.rb b/lib/bundler/dsl.rb index e857ac952d..0fbe77e712 100644 --- a/lib/bundler/dsl.rb +++ b/lib/bundler/dsl.rb @@ -247,22 +247,21 @@ module Bundler gemspec_dep = [dep, current].find(&:gemspec_dev_dep?) if gemspec_dep - gemfile_dep = [dep, current].find(&:gemfile_dep?) - - if gemfile_dep && !current_requirement_open - Bundler.ui.warn "A gemspec development dependency (#{name}, #{gemspec_dep.requirement}) is being overridden by a Gemfile dependency (#{name}, #{gemfile_dep.requirement}).\n" \ - "This behaviour may change in the future. Please remove either of them, or make sure they both have the same requirement\n" - elsif gemfile_dep.nil? - require_relative "vendor/pub_grub/lib/pub_grub/version_range" - require_relative "vendor/pub_grub/lib/pub_grub/version_constraint" - require_relative "vendor/pub_grub/lib/pub_grub/version_union" - require_relative "vendor/pub_grub/lib/pub_grub/rubygems" - - current_gemspec_range = PubGrub::RubyGems.requirement_to_range(current.requirement) - next_gemspec_range = PubGrub::RubyGems.requirement_to_range(dep.requirement) - - if current_gemspec_range.intersects?(next_gemspec_range) - dep = Dependency.new(name, current.requirement.as_list + dep.requirement.as_list, options) + require_relative "vendor/pub_grub/lib/pub_grub/version_range" + require_relative "vendor/pub_grub/lib/pub_grub/version_constraint" + require_relative "vendor/pub_grub/lib/pub_grub/version_union" + require_relative "vendor/pub_grub/lib/pub_grub/rubygems" + + current_gemspec_range = PubGrub::RubyGems.requirement_to_range(current.requirement) + next_gemspec_range = PubGrub::RubyGems.requirement_to_range(dep.requirement) + + if current_gemspec_range.intersects?(next_gemspec_range) + dep = Dependency.new(name, current.requirement.as_list + dep.requirement.as_list, options) + else + gemfile_dep = [dep, current].find(&:gemfile_dep?) + + if gemfile_dep + raise GemfileError, "The #{name} dependency has conflicting requirements in Gemfile (#{gemfile_dep.requirement}) and gemspec (#{gemspec_dep.requirement})" else raise GemfileError, "Two gemspec development dependencies have conflicting requirements on the same gem: #{dep} and #{current}" end |