diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2022-07-29 22:09:51 +0200 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2022-08-02 16:10:17 +0900 |
commit | 9189c2d5efa94131050df4994c801fb187d7b43d (patch) | |
tree | c2652477092d18b0603cd7900a5c2a8f88c0a8e4 /lib/bundler/lazy_specification.rb | |
parent | 8c98f7be577389f01a90c7a39d693173d432e9e2 (diff) |
[rubygems/rubygems] Materializing for resolution already filters platforms
https://github.com/rubygems/rubygems/commit/9f4ba9ebb0
Diffstat (limited to 'lib/bundler/lazy_specification.rb')
-rw-r--r-- | lib/bundler/lazy_specification.rb | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/lib/bundler/lazy_specification.rb b/lib/bundler/lazy_specification.rb index 05925e3e79..805afba51f 100644 --- a/lib/bundler/lazy_specification.rb +++ b/lib/bundler/lazy_specification.rb @@ -78,24 +78,29 @@ module Bundler def materialize_for_installation source.local! - __materialize__(ruby_platform_materializes_to_ruby_platform? ? platform : Bundler.local_platform) + candidates = if source.is_a?(Source::Path) || !ruby_platform_materializes_to_ruby_platform? + target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : Bundler.local_platform + + source.specs.search(Dependency.new(name, version)).select do |spec| + MatchPlatform.platforms_match?(spec.platform, target_platform) + end + else + source.specs.search(self) + end + + __materialize__(candidates) end def materialize_for_resolution return self unless Gem::Platform.match_spec?(self) - __materialize__(platform) + candidates = source.specs.search(self) + + __materialize__(candidates) end - def __materialize__(platform) + def __materialize__(candidates) @specification = begin - candidates = if source.is_a?(Source::Path) || !ruby_platform_materializes_to_ruby_platform? - source.specs.search(Dependency.new(name, version)).select do |spec| - MatchPlatform.platforms_match?(spec.platform, platform) - end - else - source.specs.search(self) - end search = candidates.reverse.find do |spec| spec.is_a?(StubSpecification) || (spec.required_ruby_version.satisfied_by?(Gem.ruby_version) && |