-
Notifications
You must be signed in to change notification settings - Fork 219
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Build Windows binaries with Visual Studio 2022 Build Tools.
- Loading branch information
Showing
12 changed files
with
280 additions
and
19 deletions.
There are no files selected for viewing
This file contains 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,51 @@ | ||
:: 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=17.4" | ||
SET "VS_MAJOR=17" | ||
SET "VC_YEAR=2022" | ||
SET "VC_VERSION_LOWER=17" | ||
set "VC_VERSION_UPPER=18" | ||
|
||
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\\vcruntime143.dll" | ||
|
||
if NOT "%VS15INSTALLDIR%" == "" if exist "%VS15INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" ( | ||
set "VSINSTALLDIR=%VS15INSTALLDIR%\" | ||
goto :vswhere | ||
) | ||
|
||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -legacy -products * -version [%VC_VERSION_LOWER%^,%VC_VERSION_UPPER%^) -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 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: | ||
- vs2022 # [win] | ||
cxx_compiler: | ||
- vs2022 # [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 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 YEAR=2022 | ||
set VER=17 | ||
|
||
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" | ||
) 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" | ||
) 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 >> "%PREFIX%\etc\conda\activate.d\vs%YEAR%_compiler_vars.bat" | ||
) | ||
|
This file contains 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=2022 | ||
|
||
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 2022 | ||
set "VC_VER=143" | ||
|
||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -legacy -products * -version [17^,18^) -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 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="17.4" %} | ||
{% set vcfeature="17" %} | ||
{% set vsyear="2022" %} | ||
{% set fullver="17.4.33110.190" %} | ||
|
||
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 2022 is binary-compatible with VS 2019/vc 14.2, VS 2017/vc 14.1 and 2015/vc14. Tools are "v143". | ||
strong: | ||
- vc{{ vcfeature }} | ||
about: | ||
summary: Activation and version verification of MSVC {{ vcver }} (VS {{ vsyear }}) compiler | ||
license: BSD 3-clause |
This file contains 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 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 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 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 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 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,56 @@ | ||
# https://developercommunity.visualstudio.com/t/install-specific-version-of-vs-component/1142479 | ||
# https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-history#evergreen-bootstrappers | ||
|
||
# 17.4.3 BuildTools | ||
$VS_DOWNLOAD_LINK = "https://download.visualstudio.microsoft.com/download/pr/8f480125-28b8-4a2c-847c-c2b02a8cdd1b/64be21d4ada005d7d07896ed0b004c322409bd04d6e8eba4c03c9fa39c928e7a/vs_BuildTools.exe" | ||
$COLLECT_DOWNLOAD_LINK = "https://aka.ms/vscollect.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.TextTemplating", | ||
"--add Microsoft.VisualStudio.Component.VC.CoreIde", | ||
"--add Microsoft.VisualStudio.Component.VC.Redist.14.Latest", | ||
"--add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core", | ||
"--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64", | ||
"--add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81") | ||
|
||
curl.exe --retry 3 -kL $VS_DOWNLOAD_LINK --output vs_installer.exe | ||
if ($LASTEXITCODE -ne 0) { | ||
echo "Download of the VS $VC_YEAR Version $VS_VERSION installer failed" | ||
exit 1 | ||
} | ||
|
||
if (Test-Path "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe") { | ||
$existingPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -products "Microsoft.VisualStudio.Product.BuildTools" -version "[17, 18)" -property installationPath | ||
if ($existingPath -ne $null) { | ||
if (!${env:CIRCLECI}) { | ||
echo "Found correctly versioned existing BuildTools installation in $existingPath" | ||
exit 0 | ||
} | ||
echo "Found existing BuildTools installation in $existingPath" | ||
$VS_UNINSTALL_ARGS = @("uninstall", "--installPath", "`"$existingPath`"", "--quiet","--wait") | ||
$process = Start-Process "${PWD}\vs_installer.exe" -ArgumentList $VS_UNINSTALL_ARGS -NoNewWindow -Wait -PassThru | ||
$exitCode = $process.ExitCode | ||
if (($exitCode -ne 0) -and ($exitCode -ne 3010)) { | ||
echo "Original BuildTools uninstall failed with code $exitCode" | ||
exit 1 | ||
} | ||
echo "Original BuildTools uninstalled" | ||
} | ||
} | ||
|
||
$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 $VC_YEAR installer exited with code $exitCode, which should be one of [0, 3010]." | ||
curl.exe --retry 3 -kL $COLLECT_DOWNLOAD_LINK --output Collect.exe | ||
if ($LASTEXITCODE -ne 0) { | ||
echo "Download of the VS Collect tool failed." | ||
exit 1 | ||
} | ||
Start-Process "${PWD}\Collect.exe" -NoNewWindow -Wait -PassThru | ||
New-Item -Path "C:\w\build-results" -ItemType "directory" -Force | ||
Copy-Item -Path "C:\Users\circleci\AppData\Local\Temp\vslogs.zip" -Destination "C:\w\build-results\" | ||
exit 1 | ||
} |
Oops, something went wrong.