FormulaInstaller: split up big method

This commit is contained in:
Jack Nagel 2013-06-03 22:50:11 -05:00
parent d38b369497
commit 0b4316fbd4

View File

@ -140,49 +140,46 @@ class FormulaInstaller
end end
end end
def effective_deps # Dependencies of f that were also explicitly requested on the command line.
@deps ||= begin # These honor options like --HEAD and --devel.
deps = Set.new def requested_deps
f.recursive_dependencies.select { |dep| dep.requested? && !dep.installed? }
end
# If a dep was also requested on the command line, we let it honor # All dependencies that we must install before installing f.
# any influential flags (--HEAD, --devel, etc.) the user has passed # These do not honor flags like --HEAD and --devel.
# when we check the installed status. def necessary_deps
requested_deps = f.recursive_dependencies.select do |dep| ARGV.filter_for_dependencies do
dep.requested? && !dep.installed? f.recursive_dependencies do |dependent, dep|
end if dep.optional? || dep.recommended?
Dependency.prune unless dependent.build.with?(dep.name)
elsif dep.build?
Dependency.prune if install_bottle?(dependent)
end
# Otherwise, we filter these influential flags so that they do not if f.build.universal?
# affect installation prefixes and other properties when we decide dep.universal! unless dep.build?
# whether or not the dep is needed. end
necessary_deps = ARGV.filter_for_dependencies do
f.recursive_dependencies do |dependent, dep|
if dep.optional? || dep.recommended?
Dependency.prune unless dependent.build.with?(dep.name)
elsif dep.build?
Dependency.prune if install_bottle?(dependent)
end
if f.build.universal? if dep.satisfied?
dep.universal! unless dep.build? Dependency.prune
end elsif dep.installed?
raise UnsatisfiedDependencyError.new(f, dep)
if dep.satisfied?
Dependency.prune
elsif dep.installed?
raise UnsatisfiedDependencyError.new(f, dep)
end
end end
end end
deps.merge(requested_deps)
deps.merge(necessary_deps)
# Now that we've determined which deps we need, map them back
# onto recursive_dependencies to preserve installation order
f.recursive_dependencies.select { |d| deps.include? d }
end end
end end
# Combine requested_deps and necessary deps.
def filter_deps
deps = Set.new.merge(requested_deps).merge(necessary_deps)
f.recursive_dependencies.select { |d| deps.include? d }
end
def effective_deps
@effective_deps ||= filter_deps
end
def install_dependencies def install_dependencies
effective_deps.each do |dep| effective_deps.each do |dep|
if dep.requested? if dep.requested?