mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Issue 10126 - backported distutils fix for the enable-share mode into packaging
This commit is contained in:
		
							parent
							
								
									1e045b1831
								
							
						
					
					
						commit
						2bc55e482e
					
				
					 3 changed files with 30 additions and 7 deletions
				
			
		|  | @ -658,9 +658,9 @@ def get_libraries(self, ext): | |||
| 
 | ||||
|         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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ | |||
| 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)) | ||||
|  |  | |||
|  | @ -31,11 +31,31 @@ def setUp(self): | |||
|         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 @@ def test_build_ext(self): | |||
|         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 @@ def test_get_outputs(self): | |||
|         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) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Tarek Ziade
						Tarek Ziade