diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-07-04 16:55:06 +0200 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-07-05 14:12:48 +0200 |
commit | 81ac8ab1f8d82ef3c2f085ccfa65f8a73e659157 (patch) | |
tree | e71f0c204e7c716df176b2d6d1172ff81383dd12 | |
parent | 0a201f40bc1a8276e529d60812f59a21b0b99138 (diff) | |
download | bundler-seg-bundler-2-specific-platform.tar.gz |
[Definition] Only sort platforms once in expand_dependenciesseg-bundler-2-specific-platform
-rw-r--r-- | lib/bundler/definition.rb | 5 | ||||
-rw-r--r-- | lib/bundler/dependency.rb | 12 |
2 files changed, 8 insertions, 9 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index faff2a0435..bf0316b8d8 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -847,11 +847,12 @@ module Bundler end def expand_dependencies(dependencies, remote = false) + sorted_platforms = Resolver.sort_platforms(@platforms) deps = [] dependencies.each do |dep| dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name) next if !remote && !dep.current_platform? - platforms = dep.gem_platforms(@platforms) + platforms = dep.gem_platforms(sorted_platforms) if platforms.empty? mapped_platforms = dep.platforms.map {|p| Dependency::PLATFORM_MAP[p] } Bundler.ui.warn \ @@ -861,7 +862,7 @@ module Bundler "To add those platforms to the bundle, " \ "run `bundle lock --add-platform #{mapped_platforms.join " "}`." end - Resolver.sort_platforms(platforms).each do |p| + platforms.each do |p| deps << DepProxy.new(dep, p) if remote || p == generic_local_platform end end diff --git a/lib/bundler/dependency.rb b/lib/bundler/dependency.rb index d2bac66cdb..5f1371dd62 100644 --- a/lib/bundler/dependency.rb +++ b/lib/bundler/dependency.rb @@ -90,16 +90,14 @@ module Bundler @autorequire = Array(options["require"] || []) if options.key?("require") end + # Returns the platforms this dependency is valid for, in the same order as + # passed in the `valid_platforms` parameter def gem_platforms(valid_platforms) return valid_platforms if @platforms.empty? - platforms = [] - @platforms.each do |p| - platform = PLATFORM_MAP[p] - next unless valid_platforms.include?(platform) - platforms |= [platform] - end - platforms + @gem_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.uniq + + valid_platforms & @gem_platforms end def should_include? |