From a5211a15207a2e6e30e213c5530a5d1bf5c2531c Mon Sep 17 00:00:00 2001 From: Sam James Date: Tue, 6 Aug 2024 06:53:05 +0100 Subject: [PATCH] ci: fix dub tests on Windows This fixes a pesky failure in vs2019 vc2019x64ninja for d/11 dub: ``` Searching in DUB cache for compatible urld.lib WARNING: No such cache folder: C:\Users\VssAdministrator\AppData\Local\dub\packages\urld-2.1.1\urld\.dub\build ERROR: urld@2.1.1 not found You may try the following command to install the necessary DUB libraries: dub run --yes dub-build-deep -- urld --arch=x86_64 --compiler=dmd --build=debug Run-time dependency urld found: NO test cases\d\11 dub\meson.build:13:11: ERROR: Dependency "urld" not found ``` Follow dub's advice by installing urld in ci/run.ps1 before the testsuite; we were already doing this for ubuntu, opensuse, and even recommending it in our docs before now: * ci/ciimage/ubuntu-rolling/install.sh * ci/ciimage/opensuse/install.sh * docs/markdown/Dependencies.md We also bump to 'ci4' which has newer D added (from the cidata repo). --- ci/run.ps1 | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/ci/run.ps1 b/ci/run.ps1 index 596253fe2..3fc06fdaf 100644 --- a/ci/run.ps1 +++ b/ci/run.ps1 @@ -50,7 +50,7 @@ function DownloadFile([String] $Source, [String] $Destination) { if (($env:backend -eq 'ninja') -and ($env:arch -ne 'arm64')) { $dmd = $true } else { $dmd = $false } -DownloadFile -Source https://github.com/mesonbuild/cidata/releases/download/ci3/ci_data.zip -Destination $env:AGENT_WORKFOLDER\ci_data.zip +DownloadFile -Source https://github.com/mesonbuild/cidata/releases/download/ci4/ci_data.zip -Destination $env:AGENT_WORKFOLDER\ci_data.zip echo "Extracting ci_data.zip" Expand-Archive $env:AGENT_WORKFOLDER\ci_data.zip -DestinationPath $env:AGENT_WORKFOLDER\ci_data & "$env:AGENT_WORKFOLDER\ci_data\install.ps1" -Arch $env:arch -Compiler $env:compiler -Boost $true -DMD $dmd @@ -87,6 +87,44 @@ if ($env:backend -eq 'ninja') { MSBuild /version } +# This mirrors the D logic in cidata/build_win32.sh +if ($dmd) { + if ($Arch -eq "x64") { + $dmdArch = "x86_64" + } else { + $dmdArch = "x86_mscoff" + } + + $ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path + $env:Path = "$ScriptDir;$env:Path" + $dmd_bin = Join-Path $ScriptDir "dmd2\windows\bin" + $env:Path = $env:Path + ";" + $dmd_bin + + $i = 1 + while ($i -le 5) { + # Needed for d/11 dub to use the 'urld' library + dub run --yes dub-build-deep -- urld --arch=$dmdArch --compiler=dmd --build=debug + if ($LastExitCode -eq 0) { + break + } + + $i = $i + 1 + Start-Sleep -Seconds 2 + } + + $i = 1 + while ($i -le 5) { + # XXX: Sometimes (?) we need this older version when the whole testsuite is run + dub run --yes dub-build-deep -- urld@2.1.1 --arch=$dmdArch --compiler=dmd --build=debug + if ($LastExitCode -eq 0) { + break + } + + $i = $i + 1 + Start-Sleep -Seconds 2 + } +} + echo "" echo "Python version:" python --version