[vcpkg] [cudnn] [msmpi] [openmpi] Update VMSS (#11365)

Co-authored-by: @JackBoosY 
Co-authored-by: Stefano Sinigardi <stesinigardi@hotmail.com>
Co-authored-by: Voskrese <10104740+Voskrese@users.noreply.github.com>
This commit is contained in:
Billy O'Neal 2020-06-11 11:13:09 -07:00 committed by GitHub
parent ae45816c34
commit 55d6bd1b7d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 283 additions and 299 deletions

View File

@ -173,7 +173,7 @@ Build-Depends: qt5
Feature: mpi
Description: MPI functionality for VTK
Build-Depends: msmpi, hdf5[parallel]
Build-Depends: mpi, hdf5[parallel]
Feature: python
Description: Python functionality for VTK

View File

@ -1,4 +1,5 @@
Source: msmpi
Version: 10.0-2
Version: 10.1
Homepage: https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi
Description: Microsoft MPI
Supports: windows
Supports: windows

View File

@ -1,23 +1,21 @@
include(vcpkg_common_functions)
vcpkg_fail_port_install(ON_TARGET "Linux" "OSX" "UWP")
if(VCPKG_CMAKE_SYSTEM_NAME)
message(FATAL_ERROR "This port is only for building msmpi on Windows Desktop")
endif()
set(MSMPI_VERSION "10.0.12498")
set(MSMPI_VERSION "10.1.12498")
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/msmpi-${MSMPI_VERSION})
vcpkg_download_distfile(SDK_ARCHIVE
URLS "https://download.microsoft.com/download/A/E/0/AE002626-9D9D-448D-8197-1EA510E297CE/msmpisdk.msi"
URLS "https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisdk.msi"
FILENAME "msmpisdk-${MSMPI_VERSION}.msi"
SHA512 36a31b2516f45fbc26167b31d2d6419f1928aef1591033f0430d36570159205e1a3134557a4ac0462f2d879add1fc6fee87a6997032e4438b528cd42a8bbe6b1
SHA512 330fad53c1979dfae786abed228d82c82207f0d61148e2efc1f37c8931838b806eb50554e7f006a56962f748a21f7017c540bd70444b7a93a72c313a64e9254c
)
#to enable CI, you should modify the following URL also in ${VCPKG_ROOT}/scripts/azure-pipelines/windows/provision-image.ps1
macro(download_msmpi_redistributable_package)
vcpkg_download_distfile(REDIST_ARCHIVE
URLS "https://download.microsoft.com/download/A/E/0/AE002626-9D9D-448D-8197-1EA510E297CE/msmpisetup.exe"
URLS "https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisetup.exe"
FILENAME "msmpisetup-${MSMPI_VERSION}.exe"
SHA512 c272dc842eb1e693f25eb580e1caf0c1fdb385611a12c20cdc6a40cf592ccbdba434a1c16edb63eef14b1a2ac6e678ac1cd561ec5fd003a5d17191a0fad281ae
SHA512 1ee463e7dfc3e55a7ac048fdfde13fef09a5eea4b74d8fd7c22a7aad667a025b467ce939e5de308e25bbc186c3fe66e0e24ac03a3741656fc7558f2af2fa132a
)
endmacro()

View File

@ -1,5 +1,5 @@
Source: openmpi
Version: 4.0.1
Version: 4.0.3
Homepage: https://www.open-mpi.org/
Description: The Open MPI Project is an open source Message Passing Interface implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers.
Supports: !(windows|uwp)
Supports: !(windows|uwp)

View File

@ -1,100 +1,37 @@
include(vcpkg_common_functions)
if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR NOT VCPKG_CMAKE_SYSTEM_NAME)
message(FATAL_ERROR "This port is only for openmpi on Unix-like systems")
endif()
vcpkg_fail_port_install(ON_TARGET "Windows" "UWP")
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
set(OpenMPI_FULL_VERSION "4.0.1")
set(OpenMPI_FULL_VERSION "4.0.3")
set(OpenMPI_SHORT_VERSION "4.0")
vcpkg_download_distfile(ARCHIVE
URLS "https://download.open-mpi.org/release/open-mpi/v${OpenMPI_SHORT_VERSION}/openmpi-${OpenMPI_FULL_VERSION}.tar.gz"
FILENAME "openmpi-${OpenMPI_FULL_VERSION}.tar.gz"
SHA512 760716974cb6b25ad820184622e1ee7926bc6fda87db6b574f76792bc1ca99522e52195866c14b7cb2df5a4981efdaf9f71d2c5533cc0e8e45c2c4b3b74cbacc
SHA512 23a9dfb7f4a63589b82f4e073a825550d3bc7e6b34770898325323ef4a28ed90b47576acaae6be427eb2007b37a88e18c1ea44d929b8ca083fe576ef1111fef6
)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
list(APPEND BUILD_TYPES "release")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
list(APPEND BUILD_TYPES "debug")
endif()
set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-debug/openmpi-${OpenMPI_FULL_VERSION})
set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-release/openmpi-${OpenMPI_FULL_VERSION})
set(OUT_PATH_DEBUG ${SOURCE_PATH_RELEASE}/../../make-build-${TARGET_TRIPLET}-debug)
set(OUT_PATH_RELEASE ${SOURCE_PATH_RELEASE}/../../make-build-${TARGET_TRIPLET}-release)
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-debug/)
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-release/)
file(MAKE_DIRECTORY ${OUT_PATH_DEBUG})
file(MAKE_DIRECTORY ${OUT_PATH_RELEASE})
foreach(BUILD_TYPE IN LISTS BUILD_TYPES)
vcpkg_extract_source_archive(${ARCHIVE} ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-${BUILD_TYPE})
#vcpkg_apply_patches(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-${BUILD_TYPE}/openmpi-${OpenMPI_FULL_VERSION} PATCHES patch.file)
endforeach()
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
)
vcpkg_find_acquire_program(PERL)
get_filename_component(PERL_PATH ${PERL} DIRECTORY)
vcpkg_add_to_path(${PERL_PATH})
set(BASH bash)
vcpkg_configure_make(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
--with-hwloc=internal
--with-libevent=internal
OPTIONS_DEBUG
--enable-debug
)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc -c "${SOURCE_PATH_DEBUG}/configure --prefix=${OUT_PATH_DEBUG} --enable-debug"
WORKING_DIRECTORY "${SOURCE_PATH_DEBUG}"
LOGNAME "config-${TARGET_TRIPLET}-dbg"
)
message(STATUS "Building ${TARGET_TRIPLET}-dbg")
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc -c "make -j ${VCPKG_CONCURRENCY}"
NO_PARALLEL_COMMAND ${BASH} --noprofile --norc -c "make"
WORKING_DIRECTORY "${SOURCE_PATH_DEBUG}"
LOGNAME "make-build-${TARGET_TRIPLET}-dbg"
)
message(STATUS "Installing ${TARGET_TRIPLET}-dbg")
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc -c "make install"
WORKING_DIRECTORY "${SOURCE_PATH_DEBUG}"
LOGNAME "make-install-${TARGET_TRIPLET}-dbg"
)
file(COPY ${OUT_PATH_DEBUG}/lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug)
message(STATUS "Installing ${TARGET_TRIPLET}-dbg done")
endif()
vcpkg_install_make()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc -c "${SOURCE_PATH_RELEASE}/configure --prefix=${OUT_PATH_RELEASE}"
WORKING_DIRECTORY "${SOURCE_PATH_RELEASE}"
LOGNAME "config-${TARGET_TRIPLET}-rel"
)
message(STATUS "Building ${TARGET_TRIPLET}-rel")
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc -c "make -j ${VCPKG_CONCURRENCY}"
NO_PARALLEL_COMMAND ${BASH} --noprofile --norc -c "make"
WORKING_DIRECTORY "${SOURCE_PATH_RELEASE}"
LOGNAME "make-build-${TARGET_TRIPLET}-rel"
)
message(STATUS "Installing ${TARGET_TRIPLET}-rel")
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc -c "make install"
WORKING_DIRECTORY "${SOURCE_PATH_RELEASE}"
LOGNAME "make-install-${TARGET_TRIPLET}-rel"
)
file(COPY ${OUT_PATH_RELEASE}/lib DESTINATION ${CURRENT_PACKAGES_DIR})
file(COPY ${OUT_PATH_RELEASE}/include DESTINATION ${CURRENT_PACKAGES_DIR})
file(COPY ${OUT_PATH_RELEASE}/share DESTINATION ${CURRENT_PACKAGES_DIR})
file(COPY ${OUT_PATH_RELEASE}/bin DESTINATION ${CURRENT_PACKAGES_DIR})
message(STATUS "Installing ${TARGET_TRIPLET}-rel done")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(INSTALL ${SOURCE_PATH_DEBUG}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openmpi RENAME copyright)
else()
file(INSTALL ${SOURCE_PATH_RELEASE}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openmpi RENAME copyright)
endif()
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)

View File

@ -1,5 +1,5 @@
Source: sdl2
Version: 2.0.12
Version: 2.0.12-1
Homepage: https://www.libsdl.org/download-2.0.php
Description: Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.

View File

@ -0,0 +1,17 @@
diff -r 398b67c0a7d3 -r 7c2f418f701b src/video/winrt/SDL_winrtgamebar.cpp
--- a/src/video/winrt/SDL_winrtgamebar.cpp Wed Jun 10 09:36:10 2020 -0700
+++ b/src/video/winrt/SDL_winrtgamebar.cpp Wed Jun 10 09:38:43 2020 -0700
@@ -25,7 +25,7 @@
/* Windows includes */
#include <roapi.h>
#include <windows.foundation.h>
-#include <EventToken.h>
+#include <windows.system.h>
/* SDL includes */

View File

@ -14,6 +14,7 @@ vcpkg_extract_source_archive_ex(
disable-hidapi-for-uwp.patch
fix-space-in-path.patch
disable-wcslcpy-and-wcslcat-for-windows.patch
fix-EventToken-header-reference.patch
)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" SDL_STATIC)

View File

@ -2,52 +2,88 @@
# SPDX-License-Identifier: MIT
#
variables:
windows-pool: 'PrWin-2020-04-28'
linux-pool: 'PrLin-2020-05-07'
windows-pool: 'PrWin-2020-06-04'
linux-pool: 'PrLin-2020-06-08'
delete-tombstones-first: false
jobs:
- template: windows/run-tests.yml
parameters:
poolName: $(windows-pool)
stages:
- stage: delete_tombstones
displayName: 'Delete Tombstones'
jobs:
- job: windows
displayName: 'Clean Windows Tombstones'
pool: $(windows-pool)
condition: eq(variables['delete-tombstones-first'], 'true')
steps:
- task: PowerShell@2
displayName: 'Initialize Environment'
inputs:
filePath: 'scripts/azure-pipelines/windows/initialize-environment.ps1'
- script: rmdir /s /q W:\fail
displayName: 'Delete W:\fail'
- job: linux
displayName: 'Clean Linux Tombstones'
pool: $(linux-pool)
condition: eq(variables['delete-tombstones-first'], 'true')
steps:
- bash: rm -rf /archives/fail
displayName: 'Delete /archives/fail'
- job: osx
displayName: 'Clean MacOS Tombstones'
condition: eq(variables['delete-tombstones-first'], 'true')
pool:
name: vcpkgAgentPool
demands: Agent.OS -equals Darwin
steps:
- bash: rm -rf /Users/vagrant/Data/archives/fail
displayName: 'Delete /Users/vagrant/Data/archives/fail'
- template: windows/azure-pipelines.yml
parameters:
triplet: x86-windows
jobName: x86_windows
poolName: $(windows-pool)
- stage: run_pr_test
displayName: 'Run PR Test'
dependsOn: delete_tombstones
jobs:
- template: windows/run-tests.yml
parameters:
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: x64-windows
jobName: x64_windows
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: x86-windows
jobName: x86_windows
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: x64-windows-static
jobName: x64_windows_static
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: x64-windows
jobName: x64_windows
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: x64-uwp
jobName: x64_uwp
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: x64-windows-static
jobName: x64_windows_static
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: arm64-windows
jobName: arm64_windows
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: x64-uwp
jobName: x64_uwp
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: arm-uwp
jobName: arm_uwp
poolName: $(windows-pool)
- template: windows/azure-pipelines.yml
parameters:
triplet: arm64-windows
jobName: arm64_windows
poolName: $(windows-pool)
- template: osx/azure-pipelines.yml
- template: windows/azure-pipelines.yml
parameters:
triplet: arm-uwp
jobName: arm_uwp
poolName: $(windows-pool)
- template: linux/azure-pipelines.yml
parameters:
poolName: $(linux-pool)
- template: osx/azure-pipelines.yml
- template: linux/azure-pipelines.yml
parameters:
poolName: $(linux-pool)

View File

@ -1,32 +0,0 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT
#
variables:
windows-pool: 'PrWin-2020-04-28'
linux-pool: 'PrLin-2020-05-07'
jobs:
- job: windows
displayName: 'Clean Windows Tombstones'
pool: $(windows-pool)
steps:
- task: PowerShell@2
displayName: 'Initialize Environment'
inputs:
filePath: 'scripts/azure-pipelines/windows/initialize-environment.ps1'
- script: rmdir /s /q W:\fail
displayName: 'Delete W:\fail'
- job: linux
displayName: 'Clean Linux Tombstones'
pool: $(linux-pool)
steps:
- bash: rm -rf /archives/fail
displayName: 'Delete /archives/fail'
- job: osx
displayName: 'Clean MacOS Tombstones'
pool:
name: vcpkgAgentPool
demands: Agent.OS -equals Darwin
steps:
- bash: rm -rf /Users/vagrant/Data/archives/fail
displayName: 'Delete /Users/vagrant/Data/archives/fail'

View File

@ -158,7 +158,8 @@ Set-AzStorageShareQuota -ShareName 'archives' -Context $StorageContext -Quota 10
####################################################################################################
Write-Progress `
-Activity 'Creating prototype VM' `
-Activity $ProgressActivity `
-Status 'Creating prototype VM' `
-PercentComplete (100 / $TotalProgress * $CurrentProgress++)
$NicName = $ResourceGroupName + 'NIC'

View File

@ -5,15 +5,41 @@
sudo apt -y update
sudo apt -y dist-upgrade
# Install common build dependencies and partitioning tools
sudo apt -y install at curl unzip tar libxt-dev gperf libxaw7-dev cifs-utils build-essential g++ gfortran zip libx11-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev libxinerama-dev libxcursor-dev yasm libnuma1 libnuma-dev python-six python3-six python-yaml flex libbison-dev autoconf libudev-dev libncurses5-dev libtool libxrandr-dev xutils-dev dh-autoreconf libgles2-mesa-dev ruby-full pkg-config
# Required by qt5-x11extras
sudo apt -y install libxkbcommon-dev libxkbcommon-x11-dev
# Required by libhdfs3
sudo apt -y install libkrb5-dev
# Required by mesa
sudo apt -y install python3-setuptools
# Install common build dependencies
APT_PACKAGES="at curl unzip tar libxt-dev gperf libxaw7-dev cifs-utils \
build-essential g++ gfortran zip libx11-dev libxkbcommon-x11-dev libxi-dev \
libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev libxinerama-dev \
libxcursor-dev yasm libnuma1 libnuma-dev python-six python3-six python-yaml \
flex libbison-dev autoconf libudev-dev libncurses5-dev libtool libxrandr-dev \
xutils-dev dh-autoreconf libgles2-mesa-dev ruby-full pkg-config"
# Additionally required by qt5-base
APT_PACKAGES="$APT_PACKAGES libxext-dev libxfixes-dev libxrender-dev \
libxcb1-dev libx11-xcb-dev libxcb-glx0-dev"
# Additionally required by qt5-base for qt5-x11extras
APT_PACKAGES="$APT_PACKAGES libxkbcommon-dev libxcb-keysyms1-dev \
libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev \
libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev"
# Additionally required by libhdfs3
APT_PACKAGES="$APT_PACKAGES libkrb5-dev"
# Additionally required by mesa
APT_PACKAGES="$APT_PACKAGES python3-setuptools"
# Additionally required/installed by Azure DevOps Scale Set Agents
APT_PACKAGES="$APT_PACKAGES liblttng-ust0 libkrb5-3 zlib1g libicu60"
sudo apt -y install $APT_PACKAGES
# Delete /etc/debian_version to prevent Azure Pipelines Scale Set Agents from
# removing some of the above
sudo apt-mark hold libcurl4
sudo apt-mark hold liblttng-ust0
sudo apt-mark hold libkrb5-3
sudo apt-mark hold zlib1g
sudo apt-mark hold libicu60
# Install newer version of nasm than the apt package, required by intel-ipsec
mkdir /tmp/nasm
@ -37,7 +63,6 @@ sudo dpkg -i nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt -y update
sudo apt install -y --no-install-recommends cuda-compiler-10-2 cuda-libraries-dev-10-2 cuda-driver-dev-10-2 cuda-cudart-dev-10-2 libcublas10 cuda-curand-dev-10-2
sudo apt install -y --no-install-recommends libcudnn7-dev
sudo ln -s /usr/local/cuda-10.1/lib64/stubs/libcuda.so /usr/local/cuda-10.1/lib64/stubs/libcuda.so.1
# Install PowerShell
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
@ -46,6 +71,11 @@ sudo apt update
sudo add-apt-repository universe
sudo apt install -y powershell
if [ -z "$StorageAccountName" ]; then
echo "No storage account supplied, skipping."
else
echo "Mapping storage account"
# Write SMB credentials
sudo mkdir /etc/smbcredentials
smbCredentialFile=/etc/smbcredentials/$StorageAccountName.cred
@ -56,19 +86,4 @@ sudo chmod 600 $smbCredentialFile
# Mount the archives SMB share to /archives
sudo mkdir /archives -m=777
echo "//$StorageAccountName.file.core.windows.net/archives /archives cifs nofail,vers=3.0,credentials=$smbCredentialFile,serverino,dir_mode=0777,file_mode=0777 0 0" | sudo tee -a /etc/fstab
# Create 'home' directory for haskell stack bits that want this
sudo mkdir -p /home/root -m=777
# Delete /etc/debian_version to prevent Azure Pipelines Scale Set Agents from removing some of the above
sudo rm /etc/debian_version
# Install dependencies that the Azure Pipelines agent will want later to make launching VMs faster
# https://docs.microsoft.com/en-us/dotnet/core/install/dependencies?tabs=netcore31&pivots=os-linux
# (we assume libssl1.0.0 or equivalent is already installed to not accidentially change SSL certs)
apt install -y liblttng-ust0 libkrb5-3 zlib1g libicu60
# Create work trees for the Azure Pipelines agent so that it puts its work tree into temporary storage.
sudo chmod 777 /mnt
sudo mkdir /agent -m=777
sudo ln -s /mnt /agent/_work
fi

View File

@ -27,9 +27,9 @@ jobs:
$commonArgs = @(
'--binarycaching',
'--x-binarysource=clear;files,W:\,upload',
'--x-buildtrees-root=E:\buildtrees',
'--x-install-root=E:\install',
'--x-packages-root=E:\packages'
'--x-buildtrees-root=D:\buildtrees',
'--x-install-root=D:\install',
'--x-packages-root=D:\packages'
)
.\vcpkg.exe x-ci-clean @commonArgs

View File

@ -18,11 +18,10 @@ or are running from Azure Cloud Shell.
$Location = 'westus2'
$Prefix = 'PrWin-' + (Get-Date -Format 'yyyy-MM-dd')
$VMSize = 'Standard_F16s_v2'
$VMSize = 'Standard_D16a_v4'
$ProtoVMName = 'PROTOTYPE'
$LiveVMPrefix = 'BUILD'
$WindowsServerSku = '2019-Datacenter'
$InstalledDiskSizeInGB = 1024
$ErrorActionPreference = 'Stop'
$ProgressActivity = 'Creating Scale Set'
@ -160,7 +159,8 @@ Set-AzStorageShareQuota -ShareName 'archives' -Context $StorageContext -Quota 20
####################################################################################################
Write-Progress `
-Activity 'Creating prototype VM' `
-Activity $ProgressActivity `
-Status 'Creating prototype VM' `
-PercentComplete (100 / $TotalProgress * $CurrentProgress++)
$NicName = $ResourceGroupName + 'NIC'
@ -186,16 +186,6 @@ $VM = Set-AzVMSourceImage `
-Skus $WindowsServerSku `
-Version latest
$InstallDiskName = $ProtoVMName + "InstallDisk"
$VM = Add-AzVMDataDisk `
-Vm $VM `
-Name $InstallDiskName `
-Lun 0 `
-Caching ReadWrite `
-CreateOption Empty `
-DiskSizeInGB $InstalledDiskSizeInGB `
-StorageAccountType 'StandardSSD_LRS'
$VM = Set-AzVMBootDiagnostic -VM $VM -Disable
New-AzVm `
-ResourceGroupName $ResourceGroupName `
@ -274,7 +264,6 @@ Write-Progress `
Remove-AzVM -Id $VM.ID -Force
Remove-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $PrototypeOSDiskName -Force
Remove-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $InstallDiskName -Force
####################################################################################################
Write-Progress `

View File

@ -90,8 +90,7 @@ if (-not [string]::IsNullOrEmpty($AdminUserPassword)) {
}
Write-Host "Executing $PsExecPath " + @PsExecArgs
$proc = Start-Process -FilePath $PsExecPath -ArgumentList $PsExecArgs -Wait -PassThru
& $PsExecPath @PsExecArgs > C:\ProvisionLog.txt
Write-Host 'Cleaning up...'
Remove-Item $PsExecPath
exit $proc.ExitCode
@ -109,10 +108,16 @@ $Workloads = @(
'Microsoft.VisualStudio.Component.VC.v141.x86.x64.Spectre',
'Microsoft.VisualStudio.Component.Windows10SDK.18362',
'Microsoft.Net.Component.4.8.SDK',
'Microsoft.Component.NetFX.Native'
'Microsoft.Component.NetFX.Native',
'Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset',
'Microsoft.VisualStudio.Component.VC.Llvm.Clang'
)
$MpiUrl = 'https://download.microsoft.com/download/A/E/0/AE002626-9D9D-448D-8197-1EA510E297CE/msmpisetup.exe'
$WindowsSDKUrl = 'https://download.microsoft.com/download/1/c/3/1c3d5161-d9e9-4e4b-9b43-b70fe8be268c/windowssdk/winsdksetup.exe'
$WindowsWDKUrl = 'https://download.microsoft.com/download/1/a/7/1a730121-7aa7-46f7-8978-7db729aa413d/wdk/wdksetup.exe'
$MpiUrl = 'https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisetup.exe'
$CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_426.00_win10.exe'
$CudaFeatures = 'nvcc_10.1 cuobjdump_10.1 nvprune_10.1 cupti_10.1 gpu_library_advisor_10.1 memcheck_10.1 ' + `
@ -278,6 +283,76 @@ Function InstallZip {
}
}
<#
.SYNOPSIS
Installs Windows SDK version 2004
.DESCRIPTION
Downloads the Windows SDK installer located at $Url, and installs it with the
correct flags.
.PARAMETER Url
The URL of the installer.
#>
Function InstallWindowsSDK {
Param(
[String]$Url
)
try {
Write-Host 'Downloading Windows SDK...'
[string]$installerPath = Get-TempFilePath -Extension 'exe'
curl.exe -L -o $installerPath -s -S $Url
Write-Host 'Installing Windows SDK...'
$proc = Start-Process -FilePath $installerPath -ArgumentList @('/features', '+', '/q') -Wait -PassThru
$exitCode = $proc.ExitCode
if ($exitCode -eq 0) {
Write-Host 'Installation successful!'
}
else {
Write-Error "Installation failed! Exited with $exitCode."
}
}
catch {
Write-Error "Failed to install Windows SDK! $($_.Exception.Message)"
}
}
<#
.SYNOPSIS
Installs Windows WDK version 2004
.DESCRIPTION
Downloads the Windows WDK installer located at $Url, and installs it with the
correct flags.
.PARAMETER Url
The URL of the installer.
#>
Function InstallWindowsWDK {
Param(
[String]$Url
)
try {
Write-Host 'Downloading Windows WDK...'
[string]$installerPath = Get-TempFilePath -Extension 'exe'
curl.exe -L -o $installerPath -s -S $Url
Write-Host 'Installing Windows WDK...'
$proc = Start-Process -FilePath $installerPath -ArgumentList @('/features', '+', '/q') -Wait -PassThru
$exitCode = $proc.ExitCode
if ($exitCode -eq 0) {
Write-Host 'Installation successful!'
}
else {
Write-Error "Installation failed! Exited with $exitCode."
}
}
catch {
Write-Error "Failed to install Windows WDK! $($_.Exception.Message)"
}
}
<#
.SYNOPSIS
Installs MPI
@ -352,94 +427,43 @@ Function InstallCuda {
}
}
<#
.SYNOPSIS
Partitions a new physical disk.
.DESCRIPTION
Takes the disk $DiskNumber, turns it on, then partitions it for use with label
$Label and drive letter $Letter.
.PARAMETER DiskNumber
The number of the disk to set up.
.PARAMETER Letter
The drive letter at which to mount the disk.
.PARAMETER Label
The label to give the disk.
#>
Function New-PhysicalDisk {
Param(
[int]$DiskNumber,
[string]$Letter,
[string]$Label
)
if ($Letter.Length -ne 1) {
throw "Bad drive letter $Letter, expected only one letter. (Did you accidentially add a : ?)"
}
try {
Write-Host "Attempting to online physical disk $DiskNumber"
[string]$diskpartScriptPath = Get-TempFilePath -Extension 'txt'
[string]$diskpartScriptContent =
"SELECT DISK $DiskNumber`r`n" +
"ONLINE DISK`r`n"
Write-Host "Writing diskpart script to $diskpartScriptPath with content:"
Write-Host $diskpartScriptContent
Set-Content -Path $diskpartScriptPath -Value $diskpartScriptContent
Write-Host 'Invoking DISKPART...'
& diskpart.exe /s $diskpartScriptPath
Write-Host "Provisioning physical disk $DiskNumber as drive $Letter"
[string]$diskpartScriptContent =
"SELECT DISK $DiskNumber`r`n" +
"ATTRIBUTES DISK CLEAR READONLY`r`n" +
"CREATE PARTITION PRIMARY`r`n" +
"FORMAT FS=NTFS LABEL=`"$Label`" QUICK`r`n" +
"ASSIGN LETTER=$Letter`r`n"
Write-Host "Writing diskpart script to $diskpartScriptPath with content:"
Write-Host $diskpartScriptContent
Set-Content -Path $diskpartScriptPath -Value $diskpartScriptContent
Write-Host 'Invoking DISKPART...'
& diskpart.exe /s $diskpartScriptPath
}
catch {
Write-Error "Failed to provision physical disk $DiskNumber as drive $Letter! $($_.Exception.Message)"
}
}
Write-Host "AdminUser password not supplied; assuming already running as AdminUser"
New-PhysicalDisk -DiskNumber 2 -Letter 'E' -Label 'install disk'
Write-Host 'Disabling pagefile...'
wmic computersystem set AutomaticManagedPagefile=False
wmic pagefileset delete
Write-Host 'Configuring AntiVirus exclusions...'
Add-MPPreference -ExclusionPath C:\
Add-MPPreference -ExclusionPath D:\
Add-MPPreference -ExclusionPath E:\
Add-MPPreference -ExclusionProcess ninja.exe
Add-MPPreference -ExclusionProcess clang-cl.exe
Add-MPPreference -ExclusionProcess cl.exe
Add-MPPreference -ExclusionProcess link.exe
Add-MPPreference -ExclusionProcess python.exe
$av = Get-Command Add-MPPreference -ErrorAction SilentlyContinue
if ($null -eq $av) {
Write-Host 'AntiVirus not installed, skipping exclusions.'
} else {
Write-Host 'Configuring AntiVirus exclusions...'
Add-MPPreference -ExclusionPath C:\
Add-MPPreference -ExclusionPath D:\
Add-MPPreference -ExclusionProcess ninja.exe
Add-MPPreference -ExclusionProcess clang-cl.exe
Add-MPPreference -ExclusionProcess cl.exe
Add-MPPreference -ExclusionProcess link.exe
Add-MPPreference -ExclusionProcess python.exe
}
InstallVisualStudio -Workloads $Workloads -BootstrapperUrl $VisualStudioBootstrapperUrl -Nickname 'Stable'
InstallWindowsSDK -Url $WindowsSDKUrl
InstallWindowsWDK -Url $WindowsWDKUrl
InstallMpi -Url $MpiUrl
InstallCuda -Url $CudaUrl -Features $CudaFeatures
InstallZip -Url $BinSkimUrl -Name 'BinSkim' -Dir 'C:\BinSkim'
if (-Not ([string]::IsNullOrWhiteSpace($StorageAccountName))) {
if ([string]::IsNullOrWhiteSpace($StorageAccountName)) {
Write-Host 'No storage account name configured.'
} else {
Write-Host 'Storing storage account name to environment'
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' `
-Name StorageAccountName `
-Value $StorageAccountName
}
if (-Not ([string]::IsNullOrWhiteSpace($StorageAccountKey))) {
if ([string]::IsNullOrWhiteSpace($StorageAccountKey)) {
Write-Host 'No storage account key configured.'
} else {
Write-Host 'Storing storage account key to environment'
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' `
-Name StorageAccountKey `

View File

@ -394,7 +394,7 @@ foreach ($library in $libraries)
if ($libraries_in_boost_port.length -gt 1) {
# Generate master boost control file which depends on each individual library
# mpi is excluded due to it having a dependency on msmpi
# mpi is excluded due to it having a dependency on msmpi/openmpi
$boostDependsList = @($libraries_in_boost_port | % { "boost-$_" } | ? { $_ -notmatch "boost-mpi" }) -join ", "
@(

View File

@ -143,11 +143,8 @@ blosc:x64-uwp=fail
bond:arm-uwp=fail
bond:x64-osx=fail
bond:x64-uwp=fail
boost-context:arm-uwp=fail
boost-context:x64-uwp=fail
boost-coroutine:arm-uwp=fail
boost-coroutine:arm64-windows=fail
boost-coroutine:x64-uwp=fail
boost-fiber:arm-uwp=fail
boost-fiber:arm64-windows=fail
boost-fiber:x64-osx=fail
@ -446,8 +443,6 @@ fdlibm:arm-uwp=fail
fdlibm:x64-uwp=fail
fftw3:arm-uwp=fail
fftw3:x64-uwp=fail
# ffmpeg on arm64 is currently failing due to an internal compiler error
ffmpeg:arm64-windows=fail
field3d:x64-windows=fail
field3d:x64-windows-static=fail
field3d:x86-windows=fail
@ -606,8 +601,8 @@ hwloc:arm-uwp=fail
hwloc:x64-uwp=fail
hyperscan:x64-linux=ignore
# hypre has a conflict with 'superlu' port
hypre:x64-linux=fail
hypre:x64-osx=fail
hypre:x64-linux=skip
hypre:x64-osx=skip
icu:arm64-windows=fail
icu:arm-uwp=fail
icu:x64-uwp=fail
@ -1204,6 +1199,7 @@ nativefiledialog:x64-uwp=fail
netcdf-cxx4:x64-linux=ignore
nethost:x64-uwp=fail
nethost:arm-uwp=fail
nettle:x64-windows-static=skip
nettle:x64-windows=skip
nettle:x64-osx=fail
networkdirect-sdk:arm64-windows=fail
@ -1464,8 +1460,6 @@ portmidi:arm-uwp=fail
portmidi:x64-linux=fail
portmidi:x64-osx=fail
portmidi:x64-uwp=fail
ppconsul:arm-uwp=fail
ppconsul:x64-uwp=fail
ppconsul:x64-linux=ignore
pqp:arm-uwp=fail
pqp:x64-uwp=fail
@ -1536,6 +1530,9 @@ qt5-x11extras:x64-osx=fail
qt5-x11extras:x86-windows=fail
qt5-x11extras:x64-windows=fail
qt5-x11extras:x64-windows-static=fail
# Broken by VS2019 16.6 and throws a ton of dialogs attempting to build
# fixed by https://github.com/microsoft/vcpkg/pull/11596
qt5-translations:x64-windows-static=skip
quickfast:x64-linux=ignore
quickfix:x64-linux=ignore
quickfix:x64-windows=ignore