mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00

The cache is used to hold the msys installer. Even if the build phase fails, we should still populate the cache as the installer will be valid for next time. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <20230801130403.164060-6-berrange@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
127 lines
4.7 KiB
YAML
127 lines
4.7 KiB
YAML
.shared_msys2_builder:
|
|
extends: .base_job_template
|
|
tags:
|
|
- shared-windows
|
|
- windows
|
|
- windows-1809
|
|
cache:
|
|
key: "${CI_JOB_NAME}-cache"
|
|
paths:
|
|
- msys64/var/cache
|
|
when: always
|
|
needs: []
|
|
stage: build
|
|
timeout: 80m
|
|
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_TARGET-capstone
|
|
$MINGW_TARGET-curl
|
|
$MINGW_TARGET-cyrus-sasl
|
|
$MINGW_TARGET-dtc
|
|
$MINGW_TARGET-gcc
|
|
$MINGW_TARGET-glib2
|
|
$MINGW_TARGET-gnutls
|
|
$MINGW_TARGET-gtk3
|
|
$MINGW_TARGET-libgcrypt
|
|
$MINGW_TARGET-libjpeg-turbo
|
|
$MINGW_TARGET-libnfs
|
|
$MINGW_TARGET-libpng
|
|
$MINGW_TARGET-libssh
|
|
$MINGW_TARGET-libtasn1
|
|
$MINGW_TARGET-libusb
|
|
$MINGW_TARGET-lzo2
|
|
$MINGW_TARGET-nettle
|
|
$MINGW_TARGET-ninja
|
|
$MINGW_TARGET-pixman
|
|
$MINGW_TARGET-pkgconf
|
|
$MINGW_TARGET-python
|
|
$MINGW_TARGET-SDL2
|
|
$MINGW_TARGET-SDL2_image
|
|
$MINGW_TARGET-snappy
|
|
$MINGW_TARGET-spice
|
|
$MINGW_TARGET-usbredir
|
|
$MINGW_TARGET-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
|
|
- mkdir build
|
|
- cd build
|
|
- ..\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; } ;"
|
|
- Write-Output "Finished build at $(Get-Date -Format u)"
|
|
|
|
msys2-64bit:
|
|
extends: .shared_msys2_builder
|
|
variables:
|
|
MINGW_TARGET: mingw-w64-x86_64
|
|
MSYSTEM: MINGW64
|
|
# 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 the msys2 64-bit job, due to the build could not complete within
|
|
CONFIGURE_ARGS: --target-list=x86_64-softmmu --without-default-devices
|
|
# qTests don't run successfully with "--without-default-devices",
|
|
# so let's exclude the qtests from CI for now.
|
|
TEST_ARGS: --no-suite qtest
|
|
|
|
msys2-32bit:
|
|
extends: .shared_msys2_builder
|
|
variables:
|
|
MINGW_TARGET: mingw-w64-i686
|
|
MSYSTEM: MINGW32
|
|
CONFIGURE_ARGS: --target-list=ppc64-softmmu
|
|
TEST_ARGS: --no-suite qtest
|