Appveyor: Install DMD compiler and dub packages

[skip ci]
pull/4158/head
GoaLitiuM 7 years ago
parent 9a29496a9b
commit e00bd3666d
  1. 15
      .appveyor.yml
  2. 71
      ci/install-dmd.ps1

@ -105,6 +105,21 @@ install:
- cmd: if %compiler%==cygwin ( set WRAPPER=ci\run-in-cygwin.bat )
- cmd: if %compiler%==cygwin ( %WRAPPER% which %PYTHON% ) else ( where %PYTHON% )
# Setup D compiler and dub packages
- ps: |
If($Env:compiler.StartsWith('msvc') -and $Env:backend -eq 'ninja') {
& .\ci\install-dmd.ps1
$arch = 'x86_mscoff'
If($Env:arch -eq 'x64') {
$arch = 'x86_64'
}
& dub fetch urld
& dub build urld --compiler=dmd --arch=$arch
& dub fetch dubtestproject
& dub build dubtestproject:test1 --compiler=dmd --arch=$arch
& dub build dubtestproject:test2 --compiler=dmd --arch=$arch
}
# pkg-config is needed for the pkg-config tests on msvc
- ps: |
If($Env:compiler.StartsWith('msvc')) {

@ -0,0 +1,71 @@
param (
[string]$Version = $null
)
Set-StrictMode -Version latest
$ErrorActionPreference = "Stop"
$ProgressPreference = "SilentlyContinue"
# default installation directory
$dmd_install = "C:\D"
$dmd_version_file = "C:\cache\DMD_LATEST"
#echo "Fetching latest DMD version..."
if (!$Version) {
$dmd_latest_url = "http://downloads.dlang.org/releases/LATEST"
$retries = 10
for ($i = 1; $i -le $retries; $i++) {
try {
[system.io.directory]::CreateDirectory((Split-Path -parent $dmd_version_file)) > $null
Invoke-WebRequest -URI $dmd_latest_url -OutFile $dmd_version_file
break
} catch [net.WebException] {
if ($i -eq $retries) {
break
}
$backoff = (10 * $i) # backoff 10s, 20s, 30s...
echo ('{0}: {1}' -f $dmd_latest_url, $_.Exception.Message)
echo ('Retrying in {0}s...' -f $backoff)
Start-Sleep -m ($backoff * 1000)
} catch {
throw
}
}
if (Test-Path $dmd_version_file) {
$dmd_version = Get-Content -Path $dmd_version_file
} else {
throw "Failed to resolve latest DMD version"
}
} else {
$dmd_version = $Version
}
$dmd_url = "http://downloads.dlang.org/releases/2.x/$dmd_version/dmd.$dmd_version.windows.zip"
$dmd_filename = [System.IO.Path]::GetFileName($dmd_url)
$dmd_archive = Join-Path ($env:temp) $dmd_filename
#echo "Downloading $dmd_filename..."
$retries = 10
for ($i = 1; $i -le $retries; $i++) {
try {
(New-Object net.webclient).DownloadFile($dmd_url, $dmd_archive)
break
} catch [net.WebException] {
if ($i -eq $retries) {
throw # fail on last retry
}
$backoff = (10 * $i) # backoff 10s, 20s, 30s...
echo ('{0}: {1}' -f $dmd_url, $_.Exception.Message)
echo ('Retrying in {0}s...' -f $backoff)
Start-Sleep -m ($backoff * 1000)
}
}
#echo "Extracting $dmd_filename..."
Expand-Archive $dmd_archive -Force -DestinationPath $dmd_install
# add to environment path
#echo "Installing DMD..."
$dmd_bin = Join-Path $dmd_install "dmd2\windows\bin"
$Env:Path = $Env:Path + ";" + $dmd_bin
#echo "Testing DMD..."
& dmd.exe --version 2>&1>$null
Loading…
Cancel
Save