bundler 2.4.9 → 2.4.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bea219e989f6693457e01025c959a3ece35ee46c5c07df07cd06e56f475c06dd
4
- data.tar.gz: 389b2a53b46bb41a4c95d1ed70e6d4cc3f422de3e8f73ef70067c1e6477da277
3
+ metadata.gz: ce72b26ab92bb2518537d2dad1f4b2c68bc82f4a1a17ad16d3647df275981937
4
+ data.tar.gz: b6afc954f239e845d5127921fa29b114648a075c154e4c13dcbd25f100af4f03
5
5
  SHA512:
6
- metadata.gz: 7f9d947e46ea956603b8893d024e6833da24b8684416b9d25376cac3279a641d6bf18bf156b67af1fa2c490020064e09eac1ae04ff759bf0945bc189298a24cb
7
- data.tar.gz: f78b90fb696e544268cb590af87b7e6ab4d22c9918222d7d494dde6bc28c91b555af93afa0b61f8ae863a1c48f5151e0370d3443285ae45c7418745e8225f592
6
+ metadata.gz: 4fd7c530ab5761267f729fc16d40f287c2ab7873f45bdd7ec18bd9334fdec0466b521a5b369a8e1c485dd178def2c31c3aac5b38dba2e1816aa1ba2f7a0f3bdb
7
+ data.tar.gz: 4cca0f7b51657657ea12aa35620c0d14f23043d4bf78706e37c50c174cf5f7bc158b8549036b6f058691ecd93a67be1a25b98ffe9ecc9a26b3644181fcd2098c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ # 2.4.10 (March 27, 2023)
2
+
3
+ ## Bug fixes:
4
+
5
+ - Fix some unnecessary top level dependency downgrades [#6535](https://github.com/rubygems/rubygems/pull/6535)
6
+ - Fix incorrect ruby platform removal from lockfile when adding Gemfile dependencies [#6540](https://github.com/rubygems/rubygems/pull/6540)
7
+ - Fix installing plugins in frozen mode [#6543](https://github.com/rubygems/rubygems/pull/6543)
8
+ - Restore "enumerability" of `SpecSet` [#6532](https://github.com/rubygems/rubygems/pull/6532)
9
+
1
10
  # 2.4.9 (March 20, 2023)
2
11
 
3
12
  ## Security:
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2023-03-20".freeze
8
- @git_commit_sha = "6f8e92bcc6".freeze
7
+ @built_at = "2023-03-27".freeze
8
+ @git_commit_sha = "7ffdec80d0".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -726,6 +726,8 @@ module Bundler
726
726
  dep.source = sources.get(dep.source)
727
727
  end
728
728
 
729
+ next if unlocking?
730
+
729
731
  unless locked_dep = @locked_deps[dep.name]
730
732
  changes = true
731
733
  next
@@ -886,8 +888,9 @@ module Bundler
886
888
  end
887
889
 
888
890
  def additional_base_requirements_for_resolve(resolution_packages, last_resolve)
889
- return resolution_packages unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
891
+ return resolution_packages unless @locked_gems && !sources.expired_sources?(@locked_gems.sources)
890
892
  converge_specs(@originally_locked_specs - last_resolve).each do |locked_spec|
893
+ next if locked_spec.source.is_a?(Source::Path)
891
894
  resolution_packages.base_requirements[locked_spec.name] = Gem::Requirement.new(">= #{locked_spec.version}")
892
895
  end
893
896
  resolution_packages
@@ -898,6 +901,7 @@ module Bundler
898
901
  Bundler.local_platform == Gem::Platform::RUBY ||
899
902
  !platforms.include?(Gem::Platform::RUBY) ||
900
903
  (@new_platform && platforms.last == Gem::Platform::RUBY) ||
904
+ @dependency_changes ||
901
905
  !@originally_locked_specs.incomplete_ruby_specs?(dependencies)
902
906
 
903
907
  remove_platform(Gem::Platform::RUBY)
@@ -83,8 +83,11 @@ module Bundler
83
83
 
84
84
  Bundler.configure_gem_home_and_path(Plugin.root)
85
85
 
86
- definition = Definition.new(nil, deps, source_list, true)
87
- install_definition(definition)
86
+ Bundler.settings.temporary(:deployment => false, :frozen => false) do
87
+ definition = Definition.new(nil, deps, source_list, true)
88
+
89
+ install_definition(definition)
90
+ end
88
91
  end
89
92
 
90
93
  # Installs the plugins and deps from the provided specs and returns map of
@@ -34,11 +34,9 @@ module Bundler
34
34
  @base[name]
35
35
  end
36
36
 
37
- def delete(incomplete_specs)
38
- incomplete_specs.each do |incomplete_spec|
39
- incomplete_spec.partially_complete_specs.each do |spec|
40
- @base.delete(spec)
41
- end
37
+ def delete(specs)
38
+ specs.each do |spec|
39
+ @base.delete(spec)
42
40
  end
43
41
  end
44
42
 
@@ -51,10 +49,18 @@ module Bundler
51
49
  end
52
50
 
53
51
  def unlock_names(names)
54
- names.each do |name|
55
- @base.delete_by_name(name)
52
+ indirect_pins = indirect_pins(names)
56
53
 
57
- @base_requirements.delete(name)
54
+ if indirect_pins.any?
55
+ loosen_names(indirect_pins)
56
+ else
57
+ pins = pins(names)
58
+
59
+ if pins.any?
60
+ loosen_names(pins)
61
+ else
62
+ unrestrict_names(names)
63
+ end
58
64
  end
59
65
  end
60
66
 
@@ -66,6 +72,30 @@ module Bundler
66
72
 
67
73
  private
68
74
 
75
+ def indirect_pins(names)
76
+ names.select {|name| @base_requirements[name].exact? && @requirements.none? {|dep| dep.name == name } }
77
+ end
78
+
79
+ def pins(names)
80
+ names.select {|name| @base_requirements[name].exact? }
81
+ end
82
+
83
+ def loosen_names(names)
84
+ names.each do |name|
85
+ version = @base_requirements[name].requirements.first[1]
86
+
87
+ @base_requirements[name] = Gem::Requirement.new(">= #{version}")
88
+
89
+ @base.delete_by_name(name)
90
+ end
91
+ end
92
+
93
+ def unrestrict_names(names)
94
+ names.each do |name|
95
+ @base_requirements.delete(name)
96
+ end
97
+ end
98
+
69
99
  def build_base_requirements
70
100
  base_requirements = {}
71
101
  @base.each do |ls|
@@ -7,8 +7,11 @@ module Bundler
7
7
  include Enumerable
8
8
  include TSort
9
9
 
10
- def initialize(specs)
10
+ attr_reader :incomplete_specs
11
+
12
+ def initialize(specs, incomplete_specs = [])
11
13
  @specs = specs
14
+ @incomplete_specs = incomplete_specs
12
15
  end
13
16
 
14
17
  def for(dependencies, check = false, platforms = [nil])
@@ -42,7 +45,7 @@ module Bundler
42
45
  end
43
46
 
44
47
  if incomplete && check
45
- specs << IncompleteSpecification.new(name, lookup[name])
48
+ @incomplete_specs += lookup[name].any? ? lookup[name] : [LazySpecification.new(name, nil, nil)]
46
49
  end
47
50
  end
48
51
 
@@ -78,10 +81,10 @@ module Bundler
78
81
  lookup.dup
79
82
  end
80
83
 
81
- def materialize(deps, platforms = [nil])
82
- materialized = self.for(deps, true, platforms)
84
+ def materialize(deps)
85
+ materialized = self.for(deps, true)
83
86
 
84
- SpecSet.new(materialized)
87
+ SpecSet.new(materialized, incomplete_specs)
85
88
  end
86
89
 
87
90
  # Materialize for all the specs in the spec set, regardless of what platform they're for
@@ -100,17 +103,17 @@ module Bundler
100
103
  def incomplete_ruby_specs?(deps)
101
104
  return false if @specs.empty?
102
105
 
103
- materialize(deps, [Gem::Platform::RUBY]).incomplete_specs.any?
106
+ @incomplete_specs = []
107
+
108
+ self.for(deps, true, [Gem::Platform::RUBY])
109
+
110
+ @incomplete_specs.any?
104
111
  end
105
112
 
106
113
  def missing_specs
107
114
  @specs.select {|s| s.is_a?(LazySpecification) }
108
115
  end
109
116
 
110
- def incomplete_specs
111
- @specs.select {|s| s.is_a?(IncompleteSpecification) }
112
- end
113
-
114
117
  def merge(set)
115
118
  arr = sorted.dup
116
119
  set.each do |set_spec|
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.4.9".freeze
4
+ VERSION = "2.4.10".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
data/lib/bundler.rb CHANGED
@@ -62,7 +62,6 @@ module Bundler
62
62
  autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
63
63
  autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
64
64
  autoload :Graph, File.expand_path("bundler/graph", __dir__)
65
- autoload :IncompleteSpecification, File.expand_path("bundler/incomplete_specification", __dir__)
66
65
  autoload :Index, File.expand_path("bundler/index", __dir__)
67
66
  autoload :Injector, File.expand_path("bundler/injector", __dir__)
68
67
  autoload :Installer, File.expand_path("bundler/installer", __dir__)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.9
4
+ version: 2.4.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Arko
@@ -22,7 +22,7 @@ authors:
22
22
  autorequire:
23
23
  bindir: exe
24
24
  cert_chain: []
25
- date: 2023-03-20 00:00:00.000000000 Z
25
+ date: 2023-03-27 00:00:00.000000000 Z
26
26
  dependencies: []
27
27
  description: Bundler manages an application's dependencies through its entire life,
28
28
  across many machines, systematically and repeatably
@@ -103,7 +103,6 @@ files:
103
103
  - lib/bundler/gem_tasks.rb
104
104
  - lib/bundler/gem_version_promoter.rb
105
105
  - lib/bundler/graph.rb
106
- - lib/bundler/incomplete_specification.rb
107
106
  - lib/bundler/index.rb
108
107
  - lib/bundler/injector.rb
109
108
  - lib/bundler/inline.rb
@@ -381,7 +380,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
381
380
  - !ruby/object:Gem::Version
382
381
  version: 3.0.1
383
382
  requirements: []
384
- rubygems_version: 3.4.9
383
+ rubygems_version: 3.4.10
385
384
  signing_key:
386
385
  specification_version: 4
387
386
  summary: The best way to manage your application's dependencies
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bundler
4
- #
5
- # Represents a package name that was found to be incomplete when trying to
6
- # materialize a fresh resolution or the lockfile.
7
- #
8
- # Holds the actual partially complete set of specifications for the name.
9
- # These are used so that they can be unlocked in a future resolution, and fix
10
- # the situation.
11
- #
12
- class IncompleteSpecification
13
- attr_reader :name, :partially_complete_specs
14
-
15
- def initialize(name, partially_complete_specs = [])
16
- @name = name
17
- @partially_complete_specs = partially_complete_specs
18
- end
19
-
20
- def ==(other)
21
- partially_complete_specs == other.partially_complete_specs
22
- end
23
- end
24
- end