Merge pull request #6168 from zbeekman/accelerate-vs-veclibfort-lapack

Allow Accelerate linkage, deny veclibfort & lapack
This commit is contained in:
Mike McQuaid 2019-05-24 09:32:00 +02:00 committed by GitHub
commit 68068875c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 23 deletions

View File

@ -48,28 +48,6 @@ module FormulaCellarChecks
EOS
end
def check_accelerate_framework_links
return unless @core_tap
return unless formula.prefix.directory?
return if formula.name == "veclibfort" # veclibfort exists to wrap accelerate
keg = Keg.new(formula.prefix)
system_accelerate = keg.mach_o_files.select do |obj|
dlls = obj.dynamically_linked_libraries
dlls.any? { |dll| %r{^/System/Library/Frameworks/Accelerate.framework}.match dll }
end
return if system_accelerate.empty?
<<~EOS
object files were linked against system Accelerate
These object files were linked against the outdated system Accelerate framework.
Core tap formulae should link against OpenBLAS instead.
Removing `depends_on "veclibfort" and/or adding `depends_on "openblas"` to the
formula may help.
#{system_accelerate * "\n "}
EOS
end
def check_python_framework_links(lib)
python_modules = Pathname.glob lib/"python*/site-packages/**/*.so"
framework_links = python_modules.select do |obj|
@ -117,7 +95,6 @@ module FormulaCellarChecks
generic_audit_installed
problem_if_output(check_shadowed_headers)
problem_if_output(check_openssl_links)
problem_if_output(check_accelerate_framework_links)
problem_if_output(check_python_framework_links(formula.lib))
check_linkage
end

View File

@ -16,6 +16,10 @@ module RuboCop
problem "Formulae should not depend on both OpenSSL and LibreSSL (even optionally)."
end
if depends_on?("veclibfort") || depends_on?("lapack")
problem "Formulae should use OpenBLAS as the default serial linear algebra library."
end
if method_called_ever?(body_node, :virtualenv_create) ||
method_called_ever?(body_node, :virtualenv_install_with_resources)
find_method_with_args(body_node, :resource, "setuptools") do