bundler 2.3.22 → 2.3.23

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: 57a888ea873d637d14016b9e9ba7aab35e1421c3f24b9c1b024ccab52c8137eb
4
- data.tar.gz: 767816ae891334d340fadfcce3984622b7b80706b6a46a9e389ac1998a53e825
3
+ metadata.gz: 28c415ab98b0a481538fb3881860945bc2ec0b0d78afd59dbd8a38d75fcfdd4b
4
+ data.tar.gz: ccf31d79b872afd5d3fffd60b8ccfd425eb14e189f512b5187e6c171a2cf696b
5
5
  SHA512:
6
- metadata.gz: f70a84e9f3fa6d2e0b88a18b1c66907817e9806e40fc28cb96838e5f07d83176333ce66ba3a03d3a0e5516e03e256fcf520de33a89dceb99080e521cecb853f2
7
- data.tar.gz: 014bf59ac564877632a885c2c6c197bb71d16fdff3e1c5f81c8e3716b940b11def6b77de85b2acde7174425fd6439ddfefab73c661f7d8ff8398bbe483fd6b7a
6
+ metadata.gz: 6486b340fde2e41727126b985846503e89f7fd22a5f2b197f5e687b2e8840c7043be9eab0a54797cf9b0b1d777d9f9ee92bfc6b0c069c5eb310a2812c5af8460
7
+ data.tar.gz: 591190883dfb54835e5f11129ac09a87e9462a427fb97831c5def834664e18b55ca59b80b68028b35fe015fde2d5cfa3a372218a6b4c9432bfd9a0e585612f23
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ # 2.3.23 (October 5, 2022)
2
+
3
+ ## Enhancements:
4
+
5
+ - Update GitLab CI template with new one [#5944](https://github.com/rubygems/rubygems/pull/5944)
6
+
7
+ ## Bug fixes:
8
+
9
+ - Fix `bundle init` not respecting umask in generated gem's Gemfile [#5947](https://github.com/rubygems/rubygems/pull/5947)
10
+
11
+ ## Performance:
12
+
13
+ - Further speed up Bundler by not sorting specs unnecessarily [#5868](https://github.com/rubygems/rubygems/pull/5868)
14
+
15
+ ## Documentation:
16
+
17
+ - Update Bundler new feature instructions [#5912](https://github.com/rubygems/rubygems/pull/5912)
18
+
1
19
  # 2.3.22 (September 7, 2022)
2
20
 
3
21
  ## Enhancements:
@@ -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 = "2022-09-07".freeze
8
- @git_commit_sha = "44fb4c9ef5".freeze
7
+ @built_at = "2022-10-05".freeze
8
+ @git_commit_sha = "250d9d485d".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -32,7 +32,11 @@ module Bundler
32
32
  file << spec.to_gemfile
33
33
  end
34
34
  else
35
- FileUtils.cp(File.expand_path("../templates/#{gemfile}", __dir__), gemfile)
35
+ File.open(File.expand_path("../templates/#{gemfile}", __dir__), "r") do |template|
36
+ File.open(gemfile, "wb") do |destination|
37
+ IO.copy_stream(template, destination)
38
+ end
39
+ end
36
40
  end
37
41
 
38
42
  puts "Writing new #{gemfile} to #{SharedHelpers.pwd}/#{gemfile}"
@@ -106,6 +106,7 @@ module Bundler
106
106
  @locked_gems = nil
107
107
  @locked_deps = {}
108
108
  @locked_specs = SpecSet.new([])
109
+ @originally_locked_specs = @locked_specs
109
110
  @locked_sources = []
110
111
  @locked_platforms = []
111
112
  end
@@ -149,18 +150,7 @@ module Bundler
149
150
  end
150
151
 
151
152
  def gem_version_promoter
152
- @gem_version_promoter ||= begin
153
- locked_specs =
154
- if unlocking? && @locked_specs.empty? && !@lockfile_contents.empty?
155
- # Definition uses an empty set of locked_specs to indicate all gems
156
- # are unlocked, but GemVersionPromoter needs the locked_specs
157
- # for conservative comparison.
158
- Bundler::SpecSet.new(@locked_gems.specs)
159
- else
160
- @locked_specs
161
- end
162
- GemVersionPromoter.new(locked_specs, @unlock[:gems])
163
- end
153
+ @gem_version_promoter ||= GemVersionPromoter.new(@originally_locked_specs, @unlock[:gems])
164
154
  end
165
155
 
166
156
  def resolve_only_locally!
data/lib/bundler/dsl.rb CHANGED
@@ -67,7 +67,6 @@ module Bundler
67
67
 
68
68
  gemspecs = Gem::Util.glob_files_in_dir("{,*}.gemspec", expanded_path).map {|g| Bundler.load_gemspec(g) }.compact
69
69
  gemspecs.reject! {|s| s.name != name } if name
70
- Index.sort_specs(gemspecs)
71
70
  specs_by_name_and_version = gemspecs.group_by {|s| [s.name, s.version] }
72
71
 
73
72
  case specs_by_name_and_version.size
@@ -116,15 +116,14 @@ module Bundler
116
116
  end
117
117
 
118
118
  def sort_dep_specs(spec_groups, locked_spec)
119
- return spec_groups unless locked_spec
120
- @gem_name = locked_spec.name
121
- @locked_version = locked_spec.version
119
+ @locked_version = locked_spec&.version
120
+ @gem_name = locked_spec&.name
122
121
 
123
122
  result = spec_groups.sort do |a, b|
124
123
  @a_ver = a.version
125
124
  @b_ver = b.version
126
125
 
127
- unless @prerelease_specified[@gem_name]
126
+ unless @gem_name && @prerelease_specified[@gem_name]
128
127
  a_pre = @a_ver.prerelease?
129
128
  b_pre = @b_ver.prerelease?
130
129
 
@@ -148,7 +147,7 @@ module Bundler
148
147
  end
149
148
 
150
149
  def either_version_older_than_locked
151
- @a_ver < @locked_version || @b_ver < @locked_version
150
+ @locked_version && (@a_ver < @locked_version || @b_ver < @locked_version)
152
151
  end
153
152
 
154
153
  def segments_do_not_match(level)
@@ -157,7 +156,7 @@ module Bundler
157
156
  end
158
157
 
159
158
  def unlocking_gem?
160
- unlock_gems.empty? || unlock_gems.include?(@gem_name)
159
+ unlock_gems.empty? || (@gem_name && unlock_gems.include?(@gem_name))
161
160
  end
162
161
 
163
162
  # Specific version moves can't always reliably be done during sorting
@@ -165,7 +164,7 @@ module Bundler
165
164
  def post_sort(result)
166
165
  # default :major behavior in Bundler does not do this
167
166
  return result if major?
168
- if unlocking_gem?
167
+ if unlocking_gem? || @locked_version.nil?
169
168
  result
170
169
  else
171
170
  move_version_to_end(result, @locked_version)
data/lib/bundler/index.rb CHANGED
@@ -57,36 +57,13 @@ module Bundler
57
57
  # Search this index's specs, and any source indexes that this index knows
58
58
  # about, returning all of the results.
59
59
  def search(query)
60
- sort_specs(unsorted_search(query))
61
- end
62
-
63
- def unsorted_search(query)
64
60
  results = local_search(query)
65
-
66
- seen = results.map(&:full_name).uniq unless @sources.empty?
61
+ return results unless @sources.any?
67
62
 
68
63
  @sources.each do |source|
69
- source.unsorted_search(query).each do |spec|
70
- next if seen.include?(spec.full_name)
71
-
72
- seen << spec.full_name
73
- results << spec
74
- end
64
+ results.concat(source.search(query))
75
65
  end
76
-
77
- results
78
- end
79
- protected :unsorted_search
80
-
81
- def self.sort_specs(specs)
82
- specs.sort_by do |s|
83
- platform_string = s.platform.to_s
84
- [s.version, platform_string == RUBY ? NULL : platform_string]
85
- end
86
- end
87
-
88
- def sort_specs(specs)
89
- self.class.sort_specs(specs)
66
+ results.uniq(&:full_name)
90
67
  end
91
68
 
92
69
  def local_search(query)
@@ -42,8 +42,7 @@ module Bundler
42
42
  remove_from_candidates(spec)
43
43
  end
44
44
 
45
- @gem_version_promoter.prerelease_specified = @prerelease_specified = {}
46
- requirements.each {|dep| @prerelease_specified[dep.name] ||= dep.prerelease? }
45
+ requirements.each {|dep| prerelease_specified[dep.name] ||= dep.prerelease? }
47
46
 
48
47
  verify_gemfile_dependencies_are_found!(requirements)
49
48
  result = @resolver.resolve(requirements).
@@ -127,13 +126,6 @@ module Bundler
127
126
  results = results_for(dependency) + locked_results
128
127
  results = results.select {|spec| requirement_satisfied_by?(locked_requirement, nil, spec) } if locked_requirement
129
128
 
130
- if !@prerelease_specified[name] && locked_results.empty?
131
- # Move prereleases to the beginning of the list, so they're considered
132
- # last during resolution.
133
- pre, results = results.partition {|spec| spec.version.prerelease? }
134
- results = pre + results
135
- end
136
-
137
129
  if results.any?
138
130
  results = @gem_version_promoter.sort_versions(dependency, results)
139
131
 
@@ -221,6 +213,10 @@ module Bundler
221
213
  @base.base_requirements
222
214
  end
223
215
 
216
+ def prerelease_specified
217
+ @gem_version_promoter.prerelease_specified
218
+ end
219
+
224
220
  def remove_from_candidates(spec)
225
221
  @base.delete(spec)
226
222
 
@@ -255,7 +251,7 @@ module Bundler
255
251
  all - 1_000_000
256
252
  else
257
253
  search = search_for(dependency)
258
- search = @prerelease_specified[dependency.name] ? search.count : search.count {|s| !s.version.prerelease? }
254
+ search = prerelease_specified[dependency.name] ? search.count : search.count {|s| !s.version.prerelease? }
259
255
  search - all
260
256
  end
261
257
  end
@@ -284,7 +280,7 @@ module Bundler
284
280
  end
285
281
 
286
282
  def gem_not_found_message(name, requirement, source, extra_message = "")
287
- specs = source.specs.search(name)
283
+ specs = source.specs.search(name).sort_by {|s| [s.version, s.platform.to_s] }
288
284
  matching_part = name
289
285
  requirement_label = SharedHelpers.pretty_dependency(requirement)
290
286
  cache_message = begin
@@ -261,10 +261,21 @@ module Gem
261
261
  # version
262
262
  (
263
263
  (@os != "linux" && (@version.nil? || other.version.nil?)) ||
264
- (@os == "linux" && (other.version == "gnu#{@version}" || other.version == "musl#{@version}" || @version == "gnu#{other.version}")) ||
264
+ (@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || ["musl#{@version}", "musleabi#{@version}", "musleabihf#{@version}"].include?(other.version))) ||
265
265
  @version == other.version
266
266
  )
267
267
  end
268
+
269
+ # This is a copy of RubyGems 3.3.23 or higher `normalized_linux_method`.
270
+ # Once only 3.3.23 is supported, we can use the method in RubyGems.
271
+ def normalized_linux_version_ext
272
+ return nil unless @version
273
+
274
+ without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi(hf)?\Z/, "")
275
+ return nil if without_gnu_nor_abi_modifiers.empty?
276
+
277
+ without_gnu_nor_abi_modifiers
278
+ end
268
279
  end
269
280
  end
270
281
 
@@ -176,7 +176,7 @@ module Bundler
176
176
  def lookup
177
177
  @lookup ||= begin
178
178
  lookup = Hash.new {|h, k| h[k] = [] }
179
- Index.sort_specs(@specs).reverse_each do |s|
179
+ @specs.each do |s|
180
180
  lookup[s.name] << s
181
181
  end
182
182
  lookup
@@ -1,8 +1,9 @@
1
- image: ruby:<%= RUBY_VERSION %>
1
+ default:
2
+ image: ruby:<%= RUBY_VERSION %>
2
3
 
3
- before_script:
4
- - gem install bundler -v <%= Bundler::VERSION %>
5
- - bundle install
4
+ before_script:
5
+ - gem install bundler -v <%= Bundler::VERSION %>
6
+ - bundle install
6
7
 
7
8
  example_job:
8
9
  script:
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.3.22".freeze
4
+ VERSION = "2.3.23".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
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.3.22
4
+ version: 2.3.23
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: 2022-09-07 00:00:00.000000000 Z
25
+ date: 2022-10-05 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
@@ -380,7 +380,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
380
380
  - !ruby/object:Gem::Version
381
381
  version: 2.5.2
382
382
  requirements: []
383
- rubygems_version: 3.4.0.dev
383
+ rubygems_version: 3.3.23
384
384
  signing_key:
385
385
  specification_version: 4
386
386
  summary: The best way to manage your application's dependencies