Skip to content

Commit 8d28776

Browse files
Merge pull request #7607 from rubygems/deivid-rodriguez/fix-bundle-update-deleting-platforms
Fix `bundle update` not working on an out of sync lockfile (cherry picked from commit 1d8f066)
1 parent f123788 commit 8d28776

File tree

3 files changed

+51
-5
lines changed

3 files changed

+51
-5
lines changed

bin/rake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
require_relative "../bundler/spec/support/rubygems_ext"
55

6-
if ["dev:deps", "dev:frozen_deps", "spec:deps", "spec:parallel_deps"].include?(ARGV[0])
6+
if ["setup", "dev:deps", "dev:frozen_deps", "spec:deps", "spec:parallel_deps"].include?(ARGV[0])
77
Spec::Rubygems.gem_load_and_possibly_install("rake", "rake")
88
else
99
Spec::Rubygems.gem_load("rake", "rake")

bundler/lib/bundler/definition.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,12 @@ def initialize(lockfile, dependencies, sources, unlock, ruby_version = nil, opti
9292
@platforms = @locked_platforms.dup
9393
@locked_bundler_version = @locked_gems.bundler_version
9494
@locked_ruby_version = @locked_gems.ruby_version
95+
@originally_locked_deps = @locked_gems.dependencies
9596
@originally_locked_specs = SpecSet.new(@locked_gems.specs)
9697
@locked_checksums = @locked_gems.checksums
9798

9899
if unlock != true
99-
@locked_deps = @locked_gems.dependencies
100+
@locked_deps = @originally_locked_deps
100101
@locked_specs = @originally_locked_specs
101102
@locked_sources = @locked_gems.sources
102103
else
@@ -111,6 +112,7 @@ def initialize(lockfile, dependencies, sources, unlock, ruby_version = nil, opti
111112
@locked_gems = nil
112113
@locked_deps = {}
113114
@locked_specs = SpecSet.new([])
115+
@originally_locked_deps = {}
114116
@originally_locked_specs = @locked_specs
115117
@locked_sources = []
116118
@locked_platforms = []
@@ -835,9 +837,7 @@ def converge_dependencies
835837
dep.source = sources.get(dep.source)
836838
end
837839

838-
next if unlocking?
839-
840-
unless locked_dep = @locked_deps[dep.name]
840+
unless locked_dep = @originally_locked_deps[dep.name]
841841
changes = true
842842
next
843843
end

bundler/spec/commands/update_spec.rb

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1954,6 +1954,52 @@
19541954
end
19551955
end
19561956

1957+
context "when Gemfile dependencies have changed" do
1958+
before do
1959+
build_repo4 do
1960+
build_gem "nokogiri", "1.16.4" do |s|
1961+
s.platform = "arm64-darwin"
1962+
end
1963+
1964+
build_gem "nokogiri", "1.16.4" do |s|
1965+
s.platform = "x86_64-linux"
1966+
end
1967+
1968+
build_gem "prism", "0.25.0"
1969+
end
1970+
1971+
gemfile <<~G
1972+
source "#{file_uri_for(gem_repo4)}"
1973+
gem "nokogiri", ">=1.16.4"
1974+
gem "prism", ">=0.25.0"
1975+
G
1976+
1977+
lockfile <<~L
1978+
GEM
1979+
remote: #{file_uri_for(gem_repo4)}/
1980+
specs:
1981+
nokogiri (1.16.4-arm64-darwin)
1982+
nokogiri (1.16.4-x86_64-linux)
1983+
1984+
PLATFORMS
1985+
arm64-darwin
1986+
x86_64-linux
1987+
1988+
DEPENDENCIES
1989+
nokogiri (>= 1.16.4)
1990+
1991+
BUNDLED WITH
1992+
#{Bundler::VERSION}
1993+
L
1994+
end
1995+
1996+
it "still works" do
1997+
simulate_platform "arm64-darwin-23" do
1998+
bundle "update"
1999+
end
2000+
end
2001+
end
2002+
19572003
context "error handling" do
19582004
before do
19592005
gemfile "source \"#{file_uri_for(gem_repo1)}\""

0 commit comments

Comments
 (0)