# Notes: # - Minimal appveyor.yml file is an empty file. All sections are optional. # - Indent each level of configuration with 2 spaces. Do not use tabs! # - All section names are case-sensitive. # - Section names should be unique on each level. #---------------------------------# # general configuration # #---------------------------------# # version format version: '{build}-{branch}' # branches to build branches: # whitelist only: - develop - master # Do not build on tags (GitHub and BitBucket) skip_tags: true platform: - x86 - x64 #---------------------------------# # environment setup # #---------------------------------# # set clone depth clone_depth: 1 # clone entire repository history if not defined # fetch repository as zip archive shallow_clone: false # default is "false" environment: ACCESS_TOKEN: secure: RUhnEHqaR8KhalOMWwZZOoO342Ja50QV4KpEWdm9g3pG+jG7i6aJqUmeKF1l5VN6dzksk1u+yN6pOLnU8oGcaVQ6v+1dpKK1oZvF0tyHhNE= matrix: - job_name: MacOS_12_Qt_6_4 (multibundle) APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey COMPILER: clang QT: Qt/6.4/macos QT_VERSION: Qt6 BUILD_SYSTEM: "qbs" ARCH: x64 XCODE_VERSION: 13.4.1 PLATFORM: "macOS_11+" MACOS_DEPLOYMENT_TARGET: 11.0 MULTI_BUNDLE: true DEPLOY: true - job_name: MacOS_12_Qt_6_4 (singlebundle) APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey COMPILER: clang QT: Qt/6.4/macos QT_VERSION: Qt6 BUILD_SYSTEM: "qbs" ARCH: x64 XCODE_VERSION: 13.4.1 PLATFORM: "macOS_11+" MACOS_DEPLOYMENT_TARGET: 11.0 MULTI_BUNDLE: false DEPLOY: true - job_name: MacOS_10_15_Qt_5_15 (qbs, multibundle) APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina COMPILER: clang QT: Qt/5.15/clang_64 QT_VERSION: Qt5_15 BUILD_SYSTEM: "qbs" ARCH: x64 XCODE_VERSION: 12.3 PLATFORM: "macOS_10.13+" MACOS_DEPLOYMENT_TARGET: 10.13 MULTI_BUNDLE: true DEPLOY: true - job_name: MacOS_10_15_Qt_5_15 (qbs, singlebundle) APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina COMPILER: clang QT: Qt/5.15/clang_64 QT_VERSION: Qt5_15 BUILD_SYSTEM: "qbs" ARCH: x64 XCODE_VERSION: 12.3 PLATFORM: "macOS_10.13+" MACOS_DEPLOYMENT_TARGET: 10.13 MULTI_BUNDLE: false DEPLOY: true - job_name: Windows_Qt_6_5_(GCC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 COMPILER: mingw COMPILER_CPPSTD: gnu17 COMPILER_LIBCXX: libstdc++11 QT: Qt\6.5\mingw_64 QT_VERSION: Qt6_5 BUILD_SYSTEM: "qbs" QMAKE: qmake.exe ENABLE_PCH: true GCC_VERSION: 12.2 MINGW_PATH: C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin ARCH: x64 PYTHON: "C:\\Python311-x64" PLATFORM: "Windows10+" CHOCOLATEY_PACKAGES: true CHOCOLATEY_MINGW_VERSION: 12.2.0.03042023 WINDEPLOYQT_BIN_PATH: "undefined" DEPLOY: true RUN_TESTS: true - job_name: Windows_Qt_5_15_(qbs_GCC_x86) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 COMPILER: mingw COMPILER_CPPSTD: gnu17 COMPILER_LIBCXX: libstdc++11 QT: Qt\5.15\mingw81_32 QT_VERSION: Qt5_15 BUILD_SYSTEM: "qbs" QMAKE: qmake.exe ENABLE_PCH: true GCC_VERSION: 8.1 MINGW_PATH: C:\Qt\Tools\mingw810_32\bin ARCH: x86 PYTHON: "C:\\Python311" PLATFORM: "Windows7+" CHOCOLATEY_PACKAGES: false WINDEPLOYQT_BIN_PATH: "undefined" DEPLOY: true RUN_TESTS: true - job_name: Windows_Qt_5_6_(GCC_x86) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 COMPILER: mingw QT: Qt\5.6\mingw49_32 QT_VERSION: Qt5_6 BUILD_SYSTEM: "make" MINGW_PATH: C:\Qt\Tools\mingw492_32\bin ARCH: x86 PYTHON: "C:\\Python38" PLATFORM: "WindowsXP+" DEPLOY: true - job_name: Windows_Qt_6_4_(GCC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 COMPILER: mingw COMPILER_CPPSTD: gnu17 COMPILER_LIBCXX: libstdc++11 QT: Qt\6.4\mingw_64 QT_VERSION: Qt6_4 BUILD_SYSTEM: "qbs" QMAKE: qmake.exe ENABLE_PCH: true GCC_VERSION: 12.2 MINGW_PATH: C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin ARCH: x64 PYTHON: "C:\\Python311-x64" PLATFORM: "Windows10+" CHOCOLATEY_PACKAGES: true CHOCOLATEY_MINGW_VERSION: 12.2.0.03042023 WINDEPLOYQT_BIN_PATH: "undefined" DEPLOY: false RUN_TESTS: true - job_name: Windows_Qt_5_15_(make_GCC_x86) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 COMPILER: mingw QT: Qt\5.15\mingw81_32 QT_VERSION: Qt5_15 BUILD_SYSTEM: "make" MINGW_PATH: C:\Qt\Tools\mingw810_32\bin ARCH: x86 PYTHON: "C:\\Python311" PLATFORM: "Windows7+" DEPLOY: false - job_name: Windows_Qt_6_5_(MSVC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 COMPILER: msvc QT: Qt\6.5\msvc2019_64 QT_VERSION: Qt6_5 BUILD_SYSTEM: "qbs" QMAKE: qmake.exe ENABLE_PCH: true MSVC_PATH: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.37.32822\\bin\\Hostx64\\x64" VSINSTALLDIR: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\" ARCH: x64 PYTHON: "C:\\Python311-x64" PLATFORM: "Windows10+" CHOCOLATEY_PACKAGES: false WINDEPLOYQT_BIN_PATH: "undefined" DEPLOY: false RUN_TESTS: true - job_name: Windows_Qt_6_4_(MSVC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 COMPILER: msvc QT: Qt\6.4\msvc2019_64 QT_VERSION: Qt6_4 BUILD_SYSTEM: "qbs" QMAKE: qmake.exe ENABLE_PCH: true MSVC_PATH: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\Hostx64\\x64" VSINSTALLDIR: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\" ARCH: x64 PYTHON: "C:\\Python311-x64" PLATFORM: "Windows10+" CHOCOLATEY_PACKAGES: false WINDEPLOYQT_BIN_PATH: "undefined" DEPLOY: false RUN_TESTS: true - job_name: Windows_Qt_5_15_(qbs_GCC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 COMPILER: mingw COMPILER_CPPSTD: gnu17 COMPILER_LIBCXX: libstdc++11 QT: Qt\5.15\mingw81_64 QT_VERSION: Qt5_15 BUILD_SYSTEM: "qbs" QMAKE: qmake.exe ENABLE_PCH: true GCC_VERSION: 8.1 MINGW_PATH: C:\Qt\Tools\mingw810_64\bin ARCH: x64 PYTHON: "C:\\Python311-x64" PLATFORM: "Windows7+" CHOCOLATEY_PACKAGES: false WINDEPLOYQT_BIN_PATH: "undefined" DEPLOY: false RUN_TESTS: true - job_name: Windows_Qt_5_15_(qbs_MSVC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 COMPILER: msvc QT: Qt\5.15\msvc2019_64 BUILD_SYSTEM: "qbs" QMAKE: qmake.exe ENABLE_PCH: true MSVC_PATH: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\Hostx64\\x64" VSINSTALLDIR: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\" VSVER: 16 ARCH: x64 PYTHON: "C:\\Python311-x64" PLATFORM: "Windows7+" CHOCOLATEY_PACKAGES: false WINDEPLOYQT_BIN_PATH: "undefined" DEPLOY: false RUN_TESTS: true - job_name: Windows_Qt_5_15_(make_GCC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 COMPILER: mingw QT: Qt\5.15\mingw81_64 QT_VERSION: Qt5_15 BUILD_SYSTEM: "make" MINGW_PATH: C:\Qt\Tools\mingw810_64\bin ARCH: x64 PYTHON: "C:\\Python311-x64" PLATFORM: "Windows7+" DEPLOY: false - job_name: Windows_Qt_5_15_(nmake_MSVC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 COMPILER: msvc QT: Qt\5.15\msvc2019_64 BUILD_SYSTEM: "nmake" VSVER: 16 ARCH: x64 PYTHON: "C:\\Python311-x64" PLATFORM: "Windows7+" DEPLOY: false - job_name: MacOS_10_15_Qt_5_15 (make) APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina COMPILER: clang QT: Qt/5.15/clang_64 QT_VERSION: Qt5_15 BUILD_SYSTEM: "make" ARCH: x64 XCODE_VERSION: 12.3 PLATFORM: "macOS_10.13+" DEPLOY: false - job_name: Windows_Qt_5_6_(MSVC_x64) APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 COMPILER: msvc QT: Qt\5.6\msvc2015_64 QT_VERSION: Qt5_6 BUILD_SYSTEM: "nmake" VSVER: 14 ARCH: x64 PYTHON: "C:\\Python38-x64" PLATFORM: "WindowsXP+" DEPLOY: false matrix: fast_finish: false exclude: - platform: x86 job_name: Windows_Qt_6_5_(GCC_x64) - platform: x86 job_name: Windows_Qt_6_5_(MSVC_x64) - platform: x86 job_name: Windows_Qt_6_4_(GCC_x64) - platform: x86 job_name: Windows_Qt_6_4_(MSVC_x64) - platform: x86 job_name: Windows_Qt_5_15_(make_GCC_x64) - platform: x86 job_name: Windows_Qt_5_15_(nmake_MSVC_x64) - platform: x86 job_name: Windows_Qt_5_15_(qbs_GCC_x64) - platform: x86 job_name: Windows_Qt_5_15_(qbs_MSVC_x64) - platform: x86 job_name: Windows_Qt_5_6_(MSVC_x64) - platform: x86 job_name: MacOS_12_Qt_6_4 (multibundle) - platform: x86 job_name: MacOS_12_Qt_6_4 (singlebundle) - platform: x86 job_name: MacOS_10_15_Qt_5_15 (qbs, multibundle) - platform: x86 job_name: MacOS_10_15_Qt_5_15 (qbs, singlebundle) - platform: x86 job_name: MacOS_10_15_Qt_5_15 (make) - platform: x64 job_name: Windows_Qt_5_15_(make_GCC_x86) - platform: x64 job_name: Windows_Qt_5_15_(qbs_GCC_x86) - platform: x64 job_name: Windows_Qt_5_6_(GCC_x86) for: #---------------------------------# # Windows # #---------------------------------# - matrix: only: - job_name: Windows_Qt_6_5_(GCC_x64) - job_name: Windows_Qt_6_5_(MSVC_x64) - job_name: Windows_Qt_6_4_(GCC_x64) - job_name: Windows_Qt_6_4_(MSVC_x64) - job_name: Windows_Qt_5_15_(qbs_GCC_x64) - job_name: Windows_Qt_5_15_(qbs_MSVC_x64) - job_name: Windows_Qt_5_15_(qbs_GCC_x86) # clone directory clone_folder: c:\projects\valentina cache: - C:\Users\appveyor\.conan\data -> conan-cache # scripts that are called at very beginning, before repo cloning init: # Uncomment if need access through RDP # - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) - ver # Path before - path - set QTDIR=C:\%QT% - set QT_PLUGIN_PATH=%QTDIR%\plugins - set PATH=%QTDIR%\bin;%QTDIR%\include;C:\Qt\Tools\QtCreator\bin;C:\Tools\PsTools;C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin;C:\Program Files\Git LFS;C:\Tools\GitVersion;C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\CMake\bin;%PYTHON%;%PYTHON%\Scripts;C:\ProgramData\chocolatey\bin # Set VC variables for the platform - ps: | if ($env:COMPILER -eq "msvc") { if ($env:APPVEYOR_BUILD_WORKER_IMAGE -eq "Visual Studio 2022") { if ($env:ARCH -eq "x64") { cmd.exe /c "call `"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat`" && set > %temp%\vcvars.txt" } elseif ($env:ARCH -eq "arm64") { cmd.exe /c "call `"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat`" && set > %temp%\vcvars.txt" } else { cmd.exe /c "call `"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat`" && set > %temp%\vcvars.txt" } } elseif ($env:APPVEYOR_BUILD_WORKER_IMAGE -eq "Visual Studio 2019") { if ($env:ARCH -eq "x64") { cmd.exe /c "call `"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat`" && set > %temp%\vcvars.txt" } elseif ($env:ARCH -eq "arm64") { cmd.exe /c "call `"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat`" && set > %temp%\vcvars.txt" } else { cmd.exe /c "call `"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat`" && set > %temp%\vcvars.txt" } } Get-Content "$env:temp\vcvars.txt" | Foreach-Object { if ($_ -match "^(.*?)=(.*)$") { Set-Content "env:\$($matches[1])" $matches[2] } } } else { if ($env:CHOCOLATEY_PACKAGES -eq "true") { & choco install mingw -y --version $env:CHOCOLATEY_MINGW_VERSION } $env:Path += ";$env:MINGW_PATH" $env:CC = "gcc.exe" $env:CXX = "g++.exe" } # Path after - path # Check that we have the expected version for Python - (python --version) # Install the build dependencies of the project. - (python -m pip install --upgrade pip) - if "%DEPLOY%" == "true" (python -m pip install dropbox) - python -m pip install conan==1.61.0 # Trick qmake to not work through MSYS - del /F "C:\Program Files\Git\usr\bin\sh.exe" - del /F "C:\Program Files\Git\bin\sh.exe" - dir "C:\" - dir "C:\Qt" - dir "C:\Qt\Tools" - dir %QTDIR% - dir "%QTDIR%\bin" - qbs --version before_build: - cd %APPVEYOR_BUILD_FOLDER% - qbs-setup-toolchains --detect - qbs-setup-qt %QTDIR%\bin\%QMAKE% qt6 - qbs-config defaultProfile qt6 - dir "C:\Qt\Tools" - conan config install https://gist.github.com/dismine/08166814777f9d29ee4533923d1690cd.git - conan profile new valentina - conan profile update settings.build_type=Release valentina - conan profile update settings.os=Windows valentina - ps: | if ($env:ARCH -eq "x64") { & conan profile update settings.arch=x86_64 valentina } else { & conan profile update settings.arch=x86 valentina } if ($env:COMPILER -eq "msvc") { & qbs-setup-toolchains.exe --type msvc $env:MSVC_PATH\cl.exe $env:COMPILER & qbs-config.exe profiles.qt6.baseProfile $env:COMPILER & conan profile update settings.compiler=msvc valentina & conan profile update settings.compiler.cppstd=17 valentina & conan profile update settings.compiler.runtime=dynamic valentina & conan profile update settings.compiler.runtime_type=Release valentina & conan profile update settings.compiler.version=192 valentina } else { & qbs-setup-toolchains.exe --type mingw $env:MINGW_PATH\g++.exe $env:COMPILER & qbs-config.exe profiles.qt6.baseProfile $env:COMPILER & conan profile update settings.compiler=gcc valentina & conan profile update settings.compiler.cppstd=$env:COMPILER_CPPSTD valentina & conan profile update settings.compiler.libcxx=$env:COMPILER_LIBCXX valentina & conan profile update settings.compiler.version=$env:GCC_VERSION valentina } - qbs-config --list profiles build_script: - conan install . -s os=Windows --build=missing -pr valentina - qbs build -f valentina.qbs -d %APPVEYOR_BUILD_FOLDER%\build --jobs %NUMBER_OF_PROCESSORS% config:release qbs.installRoot:%APPVEYOR_BUILD_FOLDER%\build\install-root\valentina profile:qt6 project.enableConan:true modules.buildconfig.enableCcache:false project.conanProfiles:valentina modules.buildconfig.enablePCH:%ENABLE_PCH% modules.windeployqt.windeployqtProgramBinPath:%WINDEPLOYQT_BIN_PATH% test_script: - path - if "%RUN_TESTS%" == "true" (qbs -p autotest-runner -d %APPVEYOR_BUILD_FOLDER%\build profile:qt6 config:release) deploy_script: - ps: scripts/appveyor-deploy.ps1 on_finish: # Uncomment if need access through RDP # - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) # Legacy - matrix: only: - job_name: Windows_Qt_5_15_(make_GCC_x86) - job_name: Windows_Qt_5_15_(make_GCC_x64) - job_name: Windows_Qt_5_15_(nmake_MSVC_x64) - job_name: Windows_Qt_5_6_(GCC_x86) - job_name: Windows_Qt_5_6_(MSVC_x64) # clone directory clone_folder: c:\projects\valentina # scripts that are called at very beginning, before repo cloning init: # Uncomment if need access through RDP # - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) - ver # Path before - path - set QTDIR=C:\%QT% - set PATH=%QTDIR%\bin;%QTDIR%\include;C:\Tools\PsTools;C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin;C:\Program Files\Git LFS;C:\Tools\GitVersion;C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0\ - if NOT "%BUILD_SYSTEM%" == "make" echo "Using Visual Studio %VSVER%.0" - if "%BUILD_SYSTEM%" == "make" echo "Using MinGW" # Set VC variables for the platform - ps: | if ($env:COMPILER -eq "msvc") { if ($env:APPVEYOR_BUILD_WORKER_IMAGE -eq "Visual Studio 2022") { if ($env:ARCH -eq "x64") { cmd.exe /c "call `"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat`" && set > %temp%\vcvars.txt" } else { cmd.exe /c "call `"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat`" && set > %temp%\vcvars.txt" } } elseif ($env:APPVEYOR_BUILD_WORKER_IMAGE -eq "Visual Studio 2019") { if ($env:ARCH -eq "x64") { cmd.exe /c "call `"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat`" && set > %temp%\vcvars.txt" } else { cmd.exe /c "call `"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat`" && set > %temp%\vcvars.txt" } } elseif ($env:APPVEYOR_BUILD_WORKER_IMAGE -eq "Visual Studio 2017") { if ($env:ARCH -eq "x64") { cmd.exe /c "call `"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat`" && set > %temp%\vcvars.txt" } else { cmd.exe /c "call `"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat`" && set > %temp%\vcvars.txt" } } elseif ($env:APPVEYOR_BUILD_WORKER_IMAGE -eq "Visual Studio 2015") { if ($env:ARCH -eq "x64") { cmd.exe /c "call `"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd`" /x64 && call `"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat`" x86_amd64 && set > %temp%\vcvars.txt" } else { cmd.exe /c "call `"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat`" && set > %temp%\vcvars.txt" } } Get-Content "$env:temp\vcvars.txt" | Foreach-Object { if ($_ -match "^(.*?)=(.*)$") { Set-Content "env:\$($matches[1])" $matches[2] } } } - if "%BUILD_SYSTEM%" == "make" set PATH=%MINGW_PATH%;%PATH% - if "%BUILD_SYSTEM%" == "nmake" set PATH=C:\Qt\Tools\QtCreator\bin;%PATH% - if "%DEPLOY%" == "true" set PATH=%PYTHON%;%PYTHON%\Scripts;%PATH% # Set paths to libraries - set PATH=%APPVEYOR_BUILD_FOLDER%\build\src\libs\vpropertyexplorer\bin;%APPVEYOR_BUILD_FOLDER%\build\src\libs\qmuparser\bin;%PATH% # Path after - path # Check that we have the expected version for Python - if "%DEPLOY%" == "true" (python --version) # Install the build dependencies of the project. - if "%DEPLOY%" == "true" (python -m pip install --upgrade pip) - if "%DEPLOY%" == "true" (python -m pip install dropbox) # Trick qmake to not work through MSYS - del /F "C:\Program Files\Git\usr\bin\sh.exe" - del /F "C:\Program Files\Git\bin\sh.exe" - qmake -v before_build: - cd %APPVEYOR_BUILD_FOLDER% - md build # to run your custom scripts instead of automatic MSBuild build_script: - cd build - if "%DEPLOY%" == "true" (qmake ..\Valentina.pro -r CONFIG+=no_ccache CONFIG+=checkWarnings CONFIG+=noDebugSymbols CONFIG+=noWindowsInstaller) else (qmake ..\Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=no_ccache CONFIG+=checkWarnings) - if not "%BUILD_SYSTEM%" == "make" (nmake -s) else (mingw32-make -j%NUMBER_OF_PROCESSORS%) # to run your custom scripts instead of automatic tests test_script: - if "%BUILD_SYSTEM%" == "make" (mingw32-make -s check TESTARGS="-silent") # prepare to deploy after_test: - if "%DEPLOY%" == "true" (mingw32-make install) # to run your custom scripts instead of provider deployments deploy_script: - ps: ../scripts/appveyor-deploy.ps1 #---------------------------------# # MacOS # #---------------------------------# - matrix: only: - job_name: MacOS_12_Qt_6_4 (multibundle) - job_name: MacOS_12_Qt_6_4 (singlebundle) environment: CONAN_USER_HOME: /Users/appveyor HOMEBREW_NO_INSTALL_CLEANUP: 1 # Should contain the base64 of the certificate MACOS_CERTIFICATE: secure: 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 # Should contain the full certificate name, such as Developer ID Application: Your Name (K1234567) MACOS_CERTIFICATE_NAME: secure: DfLnepaG+LQMo+w1UvxfgoXI+pb4XtCZSh0rX+f9ZqANcrRNNlI9V7nBzQmNUv7BV+E+NC/s0vtrfcKBx2IEKw== # Should contain the password you chose when exported the certificate from the Keychain Access app MACOS_CERTIFICATE_PWD: secure: ynsawEOq1ysFzKZDR5JMYe5KatOCYHYtnJnJDzsH+20= # Should contain apple developer email, the same used the Apple Developer subscription MACOS_NOTARIZATION_APPLE_ID: secure: JC/QySMcz7ojpEHJEKaxDqTnXgM4zAet7/C6PgIL6GA= # Should contain the app-specific password MACOS_NOTARIZATION_PWD: secure: 5LQu42RbJMmWXmknUs+dcJFuA/7KsqeIbeDBa1L0Qw0= # Should contain the Team ID MACOS_NOTARIZATION_TEAM_ID: secure: Pl/pYbFyfpJOK1O8R94RTQ== # Should contain a strong, randomly generated password MACOS_CI_KEYCHAIN_PWD: secure: B8yHPBym+BTDPK5ZCg7WlSnUCHLbcim8WqLTC6/PSNs= cache: #- /Users/appveyor/.conan/data -> conanfile.py - /Users/appveyor/cache_dir init: - sh: curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-vnc.sh' | bash -e - - find /Applications -maxdepth 1 -type d -name 'Xcode*.app' - sudo xcode-select -p - sudo xcode-select -s /Applications/Xcode-$XCODE_VERSION.app - sudo xcode-select -p # Decode the environment variable into a regular .p12 file - echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12 # We need to create a new keychain, otherwise using the certificate will prompt # with a UI dialog asking for the certificate password, which we can't # use in a headless CI environment # Create the keychain with a password ($MACOS_CI_KEYCHAIN_PWD) - security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" $HOME/Library/Keychains/build.keychain # Make the custom keychain default, so xcodebuild will use it for signing - security default-keychain -s $HOME/Library/Keychains/build.keychain # Unlock the keychain - security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" $HOME/Library/Keychains/build.keychain - security set-keychain-settings $HOME/Library/Keychains/build.keychain # Check if System.keychain is not cluttered # good: 60K # bad: 25MB - du -h /Library/Keychains/System.keychain # Add certificates to keychain and allow codesign to access them # 1) Apple Worldwide Developer Relations Certification Authority - curl https://www.apple.com/certificateauthority/AppleWWDRCAG3.cer --output $HOME/AppleWWDRCAG3.cer --silent - sudo security import $HOME/AppleWWDRCAG3.cer -k /Library/Keychains/System.keychain -T /usr/bin/codesign # 2) Developer Authentication Certification Authority - curl https://www.apple.com/certificateauthority/DeveloperIDG2CA.cer --output $HOME/DeveloperIDG2CA.cer --silent - sudo security import $HOME/DeveloperIDG2CA.cer -k /Library/Keychains/System.keychain -T /usr/bin/codesign # 3) Developer ID - security import certificate.p12 -k $HOME/Library/Keychains/build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign # Delete the files, we no longer need them - rm $HOME/AppleWWDRCAG3.cer - rm $HOME/DeveloperIDG2CA.cer - rm certificate.p12 # Set the partition list (sort of like an access control list) - security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k "$MACOS_CI_KEYCHAIN_PWD" $HOME/Library/Keychains/build.keychain # Echo the identity, just so that we know it worked. # This won't display anything secret. - security find-identity -v -p codesigning before_build: - ls ${HOME}/Qt - export PATH="$HOME/.local/bin:`python3 -m site --user-base`/bin:$PATH" - echo $PATH - python3 --version - whereis python3 - sudo ln -s -f /usr/bin/python3 /usr/local/bin/python - sudo ln -s /Library/Developer/CommandLineTools/usr/bin/python3 /Library/Developer/CommandLineTools/usr/bin/python - whereis python - |- ############################################################### # Set up macOS dependencies sudo ln -s /usr/local /opt/local; cache_tag=usr_local_3 # this can be modified to rebuild deps cdir=$HOME/cache_dir cache_tar=$cdir/$cache_tag.tar cache=$cache_tar.xz CPUS=$(sysctl -n hw.ncpu) if [ -d $cdir ] && [ -f $cache ]; then echo "=== Unpacking cached Homebrew $cache ===" ( cd / tar xf $cache ) echo "done" else echo "=== Building dependencies ===" echo "Couldn't find cache $cache" ls -alrt "$cdir" echo "Recording /usr/local state" python3 ./scripts/treestate.py scan /usr/local usrlocal.json brew update brew install coreutils ccache git openssl@1.1 pkg-config qbs qt6 cmake ninja poppler xerces-c # The build environment is now ready for use. We can complete # the rest of the process of creating the Homebrew archive # during the rest of the build, using idle CPU time. To minimise # the amount of space needed for the archive, we compress with # xz, which adds only about a minute to the non-cached build. ( echo "=== Creating cache tarball $cache ===" echo "Check /usr/local for updates" python3 ./scripts/treestate.py updates usrlocal.json /usr/local | fgrep -v .git > updated_list echo Need to record $( wc -l updated_list ) updates mkdir -p $cdir rm -f $cdir/* nice tar cf $cache_tar -T updated_list echo nice xz -9 -T$CPUS $cache_tar nice xz -9 -T$CPUS $cache_tar du -h $cdir ) 2>&1 | sed 's/^/CACHE: /' & fi - sudo python3 -m pip install --upgrade pip - pip3 install --user --upgrade pip dropbox 'urllib3<2.0' - export QTDIR=`$(brew --prefix qt6)` - export PATH="$PATH:`python3 -m site --user-base`/bin:$QTDIR/bin" - echo $PATH - python3 --version - clang --version # Annoying clang issue: clang++ does not respect -isystem flag - rm /usr/local/include/xercesc - qmake --version - which qmake - which qbs - qbs --version # Patch Qbs. Remove after Qbs 2.1.2+. - /usr/bin/curl https://gist.githubusercontent.com/dismine/43a20f66f563232e54e02f2e85732e7a/raw/e80a0c827348da3e99310ba4a648c1860bb3a8a6/BundleModule.qbs --output $HOME/BundleModule.qbs --silent - cp -f $HOME/BundleModule.qbs $(brew --prefix qbs)/share/qbs/modules/bundle/BundleModule.qbs - rm $HOME/BundleModule.qbs - /usr/bin/curl -LJ https://github.com/dismine/macdeployqt/archive/refs/heads/main.zip --output ${HOME}/macdeployqt-main.zip --silent - unzip ${HOME}/macdeployqt-main.zip -d ${HOME} - cmake ${HOME}/macdeployqt-main -GNinja -S ${HOME}/macdeployqt-main -B ${HOME}/macdeployqt-build-dir -DCMAKE_INSTALL_PREFIX=${HOME}/macdeployqt-install-dir -DCMAKE_BUILD_TYPE=Release - cmake --build ${HOME}/macdeployqt-build-dir --target install - cd ${APPVEYOR_BUILD_FOLDER} build_script: - pwd - qbs setup-toolchains --detect - qbs config --list profiles - qbs setup-qt $(brew --prefix qt6)/bin/qmake qt6 - qbs config defaultProfile qt6 - qbs config profiles.qt6.baseProfile clang - qbs build -f valentina.qbs -d ${APPVEYOR_BUILD_FOLDER}/build --jobs $(nproc) config:release modules.buildconfig.enableUnitTests:false modules.buildconfig.enableMultiBundle:${MULTI_BUNDLE} qbs.installRoot:${APPVEYOR_BUILD_FOLDER}/build/install-root profile:qt6 project.minimumMacosVersion:${MACOS_DEPLOYMENT_TARGET} modules.buildconfig.enableCcache:false moduleProviders.qbspkgconfig.extraPaths:$(brew --prefix xerces-c)/lib/pkgconfig,$(brew --prefix qt6)/lib/pkgconfig,$(brew --prefix openssl@1.1)/lib/pkgconfig "modules.buildconfig.signingIdentity:$MACOS_CERTIFICATE_NAME" modules.macdeployqt.libpath:$(brew --prefix qt6)/lib,$(brew --prefix poppler)/lib modules.macdeployqt.macdeployqtProgramBinPath:${HOME}/macdeployqt-install-dir - qbs build -f valentina.qbs -d ${APPVEYOR_BUILD_FOLDER}/build -p 'Valentina DMG' --force-probe-execution --jobs $(nproc) config:release modules.buildconfig.enableUnitTests:false modules.buildconfig.enableMultiBundle:${MULTI_BUNDLE} qbs.installRoot:${APPVEYOR_BUILD_FOLDER}/build/install-root profile:qt6 project.minimumMacosVersion:${MACOS_DEPLOYMENT_TARGET} modules.buildconfig.enableCcache:false moduleProviders.qbspkgconfig.extraPaths:$(brew --prefix xerces-c)/lib/pkgconfig,$(brew --prefix qt6)/lib/pkgconfig,$(brew --prefix openssl@1.1)/lib/pkgconfig "modules.buildconfig.signingIdentity:$MACOS_CERTIFICATE_NAME" modules.macdeployqt.libpath:$(brew --prefix qt6)/lib,$(brew --prefix poppler)/lib modules.macdeployqt.macdeployqtProgramBinPath:${HOME}/macdeployqt-install-dir # Store the notarization credentials so that we can prevent a UI password dialog # from blocking the CI - echo "Create keychain profile" - xcrun notarytool store-credentials "notarytool-profile" --apple-id "$MACOS_NOTARIZATION_APPLE_ID" --team-id "$MACOS_NOTARIZATION_TEAM_ID" --password "$MACOS_NOTARIZATION_PWD" # Here we send the notarization request to the Apple's Notarization service, waiting for the result. # This typically takes a few seconds inside a CI environment, but it might take more depending on the App # characteristics. Visit the Notarization docs for more information and strategies on how to optimize it if # you're curious - echo "Notarize app" - xcrun notarytool submit "${APPVEYOR_BUILD_FOLDER}/build/install-root/share/valentina.dmg" --keychain-profile "notarytool-profile" --wait --timeout 5m # Finally, we need to "attach the staple" to our executable, which will allow our app to be # validated by macOS even when an internet connection is not available. - echo "Attach staple" - xcrun stapler staple ${APPVEYOR_BUILD_FOLDER}/build/install-root/share/valentina.dmg || true deploy_script: - CIRRUS_WORKING_DIR=${APPVEYOR_BUILD_FOLDER} CIRRUS_CHANGE_IN_REPO=${APPVEYOR_REPO_COMMIT} CIRRUS_BRANCH=${APPVEYOR_REPO_BRANCH} ${APPVEYOR_BUILD_FOLDER}/scripts/cirrus-deploy.sh - matrix: only: - job_name: MacOS_10_15_Qt_5_15 (qbs, multibundle) - job_name: MacOS_10_15_Qt_5_15 (qbs, singlebundle) environment: CONAN_USER_HOME: /Users/appveyor HOMEBREW_NO_INSTALL_CLEANUP: 1 # Should contain the base64 of the certificate MACOS_CERTIFICATE: secure: 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 # Should contain the full certificate name, such as Developer ID Application: Your Name (K1234567) MACOS_CERTIFICATE_NAME: secure: DfLnepaG+LQMo+w1UvxfgoXI+pb4XtCZSh0rX+f9ZqANcrRNNlI9V7nBzQmNUv7BV+E+NC/s0vtrfcKBx2IEKw== # Should contain the password you chose when exported the certificate from the Keychain Access app MACOS_CERTIFICATE_PWD: secure: ynsawEOq1ysFzKZDR5JMYe5KatOCYHYtnJnJDzsH+20= # Should contain apple developer email, the same used the Apple Developer subscription MACOS_NOTARIZATION_APPLE_ID: secure: JC/QySMcz7ojpEHJEKaxDqTnXgM4zAet7/C6PgIL6GA= # Should contain the app-specific password MACOS_NOTARIZATION_PWD: secure: 5LQu42RbJMmWXmknUs+dcJFuA/7KsqeIbeDBa1L0Qw0= # Should contain the Team ID MACOS_NOTARIZATION_TEAM_ID: secure: Pl/pYbFyfpJOK1O8R94RTQ== # Should contain a strong, randomly generated password MACOS_CI_KEYCHAIN_PWD: secure: B8yHPBym+BTDPK5ZCg7WlSnUCHLbcim8WqLTC6/PSNs= cache: - /Users/appveyor/.conan/data -> conanfile.py init: - find /Applications -maxdepth 1 -type d -name 'Xcode*.app' - sudo xcode-select -p - sudo xcode-select -s /Applications/Xcode-$XCODE_VERSION.app - sudo xcode-select -p # Decode the environment variable into a regular .p12 file - echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12 # We need to create a new keychain, otherwise using the certificate will prompt # with a UI dialog asking for the certificate password, which we can't # use in a headless CI environment # Create the keychain with a password ($MACOS_CI_KEYCHAIN_PWD) - security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" $HOME/Library/Keychains/build.keychain # Make the custom keychain default, so xcodebuild will use it for signing - security default-keychain -s $HOME/Library/Keychains/build.keychain # Unlock the keychain - security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" $HOME/Library/Keychains/build.keychain - security set-keychain-settings $HOME/Library/Keychains/build.keychain # Check if System.keychain is not cluttered # good: 60K # bad: 25MB - du -h /Library/Keychains/System.keychain # Add certificates to keychain and allow codesign to access them # 1) Apple Worldwide Developer Relations Certification Authority - curl https://www.apple.com/certificateauthority/AppleWWDRCAG3.cer --output $HOME/AppleWWDRCAG3.cer --silent - sudo security import $HOME/AppleWWDRCAG3.cer -k /Library/Keychains/System.keychain -T /usr/bin/codesign # 2) Developer Authentication Certification Authority - curl https://www.apple.com/certificateauthority/DeveloperIDG2CA.cer --output $HOME/DeveloperIDG2CA.cer --silent - sudo security import $HOME/DeveloperIDG2CA.cer -k /Library/Keychains/System.keychain -T /usr/bin/codesign # 3) Developer ID - security import certificate.p12 -k $HOME/Library/Keychains/build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign # Delete the files, we no longer need them - rm $HOME/AppleWWDRCAG3.cer - rm $HOME/DeveloperIDG2CA.cer - rm certificate.p12 # Set the partition list (sort of like an access control list) - security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k "$MACOS_CI_KEYCHAIN_PWD" $HOME/Library/Keychains/build.keychain # Echo the identity, just so that we know it worked. # This won't display anything secret. - security find-identity -v -p codesigning before_build: - ls ${HOME}/Qt - export QTDIR="${HOME}/${QT}" - export PATH="$QTDIR/bin:$HOME/.local/bin:`python3 -m site --user-base`/bin:${HOME}/Qt/Qt Creator.app/Contents/MacOS:$PATH" - echo $PATH - python3 --version - whereis python3 - sudo ln -s -f /usr/bin/python3 /usr/local/bin/python - sudo ln -s /Library/Developer/CommandLineTools/usr/bin/python3 /Library/Developer/CommandLineTools/usr/bin/python - whereis python - sudo python3 -m pip install --upgrade pip - pip3 install --user --upgrade pip dropbox conan==1.61.0 'urllib3<2.0' - conan --version - clang --version - qmake --version - which qmake - qbs --version - cd ${APPVEYOR_BUILD_FOLDER} build_script: - pwd - conan profile new valentina - conan profile update settings.build_type=Release valentina - conan profile update settings.os=Macos valentina - conan profile update settings.os.version=${MACOS_DEPLOYMENT_TARGET} valentina - conan profile update settings.arch=x86_64 valentina - conan profile update settings.compiler=apple-clang valentina - conan profile update settings.compiler.libcxx=libc++ valentina - conan profile update settings.compiler.version=14 valentina - conan install . --build=missing -pr valentina - qbs setup-toolchains --detect - qbs config --list profiles - qbs setup-qt ${QTDIR}/bin/qmake qt6 - qbs config defaultProfile qt6 - qbs config profiles.qt6.baseProfile clang - qbs build -f valentina.qbs -d ${APPVEYOR_BUILD_FOLDER}/build --jobs $(nproc) config:release modules.buildconfig.enableUnitTests:false modules.buildconfig.enableMultiBundle:${MULTI_BUNDLE} qbs.installRoot:${APPVEYOR_BUILD_FOLDER}/build/install-root profile:qt6 project.enableConan:true project.minimumMacosVersion:${MACOS_DEPLOYMENT_TARGET} modules.buildconfig.enableCcache:false project.conanProfiles:valentina "modules.buildconfig.signingIdentity:$MACOS_CERTIFICATE_NAME" - qbs build -f valentina.qbs -d ${APPVEYOR_BUILD_FOLDER}/build -p 'Valentina DMG' --force-probe-execution --jobs $(nproc) config:release modules.buildconfig.enableUnitTests:false modules.buildconfig.enableMultiBundle:${MULTI_BUNDLE} qbs.installRoot:${APPVEYOR_BUILD_FOLDER}/build/install-root profile:qt6 project.enableConan:true project.minimumMacosVersion:${MACOS_DEPLOYMENT_TARGET} modules.buildconfig.enableCcache:false project.conanProfiles:valentina "modules.buildconfig.signingIdentity:$MACOS_CERTIFICATE_NAME" # notarytool supported since XCode 13. First we need to backport it. - curl https://bitbucket.org/valentinaproject/valentinaproject.bitbucket.io/downloads/notarytool.tar.xz --output $HOME/notarytool.tar.xz --silent - tar -xf $HOME/notarytool.tar.xz # Store the notarization credentials so that we can prevent a UI password dialog # from blocking the CI - echo "Create keychain profile" - $HOME/notarytool store-credentials "notarytool-profile" --apple-id "$MACOS_NOTARIZATION_APPLE_ID" --team-id "$MACOS_NOTARIZATION_TEAM_ID" --password "$MACOS_NOTARIZATION_PWD" # Here we send the notarization request to the Apple's Notarization service, waiting for the result. # This typically takes a few seconds inside a CI environment, but it might take more depending on the App # characteristics. Visit the Notarization docs for more information and strategies on how to optimize it if # you're curious - echo "Notarize app" - $HOME/notarytool submit "${APPVEYOR_BUILD_FOLDER}/build/install-root/share/valentina.dmg" --keychain-profile "notarytool-profile" --wait --timeout 5m # Finally, we need to "attach the staple" to our executable, which will allow our app to be # validated by macOS even when an internet connection is not available. - echo "Attach staple" - xcrun stapler staple ${APPVEYOR_BUILD_FOLDER}/build/install-root/share/valentina.dmg || true deploy_script: - CIRRUS_WORKING_DIR=${APPVEYOR_BUILD_FOLDER} CIRRUS_CHANGE_IN_REPO=${APPVEYOR_REPO_COMMIT} CIRRUS_BRANCH=${APPVEYOR_REPO_BRANCH} ${APPVEYOR_BUILD_FOLDER}/scripts/cirrus-deploy.sh - matrix: only: - job_name: MacOS_10_15_Qt_5_15 (make) init: - find /Applications -maxdepth 1 -type d -name 'Xcode*.app' - sudo xcode-select -p - sudo xcode-select -s /Applications/Xcode-$XCODE_VERSION.app - sudo xcode-select -p before_build: - export QTDIR="${HOME}/${QT}" - export PATH="$QTDIR/bin:$PATH" - echo $PATH - clang --version - qmake --version - which qmake - cd ${APPVEYOR_BUILD_FOLDER} - mkdir build - cd build build_script: - pwd - qmake ../Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=checkWarnings CONFIG+=noTests CONFIG+=no_ccache - make -j$(nproc) #---------------------------------# # notifications # #---------------------------------# notifications: # Email - provider: Email to: - dismine@gmail.com on_build_success: false on_build_failure: true on_build_status_changed: true