From fceb4120fc4dc4872255206c82f33fd39deb2615 Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Tue, 28 Jun 2011 20:04:24 -0700 Subject: [PATCH] Issue #9516: Port the revised deployment target processing for OSX from distutils to packaging. --- Lib/packaging/util.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Lib/packaging/util.py b/Lib/packaging/util.py index 4dff547a83..76db89a9a6 100644 --- a/Lib/packaging/util.py +++ b/Lib/packaging/util.py @@ -757,6 +757,9 @@ def split_leading_dir(path): else: return path, '' +if sys.platform == 'darwin': + _cfg_target = None + _cfg_target_split = None def spawn(cmd, search_path=True, verbose=0, dry_run=False, env=None): """Run another program specified as a command list 'cmd' in a new process. @@ -781,6 +784,26 @@ def spawn(cmd, search_path=True, verbose=0, dry_run=False, env=None): if dry_run: logging.debug('dry run, no process actually spawned') return + if sys.platform == 'darwin': + global _cfg_target, _cfg_target_split + if _cfg_target is None: + _cfg_target = sysconfig.get_config_var( + 'MACOSX_DEPLOYMENT_TARGET') or '' + if _cfg_target: + _cfg_target_split = [int(x) for x in _cfg_target.split('.')] + if _cfg_target: + # ensure that the deployment target of build process is not less + # than that used when the interpreter was built. This ensures + # extension modules are built with correct compatibility values + env = env or os.environ + cur_target = env.get('MACOSX_DEPLOYMENT_TARGET', _cfg_target) + if _cfg_target_split > [int(x) for x in cur_target.split('.')]: + my_msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: ' + 'now "%s" but "%s" during configure' + % (cur_target, _cfg_target)) + raise PackagingPlatformError(my_msg) + env = dict(env, MACOSX_DEPLOYMENT_TARGET=cur_target) + exit_status = subprocess.call(cmd, env=env) if exit_status != 0: msg = "command %r failed with exit status %d" -- 2.50.1