diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2022-07-03 20:10:33 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2022-07-03 20:17:54 -0400 |
commit | cd62fb6f7c4fc9df6407a0edb23231e39a7954ed (patch) | |
tree | 2cf2e8594e0f94026409732227eafd5d58cfad9f /setuptools/_distutils/command/_framework_compat.py | |
parent | 120d9270c50a07caad0c697ca1f4b865226dde99 (diff) | |
parent | 152c13de811b302dcc673f6ed4c595cd29fd671d (diff) | |
download | python-setuptools-git-cd62fb6f7c4fc9df6407a0edb23231e39a7954ed.tar.gz |
Merge with pypa/distutils@152c13d
Diffstat (limited to 'setuptools/_distutils/command/_framework_compat.py')
-rw-r--r-- | setuptools/_distutils/command/_framework_compat.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/setuptools/_distutils/command/_framework_compat.py b/setuptools/_distutils/command/_framework_compat.py new file mode 100644 index 00000000..e032603a --- /dev/null +++ b/setuptools/_distutils/command/_framework_compat.py @@ -0,0 +1,52 @@ +""" +Backward compatibility for homebrew builds on macOS. +""" + + +import sys +import os +import functools +import subprocess + + +@functools.lru_cache() +def enabled(): + """ + Only enabled for Python 3.9 framework builds except ensurepip and venv. + """ + PY39 = (3, 9) < sys.version_info < (3, 10) + framework = sys.platform == 'darwin' and sys._framework + venv = sys.prefix != sys.base_prefix + ensurepip = os.environ.get("ENSUREPIP_OPTIONS") + return PY39 and framework and not venv and not ensurepip + + +schemes = dict( + osx_framework_library=dict( + stdlib='{installed_base}/{platlibdir}/python{py_version_short}', + platstdlib='{platbase}/{platlibdir}/python{py_version_short}', + purelib='{homebrew_prefix}/lib/python{py_version_short}/site-packages', + platlib='{homebrew_prefix}/{platlibdir}/python{py_version_short}/site-packages', + include='{installed_base}/include/python{py_version_short}{abiflags}', + platinclude='{installed_platbase}/include/python{py_version_short}{abiflags}', + scripts='{homebrew_prefix}/bin', + data='{homebrew_prefix}', + ) +) + + +@functools.lru_cache() +def vars(): + if not enabled(): + return {} + homebrew_prefix = subprocess.check_output(['brew', '--prefix'], text=True).strip() + return locals() + + +def scheme(name): + """ + Override the selected scheme for posix_prefix. + """ + if not enabled() or not name.endswith('_prefix'): + return name + return 'osx_framework_library' |