Kaydet (Commit) 1a765f5d authored tarafından Éric Araujo's avatar Éric Araujo

Synchronize packaging.tests.support with distutils2

üst 6e1f564e
...@@ -56,8 +56,9 @@ __all__ = [ ...@@ -56,8 +56,9 @@ __all__ = [
# misc. functions and decorators # misc. functions and decorators
'fake_dec', 'create_distribution', 'use_command', 'fake_dec', 'create_distribution', 'use_command',
'copy_xxmodule_c', 'fixup_build_ext', 'copy_xxmodule_c', 'fixup_build_ext',
'skip_2to3_optimize',
# imported from this module for backport purposes # imported from this module for backport purposes
'unittest', 'requires_zlib', 'skip_2to3_optimize', 'skip_unless_symlink', 'unittest', 'requires_zlib', 'skip_unless_symlink',
] ]
...@@ -332,22 +333,18 @@ def copy_xxmodule_c(directory): ...@@ -332,22 +333,18 @@ def copy_xxmodule_c(directory):
""" """
filename = _get_xxmodule_path() filename = _get_xxmodule_path()
if filename is None: if filename is None:
raise unittest.SkipTest('cannot find xxmodule.c (test must run in ' raise unittest.SkipTest('cannot find xxmodule.c')
'the python build dir)')
shutil.copy(filename, directory) shutil.copy(filename, directory)
def _get_xxmodule_path(): def _get_xxmodule_path():
srcdir = sysconfig.get_config_var('srcdir') if sysconfig.is_python_build():
candidates = [ srcdir = sysconfig.get_config_var('projectbase')
# use installed copy if available path = os.path.join(os.getcwd(), srcdir, 'Modules', 'xxmodule.c')
os.path.join(os.path.dirname(__file__), 'xxmodule.c'), else:
# otherwise try using copy from build directory os.path.join(os.path.dirname(__file__), 'xxmodule.c')
os.path.join(srcdir, 'Modules', 'xxmodule.c'), if os.path.exists(path):
] return path
for path in candidates:
if os.path.exists(path):
return path
def fixup_build_ext(cmd): def fixup_build_ext(cmd):
...@@ -355,20 +352,21 @@ def fixup_build_ext(cmd): ...@@ -355,20 +352,21 @@ def fixup_build_ext(cmd):
When Python was built with --enable-shared on Unix, -L. is not enough to When Python was built with --enable-shared on Unix, -L. is not enough to
find libpython<blah>.so, because regrtest runs in a tempdir, not in the find libpython<blah>.so, because regrtest runs in a tempdir, not in the
source directory where the .so lives. source directory where the .so lives. (Mac OS X embeds absolute paths
to shared libraries into executables, so the fixup is a no-op on that
platform.)
When Python was built with in debug mode on Windows, build_ext commands When Python was built with in debug mode on Windows, build_ext commands
need their debug attribute set, and it is not done automatically for need their debug attribute set, and it is not done automatically for
some reason. some reason.
This function handles both of these things. Example use: This function handles both of these things, and also fixes
cmd.distribution.include_dirs if the running Python is an uninstalled
build. Example use:
cmd = build_ext(dist) cmd = build_ext(dist)
support.fixup_build_ext(cmd) support.fixup_build_ext(cmd)
cmd.ensure_finalized() cmd.ensure_finalized()
Unlike most other Unix platforms, Mac OS X embeds absolute paths
to shared libraries into executables, so the fixup is not needed there.
""" """
if os.name == 'nt': if os.name == 'nt':
cmd.debug = sys.executable.endswith('_d.exe') cmd.debug = sys.executable.endswith('_d.exe')
...@@ -386,12 +384,17 @@ def fixup_build_ext(cmd): ...@@ -386,12 +384,17 @@ def fixup_build_ext(cmd):
name, equals, value = runshared.partition('=') name, equals, value = runshared.partition('=')
cmd.library_dirs = value.split(os.pathsep) cmd.library_dirs = value.split(os.pathsep)
# Allow tests to run with an uninstalled Python
if sysconfig.is_python_build():
pysrcdir = sysconfig.get_config_var('projectbase')
cmd.distribution.include_dirs.append(os.path.join(pysrcdir, 'Include'))
try: try:
from test.support import skip_unless_symlink from test.support import skip_unless_symlink
except ImportError: except ImportError:
skip_unless_symlink = unittest.skip( skip_unless_symlink = unittest.skip(
'requires test.support.skip_unless_symlink') 'requires test.support.skip_unless_symlink')
skip_2to3_optimize = unittest.skipIf(sys.flags.optimize, skip_2to3_optimize = unittest.skipIf(sys.flags.optimize,
"2to3 doesn't work under -O") "2to3 doesn't work under -O")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment