mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 09:55:55 +00:00
![Alex Bennée](/assets/img/avatar_default.png)
This avoids fetching blobs and tree references for branches we are not going to worry about. Also skip tag references which are similarly not useful and keep the default --prune. This keeps the .git data to around 100M rather than the ~400M even a shallow clone takes. So we can check the savings we also run a quick du while setting up the build. We also have to have special settings of GIT_FETCH_EXTRA_FLAGS for the Windows build, the migration legacy test and the custom runners. In the case of the custom runners we also move the free floating variable to the runner template. Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240312170011.1688444-1-alex.bennee@linaro.org>
133 lines
5.3 KiB
YAML
133 lines
5.3 KiB
YAML
msys2-64bit:
|
|
extends: .base_job_template
|
|
tags:
|
|
- shared-windows
|
|
- windows
|
|
- windows-1809
|
|
cache:
|
|
key: "$CI_JOB_NAME"
|
|
paths:
|
|
- msys64/var/cache
|
|
- ccache
|
|
when: always
|
|
needs: []
|
|
stage: build
|
|
timeout: 100m
|
|
variables:
|
|
# Select the "64 bit, gcc and MSVCRT" MSYS2 environment
|
|
MSYSTEM: MINGW64
|
|
# This feature doesn't (currently) work with PowerShell, it stops
|
|
# the echo'ing of commands being run and doesn't show any timing
|
|
FF_SCRIPT_SECTIONS: 0
|
|
# do not remove "--without-default-devices"!
|
|
# commit 9f8e6cad65a6 ("gitlab-ci: Speed up the msys2-64bit job by using --without-default-devices"
|
|
# changed to compile QEMU with the --without-default-devices switch
|
|
# for this job, because otherwise the build could not complete within
|
|
# the project timeout.
|
|
CONFIGURE_ARGS: --target-list=x86_64-softmmu --without-default-devices -Ddebug=false -Doptimization=0
|
|
# qTests don't run successfully with "--without-default-devices",
|
|
# so let's exclude the qtests from CI for now.
|
|
TEST_ARGS: --no-suite qtest
|
|
# The Windows git is a bit older so override the default
|
|
GIT_FETCH_EXTRA_FLAGS: --no-tags --prune --quiet
|
|
artifacts:
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
|
expire_in: 7 days
|
|
paths:
|
|
- build/meson-logs/testlog.txt
|
|
reports:
|
|
junit: "build/meson-logs/testlog.junit.xml"
|
|
before_script:
|
|
- Write-Output "Acquiring msys2.exe installer at $(Get-Date -Format u)"
|
|
- If ( !(Test-Path -Path msys64\var\cache ) ) {
|
|
mkdir msys64\var\cache
|
|
}
|
|
- Invoke-WebRequest
|
|
"https://repo.msys2.org/distrib/msys2-x86_64-latest.sfx.exe.sig"
|
|
-outfile "msys2.exe.sig"
|
|
- if ( Test-Path -Path msys64\var\cache\msys2.exe.sig ) {
|
|
Write-Output "Cached installer sig" ;
|
|
if ( ((Get-FileHash msys2.exe.sig).Hash -ne (Get-FileHash msys64\var\cache\msys2.exe.sig).Hash) ) {
|
|
Write-Output "Mis-matched installer sig, new installer download required" ;
|
|
Remove-Item -Path msys64\var\cache\msys2.exe.sig ;
|
|
if ( Test-Path -Path msys64\var\cache\msys2.exe ) {
|
|
Remove-Item -Path msys64\var\cache\msys2.exe
|
|
}
|
|
} else {
|
|
Write-Output "Matched installer sig, cached installer still valid"
|
|
}
|
|
} else {
|
|
Write-Output "No cached installer sig, new installer download required" ;
|
|
if ( Test-Path -Path msys64\var\cache\msys2.exe ) {
|
|
Remove-Item -Path msys64\var\cache\msys2.exe
|
|
}
|
|
}
|
|
- if ( !(Test-Path -Path msys64\var\cache\msys2.exe ) ) {
|
|
Write-Output "Fetching latest installer" ;
|
|
Invoke-WebRequest
|
|
"https://repo.msys2.org/distrib/msys2-x86_64-latest.sfx.exe"
|
|
-outfile "msys64\var\cache\msys2.exe" ;
|
|
Copy-Item -Path msys2.exe.sig -Destination msys64\var\cache\msys2.exe.sig
|
|
} else {
|
|
Write-Output "Using cached installer"
|
|
}
|
|
- Write-Output "Invoking msys2.exe installer at $(Get-Date -Format u)"
|
|
- msys64\var\cache\msys2.exe -y
|
|
- ((Get-Content -path .\msys64\etc\\post-install\\07-pacman-key.post -Raw)
|
|
-replace '--refresh-keys', '--version') |
|
|
Set-Content -Path ${CI_PROJECT_DIR}\msys64\etc\\post-install\\07-pacman-key.post
|
|
- .\msys64\usr\bin\bash -lc "sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf"
|
|
- .\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu' # Core update
|
|
- .\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu' # Normal update
|
|
- taskkill /F /FI "MODULES eq msys-2.0.dll"
|
|
script:
|
|
- Write-Output "Installing mingw packages at $(Get-Date -Format u)"
|
|
- .\msys64\usr\bin\bash -lc "pacman -Sy --noconfirm --needed
|
|
bison diffutils flex
|
|
git grep make sed
|
|
mingw-w64-x86_64-binutils
|
|
mingw-w64-x86_64-capstone
|
|
mingw-w64-x86_64-ccache
|
|
mingw-w64-x86_64-curl
|
|
mingw-w64-x86_64-cyrus-sasl
|
|
mingw-w64-x86_64-dtc
|
|
mingw-w64-x86_64-gcc
|
|
mingw-w64-x86_64-glib2
|
|
mingw-w64-x86_64-gnutls
|
|
mingw-w64-x86_64-gtk3
|
|
mingw-w64-x86_64-libgcrypt
|
|
mingw-w64-x86_64-libjpeg-turbo
|
|
mingw-w64-x86_64-libnfs
|
|
mingw-w64-x86_64-libpng
|
|
mingw-w64-x86_64-libssh
|
|
mingw-w64-x86_64-libtasn1
|
|
mingw-w64-x86_64-libusb
|
|
mingw-w64-x86_64-lzo2
|
|
mingw-w64-x86_64-nettle
|
|
mingw-w64-x86_64-ninja
|
|
mingw-w64-x86_64-pixman
|
|
mingw-w64-x86_64-pkgconf
|
|
mingw-w64-x86_64-python
|
|
mingw-w64-x86_64-SDL2
|
|
mingw-w64-x86_64-SDL2_image
|
|
mingw-w64-x86_64-snappy
|
|
mingw-w64-x86_64-spice
|
|
mingw-w64-x86_64-usbredir
|
|
mingw-w64-x86_64-zstd"
|
|
- Write-Output "Running build at $(Get-Date -Format u)"
|
|
- $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
|
|
- $env:MSYS = 'winsymlinks:native' # Enable native Windows symlink
|
|
- $env:CCACHE_BASEDIR = "$env:CI_PROJECT_DIR"
|
|
- $env:CCACHE_DIR = "$env:CCACHE_BASEDIR/ccache"
|
|
- $env:CCACHE_MAXSIZE = "500M"
|
|
- $env:CCACHE_DEPEND = 1 # cache misses are too expensive with preprocessor mode
|
|
- $env:CC = "ccache gcc"
|
|
- mkdir build
|
|
- cd build
|
|
- ..\msys64\usr\bin\bash -lc "ccache --zero-stats"
|
|
- ..\msys64\usr\bin\bash -lc "../configure --enable-fdt=system $CONFIGURE_ARGS"
|
|
- ..\msys64\usr\bin\bash -lc "make"
|
|
- ..\msys64\usr\bin\bash -lc "make check MTESTARGS='$TEST_ARGS' || { cat meson-logs/testlog.txt; exit 1; } ;"
|
|
- ..\msys64\usr\bin\bash -lc "ccache --show-stats"
|
|
- Write-Output "Finished build at $(Get-Date -Format u)"
|