Merge pull request #2815 from ilovezfs/runtime-requirements

formula_installer: make unsatisifed recursive build reqs non-fatal for bottles
This commit is contained in:
Mike McQuaid 2017-06-23 17:34:34 +01:00 committed by GitHub
commit f4f1f1a610

View File

@ -409,12 +409,21 @@ class FormulaInstaller
install_bottle_for?(dependent, build) install_bottle_for?(dependent, build)
end end
def runtime_requirements(formula)
runtime_deps = formula.runtime_dependencies.map(&:to_formula)
recursive_requirements = formula.recursive_requirements do |dependent, _|
Requirement.prune unless runtime_deps.include?(dependent)
end
(recursive_requirements.to_a + formula.requirements.to_a).reject(&:build?).uniq
end
def expand_requirements def expand_requirements
unsatisfied_reqs = Hash.new { |h, k| h[k] = [] } unsatisfied_reqs = Hash.new { |h, k| h[k] = [] }
deps = [] deps = []
formulae = [formula] formulae = [formula]
while f = formulae.pop while f = formulae.pop
runtime_requirements = runtime_requirements(f)
f.recursive_requirements do |dependent, req| f.recursive_requirements do |dependent, req|
build = effective_build_options_for(dependent) build = effective_build_options_for(dependent)
@ -429,6 +438,8 @@ class FormulaInstaller
Requirement.prune Requirement.prune
elsif req.satisfied? elsif req.satisfied?
Requirement.prune Requirement.prune
elsif !runtime_requirements.include?(req) && install_bottle_for?(dependent, build)
Requirement.prune
else else
unsatisfied_reqs[dependent] << req unsatisfied_reqs[dependent] << req
end end