@@ -106,19 +106,6 @@ def initialize(lockfile, dependencies, sources, unlock, ruby_version = nil, opti
106106 @locked_platforms = [ ]
107107 end
108108
109- @locked_gem_sources = @locked_sources . select { |s | s . is_a? ( Source ::Rubygems ) }
110- @disable_multisource = !Bundler . frozen_bundle? || @locked_gem_sources . none? { |s | s . remotes . size > 1 }
111-
112- unless @disable_multisource
113- msg = "Your lockfile contains a single rubygems source section with multiple remotes, which is insecure. " \
114- "You should regenerate your lockfile in a non frozen environment."
115-
116- Bundler ::SharedHelpers . major_deprecation 2 , msg
117-
118- @sources . allow_multisource!
119- @locked_gem_sources . each ( &:allow_multisource! )
120- end
121-
122109 @unlock [ :gems ] ||= [ ]
123110 @unlock [ :sources ] ||= [ ]
124111 @unlock [ :ruby ] ||= if @ruby_version && locked_ruby_version_object
@@ -158,14 +145,6 @@ def gem_version_promoter
158145 end
159146 end
160147
161- def disable_multisource?
162- @disable_multisource
163- end
164-
165- def allow_multisource!
166- @disable_multisource = false
167- end
168-
169148 def resolve_with_cache!
170149 raise "Specs already loaded" if @specs
171150 sources . cached!
@@ -285,7 +264,7 @@ def resolve
285264 # Run a resolve against the locally available gems
286265 Bundler . ui . debug ( "Found changes from the lockfile, re-resolving dependencies because #{ change_reason } " )
287266 expanded_dependencies = expand_dependencies ( dependencies + metadata_dependencies , @remote )
288- Resolver . resolve ( expanded_dependencies , source_requirements , last_resolve , gem_version_promoter , additional_base_requirements_for_resolve , platforms )
267+ Resolver . resolve ( expanded_dependencies , index , source_requirements , last_resolve , gem_version_promoter , additional_base_requirements_for_resolve , platforms )
289268 end
290269 end
291270 end
@@ -551,9 +530,6 @@ def find_indexed_specs(current_spec)
551530 attr_reader :sources
552531 private :sources
553532
554- attr_reader :locked_gem_sources
555- private :locked_gem_sources
556-
557533 def nothing_changed?
558534 !@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@locked_specs_incomplete_for_platform
559535 end
@@ -678,20 +654,21 @@ def converge_path_sources_to_gemspec_sources
678654 end
679655
680656 def converge_rubygems_sources
681- return false if disable_multisource?
657+ return false if Bundler . feature_flag . disable_multisource?
682658
683- return false if locked_gem_sources . empty?
659+ changes = false
684660
661+ # Get the RubyGems sources from the Gemfile.lock
662+ locked_gem_sources = @locked_sources . select { |s | s . is_a? ( Source ::Rubygems ) }
685663 # Get the RubyGems remotes from the Gemfile
686664 actual_remotes = sources . rubygems_remotes
687- return false if actual_remotes . empty?
688-
689- changes = false
690665
691666 # If there is a RubyGems source in both
692- locked_gem_sources . each do |locked_gem |
693- # Merge the remotes from the Gemfile into the Gemfile.lock
694- changes |= locked_gem . replace_remotes ( actual_remotes , Bundler . settings [ :allow_deployment_source_credential_changes ] )
667+ if !locked_gem_sources . empty? && !actual_remotes . empty?
668+ locked_gem_sources . each do |locked_gem |
669+ # Merge the remotes from the Gemfile into the Gemfile.lock
670+ changes |= locked_gem . replace_remotes ( actual_remotes , Bundler . settings [ :allow_deployment_source_credential_changes ] )
671+ end
695672 end
696673
697674 changes
@@ -916,18 +893,30 @@ def source_requirements
916893 # Record the specs available in each gem's source, so that those
917894 # specs will be available later when the resolver knows where to
918895 # look for that gemspec (or its dependencies)
919- source_requirements = { :default => sources . default_source } . merge ( dependency_source_requirements )
896+ default = sources . default_source
897+ source_requirements = { :default => default }
898+ default = nil unless Bundler . feature_flag . disable_multisource?
899+ dependencies . each do |dep |
900+ next unless source = dep . source || default
901+ source_requirements [ dep . name ] = source
902+ end
920903 metadata_dependencies . each do |dep |
921904 source_requirements [ dep . name ] = sources . metadata_source
922905 end
923- source_requirements [ :global ] = index unless disable_multisource?
924906 source_requirements [ :default_bundler ] = source_requirements [ "bundler" ] || source_requirements [ :default ]
925907 source_requirements [ "bundler" ] = sources . metadata_source # needs to come last to override
926908 source_requirements
927909 end
928910
929911 def pinned_spec_names ( skip = nil )
930- dependency_source_requirements . reject { |_ , source | source == skip } . keys
912+ pinned_names = [ ]
913+ default = Bundler . feature_flag . disable_multisource? && sources . default_source
914+ @dependencies . each do |dep |
915+ next unless dep_source = dep . source || default
916+ next if dep_source == skip
917+ pinned_names << dep . name
918+ end
919+ pinned_names
931920 end
932921
933922 def requested_groups
@@ -984,18 +973,5 @@ def equivalent_rubygems_remotes?(source)
984973
985974 Bundler . settings [ :allow_deployment_source_credential_changes ] && source . equivalent_remotes? ( sources . rubygems_remotes )
986975 end
987-
988- def dependency_source_requirements
989- @dependency_source_requirements ||= begin
990- source_requirements = { }
991- default = disable_multisource? && sources . default_source
992- dependencies . each do |dep |
993- dep_source = dep . source || default
994- next unless dep_source
995- source_requirements [ dep . name ] = dep_source
996- end
997- source_requirements
998- end
999- end
1000976 end
1001977end
0 commit comments