summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-07-04 16:55:06 +0200
committerSamuel Giddins <segiddins@segiddins.me>2017-07-05 14:12:48 +0200
commit81ac8ab1f8d82ef3c2f085ccfa65f8a73e659157 (patch)
treee71f0c204e7c716df176b2d6d1172ff81383dd12
parent0a201f40bc1a8276e529d60812f59a21b0b99138 (diff)
downloadbundler-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.rb5
-rw-r--r--lib/bundler/dependency.rb12
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?