lib/bundler/definition.rb in bundler-2.5.22 vs lib/bundler/definition.rb in bundler-2.5.23
- old
+ new
@@ -17,11 +17,12 @@
:locked_gems,
:platforms,
:ruby_version,
:lockfile,
:gemfiles,
- :locked_checksums
+ :locked_checksums,
+ :sources
)
# Given a gemfile and lockfile creates a Bundler definition
#
# @param gemfile [Pathname] Path to Gemfile
@@ -160,11 +161,18 @@
def gem_version_promoter
@gem_version_promoter ||= GemVersionPromoter.new
end
- def resolve_only_locally!
+ def check!
+ # If dependencies have changed, we need to resolve remotely. Otherwise,
+ # since we'll be resolving with a single local source, we may end up
+ # locking gems under the wrong source in the lockfile, and missing lockfile
+ # checksums
+ resolve_remotely! if @dependency_changes
+
+ # Now do a local only resolve, to verify if any gems are missing locally
sources.local_only!
resolve
end
def resolve_with_cache!
@@ -502,12 +510,10 @@
attr_writer :source_requirements
private
- attr_reader :sources
-
def should_add_extra_platforms?
!lockfile_exists? && generic_local_platform_is_ruby? && !Bundler.settings[:force_ruby_platform]
end
def lockfile_exists?
@@ -890,21 +896,18 @@
def converge_specs(specs)
converged = []
deps = []
- @specs_that_changed_sources = []
-
specs.each do |s|
name = s.name
dep = @dependencies.find {|d| s.satisfies?(d) }
lockfile_source = s.source
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
# Replace the locked dependency's source with the equivalent source from the Gemfile
s.source = gemfile_source
@@ -982,23 +985,14 @@
else
source_requirements[:default_bundler] = default_bundler_source
source_requirements["bundler"] = sources.metadata_source # needs to come last to override
end
- verify_changed_sources!
source_requirements
end
def default_source
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?