bundler 2.3.23 → 2.3.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/lib/bundler/build_metadata.rb +2 -2
  4. data/lib/bundler/definition.rb +11 -29
  5. data/lib/bundler/endpoint_specification.rb +4 -0
  6. data/lib/bundler/gem_helpers.rb +0 -1
  7. data/lib/bundler/index.rb +0 -1
  8. data/lib/bundler/injector.rb +1 -1
  9. data/lib/bundler/lazy_specification.rb +8 -14
  10. data/lib/bundler/man/bundle-add.1 +1 -1
  11. data/lib/bundler/man/bundle-binstubs.1 +1 -1
  12. data/lib/bundler/man/bundle-cache.1 +1 -1
  13. data/lib/bundler/man/bundle-check.1 +1 -1
  14. data/lib/bundler/man/bundle-clean.1 +1 -1
  15. data/lib/bundler/man/bundle-config.1 +1 -1
  16. data/lib/bundler/man/bundle-console.1 +1 -1
  17. data/lib/bundler/man/bundle-doctor.1 +1 -1
  18. data/lib/bundler/man/bundle-exec.1 +1 -1
  19. data/lib/bundler/man/bundle-gem.1 +1 -1
  20. data/lib/bundler/man/bundle-help.1 +1 -1
  21. data/lib/bundler/man/bundle-info.1 +1 -1
  22. data/lib/bundler/man/bundle-init.1 +1 -1
  23. data/lib/bundler/man/bundle-inject.1 +1 -1
  24. data/lib/bundler/man/bundle-install.1 +1 -1
  25. data/lib/bundler/man/bundle-list.1 +1 -1
  26. data/lib/bundler/man/bundle-lock.1 +1 -1
  27. data/lib/bundler/man/bundle-open.1 +1 -1
  28. data/lib/bundler/man/bundle-outdated.1 +1 -1
  29. data/lib/bundler/man/bundle-platform.1 +1 -1
  30. data/lib/bundler/man/bundle-plugin.1 +1 -1
  31. data/lib/bundler/man/bundle-pristine.1 +1 -1
  32. data/lib/bundler/man/bundle-remove.1 +1 -1
  33. data/lib/bundler/man/bundle-show.1 +1 -1
  34. data/lib/bundler/man/bundle-update.1 +1 -1
  35. data/lib/bundler/man/bundle-version.1 +1 -1
  36. data/lib/bundler/man/bundle-viz.1 +1 -1
  37. data/lib/bundler/man/bundle.1 +1 -1
  38. data/lib/bundler/man/gemfile.5 +23 -12
  39. data/lib/bundler/man/gemfile.5.ronn +23 -13
  40. data/lib/bundler/remote_specification.rb +6 -2
  41. data/lib/bundler/resolver/base.rb +1 -1
  42. data/lib/bundler/resolver/spec_group.rb +22 -44
  43. data/lib/bundler/resolver.rb +24 -65
  44. data/lib/bundler/shared_helpers.rb +1 -2
  45. data/lib/bundler/version.rb +1 -1
  46. data/lib/bundler.rb +0 -1
  47. metadata +3 -4
  48. data/lib/bundler/dep_proxy.rb +0 -55
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28c415ab98b0a481538fb3881860945bc2ec0b0d78afd59dbd8a38d75fcfdd4b
4
- data.tar.gz: ccf31d79b872afd5d3fffd60b8ccfd425eb14e189f512b5187e6c171a2cf696b
3
+ metadata.gz: 508e348983627527bf00fb429d395c7fc71bd41692b03f55901b3999a77cd5d6
4
+ data.tar.gz: 9ad200e02400a40f90d17ddabc20673366b9b16f8c8e451eafb41d9f2ecd6e8a
5
5
  SHA512:
6
- metadata.gz: 6486b340fde2e41727126b985846503e89f7fd22a5f2b197f5e687b2e8840c7043be9eab0a54797cf9b0b1d777d9f9ee92bfc6b0c069c5eb310a2812c5af8460
7
- data.tar.gz: 591190883dfb54835e5f11129ac09a87e9462a427fb97831c5def834664e18b55ca59b80b68028b35fe015fde2d5cfa3a372218a6b4c9432bfd9a0e585612f23
6
+ metadata.gz: 6750ee21d6226fbde651fb33831c07aa7b16901a40ec7c960d7ac8bda21f22fbacf78041c5a8dff14739bd25df45dc78c6605e2ff650fe65d14202df3fc18d87
7
+ data.tar.gz: 5581c3544c07ba90854e1534793ca9457ca7212ca5453ab38d6f7567efe4e8570d0f67ff83be826ebd7ed3eb9ad1548a07a878cac73faca27fe6b8b66dcbd68e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
1
+ # 2.3.25 (November 2, 2022)
2
+
3
+ ## Bug fixes:
4
+
5
+ - Properly sort specs when materializing [#6015](https://github.com/rubygems/rubygems/pull/6015)
6
+ - Fix bad unfreeze recommendation [#6013](https://github.com/rubygems/rubygems/pull/6013)
7
+
8
+ ## Documentation:
9
+
10
+ - Bring docs for gemfile(5) manpage up to date [#6007](https://github.com/rubygems/rubygems/pull/6007)
11
+ - Fix `github` DSL docs to mention they use https protocol over git under the hood [#5993](https://github.com/rubygems/rubygems/pull/5993)
12
+
13
+ # 2.3.24 (October 17, 2022)
14
+
15
+ ## Enhancements:
16
+
17
+ - Only add extra resolver spec group for Ruby platform when needed [#5698](https://github.com/rubygems/rubygems/pull/5698)
18
+ - Fix little UI issue when bundler shows duplicated gems in a list [#5965](https://github.com/rubygems/rubygems/pull/5965)
19
+
20
+ ## Bug fixes:
21
+
22
+ - Fix incorrect materialization on Windows [#5975](https://github.com/rubygems/rubygems/pull/5975)
23
+
1
24
  # 2.3.23 (October 5, 2022)
2
25
 
3
26
  ## 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-10-05".freeze
8
- @git_commit_sha = "250d9d485d".freeze
7
+ @built_at = "2022-11-02".freeze
8
+ @git_commit_sha = "6b0b87b1ed".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -139,8 +139,8 @@ module Bundler
139
139
  if @unlock[:conservative]
140
140
  @unlock[:gems] ||= @dependencies.map(&:name)
141
141
  else
142
- eager_unlock = expand_dependencies(@unlock[:gems] || [], true)
143
- @unlock[:gems] = @locked_specs.for(eager_unlock, false, platforms).map(&:name)
142
+ eager_unlock = (@unlock[:gems] || []).map {|name| Dependency.new(name, ">= 0") }
143
+ @unlock[:gems] = @locked_specs.for(eager_unlock, false, platforms).map(&:name).uniq
144
144
  end
145
145
 
146
146
  @dependency_changes = converge_dependencies
@@ -224,7 +224,7 @@ module Bundler
224
224
 
225
225
  def current_dependencies
226
226
  dependencies.select do |d|
227
- d.should_include? && !d.gem_platforms(@platforms).empty?
227
+ d.should_include? && !d.gem_platforms([generic_local_platform]).empty?
228
228
  end
229
229
  end
230
230
 
@@ -248,10 +248,9 @@ module Bundler
248
248
 
249
249
  def dependencies_for(groups)
250
250
  groups.map!(&:to_sym)
251
- deps = current_dependencies.reject do |d|
251
+ current_dependencies.reject do |d|
252
252
  (d.groups & groups).empty?
253
253
  end
254
- expand_dependencies(deps)
255
254
  end
256
255
 
257
256
  # Resolve all the dependencies specified in Gemfile. It ensures that
@@ -358,7 +357,7 @@ module Bundler
358
357
  "bundle config unset deployment"
359
358
  end
360
359
  msg << "\n\nIf this is a development machine, remove the #{Bundler.default_gemfile} " \
361
- "freeze \nby running `#{suggested_command}`."
360
+ "freeze \nby running `#{suggested_command}`." if suggested_command
362
361
  end
363
362
 
364
363
  added = []
@@ -474,17 +473,17 @@ module Bundler
474
473
  def resolver
475
474
  @resolver ||= begin
476
475
  last_resolve = converge_locked_specs
477
- remove_ruby_from_platforms_if_necessary!(dependencies)
476
+ remove_ruby_from_platforms_if_necessary!(current_dependencies)
478
477
  Resolver.new(source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve(last_resolve), platforms)
479
478
  end
480
479
  end
481
480
 
482
481
  def expanded_dependencies
483
- @expanded_dependencies ||= expand_dependencies(dependencies + metadata_dependencies, true)
482
+ @expanded_dependencies ||= dependencies + metadata_dependencies
484
483
  end
485
484
 
486
485
  def filter_specs(specs, deps)
487
- SpecSet.new(specs).for(expand_dependencies(deps, true), false, platforms)
486
+ SpecSet.new(specs).for(deps, false, platforms)
488
487
  end
489
488
 
490
489
  def materialize(dependencies)
@@ -578,8 +577,8 @@ module Bundler
578
577
  ].select(&:first).map(&:last).join(", ")
579
578
  end
580
579
 
581
- def pretty_dep(dep, source = false)
582
- SharedHelpers.pretty_dependency(dep, source)
580
+ def pretty_dep(dep)
581
+ SharedHelpers.pretty_dependency(dep)
583
582
  end
584
583
 
585
584
  # Check if the specs of the given source changed
@@ -792,23 +791,6 @@ module Bundler
792
791
  ]
793
792
  end
794
793
 
795
- def expand_dependencies(dependencies, remote = false)
796
- deps = []
797
- dependencies.each do |dep|
798
- dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name)
799
- next unless remote || dep.current_platform?
800
- target_platforms = dep.gem_platforms(remote ? @platforms : [generic_local_platform])
801
- deps += expand_dependency_with_platforms(dep, target_platforms)
802
- end
803
- deps
804
- end
805
-
806
- def expand_dependency_with_platforms(dep, platforms)
807
- platforms.map do |p|
808
- DepProxy.get_proxy(dep, p)
809
- end
810
- end
811
-
812
794
  def source_requirements
813
795
  # Record the specs available in each gem's source, so that those
814
796
  # specs will be available later when the resolver knows where to
@@ -880,7 +862,7 @@ module Bundler
880
862
  Bundler.local_platform == Gem::Platform::RUBY ||
881
863
  !platforms.include?(Gem::Platform::RUBY) ||
882
864
  (@new_platform && platforms.last == Gem::Platform::RUBY) ||
883
- !@originally_locked_specs.incomplete_ruby_specs?(expand_dependencies(dependencies))
865
+ !@originally_locked_specs.incomplete_ruby_specs?(dependencies)
884
866
 
885
867
  remove_platform(Gem::Platform::RUBY)
886
868
  add_current_platform
@@ -26,6 +26,10 @@ module Bundler
26
26
  @platform
27
27
  end
28
28
 
29
+ def identifier
30
+ @__identifier ||= [name, version, platform.to_s]
31
+ end
32
+
29
33
  # needed for standalone, load required_paths from local gemspec
30
34
  # after the gem is installed
31
35
  def require_paths
@@ -5,7 +5,6 @@ module Bundler
5
5
  GENERIC_CACHE = { Gem::Platform::RUBY => Gem::Platform::RUBY } # rubocop:disable Style/MutableConstant
6
6
  GENERICS = [
7
7
  [Gem::Platform.new("java"), Gem::Platform.new("java")],
8
- [Gem::Platform.new("universal-java"), Gem::Platform.new("java")],
9
8
  [Gem::Platform.new("mswin32"), Gem::Platform.new("mswin32")],
10
9
  [Gem::Platform.new("mswin64"), Gem::Platform.new("mswin64")],
11
10
  [Gem::Platform.new("universal-mingw32"), Gem::Platform.new("universal-mingw32")],
data/lib/bundler/index.rb CHANGED
@@ -71,7 +71,6 @@ 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 DepProxy then search_by_dependency(query.dep)
75
74
  else
76
75
  raise "You can't search for a #{query.inspect}."
77
76
  end
@@ -70,7 +70,7 @@ module Bundler
70
70
 
71
71
  show_warning("No gems were removed from the gemfile.") if deps.empty?
72
72
 
73
- deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep, false)} was removed." }
73
+ deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep)} was removed." }
74
74
  end
75
75
 
76
76
  # Invalidate the cached Bundler.definition.
@@ -77,11 +77,9 @@ module Bundler
77
77
  source.local!
78
78
 
79
79
  candidates = if source.is_a?(Source::Path) || !ruby_platform_materializes_to_ruby_platform?
80
- target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : Bundler.local_platform
80
+ target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
81
81
 
82
- source.specs.search(Dependency.new(name, version)).select do |spec|
83
- MatchPlatform.platforms_match?(spec.platform, target_platform)
84
- end
82
+ GemHelpers.select_best_platform_match(source.specs.search(Dependency.new(name, version)), target_platform)
85
83
  else
86
84
  source.specs.search(self)
87
85
  end
@@ -120,7 +118,7 @@ module Bundler
120
118
  end
121
119
 
122
120
  def identifier
123
- @__identifier ||= [name, version, platform_string]
121
+ @__identifier ||= [name, version, platform.to_s]
124
122
  end
125
123
 
126
124
  def git_version
@@ -128,13 +126,6 @@ module Bundler
128
126
  " #{source.revision[0..6]}"
129
127
  end
130
128
 
131
- protected
132
-
133
- def platform_string
134
- platform_string = platform.to_s
135
- platform_string == Index::RUBY ? Index::NULL : platform_string
136
- end
137
-
138
129
  private
139
130
 
140
131
  def to_ary
@@ -151,7 +142,8 @@ module Bundler
151
142
 
152
143
  #
153
144
  # For backwards compatibility with existing lockfiles, if the most specific
154
- # locked platform is RUBY, we keep the previous behaviour of resolving the
145
+ # locked platform is not a specific platform like x86_64-linux or
146
+ # universal-java-11, then we keep the previous behaviour of resolving the
155
147
  # best platform variant at materiliazation time. For previous bundler
156
148
  # versions (before 2.2.0) this was always the case (except when the lockfile
157
149
  # only included non-ruby platforms), but we're also keeping this behaviour
@@ -159,7 +151,9 @@ module Bundler
159
151
  # explicitly add a more specific platform.
160
152
  #
161
153
  def ruby_platform_materializes_to_ruby_platform?
162
- !Bundler.most_specific_locked_platform?(generic_local_platform) || force_ruby_platform || Bundler.settings[:force_ruby_platform]
154
+ generic_platform = generic_local_platform == Gem::Platform::JAVA ? Gem::Platform::JAVA : Gem::Platform::RUBY
155
+
156
+ !Bundler.most_specific_locked_platform?(generic_platform) || force_ruby_platform || Bundler.settings[:force_ruby_platform]
163
157
  end
164
158
  end
165
159
  end
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-ADD" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-ADD" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-BINSTUBS" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-BINSTUBS" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-binstubs\fR \- Install the binstubs of the listed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CACHE" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-CACHE" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CHECK" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-CHECK" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CLEAN" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-CLEAN" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CONFIG" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-CONFIG" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-config\fR \- Set bundler configuration options
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CONSOLE" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-CONSOLE" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-console\fR \- Deprecated way to open an IRB session with the bundle pre\-loaded
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-DOCTOR" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-DOCTOR" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-doctor\fR \- Checks the bundle for common problems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-EXEC" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-EXEC" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-exec\fR \- Execute a command in the context of the bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-GEM" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-GEM" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-HELP" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-HELP" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-help\fR \- Displays detailed help for each subcommand
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INFO" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-INFO" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-info\fR \- Show information for the given gem in your bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INIT" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-INIT" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-init\fR \- Generates a Gemfile into the current working directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INJECT" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-INJECT" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INSTALL" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-INSTALL" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-LIST" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-LIST" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-list\fR \- List all the gems in the bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-LOCK" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-LOCK" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-OPEN" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-OPEN" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-OUTDATED" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-OUTDATED" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-outdated\fR \- List installed gems with newer versions available
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PLATFORM" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-PLATFORM" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-platform\fR \- Displays platform compatibility information
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PLUGIN" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-PLUGIN" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-plugin\fR \- Manage Bundler plugins
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PRISTINE" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-PRISTINE" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-REMOVE" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-REMOVE" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-remove\fR \- Removes gems from the Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-SHOW" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-SHOW" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-UPDATE" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-UPDATE" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-update\fR \- Update your gems to the latest available versions
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-VERSION" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-VERSION" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-version\fR \- Prints Bundler version information
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-VIZ" "1" "September 2022" "" ""
4
+ .TH "BUNDLE\-VIZ" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE" "1" "September 2022" "" ""
4
+ .TH "BUNDLE" "1" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\fR \- Ruby Dependency Management
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "GEMFILE" "5" "September 2022" "" ""
4
+ .TH "GEMFILE" "5" "October 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
@@ -73,13 +73,13 @@ Credentials in the source URL will take precedence over credentials set using \f
73
73
  If your application requires a specific Ruby version or engine, specify your requirements using the \fBruby\fR method, with the following arguments\. All parameters are \fBOPTIONAL\fR unless otherwise specified\.
74
74
  .
75
75
  .SS "VERSION (required)"
76
- The version of Ruby that your application requires\. If your application requires an alternate Ruby engine, such as JRuby, Rubinius or TruffleRuby, this should be the Ruby version that the engine is compatible with\.
76
+ The version of Ruby that your application requires\. If your application requires an alternate Ruby engine, such as JRuby, TruffleRuby, etc\., this should be the Ruby version that the engine is compatible with\.
77
77
  .
78
78
  .IP "" 4
79
79
  .
80
80
  .nf
81
81
 
82
- ruby "1\.9\.3"
82
+ ruby "3\.1\.2"
83
83
  .
84
84
  .fi
85
85
  .
@@ -95,7 +95,7 @@ What exactly is an Engine? \- A Ruby engine is an implementation of the Ruby lan
95
95
  For background: the reference or original implementation of the Ruby programming language is called Matz\'s Ruby Interpreter \fIhttps://en\.wikipedia\.org/wiki/Ruby_MRI\fR, or MRI for short\. This is named after Ruby creator Yukihiro Matsumoto, also known as Matz\. MRI is also known as CRuby, because it is written in C\. MRI is the most widely used Ruby engine\.
96
96
  .
97
97
  .IP "\(bu" 4
98
- Other implementations \fIhttps://www\.ruby\-lang\.org/en/about/\fR of Ruby exist\. Some of the more well\-known implementations include Rubinius \fIhttps://rubinius\.com/\fR, and JRuby \fIhttp://jruby\.org/\fR\. Rubinius is an alternative implementation of Ruby written in Ruby\. JRuby is an implementation of Ruby on the JVM, short for Java Virtual Machine\.
98
+ Other implementations \fIhttps://www\.ruby\-lang\.org/en/about/\fR of Ruby exist\. Some of the more well\-known implementations include JRuby \fIhttp://jruby\.org/\fR and TruffleRuby \fIhttps://www\.graalvm\.org/ruby/\fR\. Rubinius is an alternative implementation of Ruby written in Ruby\. JRuby is an implementation of Ruby on the JVM, short for Java Virtual Machine\. TruffleRuby is a Ruby implementation on the GraalVM, a language toolkit built on the JVM\.
99
99
  .
100
100
  .IP "" 0
101
101
  .
@@ -106,20 +106,23 @@ Each application \fImay\fR specify a Ruby engine version\. If an engine version
106
106
  .
107
107
  .nf
108
108
 
109
- ruby "1\.8\.7", engine: "jruby", engine_version: "1\.6\.7"
109
+ ruby "2\.6\.8", engine: "jruby", engine_version: "9\.3\.8\.0"
110
110
  .
111
111
  .fi
112
112
  .
113
113
  .IP "" 0
114
114
  .
115
115
  .SS "PATCHLEVEL"
116
- Each application \fImay\fR specify a Ruby patchlevel\.
116
+ Each application \fImay\fR specify a Ruby patchlevel\. Specifying the patchlevel has been meaningless since Ruby 2\.1\.0 was released as the patchlevel is now uniquely determined by a combination of major, minor, and teeny version numbers\.
117
+ .
118
+ .P
119
+ This option was implemented in Bundler 1\.4\.0 for Ruby 2\.0 or earlier\.
117
120
  .
118
121
  .IP "" 4
119
122
  .
120
123
  .nf
121
124
 
122
- ruby "2\.0\.0", patchlevel: "247"
125
+ ruby "3\.1\.2", patchlevel: "20"
123
126
  .
124
127
  .fi
125
128
  .
@@ -265,6 +268,14 @@ C Ruby (MRI) only, but not Windows
265
268
  Windows C Ruby (MRI), including RubyInstaller 32\-bit and 64\-bit versions
266
269
  .
267
270
  .TP
271
+ \fBmswin\fR
272
+ Windows C Ruby (MRI), including RubyInstaller 32\-bit versions
273
+ .
274
+ .TP
275
+ \fBmswin64\fR
276
+ Windows C Ruby (MRI), including RubyInstaller 64\-bit versions
277
+ .
278
+ .TP
268
279
  \fBrbx\fR
269
280
  Rubinius
270
281
  .
@@ -277,13 +288,13 @@ JRuby
277
288
  TruffleRuby
278
289
  .
279
290
  .P
280
- On platforms \fBruby\fR, \fBmri\fR, and \fBwindows\fR, you may additionally specify a version by appending the major and minor version numbers without a delimiter\. For example, to specify that a gem should only be used on platform \fBruby\fR version 2\.3, use:
291
+ On platforms \fBruby\fR, \fBmri\fR, \fBmswin\fR, \fBmswin64\fR, and \fBwindows\fR, you may additionally specify a version by appending the major and minor version numbers without a delimiter\. For example, to specify that a gem should only be used on platform \fBruby\fR version 3\.1, use:
281
292
  .
282
293
  .IP "" 4
283
294
  .
284
295
  .nf
285
296
 
286
- ruby_23
297
+ ruby_31
287
298
  .
288
299
  .fi
289
300
  .
@@ -297,8 +308,8 @@ As with groups (above), you may specify one or more platforms:
297
308
  .nf
298
309
 
299
310
  gem "weakling", platforms: :jruby
300
- gem "ruby\-debug", platforms: :mri_18
301
- gem "nokogiri", platforms: [:windows_26, :jruby]
311
+ gem "ruby\-debug", platforms: :mri_31
312
+ gem "nokogiri", platforms: [:windows_31, :jruby]
302
313
  .
303
314
  .fi
304
315
  .
@@ -497,7 +508,7 @@ Are both equivalent to
497
508
  .
498
509
  .nf
499
510
 
500
- gem "rails", git: "git://github\.com/rails/rails\.git"
511
+ gem "rails", git: "https://github\.com/rails/rails\.git"
501
512
  .
502
513
  .fi
503
514
  .
@@ -64,10 +64,10 @@ All parameters are `OPTIONAL` unless otherwise specified.
64
64
  ### VERSION (required)
65
65
 
66
66
  The version of Ruby that your application requires. If your application
67
- requires an alternate Ruby engine, such as JRuby, Rubinius or TruffleRuby, this
67
+ requires an alternate Ruby engine, such as JRuby, TruffleRuby, etc., this
68
68
  should be the Ruby version that the engine is compatible with.
69
69
 
70
- ruby "1.9.3"
70
+ ruby "3.1.2"
71
71
 
72
72
  ### ENGINE
73
73
 
@@ -86,9 +86,10 @@ What exactly is an Engine?
86
86
 
87
87
  - [Other implementations](https://www.ruby-lang.org/en/about/) of Ruby exist.
88
88
  Some of the more well-known implementations include
89
- [Rubinius](https://rubinius.com/), and [JRuby](http://jruby.org/).
89
+ [JRuby](http://jruby.org/) and [TruffleRuby](https://www.graalvm.org/ruby/).
90
90
  Rubinius is an alternative implementation of Ruby written in Ruby.
91
91
  JRuby is an implementation of Ruby on the JVM, short for Java Virtual Machine.
92
+ TruffleRuby is a Ruby implementation on the GraalVM, a language toolkit built on the JVM.
92
93
 
93
94
  ### ENGINE VERSION
94
95
 
@@ -96,13 +97,17 @@ Each application _may_ specify a Ruby engine version. If an engine version is
96
97
  specified, an engine _must_ also be specified. If the engine is "ruby" the
97
98
  engine version specified _must_ match the Ruby version.
98
99
 
99
- ruby "1.8.7", engine: "jruby", engine_version: "1.6.7"
100
+ ruby "2.6.8", engine: "jruby", engine_version: "9.3.8.0"
100
101
 
101
102
  ### PATCHLEVEL
102
103
 
103
- Each application _may_ specify a Ruby patchlevel.
104
+ Each application _may_ specify a Ruby patchlevel. Specifying the patchlevel has
105
+ been meaningless since Ruby 2.1.0 was released as the patchlevel is now
106
+ uniquely determined by a combination of major, minor, and teeny version numbers.
104
107
 
105
- ruby "2.0.0", patchlevel: "247"
108
+ This option was implemented in Bundler 1.4.0 for Ruby 2.0 or earlier.
109
+
110
+ ruby "3.1.2", patchlevel: "20"
106
111
 
107
112
  ## GEMS
108
113
 
@@ -195,6 +200,10 @@ There are a number of `Gemfile` platforms:
195
200
  C Ruby (MRI) only, but not Windows
196
201
  * `windows`:
197
202
  Windows C Ruby (MRI), including RubyInstaller 32-bit and 64-bit versions
203
+ * `mswin`:
204
+ Windows C Ruby (MRI), including RubyInstaller 32-bit versions
205
+ * `mswin64`:
206
+ Windows C Ruby (MRI), including RubyInstaller 64-bit versions
198
207
  * `rbx`:
199
208
  Rubinius
200
209
  * `jruby`:
@@ -202,17 +211,18 @@ There are a number of `Gemfile` platforms:
202
211
  * `truffleruby`:
203
212
  TruffleRuby
204
213
 
205
- On platforms `ruby`, `mri`, and `windows`, you may additionally specify a version
206
- by appending the major and minor version numbers without a delimiter. For example,
207
- to specify that a gem should only be used on platform `ruby` version 2.3, use:
214
+ On platforms `ruby`, `mri`, `mswin`, `mswin64`, and `windows`, you may
215
+ additionally specify a version by appending the major and minor version numbers
216
+ without a delimiter. For example, to specify that a gem should only be used on
217
+ platform `ruby` version 3.1, use:
208
218
 
209
- ruby_23
219
+ ruby_31
210
220
 
211
221
  As with groups (above), you may specify one or more platforms:
212
222
 
213
223
  gem "weakling", platforms: :jruby
214
- gem "ruby-debug", platforms: :mri_18
215
- gem "nokogiri", platforms: [:windows_26, :jruby]
224
+ gem "ruby-debug", platforms: :mri_31
225
+ gem "nokogiri", platforms: [:windows_31, :jruby]
216
226
 
217
227
  All operations involving groups ([`bundle install`](bundle-install.1.html), `Bundler.setup`,
218
228
  `Bundler.require`) behave exactly the same as if any groups not
@@ -369,7 +379,7 @@ same, you can omit one.
369
379
 
370
380
  Are both equivalent to
371
381
 
372
- gem "rails", git: "git://github.com/rails/rails.git"
382
+ gem "rails", git: "https://github.com/rails/rails.git"
373
383
 
374
384
  Since the `github` method is a specialization of `git_source`, it accepts a `:branch` named argument.
375
385
 
@@ -29,11 +29,15 @@ module Bundler
29
29
  @platform = _remote_specification.platform
30
30
  end
31
31
 
32
+ def identifier
33
+ @__identifier ||= [name, version, @platform.to_s]
34
+ end
35
+
32
36
  def full_name
33
- if @original_platform == Gem::Platform::RUBY
37
+ if @platform == Gem::Platform::RUBY
34
38
  "#{@name}-#{@version}"
35
39
  else
36
- "#{@name}-#{@version}-#{@original_platform}"
40
+ "#{@name}-#{@version}-#{@platform}"
37
41
  end
38
42
  end
39
43
 
@@ -40,7 +40,7 @@ module Bundler
40
40
  base_requirements = {}
41
41
  @base.each do |ls|
42
42
  dep = Dependency.new(ls.name, ls.version)
43
- base_requirements[ls.name] = DepProxy.get_proxy(dep, ls.platform)
43
+ base_requirements[ls.name] = dep
44
44
  end
45
45
  @additional_base_requirements.each {|d| base_requirements[d.name] = d }
46
46
  base_requirements
@@ -6,40 +6,23 @@ module Bundler
6
6
  attr_accessor :name, :version, :source
7
7
  attr_accessor :activated_platforms, :force_ruby_platform
8
8
 
9
- def self.create_for(specs, all_platforms, specific_platform)
10
- specific_platform_specs = specs[specific_platform]
11
- return unless specific_platform_specs.any?
12
-
13
- platforms = all_platforms.select {|p| specs[p].any? }
14
-
15
- new(specific_platform_specs.first, specs, platforms)
16
- end
17
-
18
- def initialize(exemplary_spec, specs, relevant_platforms)
19
- @exemplary_spec = exemplary_spec
20
- @name = exemplary_spec.name
21
- @version = exemplary_spec.version
22
- @source = exemplary_spec.source
9
+ def initialize(specs, relevant_platforms)
10
+ @exemplary_spec = specs.first
11
+ @name = @exemplary_spec.name
12
+ @version = @exemplary_spec.version
13
+ @source = @exemplary_spec.source
23
14
 
24
15
  @activated_platforms = relevant_platforms
25
- @dependencies = Hash.new do |dependencies, platforms|
26
- dependencies[platforms] = dependencies_for(platforms)
27
- end
28
16
  @specs = specs
29
17
  end
30
18
 
31
19
  def to_specs
32
- activated_platforms.map do |p|
33
- specs = @specs[p]
34
- next unless specs.any?
35
-
36
- specs.map do |s|
37
- lazy_spec = LazySpecification.new(name, version, s.platform, source)
38
- lazy_spec.force_ruby_platform = force_ruby_platform
39
- lazy_spec.dependencies.replace s.dependencies
40
- lazy_spec
41
- end
42
- end.flatten.compact.uniq
20
+ @specs.map do |s|
21
+ lazy_spec = LazySpecification.new(name, version, s.platform, source)
22
+ lazy_spec.force_ruby_platform = force_ruby_platform
23
+ lazy_spec.dependencies.replace s.dependencies
24
+ lazy_spec
25
+ end
43
26
  end
44
27
 
45
28
  def to_s
@@ -48,7 +31,9 @@ module Bundler
48
31
  end
49
32
 
50
33
  def dependencies_for_activated_platforms
51
- @dependencies[activated_platforms]
34
+ @dependencies_for_activated_platforms ||= @specs.map do |spec|
35
+ __dependencies(spec) + metadata_dependencies(spec)
36
+ end.flatten.uniq
52
37
  end
53
38
 
54
39
  def ==(other)
@@ -79,35 +64,28 @@ module Bundler
79
64
 
80
65
  private
81
66
 
82
- def dependencies_for(platforms)
83
- platforms.map do |platform|
84
- __dependencies(platform) + metadata_dependencies(platform)
85
- end.flatten
86
- end
87
-
88
- def __dependencies(platform)
67
+ def __dependencies(spec)
89
68
  dependencies = []
90
- @specs[platform].first.dependencies.each do |dep|
69
+ spec.dependencies.each do |dep|
91
70
  next if dep.type == :development
92
- dependencies << DepProxy.get_proxy(Dependency.new(dep.name, dep.requirement), platform)
71
+ dependencies << Dependency.new(dep.name, dep.requirement)
93
72
  end
94
73
  dependencies
95
74
  end
96
75
 
97
- def metadata_dependencies(platform)
98
- spec = @specs[platform].first
76
+ def metadata_dependencies(spec)
99
77
  return [] if spec.is_a?(LazySpecification)
100
78
 
101
79
  [
102
- metadata_dependency("Ruby", spec.required_ruby_version, platform),
103
- metadata_dependency("RubyGems", spec.required_rubygems_version, platform),
80
+ metadata_dependency("Ruby", spec.required_ruby_version),
81
+ metadata_dependency("RubyGems", spec.required_rubygems_version),
104
82
  ].compact
105
83
  end
106
84
 
107
- def metadata_dependency(name, requirement, platform)
85
+ def metadata_dependency(name, requirement)
108
86
  return if requirement.nil? || requirement.none?
109
87
 
110
- DepProxy.get_proxy(Dependency.new("#{name}\0", requirement), platform)
88
+ Dependency.new("#{name}\0", requirement)
111
89
  end
112
90
  end
113
91
  end
@@ -8,22 +8,6 @@ module Bundler
8
8
 
9
9
  include GemHelpers
10
10
 
11
- # Figures out the best possible configuration of gems that satisfies
12
- # the list of passed dependencies and any child dependencies without
13
- # causing any gem activation errors.
14
- #
15
- # ==== Parameters
16
- # *dependencies<Gem::Dependency>:: The list of dependencies to resolve
17
- #
18
- # ==== Returns
19
- # <GemBundle>,nil:: If the list of dependencies can be resolved, a
20
- # collection of gemspecs is returned. Otherwise, nil is returned.
21
- def self.resolve(requirements, source_requirements = {}, base = [], gem_version_promoter = GemVersionPromoter.new, additional_base_requirements = [], platforms = nil)
22
- base = SpecSet.new(base) unless base.is_a?(SpecSet)
23
- resolver = new(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
24
- resolver.start(requirements)
25
- end
26
-
27
11
  def initialize(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
28
12
  @source_requirements = source_requirements
29
13
  @base = Resolver::Base.new(base, additional_base_requirements)
@@ -116,41 +100,35 @@ module Bundler
116
100
  specification.dependencies_for_activated_platforms
117
101
  end
118
102
 
119
- def search_for(dependency_proxy)
120
- platform = dependency_proxy.__platform
121
- dependency = dependency_proxy.dep
122
- name = dependency.name
123
- @search_for[dependency_proxy] ||= begin
103
+ def search_for(dependency)
104
+ @search_for[dependency] ||= begin
105
+ name = dependency.name
124
106
  locked_results = @base[name].select {|spec| requirement_satisfied_by?(dependency, nil, spec) }
125
107
  locked_requirement = base_requirements[name]
126
108
  results = results_for(dependency) + locked_results
127
109
  results = results.select {|spec| requirement_satisfied_by?(locked_requirement, nil, spec) } if locked_requirement
110
+ dep_platforms = dependency.gem_platforms(@platforms)
128
111
 
129
- if results.any?
130
- results = @gem_version_promoter.sort_versions(dependency, results)
112
+ @gem_version_promoter.sort_versions(dependency, results).group_by(&:version).reduce([]) do |groups, (_, specs)|
113
+ relevant_platforms = dep_platforms.select {|platform| specs.any? {|spec| spec.match_platform(platform) } }
114
+ next groups unless relevant_platforms.any?
131
115
 
132
- results.group_by(&:version).reduce([]) do |groups, (_, specs)|
133
- next groups unless specs.any? {|spec| spec.match_platform(platform) }
134
-
135
- specs_by_platform = Hash.new do |current_specs, current_platform|
136
- current_specs[current_platform] = select_best_platform_match(specs, current_platform)
137
- end
116
+ ruby_specs = select_best_platform_match(specs, Gem::Platform::RUBY)
117
+ if ruby_specs.any?
118
+ spec_group_ruby = SpecGroup.new(ruby_specs, [Gem::Platform::RUBY])
119
+ spec_group_ruby.force_ruby_platform = dependency.force_ruby_platform
120
+ groups << spec_group_ruby
121
+ end
138
122
 
139
- spec_group_ruby = SpecGroup.create_for(specs_by_platform, [Gem::Platform::RUBY], Gem::Platform::RUBY)
140
- if spec_group_ruby
141
- spec_group_ruby.force_ruby_platform = dependency.force_ruby_platform
142
- groups << spec_group_ruby
143
- end
123
+ next groups if @resolving_only_for_ruby || dependency.force_ruby_platform
144
124
 
145
- next groups if @resolving_only_for_ruby || dependency.force_ruby_platform
125
+ platform_specs = relevant_platforms.flat_map {|platform| select_best_platform_match(specs, platform) }
126
+ next groups if platform_specs == ruby_specs
146
127
 
147
- spec_group = SpecGroup.create_for(specs_by_platform, @platforms, platform)
148
- groups << spec_group
128
+ spec_group = SpecGroup.new(platform_specs, relevant_platforms)
129
+ groups << spec_group
149
130
 
150
- groups
151
- end
152
- else
153
- []
131
+ groups
154
132
  end
155
133
  end
156
134
  end
@@ -181,10 +159,6 @@ module Bundler
181
159
  requirement.matches_spec?(spec) || spec.source.is_a?(Source::Gemspec)
182
160
  end
183
161
 
184
- def dependencies_equal?(dependencies, other_dependencies)
185
- dependencies.map(&:dep) == other_dependencies.map(&:dep)
186
- end
187
-
188
162
  def sort_dependencies(dependencies, activated, conflicts)
189
163
  dependencies.sort_by do |dependency|
190
164
  name = name_for(dependency)
@@ -196,17 +170,10 @@ module Bundler
196
170
  amount_constrained(dependency),
197
171
  conflicts[name] ? 0 : 1,
198
172
  vertex.payload ? 0 : search_for(dependency).count,
199
- self.class.platform_sort_key(dependency.__platform),
200
173
  ]
201
174
  end
202
175
  end
203
176
 
204
- def self.platform_sort_key(platform)
205
- # Prefer specific platform to not specific platform
206
- return ["99-LAST", "", "", ""] if Gem::Platform::RUBY == platform
207
- ["00", *platform.to_a.map {|part| part || "" }]
208
- end
209
-
210
177
  private
211
178
 
212
179
  def base_requirements
@@ -261,21 +228,11 @@ module Bundler
261
228
  requirements.map! do |requirement|
262
229
  name = requirement.name
263
230
  next requirement if name == "bundler"
231
+ next if requirement.gem_platforms(@platforms).empty?
264
232
  next requirement unless search_for(requirement).empty?
265
233
  next unless requirement.current_platform?
266
234
 
267
- if (base = @base[name]) && !base.empty?
268
- version = base.first.version
269
- message = "You have requested:\n" \
270
- " #{name} #{requirement.requirement}\n\n" \
271
- "The bundle currently has #{name} locked at #{version}.\n" \
272
- "Try running `bundle update #{name}`\n\n" \
273
- "If you are updating multiple gems in your Gemfile at once,\n" \
274
- "try passing them all to `bundle update`"
275
- else
276
- message = gem_not_found_message(name, requirement, source_for(name))
277
- end
278
- raise GemNotFound, message
235
+ raise GemNotFound, gem_not_found_message(name, requirement, source_for(name))
279
236
  end.compact!
280
237
  end
281
238
 
@@ -293,7 +250,9 @@ module Bundler
293
250
  if specs_matching_requirement.any?
294
251
  specs = specs_matching_requirement
295
252
  matching_part = requirement_label
296
- requirement_label = "#{requirement_label}' with platform '#{requirement.__platform}"
253
+ platforms = requirement.gem_platforms(@platforms)
254
+ platform_label = platforms.size == 1 ? "platform '#{platforms.first}" : "platforms '#{platforms.join("', '")}"
255
+ requirement_label = "#{requirement_label}' with #{platform_label}"
297
256
  end
298
257
 
299
258
  message = String.new("Could not find gem '#{requirement_label}'#{extra_message} in #{source}#{cache_message}.\n")
@@ -163,7 +163,7 @@ module Bundler
163
163
  "\nEither installing with `--full-index` or running `bundle update #{spec.name}` should fix the problem."
164
164
  end
165
165
 
166
- def pretty_dependency(dep, print_source = false)
166
+ def pretty_dependency(dep)
167
167
  msg = String.new(dep.name)
168
168
  msg << " (#{dep.requirement})" unless dep.requirement == Gem::Requirement.default
169
169
 
@@ -172,7 +172,6 @@ module Bundler
172
172
  msg << " " << platform_string if !platform_string.empty? && platform_string != Gem::Platform::RUBY
173
173
  end
174
174
 
175
- msg << " from the `#{dep.source}` source" if print_source && dep.source
176
175
  msg
177
176
  end
178
177
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.3.23".freeze
4
+ VERSION = "2.3.25".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
@@ -41,7 +41,6 @@ module Bundler
41
41
 
42
42
  autoload :Definition, File.expand_path("bundler/definition", __dir__)
43
43
  autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
44
- autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
45
44
  autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
46
45
  autoload :Digest, File.expand_path("bundler/digest", __dir__)
47
46
  autoload :Dsl, File.expand_path("bundler/dsl", __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.3.23
4
+ version: 2.3.25
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-10-05 00:00:00.000000000 Z
25
+ date: 2022-11-02 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
@@ -80,7 +80,6 @@ files:
80
80
  - lib/bundler/constants.rb
81
81
  - lib/bundler/current_ruby.rb
82
82
  - lib/bundler/definition.rb
83
- - lib/bundler/dep_proxy.rb
84
83
  - lib/bundler/dependency.rb
85
84
  - lib/bundler/deployment.rb
86
85
  - lib/bundler/deprecate.rb
@@ -380,7 +379,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
380
379
  - !ruby/object:Gem::Version
381
380
  version: 2.5.2
382
381
  requirements: []
383
- rubygems_version: 3.3.23
382
+ rubygems_version: 3.3.25
384
383
  signing_key:
385
384
  specification_version: 4
386
385
  summary: The best way to manage your application's dependencies
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bundler
4
- class DepProxy
5
- attr_reader :__platform, :dep
6
-
7
- @proxies = {}
8
-
9
- def self.get_proxy(dep, platform)
10
- @proxies[[dep, platform]] ||= new(dep, platform).freeze
11
- end
12
-
13
- def initialize(dep, platform)
14
- @dep = dep
15
- @__platform = platform
16
- end
17
-
18
- private_class_method :new
19
-
20
- alias_method :eql?, :==
21
-
22
- def type
23
- @dep.type
24
- end
25
-
26
- def name
27
- @dep.name
28
- end
29
-
30
- def requirement
31
- @dep.requirement
32
- end
33
-
34
- def to_s
35
- s = name.dup
36
- s << " (#{requirement})" unless requirement == Gem::Requirement.default
37
- s << " #{__platform}" unless __platform == Gem::Platform::RUBY
38
- s
39
- end
40
-
41
- def dup
42
- raise NoMethodError.new("DepProxy cannot be duplicated")
43
- end
44
-
45
- def clone
46
- raise NoMethodError.new("DepProxy cannot be cloned")
47
- end
48
-
49
- private
50
-
51
- def method_missing(*args, &blk)
52
- @dep.send(*args, &blk)
53
- end
54
- end
55
- end