This repository was archived by the owner on Aug 15, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 228
Make it possible to use VS2019 as the compiler in binary jobs #445
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
223e131
Migrate to VS2019
peterjc123 0ef4da8
Update conda_build_config.yaml as well
peterjc123 521bbd8
Fix VS 2019 and CUDA installation scripts
peterjc123 3ce224a
Fix minor bugs
peterjc123 0670d95
Fix smoke tests
peterjc123 9493a88
Reuse variable
peterjc123 84315fc
Update windows/internal/vs2019_install.ps1
malfet File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
:: Set env vars that tell distutils to use the compiler that we put on path | ||
SET DISTUTILS_USE_SDK=1 | ||
SET MSSdk=1 | ||
|
||
SET "VS_VERSION=16.0" | ||
SET "VS_MAJOR=16" | ||
SET "VS_YEAR=2019" | ||
|
||
set "MSYS2_ARG_CONV_EXCL=/AI;/AL;/OUT;/out" | ||
set "MSYS2_ENV_CONV_EXCL=CL" | ||
|
||
:: For Python 3.5+, ensure that we link with the dynamic runtime. See | ||
:: http://stevedower.id.au/blog/building-for-python-3-5-part-two/ for more info | ||
set "PY_VCRUNTIME_REDIST=%PREFIX%\\bin\\vcruntime140.dll" | ||
|
||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -legacy -products * -version [16^,17^) -property installationPath`) do ( | ||
if exist "%%i" if exist "%%i\VC\Auxiliary\Build\vcvarsall.bat" ( | ||
set "VSINSTALLDIR=%%i\" | ||
goto :vswhere | ||
) | ||
) | ||
|
||
:vswhere | ||
|
||
:: Shorten PATH to avoid the `input line too long` error. | ||
SET MyPath=%PATH% | ||
|
||
setlocal EnableDelayedExpansion | ||
|
||
SET TempPath="%MyPath:;=";"%" | ||
SET var= | ||
FOR %%a IN (%TempPath%) DO ( | ||
IF EXIST %%~sa ( | ||
SET "var=!var!;%%~sa" | ||
) | ||
) | ||
|
||
set "TempPath=!var:~1!" | ||
endlocal & set "PATH=%TempPath%" | ||
|
||
:: Shorten current directory too | ||
FOR %%A IN (.) DO CD "%%~sA" | ||
|
||
:: other things added by install_activate.bat at package build time |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
blas_impl: | ||
- mkl # [x86_64] | ||
c_compiler: | ||
- vs2019 # [win] | ||
cxx_compiler: | ||
- vs2019 # [win] | ||
python: | ||
- 3.5 | ||
- 3.6 | ||
# This differs from target_platform in that it determines what subdir the compiler | ||
# will target, not what subdir the compiler package will be itself. | ||
# For example, we need a win-64 vs2008_win-32 package, so that we compile win-32 | ||
# code on win-64 miniconda. | ||
cross_compiler_target_platform: | ||
- win-64 # [win] | ||
target_platform: | ||
- win-64 # [win] | ||
vc: | ||
- 14 | ||
zip_keys: | ||
- # [win] | ||
- vc # [win] | ||
- c_compiler # [win] | ||
- cxx_compiler # [win] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
set YEAR=2019 | ||
set VER=16 | ||
|
||
mkdir "%PREFIX%\etc\conda\activate.d" | ||
COPY "%RECIPE_DIR%\activate.bat" "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
|
||
IF "%cross_compiler_target_platform%" == "win-64" ( | ||
set "target_platform=amd64" | ||
echo SET "CMAKE_GENERATOR=Visual Studio %VER% %YEAR% Win64" >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo pushd "%%VSINSTALLDIR%%" >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
IF "%VSDEVCMD_ARGS%" == "" ( | ||
echo CALL "VC\Auxiliary\Build\vcvarsall.bat" x64 >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo popd >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo pushd "%%VSINSTALLDIR%%" >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo CALL "VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
) ELSE ( | ||
echo CALL "VC\Auxiliary\Build\vcvarsall.bat" x64 %VSDEVCMD_ARGS% >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo popd >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo pushd "%%VSINSTALLDIR%%" >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo CALL "VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 %VSDEVCMD_ARGS% >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
) | ||
echo popd >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
) else ( | ||
set "target_platform=x86" | ||
echo SET "CMAKE_GENERATOR=Visual Studio %VER% %YEAR%" >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo pushd "%%VSINSTALLDIR%%" >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo CALL "VC\Auxiliary\Build\vcvars32.bat" >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
echo popd | ||
) | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
set VC_PATH=x86 | ||
if "%ARCH%"=="64" ( | ||
set VC_PATH=x64 | ||
) | ||
|
||
set MSC_VER=2019 | ||
|
||
rem :: This should always be present for VC installed with VS. Not sure about VC installed with Visual C++ Build Tools 2015 | ||
rem FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Microsoft\DevDiv\VC\Servicing\14.0\IDE.x64" /v UpdateVersion`) DO ( | ||
rem set SP=%%A | ||
rem ) | ||
|
||
rem if not "%SP%" == "%PKG_VERSION%" ( | ||
rem echo "Version detected from registry: %SP%" | ||
rem echo "does not match version of package being built (%PKG_VERSION%)" | ||
rem echo "Do you have current updates for VS 2015 installed?" | ||
rem exit 1 | ||
rem ) | ||
|
||
|
||
REM ========== REQUIRES Win 10 SDK be installed, or files otherwise copied to location below! | ||
robocopy "C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\%VC_PATH%" "%LIBRARY_BIN%" *.dll /E | ||
robocopy "C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\%VC_PATH%" "%PREFIX%" *.dll /E | ||
if %ERRORLEVEL% GEQ 8 exit 1 | ||
|
||
REM ========== This one comes from visual studio 2019 | ||
set "VC_VER=142" | ||
|
||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -legacy -products * -version [16^,17^) -property installationPath`) do ( | ||
if exist "%%i" if exist "%%i\VC\Auxiliary\Build\vcvarsall.bat" ( | ||
set "VS15VCVARSALL=%%i\VC\Auxiliary\Build\vcvarsall.bat" | ||
goto :eof | ||
) | ||
) | ||
|
||
@setlocal | ||
call "%VS15VARSALL%" x64 | ||
|
||
set "REDIST_ROOT=%VCToolsRedistDir%%VC_PATH%" | ||
|
||
robocopy "%REDIST_ROOT%\Microsoft.VC%VC_VER%.CRT" "%LIBRARY_BIN%" *.dll /E | ||
if %ERRORLEVEL% LSS 8 exit 0 | ||
robocopy "%REDIST_ROOT%\Microsoft.VC%VC_VER%.CRT" "%PREFIX%" *.dll /E | ||
if %ERRORLEVEL% LSS 8 exit 0 | ||
robocopy "%REDIST_ROOT%\Microsoft.VC%VC_VER%.OpenMP" "%LIBRARY_BIN%" *.dll /E | ||
if %ERRORLEVEL% LSS 8 exit 0 | ||
robocopy "%REDIST_ROOT%\Microsoft.VC%VC_VER%.OpenMP" "%PREFIX%" *.dll /E | ||
if %ERRORLEVEL% LSS 8 exit 0 | ||
@endlocal |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
{% set vcver="14.2" %} | ||
{% set vcfeature="14" %} | ||
{% set vsyear="2019" %} | ||
{% set fullver="15.4.27004.2010" %} | ||
|
||
package: | ||
name: vs{{ vsyear }} | ||
version: {{ fullver }} | ||
|
||
build: | ||
skip: True [not win] | ||
script_env: | ||
- VSDEVCMD_ARGS # [win] | ||
|
||
outputs: | ||
- name: vs{{ vsyear }}_{{ cross_compiler_target_platform }} | ||
script: install_activate.bat | ||
track_features: | ||
# VS 2019 is binary-compatible with VS 2017/vc 14.1 and 2015/vc14. Tools are "v142". | ||
strong: | ||
- vc{{ vcfeature }} | ||
about: | ||
summary: Activation and version verification of MSVC {{ vcver }} (VS {{ vsyear }}) compiler | ||
license: BSD 3-clause |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
$VS_DOWNLOAD_LINK = "https://aka.ms/vs/16/release/vs_buildtools.exe" | ||
$VS_INSTALL_ARGS = @("--nocache","--quiet","--wait", "--add Microsoft.VisualStudio.Workload.VCTools", | ||
"--add Microsoft.Component.MSBuild", | ||
"--add Microsoft.VisualStudio.Component.Roslyn.Compiler", | ||
"--add Microsoft.VisualStudio.Component.VC.CoreBuildTools", | ||
"--add Microsoft.VisualStudio.Component.VC.Redist.14.Latest", | ||
"--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64") | ||
|
||
curl.exe --retry 3 -kL $VS_DOWNLOAD_LINK --output vs_installer.exe | ||
if ($LASTEXITCODE -ne 0) { | ||
echo "Download of the VS 2019 installer failed" | ||
exit 1 | ||
} | ||
|
||
$process = Start-Process "${PWD}\vs_installer.exe" -ArgumentList $VS_INSTALL_ARGS -NoNewWindow -Wait -PassThru | ||
Remove-Item -Path vs_installer.exe -Force | ||
$exitCode = $process.ExitCode | ||
if (($exitCode -ne 0) -and ($exitCode -ne 3010)) { | ||
echo "VS 2019 installer exited with code $exitCode, which should be one of [0, 3010]." | ||
exit 1 | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you please copy VSCollect.exe logic here from https://github.com/pytorch/pytorch/blob/master/.circleci/scripts/vs_install.ps1#L25
And this script is not at all used right now, isn't it?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Used in https://github.com/pytorch/builder/pull/445/files#diff-c51838f8d7c4e93c825b6382dfc0f40dR2 and https://github.com/pytorch/builder/pull/445/files#diff-e168284874ac9b62e0ccaeba8f6b5db1R2.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sound reasonable. Will need to upload them as artifacts in binary jobs,