Skip to content

Commit

Permalink
audit: check for Python-wide site-package usage
Browse files Browse the repository at this point in the history
See #16662

We would like to enforce vendoring for Python libraries,
or the usage of a virtualenv in the formula's libexec directory,
using a virtualenv.
  • Loading branch information
iMichka committed Feb 15, 2024
1 parent 9475258 commit 7abc6c7
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions Library/Homebrew/formula_cellar_checks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,18 @@ def check_easy_install_pth(lib)
EOS
end

def check_global_site_package_usage(lib)
install_found = Dir["#{lib}/python{3}*/site-packages/"].map { |f| File.dirname(f) }
return if install_found.empty?

<<~EOS
Python-wide site-packages usage detected. This is not allowed in Homebrew (see PEP 668).
Please either vendor this Python library or install it in libexec using a virtualenv.
The offending files are:
#{install_found * "site-packages/\n "}
EOS
end

def check_elisp_dirname(share, name)
return unless (share/"emacs/site-lisp").directory?
# Emacs itself can do what it wants
Expand Down Expand Up @@ -397,6 +409,7 @@ def audit_installed
problem_if_output(check_non_executables(formula.sbin))
problem_if_output(check_generic_executables(formula.sbin))
problem_if_output(check_easy_install_pth(formula.lib))
problem_if_output(check_global_site_package_usage(formula.lib))
problem_if_output(check_elisp_dirname(formula.share, formula.name))
problem_if_output(check_elisp_root(formula.share, formula.name))
problem_if_output(check_python_packages(formula.lib, formula.deps))
Expand Down

0 comments on commit 7abc6c7

Please sign in to comment.