ci: Build and cache static Qt instead of downloading a pre-built one

pull/826/head
Hennadii Stepanov 3 years ago
parent e0ca5d0513
commit 3a68546fd0
No known key found for this signature in database
GPG Key ID: 410108112E7EA81F

@ -85,65 +85,68 @@ task:
image: cirrusci/windowsservercore:visualstudio2019 image: cirrusci/windowsservercore:visualstudio2019
timeout_in: 120m timeout_in: 120m
env: env:
CIRRUS_SHELL: powershell PATH: 'C:\jom;C:\Python39;C:\Python39\Scripts;C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin;%PATH%'
PATH: 'C:\Python39;C:\Python39\Scripts;C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin;%PATH%'
PYTHONUTF8: 1 PYTHONUTF8: 1
VCPKG_TAG: '75522bb1f2e7d863078bcd06322348f053a9e33f' VCPKG_TAG: '75522bb1f2e7d863078bcd06322348f053a9e33f'
VCPKG_FEATURE_FLAGS: 'manifests' VCPKG_FEATURE_FLAGS: 'manifests'
QT_DOWNLOAD_URL: 'https://github.com/sipsorcery/qt_win_binary/releases/download/qt51211x64_static_vs2019_160900/Qt5.12.11_x64_static_vs2019_160900.zip' QT_DOWNLOAD_URL: 'https://download.qt.io/official_releases/qt/5.12/5.12.11/single/qt-everywhere-src-5.12.11.zip'
QT_DOWNLOAD_HASH: 'b24436bbc49ac69d992efc148e640f02e8dec426bed5f8497abf735e7d7d59d0' QT_LOCAL_PATH: 'C:\qt-everywhere-src-5.12.11.zip'
QT_LOCAL_PATH: 'C:\Qt5.12.11_x64_static_vs2019_160900' QT_SOURCE_DIR: 'C:\qt-everywhere-src-5.12.11'
QTBASEDIR: 'C:\Qt5.12.11_x64_static_vs2019_160900'
x64_NATIVE_TOOLS: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"'
IgnoreWarnIntDirInTempDetected: 'true' IgnoreWarnIntDirInTempDetected: 'true'
merge_script: merge_script:
- git config --global user.email "ci@ci.ci" - ps: git config --global user.email "ci@ci.ci"
- git config --global user.name "ci" - ps: git config --global user.name "ci"
# Windows filesystem loses the executable bit, and all of the executable # Windows filesystem loses the executable bit, and all of the executable
# files are considered "modified" now. It will break the following `git merge` # files are considered "modified" now. It will break the following `git merge`
# command. The next two commands make git ignore this issue. # command. The next two commands make git ignore this issue.
- git config core.filemode false - ps: git config core.filemode false
- git reset --hard - ps: git reset --hard
- if ($env:CIRRUS_PR -eq $null) { exit 0; } - ps: if ($env:CIRRUS_PR -eq $null) { exit 0; }
- git fetch $env:CIRRUS_REPO_CLONE_URL $env:CIRRUS_BASE_BRANCH - ps: git fetch $env:CIRRUS_REPO_CLONE_URL $env:CIRRUS_BASE_BRANCH
# Merge base to detect silent merge conflicts. # Merge base to detect silent merge conflicts.
- git merge FETCH_HEAD - ps: git merge FETCH_HEAD
msvc_qt_built_cache:
folder: "%QTBASEDIR%"
reupload_on_changes: false
fingerprint_script:
- echo %QT_DOWNLOAD_URL%
- msbuild -version
populate_script:
- curl -L -o C:\jom.zip http://download.qt.io/official_releases/jom/jom.zip
- mkdir C:\jom
- tar -xf C:\jom.zip -C C:\jom
- curl -L -o %QT_LOCAL_PATH% %QT_DOWNLOAD_URL%
- tar -xf %QT_LOCAL_PATH% -C C:\
- '%x64_NATIVE_TOOLS%'
- cd %QT_SOURCE_DIR%
- mkdir build
- cd build
- ..\configure -release -silent -opensource -confirm-license -opengl desktop -no-shared -static -static-runtime -mp -qt-zlib -qt-pcre -qt-libpng -no-libjpeg -nomake examples -nomake tests -nomake tools -no-dbus -no-libudev -no-icu -no-gtk -no-opengles3 -no-angle -no-sql-sqlite -no-sql-odbc -no-sqlite -no-libudev -no-vulkan -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtx11extras -skip qtxmlpatterns -no-openssl -no-feature-sql -no-feature-sqlmodel -prefix %QTBASEDIR%
- jom
- jom install
vcpkg_cache: vcpkg_cache:
folder: 'C:\Users\ContainerAdministrator\AppData\Local\vcpkg\archives' folder: 'C:\Users\ContainerAdministrator\AppData\Local\vcpkg\archives'
install_python_script: install_python_script:
- choco install --yes --no-progress python3 --version=3.9.6 - choco install --yes --no-progress python3 --version=3.9.6
- Write-Host ""
- python -VV - python -VV
install_vcpkg_script: install_vcpkg_script:
- cd .. - cd ..
- git clone --quiet https://github.com/microsoft/vcpkg.git - git clone --quiet https://github.com/microsoft/vcpkg.git
- cd vcpkg - cd vcpkg
- git -c advice.detachedHead=false checkout $env:VCPKG_TAG - git -c advice.detachedHead=false checkout %VCPKG_TAG%
- .\bootstrap-vcpkg -disableMetrics - .\bootstrap-vcpkg -disableMetrics
- Add-Content "triplets\x64-windows-static.cmake" "set(VCPKG_BUILD_TYPE release)" - echo set(VCPKG_BUILD_TYPE release) >> triplets\x64-windows-static.cmake
- .\vcpkg integrate install - .\vcpkg integrate install
- Write-Host ""
- .\vcpkg version - .\vcpkg version
download_qt_binaries_script: |
Invoke-WebRequest -Uri $env:QT_DOWNLOAD_URL -Out qtdownload.zip;
Write-Host "Qt binaries successfully downloaded, checking hash against $env:QT_DOWNLOAD_HASH...";
if ((Get-FileHash qtdownload.zip).Hash -eq $env:QT_DOWNLOAD_HASH) {
Write-Host "Downloaded Qt binaries archive matched the expected hash.";
Expand-Archive qtdownload.zip -DestinationPath $env:QT_LOCAL_PATH;
}
else {
Write-Host "ERROR: Downloaded Qt binaries archive did not match the expected hash.";
exit 1;
}
build_environment_script:
- choco list --localonly
- Write-Host ""
- msbuild -version
build_script: build_script:
- cd $env:CIRRUS_WORKING_DIR - cd %CIRRUS_WORKING_DIR%
- python build_msvc\msvc-autogen.py - python build_msvc\msvc-autogen.py
- msbuild build_msvc\bitcoin.sln -property:Configuration=Release -maxCpuCount -verbosity:minimal -noLogo - msbuild build_msvc\bitcoin.sln -property:Configuration=Release -maxCpuCount -verbosity:minimal -noLogo
unit_tests_script: unit_tests_script:
- src\test_bitcoin.exe -l test_suite - src\test_bitcoin.exe -l test_suite
- src\bench_bitcoin.exe > $null - src\bench_bitcoin.exe > NUL
- python test\util\test_runner.py - python test\util\test_runner.py
- python test\util\rpcauth-test.py - python test\util\rpcauth-test.py

Loading…
Cancel
Save