Issue #28783: Embedded and nuget packages incorrect reference missing bdist_wininst command.

This commit is contained in:
Steve Dower 2016-11-23 10:23:47 -08:00
parent dab0584738
commit f0888cd734
2 changed files with 47 additions and 3 deletions

View File

@ -0,0 +1,32 @@
"""distutils.command
Package containing implementation of all the standard Distutils
commands."""
__all__ = ['build',
'build_py',
'build_ext',
'build_clib',
'build_scripts',
'clean',
'install',
'install_lib',
'install_headers',
'install_scripts',
'install_data',
'sdist',
'register',
'bdist',
'bdist_dumb',
'bdist_rpm',
# This command is not included in this package
#'bdist_wininst',
'check',
'upload',
# These two are reserved for future use:
#'bdist_sdux',
#'bdist_pkgtool',
# Note:
# bdist_packager is not included because it only provides
# an abstract base class
]

View File

@ -7,6 +7,7 @@ import stat
import os import os
import tempfile import tempfile
from itertools import chain
from pathlib import Path from pathlib import Path
from zipfile import ZipFile, ZIP_DEFLATED from zipfile import ZipFile, ZIP_DEFLATED
import subprocess import subprocess
@ -74,6 +75,10 @@ def include_in_lib(p):
if name in EXCLUDE_FILE_FROM_LIBRARY: if name in EXCLUDE_FILE_FROM_LIBRARY:
return False return False
# Special code is included below to patch this file back in
if [d.lower() for d in p.parts[-3:]] == ['distutils', 'command', '__init__.py']:
return False
suffix = p.suffix.lower() suffix = p.suffix.lower()
return suffix not in {'.pyc', '.pyo', '.exe'} return suffix not in {'.pyc', '.pyo', '.exe'}
@ -203,10 +208,17 @@ def main():
try: try:
for t, s, p, c in layout: for t, s, p, c in layout:
if s == '$build': if s == '$build':
s = build fs = build
else: else:
s = source / s fs = source / s
copied = copy_to_layout(temp / t.rstrip('/'), rglob(s, p, c)) files = rglob(fs, p, c)
extra_files = []
if s == 'Lib' and p == '**/*':
extra_files.append((
source / 'tools' / 'msi' / 'distutils.command.__init__.py',
Path('distutils') / 'command' / '__init__.py'
))
copied = copy_to_layout(temp / t.rstrip('/'), chain(files, extra_files))
print('Copied {} files'.format(copied)) print('Copied {} files'.format(copied))
with open(str(temp / 'pyvenv.cfg'), 'w') as f: with open(str(temp / 'pyvenv.cfg'), 'w') as f: