Bug #19576 » 0001-Backport-Fix-another-issue-of-Bundler-not-falling-back.patch
| bundler/lib/bundler/lazy_specification.rb | ||
|---|---|---|
|                      installable_candidates = GemHelpers.select_best_platform_match(matching_specs, target_platform) | ||
|                      specification = __materialize__(installable_candidates) | ||
|                      specification = __materialize__(installable_candidates, :fallback_to_non_installable => false) | ||
|                      return specification unless specification.nil? | ||
|                      if target_platform != platform | ||
| ... | ... | |
|       __materialize__(candidates) | ||
|     end | ||
|     def __materialize__(candidates) | ||
|     # If in frozen mode, we fallback to a non-installable candidate because by | ||
|     # doing this we avoid re-resolving and potentially end up changing the | ||
|     # lock file, which is not allowed. In that case, we will give a proper error | ||
|     # about the mismatch higher up the stack, right before trying to install the | ||
|     # bad gem. | ||
|     def __materialize__(candidates, fallback_to_non_installable: Bundler.frozen_bundle?) | ||
|       search = candidates.reverse.find do |spec| | ||
|         spec.is_a?(StubSpecification) || | ||
|           (spec.matches_current_ruby? && | ||
|            spec.matches_current_rubygems?) | ||
|       end | ||
|       if search.nil? && Bundler.frozen_bundle? | ||
|       if search.nil? && fallback_to_non_installable | ||
|         search = candidates.last | ||
|       else | ||
|         search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification)) | ||
| bundler/spec/install/gemfile/specific_platform_spec.rb | ||
|---|---|---|
|       L | ||
|     end | ||
|     it "still installs the generic RUBY variant if necessary even when running on a legacy lockfile locked only to RUBY" do | ||
|       build_repo4 do | ||
|         build_gem "nokogiri", "1.3.10" | ||
|         build_gem "nokogiri", "1.3.10" do |s| | ||
|           s.platform = "arm64-darwin" | ||
|           s.required_ruby_version = "< #{Gem.ruby_version}" | ||
|     context "when running on a legacy lockfile locked only to RUBY" do | ||
|       around do |example| | ||
|         build_repo4 do | ||
|           build_gem "nokogiri", "1.3.10" | ||
|           build_gem "nokogiri", "1.3.10" do |s| | ||
|             s.platform = "arm64-darwin" | ||
|             s.required_ruby_version = "< #{Gem.ruby_version}" | ||
|           end | ||
|           build_gem "bundler", "2.1.4" | ||
|         end | ||
|         build_gem "bundler", "2.1.4" | ||
|       end | ||
|       gemfile <<~G | ||
|         gemfile <<~G | ||
|         source "#{file_uri_for(gem_repo4)}" | ||
|         gem "nokogiri" | ||
|       G | ||
|         G | ||
|       lockfile <<-L | ||
|         lockfile <<-L | ||
|         GEM | ||
|           remote: #{file_uri_for(gem_repo4)}/ | ||
|           specs: | ||
|             nokogiri (1.3.10) | ||
|         PLATFORMS | ||
|           ruby | ||
|         DEPENDENCIES | ||
|           nokogiri | ||
|         RUBY VERSION | ||
|           2.5.3p105 | ||
|         BUNDLED WITH | ||
|            2.1.4 | ||
|       L | ||
|         L | ||
|       simulate_platform "arm64-darwin-22" do | ||
|         simulate_platform "arm64-darwin-22", &example | ||
|       end | ||
|       it "still installs the generic RUBY variant if necessary" do | ||
|         bundle "update --bundler", :artifice => "compact_index", :env => { "BUNDLER_SPEC_GEM_REPO" => gem_repo4.to_s } | ||
|       end | ||
|       it "still installs the generic RUBY variant if necessary, even in frozen mode" do | ||
|         bundle "update --bundler", :artifice => "compact_index", :env => { "BUNDLER_SPEC_GEM_REPO" => gem_repo4.to_s, "BUNDLE_FROZEN" => "true" } | ||
|       end | ||
|     end | ||
|     it "doesn't discard previously installed platform specific gem and fall back to ruby on subsequent bundles" do | ||
- « Previous
- 1
- 2
- 3
- Next »