You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
56 lines
1.6 KiB
1 year ago
|
"""
|
||
|
Backward compatibility for homebrew builds on macOS.
|
||
|
"""
|
||
|
|
||
|
|
||
|
import sys
|
||
|
import os
|
||
|
import functools
|
||
|
import subprocess
|
||
|
import sysconfig
|
||
|
|
||
|
|
||
|
@functools.lru_cache()
|
||
|
def enabled():
|
||
|
"""
|
||
|
Only enabled for Python 3.9 framework homebrew builds
|
||
|
except ensurepip and venv.
|
||
|
"""
|
||
|
PY39 = (3, 9) < sys.version_info < (3, 10)
|
||
|
framework = sys.platform == 'darwin' and sys._framework
|
||
|
homebrew = "Cellar" in sysconfig.get_config_var('projectbase')
|
||
|
venv = sys.prefix != sys.base_prefix
|
||
|
ensurepip = os.environ.get("ENSUREPIP_OPTIONS")
|
||
|
return PY39 and framework and homebrew 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'
|