summaryrefslogtreecommitdiff
path: root/setuptools/_distutils/command/_framework_compat.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2022-07-03 20:10:33 -0400
committerJason R. Coombs <jaraco@jaraco.com>2022-07-03 20:17:54 -0400
commitcd62fb6f7c4fc9df6407a0edb23231e39a7954ed (patch)
tree2cf2e8594e0f94026409732227eafd5d58cfad9f /setuptools/_distutils/command/_framework_compat.py
parent120d9270c50a07caad0c697ca1f4b865226dde99 (diff)
parent152c13de811b302dcc673f6ed4c595cd29fd671d (diff)
downloadpython-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.py52
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'