Skip to content

Commit fe090c7

Browse files
committed
Fix environment.
1 parent 0afd14b commit fe090c7

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

setup.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
# We have special handling for _winreg so our setup3.py script can avoid
7878
# using the 'imports' fixer and therefore start much faster...
7979
import winreg
80+
import shutil
8081

8182
# The rest of our imports.
8283
from setuptools import setup
@@ -100,6 +101,7 @@
100101
from distutils.filelist import FileList
101102
import distutils.util
102103
import distutils.file_util
104+
import subprocess
103105

104106
# prevent the new in 3.5 suffix of "cpXX-win32" from being added.
105107
# (adjusting both .cp35-win_amd64.pyd and .cp35-win32.pyd to .pyd)
@@ -441,13 +443,16 @@ class build_scintilla(Command):
441443
def initialize_options(self):
442444
self.debug = False
443445
self.build_temp = None
446+
self.build_lib = None
444447

445448
sdk_path = 'C:\\Program Files\\Microsoft SDKs\\Windows'
446449
windows_sdk = next(reversed(sorted(os.listdir(sdk_path), key=LooseVersion)))
447450
self.sdk_dir = os.path.join(sdk_path, windows_sdk)
448451

449452
def finalize_options(self):
450-
self.set_undefined_options('build', ('build_temp', 'build_temp'))
453+
self.set_undefined_options('build',
454+
('build_temp', 'build_temp'),
455+
('build_lib', 'build_lib'))
451456

452457
def _build_scintilla(self):
453458
path = 'pythonwin\\Scintilla'
@@ -483,10 +488,12 @@ def _build_scintilla(self):
483488
cwd = os.getcwd()
484489
os.chdir(path)
485490
try:
486-
setenv_cmd = [os.path.join(self.sdk_dir, "Bin", "SetEnv.cmd")]
487-
nmake_cmd = ["nmake.exe", "/nologo", "/f", makefile] + makeargs
488-
cmd = ["cmd.exe", "/c", '"{}" && "{}"'.format(' '.join(setenv_cmd), ' '.join(nmake_cmd))]
489-
self.spawn(cmd)
491+
import cmdvars
492+
env = cmdvars.get_vars(os.path.join(self.sdk_dir, "Bin", "SetEnv.cmd"))
493+
nmake = shutil.which('nmake.exe', path=env['path'])
494+
proc = subprocess.Popen([nmake, "/nologo", "/f", makefile] + makeargs, env=env)
495+
outs, errs = proc.communicate()
496+
print(outs, errs)
490497
finally:
491498
os.chdir(cwd)
492499

@@ -1794,7 +1801,7 @@ def convert_optional_data_files(files):
17941801
package_dir=package_dir,
17951802
packages=packages,
17961803
py_modules=py_modules,
1797-
setup_requires=['setuptools>=24.0'],
1804+
setup_requires=['setuptools>=24.0', 'cmdvars'],
17981805

17991806
data_files=[('', (os.path.join(gettempdir(), 'pywin32.version.txt'),))] +
18001807
convert_optional_data_files([

tests/requirements-tools.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@ pycmd # Contains 'py.cleanup' that removes all .pyc files and similar.
2424
codecov
2525
pytest-cov
2626
packaging
27+
cmdvars

0 commit comments

Comments
 (0)