diff options
author | Tarek Ziade <tarek@ziade.org> | 2011-05-22 19:21:44 (GMT) |
---|---|---|
committer | Tarek Ziade <tarek@ziade.org> | 2011-05-22 19:21:44 (GMT) |
commit | 2bc55e482e25587822816c3ccfc30bf66fd3f1a3 (patch) | |
tree | a0a75e635f82f97d9ed5a463f5989c873ed679f6 | |
parent | 1e045b183104df770e232e756986bf301c87e9ce (diff) | |
download | cpython-2bc55e482e25587822816c3ccfc30bf66fd3f1a3.zip cpython-2bc55e482e25587822816c3ccfc30bf66fd3f1a3.tar.gz cpython-2bc55e482e25587822816c3ccfc30bf66fd3f1a3.tar.bz2 |
Issue 10126 - backported distutils fix for the enable-share mode into packaging
-rw-r--r-- | Lib/packaging/command/build_ext.py | 6 | ||||
-rw-r--r-- | Lib/packaging/compiler/__init__.py | 6 | ||||
-rw-r--r-- | Lib/packaging/tests/test_command_build_ext.py | 25 |
3 files changed, 30 insertions, 7 deletions
diff --git a/Lib/packaging/command/build_ext.py b/Lib/packaging/command/build_ext.py index 7803d01..403e5fd 100644 --- a/Lib/packaging/command/build_ext.py +++ b/Lib/packaging/command/build_ext.py @@ -658,9 +658,9 @@ class build_ext(Command): else: if sysconfig.get_config_var('Py_ENABLE_SHARED'): - template = "python%d.%d" - pythonlib = (template % - (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) + pythonlib = 'python{}.{}{}'.format( + sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff, + sys.abiflags) return ext.libraries + [pythonlib] else: return ext.libraries diff --git a/Lib/packaging/compiler/__init__.py b/Lib/packaging/compiler/__init__.py index b25cc73..34315aa 100644 --- a/Lib/packaging/compiler/__init__.py +++ b/Lib/packaging/compiler/__init__.py @@ -16,11 +16,11 @@ set_compiler, show_compilers. import os import sys import re - import sysconfig + from packaging.util import resolve_name from packaging.errors import PackagingPlatformError - +from packaging import logger def customize_compiler(compiler): """Do any platform-specific customization of a CCompiler instance. @@ -274,7 +274,7 @@ def gen_lib_options(compiler, library_dirs, runtime_library_dirs, libraries): if lib_file is not None: lib_opts.append(lib_file) else: - compiler.warn("no library file corresponding to " + logger.warning("no library file corresponding to " "'%s' found (skipping)" % lib) else: lib_opts.append(compiler.library_option(lib)) diff --git a/Lib/packaging/tests/test_command_build_ext.py b/Lib/packaging/tests/test_command_build_ext.py index 9dfa26b..680f5c0 100644 --- a/Lib/packaging/tests/test_command_build_ext.py +++ b/Lib/packaging/tests/test_command_build_ext.py @@ -31,11 +31,31 @@ class BuildExtTestCase(support.TempdirManager, self.tmp_dir = self.mkdtemp() self.sys_path = sys.path, sys.path[:] sys.path.append(self.tmp_dir) - shutil.copy(_get_source_filename(), self.tmp_dir) + filename = _get_source_filename() + shutil.copy(filename, self.tmp_dir) self.old_user_base = site.USER_BASE site.USER_BASE = self.mkdtemp() build_ext.USER_BASE = site.USER_BASE + def _fixup_command(self, cmd): + # When Python was build with --enable-shared, -L. is not good enough + # to find the libpython<blah>.so. This is because regrtest runs it + # under a tempdir, not in the top level where the .so lives. By the + # time we've gotten here, Python's already been chdir'd to the + # tempdir. + # + # To further add to the fun, we can't just add library_dirs to the + # Extension() instance because that doesn't get plumbed through to the + # final compiler command. + if (sysconfig.get_config_var('Py_ENABLE_SHARED') and + not sys.platform.startswith('win')): + runshared = sysconfig.get_config_var('RUNSHARED') + if runshared is None: + cmd.library_dirs = ['.'] + else: + name, equals, value = runshared.partition('=') + cmd.library_dirs = value.split(os.pathsep) + def test_build_ext(self): global ALREADY_TESTED xx_c = os.path.join(self.tmp_dir, 'xxmodule.c') @@ -43,6 +63,8 @@ class BuildExtTestCase(support.TempdirManager, dist = Distribution({'name': 'xx', 'ext_modules': [xx_ext]}) dist.package_dir = self.tmp_dir cmd = build_ext(dist) + self._fixup_command(cmd) + if os.name == "nt": # On Windows, we must build a debug version iff running # a debug build of Python @@ -244,6 +266,7 @@ class BuildExtTestCase(support.TempdirManager, dist = Distribution({'name': 'xx', 'ext_modules': [ext]}) cmd = build_ext(dist) + self._fixup_command(cmd) cmd.ensure_finalized() self.assertEqual(len(cmd.get_outputs()), 1) |