diff options
author | Edouard CHIN <[email protected]> | 2025-01-23 15:58:37 +0100 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2025-01-31 14:34:26 +0900 |
commit | 2ed30c9944aded2ab75943667610a83b1480b3cc (patch) | |
tree | b19dc08e543e6cd0190b3ec3bcd051818b9141de /lib | |
parent | dc7c66510523631e0ca316e9df73f0889666d937 (diff) |
[rubygems/rubygems] Consolidate the platform into a single list:
- Similar change than https://github.com/rubygems/rubygems/commit/29a1be0008e6,
keep a single source of truth where we store the platform.
The only change worth highlighing is the platform "maglev".
It was not part of the supported platform of dependencies,
so calling `gem 'foo', plaftorm: 'maglev'` would not work.
However, it was supposed to according to https://github.com/rubygems/rubygems/commit/45ec86e2e528.
That's why it was possible to do `Bundler.current_ruby.maglev?` or
`Bundler.current_ruby.maglev_30?`.
I didn't change the current behaviour and maglev is not supported,
though I kept the `*maglev` methods as I believe CurrentRuby is
public API.
https://github.com/rubygems/rubygems/commit/29e219ebcf
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bundler/current_ruby.rb | 35 | ||||
-rw-r--r-- | lib/bundler/dependency.rb | 20 | ||||
-rw-r--r-- | lib/bundler/dsl.rb | 2 |
3 files changed, 22 insertions, 35 deletions
diff --git a/lib/bundler/current_ruby.rb b/lib/bundler/current_ruby.rb index a4c87dfd57..9cd08f4d09 100644 --- a/lib/bundler/current_ruby.rb +++ b/lib/bundler/current_ruby.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require_relative "rubygems_ext" + module Bundler # Returns current version of Ruby # @@ -12,20 +14,22 @@ module Bundler ALL_RUBY_VERSIONS = (18..27).to_a.concat((30..35).to_a).freeze KNOWN_MINOR_VERSIONS = ALL_RUBY_VERSIONS.map {|v| v.digits.reverse.join(".") }.freeze KNOWN_MAJOR_VERSIONS = ALL_RUBY_VERSIONS.map {|v| v.digits.last.to_s }.uniq.freeze - - KNOWN_PLATFORMS = %w[ - jruby - maglev - mingw - mri - mswin - mswin64 - rbx - ruby - truffleruby - windows - x64_mingw - ].freeze + PLATFORM_MAP = { + ruby: [Gem::Platform::RUBY, CurrentRuby::ALL_RUBY_VERSIONS], + mri: [Gem::Platform::RUBY, CurrentRuby::ALL_RUBY_VERSIONS], + rbx: [Gem::Platform::RUBY], + truffleruby: [Gem::Platform::RUBY], + jruby: [Gem::Platform::JAVA, [18, 19]], + windows: [Gem::Platform::WINDOWS, CurrentRuby::ALL_RUBY_VERSIONS], + # deprecated + mswin: [Gem::Platform::MSWIN, CurrentRuby::ALL_RUBY_VERSIONS], + mswin64: [Gem::Platform::MSWIN64, CurrentRuby::ALL_RUBY_VERSIONS - [18]], + mingw: [Gem::Platform::MINGW, CurrentRuby::ALL_RUBY_VERSIONS], + x64_mingw: [Gem::Platform::X64_MINGW, CurrentRuby::ALL_RUBY_VERSIONS - [18, 19]], + }.each_with_object({}) do |(platform, spec), hash| + hash[platform] = spec[0] + spec[1]&.each {|version| hash[:"#{platform}_#{version}"] = spec[0] } + end.freeze def ruby? return true if Bundler::GemHelpers.generic_local_platform_is_ruby? @@ -67,7 +71,8 @@ module Bundler RUBY_VERSION.start_with?("#{version}.") end - KNOWN_PLATFORMS.each do |platform| + all_platforms = PLATFORM_MAP.keys << "maglev" + all_platforms.each do |platform| define_method(:"#{platform}_#{trimmed_version}?") do send(:"#{platform}?") && send(:"on_#{trimmed_version}?") end diff --git a/lib/bundler/dependency.rb b/lib/bundler/dependency.rb index a134a9f9cc..1e774d167b 100644 --- a/lib/bundler/dependency.rb +++ b/lib/bundler/dependency.rb @@ -2,30 +2,12 @@ require "rubygems/dependency" require_relative "shared_helpers" -require_relative "rubygems_ext" module Bundler class Dependency < Gem::Dependency attr_reader :autorequire attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob - PLATFORM_MAP = { - ruby: [Gem::Platform::RUBY, CurrentRuby::ALL_RUBY_VERSIONS], - mri: [Gem::Platform::RUBY, CurrentRuby::ALL_RUBY_VERSIONS], - rbx: [Gem::Platform::RUBY], - truffleruby: [Gem::Platform::RUBY], - jruby: [Gem::Platform::JAVA, [18, 19]], - windows: [Gem::Platform::WINDOWS, CurrentRuby::ALL_RUBY_VERSIONS], - # deprecated - mswin: [Gem::Platform::MSWIN, CurrentRuby::ALL_RUBY_VERSIONS], - mswin64: [Gem::Platform::MSWIN64, CurrentRuby::ALL_RUBY_VERSIONS - [18]], - mingw: [Gem::Platform::MINGW, CurrentRuby::ALL_RUBY_VERSIONS], - x64_mingw: [Gem::Platform::X64_MINGW, CurrentRuby::ALL_RUBY_VERSIONS - [18, 19]], - }.each_with_object({}) do |(platform, spec), hash| - hash[platform] = spec[0] - spec[1]&.each {|version| hash[:"#{platform}_#{version}"] = spec[0] } - end.freeze - def initialize(name, version, options = {}, &blk) type = options["type"] || :runtime super(name, version, type) @@ -60,7 +42,7 @@ module Bundler end def expanded_platforms - @expanded_platforms ||= @platforms.filter_map {|pl| PLATFORM_MAP[pl] }.flatten.uniq + @expanded_platforms ||= @platforms.filter_map {|pl| CurrentRuby::PLATFORM_MAP[pl] }.flatten.uniq end def should_include? diff --git a/lib/bundler/dsl.rb b/lib/bundler/dsl.rb index 05c60f2f1a..08fdacb991 100644 --- a/lib/bundler/dsl.rb +++ b/lib/bundler/dsl.rb @@ -13,7 +13,7 @@ module Bundler builder.to_definition(lockfile, unlock) end - VALID_PLATFORMS = Bundler::Dependency::PLATFORM_MAP.keys.freeze + VALID_PLATFORMS = Bundler::CurrentRuby::PLATFORM_MAP.keys.freeze VALID_KEYS = %w[group groups git path glob name branch ref tag require submodules platform platforms type source install_if gemfile force_ruby_platform].freeze |