The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.7 KiB
110 lines
3.7 KiB
python ./skip_ci.py --base-branch-env=SYSTEM_PULLREQUEST_TARGETBRANCH --is-pull-env=SYSTEM_PULLREQUEST_PULLREQUESTID --base-branch-origin |
|
if ($LastExitCode -ne 0) { |
|
exit 0 |
|
} |
|
|
|
# remove Chocolately, MinGW, Strawberry Perl from path, so we don't find gcc/gfortran and try to use it |
|
# remove PostgreSQL from path so we don't pickup a broken zlib from it |
|
$env:Path = ($env:Path.Split(';') | Where-Object { $_ -notmatch 'mingw|Strawberry|Chocolatey|PostgreSQL' }) -join ';' |
|
|
|
if ($env:arch -eq 'x64') { |
|
# Rust puts its shared stdlib in a secret place, but it is needed to run tests. |
|
$env:Path += ";$HOME/.rustup/toolchains/stable-x86_64-pc-windows-msvc/bin" |
|
} elseif ($env:arch -eq 'x86') { |
|
# Switch to the x86 Rust toolchain |
|
rustup default stable-i686-pc-windows-msvc |
|
|
|
# Also install clippy |
|
rustup component add clippy |
|
|
|
# Rust puts its shared stdlib in a secret place, but it is needed to run tests. |
|
$env:Path += ";$HOME/.rustup/toolchains/stable-i686-pc-windows-msvc/bin" |
|
# Need 32-bit Python for tests that need the Python dependency |
|
$env:Path = "C:\hostedtoolcache\windows\Python\3.6.8\x86;C:\hostedtoolcache\windows\Python\3.6.8\x86\Scripts;$env:Path" |
|
} |
|
|
|
# Set the CI env var for the meson test framework |
|
$env:CI = '1' |
|
|
|
# download and install prerequisites |
|
function DownloadFile([String] $Source, [String] $Destination) { |
|
$retries = 10 |
|
echo "Downloading $Source" |
|
for ($i = 1; $i -le $retries; $i++) { |
|
try { |
|
(New-Object net.webclient).DownloadFile($Source, $Destination) |
|
break # succeeded |
|
} catch [net.WebException] { |
|
if ($i -eq $retries) { |
|
throw # fail on last retry |
|
} |
|
$backoff = (10 * $i) # backoff 10s, 20s, 30s... |
|
echo ('{0}: {1}' -f $Source, $_.Exception.Message) |
|
echo ('Retrying in {0}s...' -f $backoff) |
|
Start-Sleep -m ($backoff * 1000) |
|
} |
|
} |
|
} |
|
|
|
|
|
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 |
|
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 |
|
|
|
|
|
echo "=== PATH BEGIN ===" |
|
echo ($env:Path).Replace(';',"`n") |
|
echo "=== PATH END ===" |
|
echo "" |
|
|
|
$progs = @("python","ninja","pkg-config","cl","rc","link") |
|
foreach ($prog in $progs) { |
|
echo "" |
|
echo "Locating ${prog}:" |
|
where.exe $prog |
|
} |
|
|
|
echo "" |
|
echo "Ninja / MSBuld version:" |
|
if ($env:backend -eq 'ninja') { |
|
ninja --version |
|
} else { |
|
MSBuild /version |
|
} |
|
|
|
echo "" |
|
echo "Python version:" |
|
python --version |
|
|
|
# Needed for running unit tests in parallel. |
|
echo "" |
|
python -m pip --disable-pip-version-check install --upgrade pefile pytest-xdist jsonschema coverage |
|
|
|
echo "" |
|
echo "=== Start running tests ===" |
|
# Starting from VS2019 Powershell(?) will fail the test run |
|
# if it prints anything to stderr. Python's test runner |
|
# does that by default so we need to forward it. |
|
cmd /c "python 2>&1 ./tools/run_with_cov.py run_tests.py --backend $env:backend $env:extraargs" |
|
|
|
$result = $LastExitCode |
|
|
|
echo "" |
|
echo "" |
|
echo "=== Gathering coverage report ===" |
|
echo "" |
|
|
|
python3 -m coverage combine |
|
python3 -m coverage xml |
|
python3 -m coverage report |
|
|
|
# Currently codecov.py does not handle Azure, use this fork of a fork to get it |
|
# working without requiring a token |
|
git clone https://github.com/mensinda/codecov-python |
|
python3 -m pip install --ignore-installed ./codecov-python |
|
python3 -m codecov -f .coverage/coverage.xml -n "VS$env:compiler $env:arch $env:backend" -c $env:SOURCE_VERSION |
|
|
|
exit $result
|
|
|