Skip to content

Commit

Permalink
Refactor platform matching on Linux
Browse files Browse the repository at this point in the history
I think this highlights better how musl is special.
  • Loading branch information
deivid-rodriguez committed Sep 29, 2022
1 parent 087c7de commit 4075771
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
13 changes: 12 additions & 1 deletion bundler/lib/bundler/rubygems_ext.rb
Expand Up @@ -261,10 +261,21 @@ def ===(other)
# version
(
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
(@os == "linux" && (other.version == "gnu#{@version}" || other.version == "musl#{@version}" || @version == "gnu#{other.version}")) ||
(@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || other.version == "musl#{@version}")) ||
@version == other.version
)
end

# This is a copy of RubyGems 3.3.23 or higher `normalized_linux_method`.
# Once only 3.3.23 is supported, we can use the method in RubyGems.
def normalized_linux_version_ext
return nil unless @version

without_gnu = @version.sub(/\Agnu/, "")
return nil if without_gnu.empty?

without_gnu
end
end
end

Expand Down
11 changes: 10 additions & 1 deletion lib/rubygems/platform.rb
Expand Up @@ -181,11 +181,20 @@ def ===(other)
# version
(
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
(@os == "linux" && (other.version == "gnu#{@version}" || other.version == "musl#{@version}" || @version == "gnu#{other.version}")) ||
(@os == "linux" && (normalized_linux_version == other.normalized_linux_version || other.version == "musl#{@version}")) ||
@version == other.version
)
end

def normalized_linux_version
return nil unless @version

without_gnu = @version.sub(/\Agnu/, "")
return nil if without_gnu.empty?

without_gnu
end

##
# Does +other+ match this platform? If +other+ is a String it will be
# converted to a Gem::Platform first. See #=== for matching rules.
Expand Down

0 comments on commit 4075771

Please sign in to comment.