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?