summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2024-10-14 22:49:05 +0200
committergit <svn-admin@ruby-lang.org>2024-10-16 21:57:51 +0000
commitdef5fdf82ab87f17bc0bbc5f232ffa3902433e66 (patch)
tree4c35633425ab7c4f940d6157fc3175db646d621f /lib
parentcff18256ca9a99cdb59a8f9b9f4243fb96c158f9 (diff)
[rubygems/rubygems] Delay and refactor verification of changed sources
https://github.com/rubygems/rubygems/commit/d5dce93167
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/definition.rb12
-rw-r--r--lib/bundler/lazy_specification.rb11
-rw-r--r--lib/bundler/resolver/base.rb4
3 files changed, 13 insertions, 14 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index d9b5660e1f..80a2eb4714 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -887,8 +887,6 @@ module Bundler
converged = []
deps = []
- @specs_that_changed_sources = []
-
specs.each do |s|
name = s.name
dep = @dependencies.find {|d| s.satisfies?(d) }
@@ -897,7 +895,6 @@ module Bundler
if dep
gemfile_source = dep.source || default_source
- @specs_that_changed_sources << s if gemfile_source != lockfile_source
deps << dep if !dep.source || lockfile_source.include?(dep.source)
@gems_to_unlock << name if lockfile_source.include?(dep.source) && lockfile_source != gemfile_source
@@ -979,7 +976,6 @@ module Bundler
source_requirements["bundler"] = sources.metadata_source # needs to come last to override
end
- verify_changed_sources!
source_requirements
end
@@ -987,14 +983,6 @@ module Bundler
sources.default_source
end
- def verify_changed_sources!
- @specs_that_changed_sources.each do |s|
- if s.source.specs.search(s.name).empty?
- raise GemNotFound, "Could not find gem '#{s.name}' in #{s.source}"
- end
- end
- end
-
def requested_groups
values = groups - Bundler.settings[:without] - @optional_groups + Bundler.settings[:with]
values &= Bundler.settings[:only] unless Bundler.settings[:only].empty?
diff --git a/lib/bundler/lazy_specification.rb b/lib/bundler/lazy_specification.rb
index 8669e021c2..74f7da188f 100644
--- a/lib/bundler/lazy_specification.rb
+++ b/lib/bundler/lazy_specification.rb
@@ -27,11 +27,18 @@ module Bundler
@dependencies = []
@required_ruby_version = Gem::Requirement.default
@required_rubygems_version = Gem::Requirement.default
- @platform = platform || Gem::Platform::RUBY
- @source = source
+ @platform = platform || Gem::Platform::RUBY
+
+ @original_source = source
+ @source = source
+
@force_ruby_platform = default_force_ruby_platform
end
+ def source_changed?
+ @original_source != source
+ end
+
def full_name
@full_name ||= if platform == Gem::Platform::RUBY
"#{@name}-#{@version}"
diff --git a/lib/bundler/resolver/base.rb b/lib/bundler/resolver/base.rb
index 3f2436672a..4c2aed32de 100644
--- a/lib/bundler/resolver/base.rb
+++ b/lib/bundler/resolver/base.rb
@@ -107,6 +107,10 @@ module Bundler
def build_base_requirements
base_requirements = {}
@base.each do |ls|
+ if ls.source_changed? && ls.source.specs.search(ls.name).empty?
+ raise GemNotFound, "Could not find gem '#{ls.name}' in #{ls.source}"
+ end
+
req = Gem::Requirement.new(ls.version)
base_requirements[ls.name] = req
end