bundler 2.4.9 → 2.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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