Skip to content
This repository was archived by the owner on Dec 16, 2024. It is now read-only.

Commit 3d280d1

Browse files
committed
build, ci: fix build of Python 3.5 on Windows and AppVeyor
1 parent 3a36be6 commit 3d280d1

File tree

3 files changed

+87
-26
lines changed

3 files changed

+87
-26
lines changed

appveyor.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ environment:
3030
PYTHON_VERSION: "3.4.x" # currently 3.4.3
3131
PYTHON_ARCH: "64"
3232

33+
- PYTHON: "C:\\Python35"
34+
PYTHON_VERSION: "3.5.x" # currently 3.5.1
35+
PYTHON_ARCH: "32"
36+
37+
- PYTHON: "C:\\Python35-x64"
38+
PYTHON_VERSION: "3.5.x" # currently 3.5.1
39+
PYTHON_ARCH: "64"
40+
3341
install:
3442
- ECHO "Filesystem root:"
3543
- ps: "ls \"C:/\""

appveyor/run_with_env.cmd

Lines changed: 66 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of:
77
:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0)
88
::
9-
:: 32 bit builds do not require specific environment configurations.
9+
:: 32 bit builds, and 64-bit builds for 3.5 and beyond, do not require specific
10+
:: environment configurations.
1011
::
1112
:: Note: this script needs to be run with the /E:ON and /V:ON flags for the
1213
:: cmd interpreter, at least for (SDK v7.0)
@@ -17,35 +18,78 @@
1718
::
1819
:: Author: Olivier Grisel
1920
:: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
21+
::
22+
:: Notes about batch files for Python people:
23+
::
24+
:: Quotes in values are literally part of the values:
25+
:: SET FOO="bar"
26+
:: FOO is now five characters long: " b a r "
27+
:: If you don't want quotes, don't include them on the right-hand side.
28+
::
2029
@ECHO OFF
2130

2231
SET COMMAND_TO_RUN=%*
2332
SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows
33+
SET WIN_WDK=c:\Program Files (x86)\Windows Kits\10\Include\wdf
34+
35+
:: Extract the major and minor versions, and allow for the minor version to be
36+
:: more than 9. This requires the version number to have two dots in it.
37+
SET MAJOR_PYTHON_VERSION=%PYTHON_VERSION:~0,1%
38+
IF "%PYTHON_VERSION:~3,1%" == "." (
39+
SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,1%
40+
) ELSE (
41+
SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,2%
42+
)
2443

25-
SET MAJOR_PYTHON_VERSION="%PYTHON_VERSION:~0,1%"
26-
IF %MAJOR_PYTHON_VERSION% == "2" (
44+
:: Based on the Python version, determine what SDK version to use, and whether
45+
:: to set the SDK for 64-bit.
46+
IF %MAJOR_PYTHON_VERSION% == 2 (
2747
SET WINDOWS_SDK_VERSION="v7.0"
28-
) ELSE IF %MAJOR_PYTHON_VERSION% == "3" (
29-
SET WINDOWS_SDK_VERSION="v7.1"
48+
SET USE_SDK=Y
3049
) ELSE (
31-
ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
32-
EXIT 1
50+
IF %MAJOR_PYTHON_VERSION% == 3 (
51+
SET WINDOWS_SDK_VERSION="v7.1"
52+
IF %MINOR_PYTHON_VERSION% LEQ 4 (
53+
SET USE_SDK=Y
54+
) ELSE (
55+
SET USE_SDK=N
56+
IF EXIST "%WIN_WDK%" (
57+
:: See: https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
58+
REN "%WIN_WDK%" 0wdf
59+
)
60+
)
61+
) ELSE (
62+
ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
63+
EXIT 1
64+
)
3365
)
3466

35-
IF "%PYTHON_ARCH%"=="64" (
36-
ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture
37-
SET DISTUTILS_USE_SDK=1
38-
SET MSSdk=1
39-
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
40-
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
41-
ECHO Executing: %COMMAND_TO_RUN%
42-
call %COMMAND_TO_RUN% || EXIT 1
67+
IF %PYTHON_ARCH% == 64 (
68+
IF %USE_SDK% == Y (
69+
ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture
70+
SET DISTUTILS_USE_SDK=1
71+
SET MSSdk=1
72+
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
73+
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
74+
ECHO Executing: %COMMAND_TO_RUN%
75+
call %COMMAND_TO_RUN% || EXIT 1
76+
) ELSE (
77+
ECHO Using default MSVC build environment for 64 bit architecture
78+
ECHO Executing: %COMMAND_TO_RUN%
79+
call %COMMAND_TO_RUN% || EXIT 1
80+
)
4381
) ELSE (
44-
ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 32 bit architecture
45-
SET DISTUTILS_USE_SDK=1
46-
SET MSSdk=1
47-
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
48-
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x86 /release
49-
ECHO Executing: %COMMAND_TO_RUN%
50-
call %COMMAND_TO_RUN% || EXIT 1
82+
IF %USE_SDK% == Y (
83+
ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 32 bit architecture
84+
SET DISTUTILS_USE_SDK=1
85+
SET MSSdk=1
86+
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
87+
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x86 /release
88+
ECHO Executing: %COMMAND_TO_RUN%
89+
call %COMMAND_TO_RUN% || EXIT 1
90+
) ELSE (
91+
ECHO Using default MSVC build environment for 32 bit architecture
92+
ECHO Executing: %COMMAND_TO_RUN%
93+
call %COMMAND_TO_RUN% || EXIT 1
94+
)
5195
)

setup_libuv.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,23 @@ def exec_process(cmdline, silent=True, input=None, **kwargs):
6363

6464

6565
def prepare_windows_env(env):
66-
env.pop('VS140COMNTOOLS', None)
66+
# MSVC 2012 and 2013 where not used in any version
6767
env.pop('VS120COMNTOOLS', None)
6868
env.pop('VS110COMNTOOLS', None)
69-
if sys.version_info < (3, 3):
69+
if sys.version_info >= (3, 5):
70+
# MSVC 2015
7071
env.pop('VS100COMNTOOLS', None)
71-
env['GYP_MSVS_VERSION'] = '2008'
72-
else:
72+
env.pop('VS90COMNTOOLS', None)
73+
env['GYP_MSVS_VERSION'] = '2015'
74+
elif sys.version_info >= (3, 3):
75+
# MSVC 2010
76+
env.pop('VS140COMNTOOLS', None)
77+
env.pop('VS90COMNTOOLS', None)
7378
env['GYP_MSVS_VERSION'] = '2010'
79+
else:
80+
env.pop('VS140COMNTOOLS', None)
81+
env.pop('VS100COMNTOOLS', None)
82+
env['GYP_MSVS_VERSION'] = '2008'
7483

7584
if not env.get('PYTHON', '').endswith('.exe'):
7685
env.pop('PYTHON', None)

0 commit comments

Comments
 (0)