# HG changeset patch
# User Steve Dower
# Date 1416689697 28800
# Sat Nov 22 12:54:57 2014 -0800
# Node ID f3f2785c5a3b6a18cf34fea85bbe472ac8dd1a4c
# Parent 7d5754af95a99032fbe942f638c91f4c08cf7555
Issue #22919: Windows build updated to support VC 14.0 (Visual Studio 2015), which will be used for the official 3.5 release.
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@
.gdb_history
Doc/build/
Doc/venv/
+Lib/distutils/command/*.pdb
Lib/lib2to3/*.pickle
Lib/test/data/*
Lib/_sysconfigdata.py
@@ -27,23 +28,26 @@
Programs/_testembed
PC/python_nt*.h
PC/pythonnt_rc*.h
-PCbuild/*.bsc
-PCbuild/*.dll
-PCbuild/*.exe
-PCbuild/*.exp
-PCbuild/*.lib
-PCbuild/*.ncb
-PCbuild/*.o
-PCbuild/*.pdb
+PC/*/*.exe
+PC/*/*.exp
+PC/*/*.lib
+PC/*/*.bsc
+PC/*/*.dll
+PC/*/*.pdb
+PC/*/*.user
+PC/*/*.ncb
+PC/*/*.suo
+PC/*/Win32-temp-*
+PC/*/x64-temp-*
+PC/*/amd64
PCbuild/*.user
PCbuild/*.suo
PCbuild/*.*sdf
-PCbuild/Win32-temp-*
-PCbuild/x64-temp-*
PCbuild/*-pgi
PCbuild/*-pgo
PCbuild/amd64/
-PCbuild/ipch
+PCbuild/obj
+PCBuild/win32
.purify
Parser/pgen
__pycache__
@@ -78,3 +82,5 @@
coverage/
externals/
htmlcov/
+Tools/ssl/amd64
+Tools/ssl/win32
diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -50,13 +50,12 @@
*.pyd
*.cover
*~
+Lib/distutils/command/*.pdb
Lib/lib2to3/*.pickle
Lib/test/data/*
Misc/*.wpu
PC/python_nt*.h
PC/pythonnt_rc*.h
-PC/*.obj
-PC/*.exe
PC/*/*.exe
PC/*/*.exp
PC/*/*.lib
@@ -69,23 +68,14 @@
PC/*/Win32-temp-*
PC/*/x64-temp-*
PC/*/amd64
-PCbuild/*.exe
-PCbuild/*.dll
-PCbuild/*.pdb
-PCbuild/*.lib
-PCbuild/*.exp
-PCbuild/*.o
-PCbuild/*.ncb
-PCbuild/*.bsc
PCbuild/*.user
PCbuild/*.suo
PCbuild/*.*sdf
-PCbuild/Win32-temp-*
-PCbuild/x64-temp-*
PCbuild/*-pgi
PCbuild/*-pgo
PCbuild/amd64
-PCbuild/ipch
+PCbuild/obj
+PCbuild/win32
Tools/unicode/build/
Tools/unicode/MAPPINGS/
BuildLog.htm
@@ -100,3 +90,5 @@
*.gcno
*.gcov
coverage.info
+Tools/ssl/amd64
+Tools/ssl/win32
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
--- a/Lib/ctypes/util.py
+++ b/Lib/ctypes/util.py
@@ -19,6 +19,8 @@
i = i + len(prefix)
s, rest = sys.version[i:].split(" ", 1)
majorVersion = int(s[:-2]) - 6
+ if majorVersion >= 13:
+ majorVersion += 1
minorVersion = int(s[2:3]) / 10.0
# I don't think paths are affected by minor version in version 6
if majorVersion == 6:
@@ -36,8 +38,10 @@
return None
if version <= 6:
clibname = 'msvcrt'
+ elif version <= 13:
+ clibname = 'msvcr%d' % (version * 10)
else:
- clibname = 'msvcr%d' % (version * 10)
+ clibname = 'appcrt%d' % (version * 10)
# If python was built with in debug mode
import importlib.machinery
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -209,7 +209,7 @@
if MSVC_VERSION >= 9:
# Use the .lib files for the correct architecture
if self.plat_name == 'win32':
- suffix = ''
+ suffix = 'win32'
else:
# win-amd64 or win-ia64
suffix = self.plat_name[4:]
diff --git a/Lib/distutils/command/wininst-14.0-amd64.exe b/Lib/distutils/command/wininst-14.0-amd64.exe
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9affe13039517798970f5e3a8d9f4d1d13e79464
GIT binary patch
literal 84480
zc%0h^=X%
z;hNQTb=6&WMR!+G*A-obQddY?Xj)!Ni@b=t7TjGY1ht?G1%>&YbMB-s3cAnl`~Bzn
zJbdWQ%$;-ZJ@?%6cF(96z6Z~nKAk+!`pHuiR{uu;ez(w@~g!lSyA6{qh
zY#%;l?tK;63(Ft4xBTw=vrF$@u;2k-_Ut*?<^BcP_btelCr!@2|ABkvT$P@lV%Mv9
zQXP8x)}TKn@t5|gFLgWoPQCoylx=jsFm)6CKA0Mz-$kj-@H=?X2PrM|`=^vG^t&Nt
z6V>5MDS_WF{_$vPBmJ(V=U@C|aVq}adSB^WY$wr$VwWJ?v%H@$_NnDl5_z4%#X@S*
z06};fZa(38@~+hb1A%dwShPJltGw&
z9{g4sgi+>R0Ba1w^H^rBAmsnZ(Bxjm;d;sm!fNxmpatP7-<%~r`0e_oju7_U)E6dO
z5K68pzvph>-GXq%)4WdM8Tk8kUpOcHzlwti$`z0l>omE-@O`-ORSP*F^%43?guLnp
zaL%jBE6PjZnrH&F5i;O+)Y;(X%zpp?sqa8593w&b0bJp^De?c-Kc%L{H)y4yI_ygy
zd$r%#WSF4@A_o5#joY?uQ-U+>79}{}ZdHOld*(DHa3tH!x)k=Y!j396ZDRGaP(x*b
zAXYyC7xgo+KDJe}MgNEw`;?lnZ;`@wG=XZd-T4PWU}~UC^Ix6U2AP^of}EPLf3Q-c
z`38DelM=H1`y)XJDQ0bNJVjx9*5j~gd!5HOTm8e=ufrSLcdsDM-38u<0_)8L)?@_K
z8x3O3JWbOSHp8A;+w&FXvpbc*rtDc~>z8z!gncVk*o*d6P{hTKda;|QSd6Nu
z`Jx`uu)=nVvZ@5`vF8d=*`8C0pm{B>yf9Rit=V2i)L5qieH3ecN7&v5S%EI2Kf}Ws
z-E1$^puToS)1cR{#uo>=ihU`pS+nH;RD6O`bHG=su)XV%W3_gm-9+9Nw9(UCm{5WH
zY+`J-Q?p&()2{z=tYsJw=Dpp5;9*ftn|37U-u20JofnSnrhz};qg*59itC=Sqs(|h
zvfU}Jd&2${b>O3yG0OwQV>{@P5}IOnYPM%z#x{4jYL5FYnr#}~#a}~ga}e9SHW}!e
z?FvaI%{HDxDooXESL1cf7k(QwE>>6IIE8E%05-8(@EXcz>l9Vkb}4jAl4cuA#kWKM
zG+XB?EPh-sK8hFrx*dw2M?>D^3C*w<^F&f-nZG+P;Q}WPS>oC154E
z)Se5^^5xLPX`#uT>aywhWc0KPkh^^Y0AXJ);5iQp#4n&C>R;~=gn~xjP<)mF&+dh1
zG7GOq9jRUj1@jJYz̑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