bpo-31340: Change to building with MSVC v141 (included with Visual Studio 2017) (#3311)

This commit is contained in:
Steve Dower 2017-09-06 10:01:38 -07:00 committed by GitHub
parent bcaac8188b
commit 5fcd5e64ee
10 changed files with 86 additions and 13 deletions

View File

@ -14,6 +14,8 @@ test_script:
- cmd: PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 --fail-env-changed -j0 - cmd: PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 --fail-env-changed -j0
environment: environment:
HOST_PYTHON: C:\Python36\python.exe HOST_PYTHON: C:\Python36\python.exe
image:
- Visual Studio 2017
# Only trigger AppVeyor if actual code or its configuration changes # Only trigger AppVeyor if actual code or its configuration changes
only_commits: only_commits:

View File

@ -16,8 +16,19 @@ if not defined SPHINXBUILD if defined PYTHON (
set SPHINXBUILD=%PYTHON% -c "import sphinx, sys; sys.argv[0] = 'sphinx-build'; sphinx.main()" set SPHINXBUILD=%PYTHON% -c "import sphinx, sys; sys.argv[0] = 'sphinx-build'; sphinx.main()"
) )
if not defined BLURB if defined PYTHON (
%PYTHON% -c "import blurb" > nul 2> nul
if errorlevel 1 (
echo Installing blurb with %PYTHON%
%PYTHON% -m pip install blurb
if errorlevel 1 exit /B
)
set BLURB=%PYTHON% -m blurb
)
if not defined PYTHON set PYTHON=py if not defined PYTHON set PYTHON=py
if not defined SPHINXBUILD set SPHINXBUILD=sphinx-build if not defined SPHINXBUILD set SPHINXBUILD=sphinx-build
if not defined BLURB set BLURB=blurb
if "%1" NEQ "htmlhelp" goto :skiphhcsearch if "%1" NEQ "htmlhelp" goto :skiphhcsearch
if exist "%HTMLHELP%" goto :skiphhcsearch if exist "%HTMLHELP%" goto :skiphhcsearch
@ -96,6 +107,19 @@ echo.be passed by setting the SPHINXOPTS environment variable.
goto end goto end
:build :build
if exist ..\Misc\NEWS (
echo.Copying Misc\NEWS to build\NEWS
copy ..\Misc\NEWS build\NEWS > nul
) else if exist ..\Misc\NEWS.D (
if defined BLURB (
echo.Merging Misc/NEWS with %BLURB%
%BLURB% merge -f build\NEWS
) else (
echo.No Misc/NEWS file and Blurb is not available.
exit /B 1
)
)
if NOT "%PAPER%" == "" ( if NOT "%PAPER%" == "" (
set SPHINXOPTS=-D latex_elements.papersize=%PAPER% %SPHINXOPTS% set SPHINXOPTS=-D latex_elements.papersize=%PAPER% %SPHINXOPTS%
) )

View File

@ -318,26 +318,30 @@ class bdist_wininst(Command):
# string compares seem wrong, but are what sysconfig.py itself uses # string compares seem wrong, but are what sysconfig.py itself uses
if self.target_version and self.target_version < cur_version: if self.target_version and self.target_version < cur_version:
if self.target_version < "2.4": if self.target_version < "2.4":
bv = 6.0 bv = '6.0'
elif self.target_version == "2.4": elif self.target_version == "2.4":
bv = 7.1 bv = '7.1'
elif self.target_version == "2.5": elif self.target_version == "2.5":
bv = 8.0 bv = '8.0'
elif self.target_version <= "3.2": elif self.target_version <= "3.2":
bv = 9.0 bv = '9.0'
elif self.target_version <= "3.4": elif self.target_version <= "3.4":
bv = 10.0 bv = '10.0'
else: else:
bv = 14.0 bv = '14.0'
else: else:
# for current version - use authoritative check. # for current version - use authoritative check.
try: try:
from msvcrt import CRT_ASSEMBLY_VERSION from msvcrt import CRT_ASSEMBLY_VERSION
except ImportError: except ImportError:
# cross-building, so assume the latest version # cross-building, so assume the latest version
bv = 14.0 bv = '14.0'
else: else:
bv = float('.'.join(CRT_ASSEMBLY_VERSION.split('.', 2)[:2])) bv = '.'.join(CRT_ASSEMBLY_VERSION.split('.', 2)[:2])
if bv == '14.11':
# v141 and v140 are binary compatible,
# so keep using the 14.0 stub.
bv = '14.0'
# wininst-x.y.exe is in the same directory as this file # wininst-x.y.exe is in the same directory as this file
@ -353,7 +357,7 @@ class bdist_wininst(Command):
else: else:
sfix = '' sfix = ''
filename = os.path.join(directory, "wininst-%.1f%s.exe" % (bv, sfix)) filename = os.path.join(directory, "wininst-%s%s.exe" % (bv, sfix))
f = open(filename, "rb") f = open(filename, "rb")
try: try:
return f.read() return f.read()

View File

@ -0,0 +1 @@
Change to building with MSVC v141 (included with Visual Studio 2017)

View File

@ -147,8 +147,24 @@ foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses
Targets="CleanAll" /> Targets="CleanAll" />
</Target> </Target>
<Target Name="CopyPGCFiles" BeforeTargets="PrepareForBuild" Condition="$(Configuration) == 'PGUpdate'">
<ItemGroup>
<_PGCFiles Include="$(OutDir)instrumented\$(TargetName)!*.pgc" />
<_PGDFile Include="$(OutDir)instrumented\$(TargetName).pgd" />
<_CopyFiles Include="@(_PGCFiles);@(_PGDFile)" Condition="Exists(%(FullPath))" />
</ItemGroup>
<Delete Files="@(_CopyFiles->'$(OutDir)%(Filename)%(Extension)')" />
<Error Text="PGO run did not succeed (no $(TargetName)!*.pgc files) and there is no data to merge"
Condition="$(RequirePGCFiles) == 'true' and @(_PGCFiles) == ''" />
<Copy SourceFiles="@(_CopyFiles)"
DestinationFolder="$(OutDir)"
UseHardLinksIfPossible="true"
OverwriteReadOnlyFiles="true" />
</Target>
<PropertyGroup> <PropertyGroup>
<SdkBinPath Condition="'$(SdkBinPath)' == '' or !Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot10)\bin\x86</SdkBinPath> <SdkBinPath Condition="'$(SdkBinPath)' == '' or !Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot10)\bin\$(DefaultWindowsSDKVersion)\x86</SdkBinPath>
<SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot10)\bin\x86</SdkBinPath>
<SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot81)\bin\x86</SdkBinPath> <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot81)\bin\x86</SdkBinPath>
<SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot)\bin\x86</SdkBinPath> <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot)\bin\x86</SdkBinPath>
<SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A@InstallationFolder)\Bin\</SdkBinPath> <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A@InstallationFolder)\Bin\</SdkBinPath>

View File

@ -10,6 +10,7 @@
We set BasePlatformToolset for ICC's benefit, it's otherwise ignored. We set BasePlatformToolset for ICC's benefit, it's otherwise ignored.
--> -->
<BasePlatformToolset Condition="'$(BasePlatformToolset)' == '' and ('$(MSBuildToolsVersion)' == '15.0' or '$(VisualStudioVersion)' == '15.0')">v141</BasePlatformToolset>
<BasePlatformToolset Condition="'$(BasePlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</BasePlatformToolset> <BasePlatformToolset Condition="'$(BasePlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</BasePlatformToolset>
<BasePlatformToolset Condition="'$(BasePlatformToolset)' == '' and '$(VCTargetsPath12)' != ''">v120</BasePlatformToolset> <BasePlatformToolset Condition="'$(BasePlatformToolset)' == '' and '$(VCTargetsPath12)' != ''">v120</BasePlatformToolset>
<BasePlatformToolset Condition="'$(BasePlatformToolset)' == '' and '$(VCTargetsPath11)' != ''">v110</BasePlatformToolset> <BasePlatformToolset Condition="'$(BasePlatformToolset)' == '' and '$(VCTargetsPath11)' != ''">v110</BasePlatformToolset>
@ -39,6 +40,7 @@
<BuildPath Condition="'$(ArchName)' == 'amd64'">$(BuildPath64)</BuildPath> <BuildPath Condition="'$(ArchName)' == 'amd64'">$(BuildPath64)</BuildPath>
<BuildPath Condition="'$(BuildPath)' == ''">$(PySourcePath)PCBuild\$(ArchName)\</BuildPath> <BuildPath Condition="'$(BuildPath)' == ''">$(PySourcePath)PCBuild\$(ArchName)\</BuildPath>
<BuildPath Condition="!HasTrailingSlash($(BuildPath))">$(BuildPath)\</BuildPath> <BuildPath Condition="!HasTrailingSlash($(BuildPath))">$(BuildPath)\</BuildPath>
<BuildPath Condition="$(Configuration) == 'PGInstrument'">$(BuildPath)instrumented\</BuildPath>
<!-- Directories of external projects. tcltk is handled in tcltk.props --> <!-- Directories of external projects. tcltk is handled in tcltk.props -->
<ExternalsDir>$([System.IO.Path]::GetFullPath(`$(PySourcePath)externals\`))</ExternalsDir> <ExternalsDir>$([System.IO.Path]::GetFullPath(`$(PySourcePath)externals\`))</ExternalsDir>

View File

@ -96,6 +96,7 @@ set PYTHONPATH=$(PySourcePath)Lib
<PropertyGroup> <PropertyGroup>
<_PGOPath Condition="$(Configuration) == 'PGInstrument' and $(Platform) == 'Win32'">@set PATH=%PATH%%3B$(VCInstallDir)bin</_PGOPath> <_PGOPath Condition="$(Configuration) == 'PGInstrument' and $(Platform) == 'Win32'">@set PATH=%PATH%%3B$(VCInstallDir)bin</_PGOPath>
<_PGOPath Condition="$(Configuration) == 'PGInstrument' and $(Platform) == 'x64'">@set PATH=%PATH%%3B$(VCInstallDir)bin\amd64</_PGOPath> <_PGOPath Condition="$(Configuration) == 'PGInstrument' and $(Platform) == 'x64'">@set PATH=%PATH%%3B$(VCInstallDir)bin\amd64</_PGOPath>
<_PGOPath Condition="$(Configuration) == 'PGInstrument' and $(VC_PGO_RunTime_Dir) != ''">@set PATH=%PATH%%3B$(VC_PGO_RunTime_Dir)</_PGOPath>
<_Content>@rem This script invokes the most recently built Python with all arguments <_Content>@rem This script invokes the most recently built Python with all arguments
@rem passed through to the interpreter. This file is generated by the @rem passed through to the interpreter. This file is generated by the
@rem build process and any changes *will* be thrown away by the next @rem build process and any changes *will* be thrown away by the next

View File

@ -49,6 +49,7 @@
</ImportGroup> </ImportGroup>
<PropertyGroup> <PropertyGroup>
<KillPython>true</KillPython> <KillPython>true</KillPython>
<RequirePGCFiles>true</RequirePGCFiles>
</PropertyGroup> </PropertyGroup>
<ImportGroup Label="PropertySheets"> <ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
@ -429,7 +430,7 @@
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
</Target> </Target>
<Target Name="_WarnAboutToolset" BeforeTargets="PrepareForBuild" Condition="$(PlatformToolset) != 'v140'"> <Target Name="_WarnAboutToolset" BeforeTargets="PrepareForBuild" Condition="$(PlatformToolset) != 'v140' and $(PlatformToolset) != 'v141'">
<Warning Text="Toolset $(PlatformToolset) is not used for official builds. Your build may have errors or incompatibilities." /> <Warning Text="Toolset $(PlatformToolset) is not used for official builds. Your build may have errors or incompatibilities." />
</Target> </Target>
</Project> </Project>

View File

@ -40,5 +40,27 @@
Lines="@(_LicenseFiles->'%(Content)')" /> Lines="@(_LicenseFiles->'%(Content)')" />
</Target> </Target>
<Target Name="_CopyMiscNews" AfterTargets="PrepareForBuild" Condition="Exists('$(PySourcePath)Misc\NEWS')">
<Copy SourceFiles="$(PySourcePath)Misc\NEWS" DestinationFiles="$(BuildPath)NEWS.txt" />
</Target>
<Target Name="_MergeMiscNewsWithBlurb" AfterTargets="PrepareForBuild" Condition="$(Blurb) != '' and !Exists('$(PySourcePath)Misc\NEWS')">
<Exec Command="$(Blurb) merge -f &quot;$(BuildPath)NEWS.txt&quot;" WorkingDirectory="$(PCBuild)" />
</Target>
<Target Name="_MergeMiscNewsWithPython" AfterTargets="PrepareForBuild" Condition="$(Blurb) == '' and !Exists('$(PySourcePath)Misc\NEWS')">
<ItemGroup>
<HostPython Include="$(ExternalsDir)python*\tools\python.exe" />
<HostPython Include="@(HostPython)" Condition="Exists(%(FullPath))" />
<HostPython Include="py" Condition="@(HostPython) == ''" />
</ItemGroup>
<PropertyGroup>
<HostPython>@(HostPython)</HostPython>
<HostPython Condition="$(HostPython.Contains(';'))">$(HostPython.Remove($(HostPython.IndexOf(';'))))</HostPython>
</PropertyGroup>
<Exec Command="&quot;$(HostPython)&quot; -m pip install -U blurb" WorkingDirectory="$(PCBuild)" />
<Exec Command="&quot;$(HostPython)&quot; -m blurb merge -f &quot;$(BuildPath)NEWS.txt&quot;" WorkingDirectory="$(PCBuild)" />
</Target>
<Import Project="..\msi.targets" /> <Import Project="..\msi.targets" />
</Project> </Project>

View File

@ -6,7 +6,7 @@
<File Name="LICENSE.txt" Source="LICENSE" KeyPath="yes" /> <File Name="LICENSE.txt" Source="LICENSE" KeyPath="yes" />
</Component> </Component>
<Component Id="NEWS.txt" Directory="InstallDirectory" Guid="*"> <Component Id="NEWS.txt" Directory="InstallDirectory" Guid="*">
<File Name="NEWS.txt" Source="!(bindpath.src)Misc\NEWS" KeyPath="yes" /> <File Name="NEWS.txt" KeyPath="yes" />
</Component> </Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>