bundler 2.3.25 → 2.3.27

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: 508e348983627527bf00fb429d395c7fc71bd41692b03f55901b3999a77cd5d6
4
- data.tar.gz: 9ad200e02400a40f90d17ddabc20673366b9b16f8c8e451eafb41d9f2ecd6e8a
3
+ metadata.gz: 71be503ced845364c9fc9bd0b6cfc5c55b824dddebaea4f9362616a3f9f1102d
4
+ data.tar.gz: 8e0c98df041316c6fde0ad3c5db91a3d9fccb5de936cc9049c6d2707f632341c
5
5
  SHA512:
6
- metadata.gz: 6750ee21d6226fbde651fb33831c07aa7b16901a40ec7c960d7ac8bda21f22fbacf78041c5a8dff14739bd25df45dc78c6605e2ff650fe65d14202df3fc18d87
7
- data.tar.gz: 5581c3544c07ba90854e1534793ca9457ca7212ca5453ab38d6f7567efe4e8570d0f67ff83be826ebd7ed3eb9ad1548a07a878cac73faca27fe6b8b66dcbd68e
6
+ metadata.gz: 33f84fc20356e8d546977a44b47cc8de7860b96f8aa003ddbf2a83d6faed71131096230dba574e962e291d8479f1b2606f0af3e0fe7b79a018c2ee45fc3474bf
7
+ data.tar.gz: cde808d6ea62512d393eb638304d781370145bf909deb93c46fa5c1e3db0855d53445399094540989b643f535a7f6e9a78aff81da1bfbfff67935716e13b3e1b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ # 2.3.27 (November 10, 2023)
2
+
3
+ ## Bug fixes:
4
+
5
+ * Provide fix for bundler Gemfile resolving regression. Pull request #6165
6
+ by Hiroshi SHIBATA.
7
+
8
+ # 2.3.26 (November 16, 2022)
9
+
10
+ ## Enhancements:
11
+
12
+ - Map 'universal' to the real arch in Bundler for prebuilt gem selection [#5978](https://github.com/rubygems/rubygems/pull/5978)
13
+
14
+ ## Documentation:
15
+
16
+ - Fix '--force' option documentation of 'bundle clean' [#6050](https://github.com/rubygems/rubygems/pull/6050)
17
+
1
18
  # 2.3.25 (November 2, 2022)
2
19
 
3
20
  ## Bug fixes:
@@ -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-11-02".freeze
8
- @git_commit_sha = "6b0b87b1ed".freeze
7
+ @built_at = "2023-11-10".freeze
8
+ @git_commit_sha = "75672aaa88".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
data/lib/bundler/cli.rb CHANGED
@@ -620,7 +620,7 @@ module Bundler
620
620
  method_option "dry-run", :type => :boolean, :default => false, :banner =>
621
621
  "Only print out changes, do not clean gems"
622
622
  method_option "force", :type => :boolean, :default => false, :banner =>
623
- "Forces clean even if --path is not set"
623
+ "Forces cleaning up unused gems even if Bundler is configured to use globally installed gems. As a consequence, removes all system gems except for the ones in the current application."
624
624
  def clean
625
625
  require_relative "cli/clean"
626
626
  Clean.new(options.dup).run
data/lib/bundler/index.rb CHANGED
@@ -71,6 +71,7 @@ module Bundler
71
71
  when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification then search_by_spec(query)
72
72
  when String then specs_by_name(query)
73
73
  when Gem::Dependency then search_by_dependency(query)
74
+ when Array then search_by_name_and_version(*query)
74
75
  else
75
76
  raise "You can't search for a #{query.inspect}."
76
77
  end
@@ -173,6 +174,10 @@ module Bundler
173
174
  end
174
175
  end
175
176
 
177
+ def search_by_name_and_version(name, version)
178
+ specs_by_name(name).select {|spec| spec.version == version }
179
+ end
180
+
176
181
  EMPTY_SEARCH = [].freeze
177
182
 
178
183
  def search_by_spec(spec)
@@ -13,7 +13,6 @@ module Bundler
13
13
  @dependencies = []
14
14
  @platform = platform || Gem::Platform::RUBY
15
15
  @source = source
16
- @specification = nil
17
16
  end
18
17
 
19
18
  def full_name
@@ -76,37 +75,46 @@ module Bundler
76
75
  def materialize_for_installation
77
76
  source.local!
78
77
 
79
- candidates = if source.is_a?(Source::Path) || !ruby_platform_materializes_to_ruby_platform?
80
- target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
78
+ matching_specs = source.specs.search(use_exact_resolved_specifications? ? self : [name, version])
79
+ return self if matching_specs.empty?
81
80
 
82
- GemHelpers.select_best_platform_match(source.specs.search(Dependency.new(name, version)), target_platform)
81
+ candidates = if use_exact_resolved_specifications?
82
+ matching_specs
83
83
  else
84
- source.specs.search(self)
85
- end
84
+ target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
86
85
 
87
- return self if candidates.empty?
86
+ installable_candidates = GemHelpers.select_best_platform_match(matching_specs, target_platform)
88
87
 
89
- __materialize__(candidates)
90
- end
88
+ specification = __materialize__(installable_candidates, :fallback_to_non_installable => false)
89
+ return specification unless specification.nil?
91
90
 
92
- def __materialize__(candidates)
93
- @specification = begin
94
- search = candidates.reverse.find do |spec|
95
- spec.is_a?(StubSpecification) ||
96
- (spec.matches_current_ruby? &&
97
- spec.matches_current_rubygems?)
98
- end
99
- if search.nil? && Bundler.frozen_bundle?
100
- search = candidates.last
101
- else
102
- search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
91
+ if target_platform != platform
92
+ installable_candidates = GemHelpers.select_best_platform_match(matching_specs, platform)
103
93
  end
104
- search
94
+
95
+ installable_candidates
105
96
  end
97
+
98
+ __materialize__(candidates)
106
99
  end
107
100
 
108
- def respond_to?(*args)
109
- super || @specification ? @specification.respond_to?(*args) : nil
101
+ # If in frozen mode, we fallback to a non-installable candidate because by
102
+ # doing this we avoid re-resolving and potentially end up changing the
103
+ # lock file, which is not allowed. In that case, we will give a proper error
104
+ # about the mismatch higher up the stack, right before trying to install the
105
+ # bad gem.
106
+ def __materialize__(candidates, fallback_to_non_installable: Bundler.frozen_bundle?)
107
+ search = candidates.reverse.find do |spec|
108
+ spec.is_a?(StubSpecification) ||
109
+ (spec.matches_current_ruby? &&
110
+ spec.matches_current_rubygems?)
111
+ end
112
+ if search.nil? && fallback_to_non_installable
113
+ search = candidates.last
114
+ else
115
+ search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
116
+ end
117
+ search
110
118
  end
111
119
 
112
120
  def to_s
@@ -128,16 +136,8 @@ module Bundler
128
136
 
129
137
  private
130
138
 
131
- def to_ary
132
- nil
133
- end
134
-
135
- def method_missing(method, *args, &blk)
136
- raise "LazySpecification has not been materialized yet (calling :#{method} #{args.inspect})" unless @specification
137
-
138
- return super unless respond_to?(method)
139
-
140
- @specification.send(method, *args, &blk)
139
+ def use_exact_resolved_specifications?
140
+ @use_exact_resolved_specifications ||= !source.is_a?(Source::Path) && ruby_platform_materializes_to_ruby_platform?
141
141
  end
142
142
 
143
143
  #
@@ -20,5 +20,5 @@ Print the changes, but do not clean the unused gems\.
20
20
  .
21
21
  .TP
22
22
  \fB\-\-force\fR
23
- Force a clean even if \fB\-\-path\fR is not set\.
23
+ Forces cleaning up unused gems even if Bundler is configured to use globally installed gems\. As a consequence, removes all system gems except for the ones in the current application\.
24
24
 
@@ -15,4 +15,4 @@ useful when you have made many changes to your gem dependencies.
15
15
  * `--dry-run`:
16
16
  Print the changes, but do not clean the unused gems.
17
17
  * `--force`:
18
- Force a clean even if `--path` is not set.
18
+ Forces cleaning up unused gems even if Bundler is configured to use globally installed gems. As a consequence, removes all system gems except for the ones in the current application.
@@ -308,6 +308,28 @@ module Gem
308
308
  end
309
309
  end
310
310
 
311
+ # On universal Rubies, resolve the "universal" arch to the real CPU arch, without changing the extension directory.
312
+ class Specification
313
+ if /^universal\.(?<arch>.*?)-/ =~ (CROSS_COMPILING || RUBY_PLATFORM)
314
+ local_platform = Platform.local
315
+ if local_platform.cpu == "universal"
316
+ ORIGINAL_LOCAL_PLATFORM = local_platform.to_s.freeze
317
+
318
+ local_platform.cpu = if arch == "arm64e" # arm64e is only permitted for Apple system binaries
319
+ "arm64"
320
+ else
321
+ arch
322
+ end
323
+
324
+ def extensions_dir
325
+ Gem.default_ext_dir_for(base_dir) ||
326
+ File.join(base_dir, "extensions", ORIGINAL_LOCAL_PLATFORM,
327
+ Gem.extension_api_version)
328
+ end
329
+ end
330
+ end
331
+ end
332
+
311
333
  require "rubygems/util"
312
334
 
313
335
  Util.singleton_class.module_eval do
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.3.25".freeze
4
+ VERSION = "2.3.27".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.25
4
+ version: 2.3.27
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-11-02 00:00:00.000000000 Z
25
+ date: 2023-11-10 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
@@ -379,7 +379,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
379
379
  - !ruby/object:Gem::Version
380
380
  version: 2.5.2
381
381
  requirements: []
382
- rubygems_version: 3.3.25
382
+ rubygems_version: 3.5.0.dev
383
383
  signing_key:
384
384
  specification_version: 4
385
385
  summary: The best way to manage your application's dependencies