diff options
author | GoaLitiuM <goalitium@kapsi.fi> | 2018-09-11 20:49:32 +0300 |
---|---|---|
committer | GoaLitiuM <goalitium@kapsi.fi> | 2018-09-21 11:56:31 +0300 |
commit | e00bd3666d97bb0190acaba554f10f4527858640 (patch) | |
tree | 6562d077ffb29b1fc399d68c58a60c854b68759a | |
parent | 9a29496a9b8caad2834e8ab139fbd7affed7d92c (diff) | |
download | meson-e00bd3666d97bb0190acaba554f10f4527858640.zip meson-e00bd3666d97bb0190acaba554f10f4527858640.tar.gz meson-e00bd3666d97bb0190acaba554f10f4527858640.tar.bz2 |
Appveyor: Install DMD compiler and dub packages
[skip ci]
-rw-r--r-- | .appveyor.yml | 15 | ||||
-rw-r--r-- | ci/install-dmd.ps1 | 71 |
2 files changed, 86 insertions, 0 deletions
diff --git a/.appveyor.yml b/.appveyor.yml index 85725c3..78f9f33 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -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')) { diff --git a/ci/install-dmd.ps1 b/ci/install-dmd.ps1 new file mode 100644 index 0000000..fc8226c --- /dev/null +++ b/ci/install-dmd.ps1 @@ -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 |