diff options
Diffstat (limited to '.github/workflows/main.yml')
-rw-r--r-- | .github/workflows/main.yml | 458 |
1 files changed, 297 insertions, 161 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 88e0bf13c..71c1ae4ac 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,14 +16,16 @@ jobs: matrix: config: - { - name: 'Build on Linux (gcc)', + name: 'Build on Linux (Jammy, gcc)', + image: 'jammy-qt6', options: 'modules.cpp.compilerWrapper:ccache modules.qbs.debugInformation:true modules.qbsbuildconfig.enableBundledQt:true - products.qbs_archive.targetName:qbs-linux-${{ github.run_id }} + products.qbs_archive.targetName:qbs-linux-jammy-${{ github.run_id }} products.qbs_archive.includeTests:true', script: './scripts/build-qbs-with-qbs.sh', - cacheid: 'gcc', + cacheid: 'gcc-qt6-jammy', + suffix: 'linux-jammy', } env: BUILD_OPTIONS: ${{ matrix.config.options }} @@ -32,33 +34,29 @@ jobs: - uses: actions/checkout@v1 - name: Create .ccache dir run: mkdir -p ~/.ccache - - name: prepare timestamp - id: get-timestamp - run: echo ::set-output name=timestamp::$(date -u +"%Y-%m-%dT%H:%M:%SZ") - name: ccache cache files - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.ccache - key: ${{ runner.os }}-${{ matrix.config.cacheid }}-ccache-${{ steps.get-timestamp.outputs.timestamp }} - restore-keys: ${{ runner.os }}-${{ matrix.config.cacheid }}-ccache- - - name: Pull the Focal Image - run: docker-compose pull focal + key: ${{ runner.os }}-${{ matrix.config.cacheid }}-ccache + - name: Pull the Docker Image + run: docker-compose pull ${{ matrix.config.image }} - name: Print ccache stats - run: docker-compose run focal ccache -s + run: docker-compose run ${{ matrix.config.image }} ccache -s - name: Build Qbs - run: docker-compose run focal ${{ matrix.config.script }} + run: docker-compose run ${{ matrix.config.image }} ${{ matrix.config.script }} - name: Print ccache stats - run: docker-compose run focal ccache -s + run: docker-compose run ${{ matrix.config.image }} ccache -s - name: Upload artifacts - uses: 'actions/upload-artifact@v2' + uses: 'actions/upload-artifact@v4' with: - name: qbs-linux-${{ github.run_id }}.tar.gz - path: release/qbs-linux-${{ github.run_id }}.tar.gz + name: qbs-${{ matrix.config.suffix }}-${{ github.run_id }}.tar.gz + path: release/qbs-${{ matrix.config.suffix }}-${{ github.run_id }}.tar.gz build-linux-extra: name: ${{ matrix.config.name }} runs-on: ubuntu-latest - timeout-minutes: 60 + timeout-minutes: 90 strategy: fail-fast: false matrix: @@ -66,52 +64,58 @@ jobs: - { name: 'Build on Linux (clang_tidy)', script: './scripts/run-analyzer.sh', - image: 'focal', + image: 'jammy-qt6', options: 'profile:qt-clang_64 modules.cpp.compilerWrapper:ccache', cacheid: 'clang', } - { name: 'Build on Linux (CMake)', script: './scripts/build-qbs-with-cmake.sh', - image: 'focal-qt6', + image: 'jammy-qt6', cacheid: 'cmake', } - { - name: 'Build on Linux (QMake)', - script: './scripts/build-qbs-with-qmake.sh', - image: 'focal', - options: 'CONFIG+=ccache', - cacheid: 'qmake', + name: 'Build on Linux (gcc, ASAN)', + image: 'jammy-qt6', + script: './scripts/build-qbs-with-qbs.sh', + options: 'modules.cpp.compilerWrapper:ccache + modules.qbsbuildconfig.enableAddressSanitizer:true + modules.qbs.debugInformation:true + modules.qbsbuildconfig.enableBundledQt:true', + cacheid: 'gcc-asan', + } + - { + name: 'Build on Linux (gcc, UBSAN)', + image: 'jammy-qt6', + script: './scripts/build-qbs-with-qbs.sh', + options: 'modules.cpp.compilerWrapper:ccache + modules.qbsbuildconfig.enableUbSanitizer:true + modules.qbs.debugInformation:true + modules.qbsbuildconfig.enableBundledQt:true', + cacheid: 'gcc-ubsan', } - { - name: 'Build on Linux (gcc, Qt 6)', - image: 'focal-qt6', + name: 'Build on Linux (gcc, Qt 5.15)', + image: 'jammy-qt5', script: './scripts/build-qbs-with-qbs.sh', options: 'modules.cpp.compilerWrapper:ccache - modules.qbsbuildconfig.enableAddressSanitizer:false modules.qbs.debugInformation:true modules.qbsbuildconfig.enableBundledQt:true', - cacheid: 'gcc-qt6', + cacheid: 'gcc-qt5', } env: BUILD_OPTIONS: ${{ matrix.config.options }} QTEST_FUNCTION_TIMEOUT: 9000000 steps: - uses: actions/checkout@v1 - with: - submodules: true - name: Create .ccache dir run: mkdir -p ~/.ccache - - name: prepare timestamp - id: get-timestamp - run: echo ::set-output name=timestamp::$(date -u +"%Y-%m-%dT%H:%M:%SZ") - name: ccache cache files - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.ccache - key: ${{ runner.os }}-${{ matrix.config.cacheid }}-ccache-${{ steps.get-timestamp.outputs.timestamp }} - restore-keys: ${{ runner.os }}-${{ matrix.config.cacheid }}-ccache- - - name: Pull the Focal Image + key: ${{ runner.os }}-${{ matrix.config.cacheid }}-ccache + - name: Pull the Docker Image run: docker-compose pull ${{ matrix.config.image }} - name: Print ccache stats run: docker-compose run ${{ matrix.config.image }} ccache -s @@ -120,9 +124,25 @@ jobs: - name: Print ccache stats run: docker-compose run ${{ matrix.config.image }} ccache -s + clang-format: + name: Check Style + runs-on: macos-13 + timeout-minutes: 60 + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v1 + - name: Update PATH + run: echo "$(brew --prefix llvm@15)/bin" >> ${GITHUB_PATH} + - name: Run clang-format + run: | + git diff -U0 --no-color --relative HEAD^ | $(brew --prefix llvm@15)/share/clang/clang-format-diff.py -i -p1 -regex ".*\.(cxx|cpp|hpp|h)" -v + - name: Check diff + run: git diff --exit-code + build-macos: name: Build on macOS - runs-on: macos-10.15 + runs-on: macos-12 timeout-minutes: 60 env: BUILD_OPTIONS: | @@ -137,15 +157,11 @@ jobs: - uses: actions/checkout@v1 - name: Create .ccache dir run: mkdir -p ~/.ccache - - name: prepare timestamp - id: get-timestamp - run: echo ::set-output name=timestamp::$(date -u +"%Y-%m-%dT%H:%M:%SZ") - name: ccache cache files - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.ccache - key: ${{ runner.os }}-ccache-${{ steps.get-timestamp.outputs.timestamp }} - restore-keys: ${{ runner.os }}-ccache- + key: ${{ runner.os }}-ccache - name: Install required packages run: | brew install ccache p7zip @@ -160,7 +176,7 @@ jobs: run: | qbs setup-toolchains --detect qbs setup-qt --detect - qbs config profiles.qt.baseProfile xcode-macosx-x86_64 + qbs config profiles.qt.baseProfile xcode_13_2_1-macosx-x86_64 qbs config defaultProfile qt qbs config --list - name: Print ccache stats @@ -170,14 +186,14 @@ jobs: - name: Print ccache stats run: ccache -s - name: Upload artifacts - uses: 'actions/upload-artifact@v2' + uses: 'actions/upload-artifact@v4' with: name: qbs-macos-${{ github.run_id }}.tar.gz path: release/qbs-macos-${{ github.run_id }}.tar.gz build-windows: name: Build on Windows - runs-on: windows-latest + runs-on: windows-2022 timeout-minutes: 60 env: BUILD_OPTIONS: | @@ -191,18 +207,13 @@ jobs: QT_ASSUME_STDERR_HAS_CONSOLE: 1 steps: - uses: actions/checkout@v1 - - name: prepare timestamp - id: get-timestamp - run: echo ::set-output name=timestamp::$(date -u +"%Y-%m-%dT%H:%M:%SZ") - shell: bash - name: clcache cache files - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/clcache - key: ${{ runner.os }}-msvc-clcache-${{ steps.get-timestamp.outputs.timestamp }} - restore-keys: ${{ runner.os }}-msvc-clcache- + key: ${{ runner.os }}-msvc-clcache - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.8 - name: Install required packages @@ -220,6 +231,7 @@ jobs: run: | qbs setup-toolchains --detect qbs setup-qt $(which qmake).exe qt + qbs config profiles.qt.baseProfile MSVC2022-1-x86_x64 qbs config defaultProfile qt qbs config --list shell: bash @@ -231,14 +243,14 @@ jobs: - name: Print clcache stats run: clcache -s - name: Upload artifacts - uses: 'actions/upload-artifact@v2' + uses: 'actions/upload-artifact@v4' with: name: qbs-windows-${{ github.run_id }}.zip path: release/qbs-windows-${{ github.run_id }}.zip build-windows-mingw: name: Build on Windows (MinGW) - runs-on: windows-latest + runs-on: windows-2022 timeout-minutes: 60 env: BUILD_OPTIONS: | @@ -252,18 +264,13 @@ jobs: CCACHE_DIR: ${{ github.workspace }}\ccache steps: - uses: actions/checkout@v1 - - name: prepare timestamp - id: get-timestamp - run: echo ::set-output name=timestamp::$(date -u +"%Y-%m-%dT%H:%M:%SZ") - shell: bash - name: ccache cache files - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ${{ github.workspace }}/ccache - key: ${{ runner.os }}-mingw-ccache-${{ steps.get-timestamp.outputs.timestamp }} - restore-keys: ${{ runner.os }}-mingw-ccache- + key: ${{ runner.os }}-mingw-ccache - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.8 - name: Install required packages @@ -274,14 +281,13 @@ jobs: - name: Install Qt uses: ./.github/actions/download-qt with: - toolchain: win64_mingw81 + toolchain: win64_mingw - name: Install Qt Creator uses: ./.github/actions/download-qtc - name: Install MinGW uses: ./.github/actions/download-mingw - name: Setup Qbs run: | - qbs setup-toolchains --detect qbs setup-toolchains --type mingw $(which g++).exe mingw-qt qbs setup-qt $(which qmake).exe qt qbs config profiles.qt.baseProfile mingw-qt @@ -296,7 +302,7 @@ jobs: - name: Print ccache stats run: ccache -s - name: Upload artifacts - uses: 'actions/upload-artifact@v2' + uses: 'actions/upload-artifact@v4' with: name: qbs-windows-mingw-${{ github.run_id }}.zip path: release/qbs-windows-mingw-${{ github.run_id }}.zip @@ -304,81 +310,86 @@ jobs: test-linux: name: ${{ matrix.config.name }} runs-on: ubuntu-latest - timeout-minutes: 60 + timeout-minutes: 90 needs: build-linux strategy: fail-fast: false matrix: config: - { - name: 'Run Linux tests (gcc)', - image: 'focal', + name: 'Run Linux tests (gcc, Qt 6)', + image: 'jammy-qt6', + suffix: 'linux-jammy', profile: 'qt-gcc_64', script: './scripts/test-qbs.sh', } - { - name: 'Run Linux tests (clang)', - image: 'focal', + name: 'Run Linux tests (clang, Qt 6)', + image: 'jammy-qt6', + suffix: 'linux-jammy', profile: 'qt-clang_64', script: './scripts/test-qbs.sh', } - { - name: 'Run Linux tests (gcc, Qt 6.0)', - image: 'focal-qt6', + name: 'Run Linux tests (gcc, Qt 5)', + image: 'jammy-qt5', + suffix: 'linux-jammy', profile: 'qt-gcc_64', script: './scripts/test-qt.sh', } - { - name: 'Run Android tests (Qt 5.13)', - image: 'focal-android-513', - profile: '', - script: './scripts/test-qt-for-android.sh', - } - - { - name: 'Run Android tests (Qt 5.14)', - image: 'focal-android-514', - profile: '', - script: './scripts/test-qt-for-android.sh', + name: 'Run Linux tests (gcc, Qt 6.5 static)', + image: 'jammy-qt6-static', + suffix: 'linux-jammy', + profile: 'qt-gcc_64', + script: './scripts/test-qt.sh', } - { name: 'Run Android tests (Qt 5.15)', - image: 'focal-android-515', + image: 'jammy-android-515', + suffix: 'linux-jammy', profile: '', script: './scripts/test-qt-for-android.sh', } - { - name: 'Run Android tests (Qt 6.0.0)', - image: 'focal-android-600', + name: 'Run Android tests (Qt 6.2)', + image: 'jammy-android-62', + suffix: 'linux-jammy', profile: '', script: './scripts/test-qt-for-android.sh', } - { - name: 'Run Android tests (Qt 6.2.0)', - image: 'focal-android-620', - profile: '', - script: './scripts/test-qt-for-android.sh', - } + name: 'Run Android tests (Qt 6.5)', + image: 'jammy-android-65', + suffix: 'linux-jammy', + profile: '', + script: './scripts/test-qt-for-android.sh', + } - { name: 'Run Android tests (ndk r19c)', - image: 'focal-android-ndk-r19c', + image: 'jammy-android-ndk-r19c', + suffix: 'linux-jammy', profile: '', script: './scripts/test-for-android.sh', } - { name: 'Run Android tests (ndk r21e)', - image: 'focal-android-ndk-r21e', + image: 'jammy-android-ndk-r21e', + suffix: 'linux-jammy', profile: '', script: './scripts/test-for-android.sh', } - { name: 'Run Android tests (ndk r23)', - image: 'focal-android-ndk-r23', + image: 'jammy-android-ndk-r23', + suffix: 'linux-jammy', profile: '', script: './scripts/test-for-android.sh', } - { name: 'Run Linux tests (Qt 4.8.7)', - image: 'focal-qt4', + image: 'jammy-qt4', + suffix: 'linux-jammy', profile: '', script: './scripts/test-qt4.sh', } @@ -390,12 +401,12 @@ jobs: steps: - uses: actions/checkout@v1 - name: Download artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: - name: qbs-linux-${{ github.run_id }}.tar.gz + name: qbs-${{ matrix.config.suffix }}-${{ github.run_id }}.tar.gz path: ./ - name: Unpack artifact - run: mkdir -p release/install-root/ && tar xzf qbs-linux-${{ github.run_id }}.tar.gz -C release/install-root/ + run: mkdir -p release/install-root/ && tar xzf qbs-${{ matrix.config.suffix }}-${{ github.run_id }}.tar.gz -C release/install-root/ - name: Pull the Docker Image run: docker-compose pull ${{ matrix.config.image }} - name: Run tests @@ -411,37 +422,38 @@ jobs: steps: - uses: actions/checkout@v1 - name: Download artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: - name: qbs-linux-${{ github.run_id }}.tar.gz + name: qbs-linux-jammy-${{ github.run_id }}.tar.gz path: ./ - name: Unpack artifact - run: mkdir -p release/install-root/ && tar xzf qbs-linux-${{ github.run_id }}.tar.gz -C release/install-root/ - - name: Pull the Focal-Baremetal Image - run: docker-compose pull focal-baremetal - - name: arm-none-eabi-gcc-9_2 - run: QBS_AUTOTEST_PROFILE=arm-none-eabi-gcc-9_2 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin + run: mkdir -p release/install-root/ && tar xzf qbs-linux-jammy-${{ github.run_id }}.tar.gz -C release/install-root/ + - name: Pull the Docker Image + run: docker-compose pull jammy-baremetal + - name: arm-none-eabi-gcc-10_3 + run: QBS_AUTOTEST_PROFILE=arm-none-eabi-gcc-10_3 docker-compose run jammy-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin - name: avr-gcc-5_4 - run: QBS_AUTOTEST_PROFILE=avr-gcc-5_4 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin + run: QBS_AUTOTEST_PROFILE=avr-gcc-5_4 docker-compose run jammy-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin - name: msp430-gcc-4_6 - run: QBS_AUTOTEST_PROFILE=msp430-gcc-4_6 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin - - name: xtensa-lx106-elf-gcc-9_2 - run: QBS_AUTOTEST_PROFILE=xtensa-lx106-elf-gcc-9_2 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin - - name: riscv64-unknown-elf-gcc-9_3 - run: QBS_AUTOTEST_PROFILE=riscv64-unknown-elf-gcc-9_3 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin - - name: sdcc-3_8_0-mcs51 - run: QBS_AUTOTEST_PROFILE=sdcc-3_8_0-mcs51 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin - - name: sdcc-3_8_0-stm8 - run: QBS_AUTOTEST_PROFILE=sdcc-3_8_0-stm8 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin - - name: sdcc-3_8_0-hcs8 - run: QBS_AUTOTEST_PROFILE=sdcc-3_8_0-hcs8 docker-compose run focal-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin + run: QBS_AUTOTEST_PROFILE=msp430-gcc-4_6 docker-compose run jammy-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin + - name: riscv64-unknown-elf-gcc-10_2 + run: QBS_AUTOTEST_PROFILE=riscv64-unknown-elf-gcc-10_2 docker-compose run jammy-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin + - name: sdcc-4_0_0-hcs8 + run: QBS_AUTOTEST_PROFILE=sdcc-4_0_0-hcs8 docker-compose run jammy-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin + - name: sdcc-4_0_0-mcs51 + run: QBS_AUTOTEST_PROFILE=sdcc-4_0_0-mcs51 docker-compose run jammy-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin + - name: sdcc-4_0_0-stm8 + run: QBS_AUTOTEST_PROFILE=sdcc-4_0_0-stm8 docker-compose run jammy-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin + - name: xtensa-lx106-elf-gcc-10_3 + run: QBS_AUTOTEST_PROFILE=xtensa-lx106-elf-gcc-10_3 docker-compose run jammy-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin test-baremetal-windows: name: Run Baremetal tests (Windows) runs-on: [self-hosted, windows, x64] timeout-minutes: 30 needs: build-windows - if: ${{ github.actor == 'rweickelt' }} + # baremetal VM is down, disable the workflow for now + if: 'false' env: QBS_TEST_SOURCE_ROOT: 'tests' QT_ASSUME_STDERR_HAS_CONSOLE: 1 @@ -449,7 +461,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: Download artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: qbs-windows-${{ github.run_id }}.zip path: ./ @@ -595,70 +607,85 @@ jobs: QTEST_FUNCTION_TIMEOUT: 9000000 QBS_AUTOTEST_PROFILE: 'qt' QBS_TEST_SOURCE_ROOT: 'tests' + QBS_EXTRA_GRPC_LIBS: 'absl_cord,absl_cordz_handle,absl_cordz_info,absl_synchronization,grpc,gpr' strategy: fail-fast: false matrix: config: - { - name: 'Run macOS tests (Xcode 12.5)', - runner: 'macos-11.0', + name: 'Run macOS tests (Xcode 15.1)', + runner: 'macos-13', target: 'desktop', toolchain: 'clang_64', - testProfile: 'xcode_12_5_1-macosx-x86_64', - qtVersion: '5.15.2', + xcodeVersion: '15.1', + testProfile: 'xcode_15_1-macosx-x86_64', + qtVersion: '6.5.0', script: './scripts/test-qbs.sh', } - { - name: 'Run macOS tests (Xcode 12.5, Qt 6.0)', - runner: 'macos-11.0', + name: 'Run macOS tests (Xcode 15.1, Qt 5.15)', + runner: 'macos-13', target: 'desktop', toolchain: 'clang_64', - testProfile: 'xcode_12_5_1-macosx-x86_64', - qtVersion: '6.0.2', + xcodeVersion: '15.1', + testProfile: 'xcode_15_1-macosx-x86_64', + qtVersion: '5.15.2', script: './scripts/test-qt.sh', } - { - name: 'Run iOS tests (Xcode 12.5)', - runner: 'macos-11.0', + name: 'Run iOS tests (Xcode 15.1)', + runner: 'macos-13', target: 'ios', toolchain: 'ios', - testProfile: 'xcode_12_5_1-iphoneos-arm64', - qtVersion: '5.15.2', + xcodeVersion: '15.1', + testProfile: 'xcode_15_1-iphoneos-arm64', + qtVersion: '6.5.0', script: './scripts/test-qbs.sh', } - { - name: 'Run iOS-sim tests (Xcode 12.5)', - runner: 'macos-11.0', + name: 'Run iOS-sim tests (Xcode 15.1)', + runner: 'macos-13', target: 'ios', toolchain: 'ios', - testProfile: 'xcode_12_5_1-iphonesimulator-x86_64', - qtVersion: '5.15.2', + xcodeVersion: '15.1', + testProfile: 'xcode_15_1-iphonesimulator-x86_64', + qtVersion: '6.5.0', script: './scripts/test-qbs.sh', } - { - name: 'Run macOS tests (Xcode 11.6)', - runner: 'macos-10.15', + name: 'Run macOS tests (Xcode 14.3.1)', + runner: 'macos-13', target: 'desktop', toolchain: 'clang_64', - testProfile: 'xcode_11_6-macosx-x86_64', - qtVersion: '5.15.2', + xcodeVersion: '14.3.1', + testProfile: 'xcode_14_3_1-macosx-x86_64', + qtVersion: '6.5.0', script: './scripts/test-qbs.sh', } - { - name: 'Run macOS tests (Xcode 10.3)', - runner: 'macos-10.15', + name: 'Run macOS tests (Xcode 14.2)', + runner: 'macos-13', target: 'desktop', toolchain: 'clang_64', - testProfile: 'xcode_10_3-macosx-x86_64', - qtVersion: '5.15.2', + xcodeVersion: '14.2', + testProfile: 'xcode_14_2-macosx-x86_64', + qtVersion: '6.5.0', + script: './scripts/test-qbs.sh', + } + - { + name: 'Run macOS tests (Xcode-less)', + runner: 'macos-13', + target: 'desktop', + toolchain: 'clang_64', + xcodeVersion: '', + testProfile: 'xcode_13_4_1-macosx-x86_64', + qtVersion: '6.5.0', script: './scripts/test-qbs.sh', } steps: - uses: actions/checkout@v1 - with: - submodules: true - name: Download artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: qbs-macos-${{ github.run_id }}.tar.gz path: ./ @@ -668,12 +695,22 @@ jobs: run: echo "./release/install-root/usr/local/bin" >> $GITHUB_PATH - name: Install required packages run: brew install capnp ccache grpc icoutils makensis protobuf p7zip + - name: Install Host Qt + if: matrix.config.toolchain == 'ios' + uses: ./.github/actions/download-qt + with: + target: 'desktop' + toolchain: 'clang_64' + version: ${{ matrix.config.qtVersion }} - name: Install Qt uses: ./.github/actions/download-qt with: target: ${{ matrix.config.target }} toolchain: ${{ matrix.config.toolchain }} version: ${{ matrix.config.qtVersion }} + - name: Select Xcode + run: sudo xcode-select --switch /Applications/Xcode_${{ matrix.config.xcodeVersion }}.app + if: matrix.config.xcodeVersion != '' - name: Setup Qbs run: | qbs setup-toolchains --detect @@ -681,6 +718,15 @@ jobs: qbs config profiles.qt.baseProfile ${{ matrix.config.testProfile }} qbs config defaultProfile qt qbs config --list + if: matrix.config.xcodeVersion != '' + - name: Setup Qbs (Xcode-less) + run: | + qbs setup-toolchains /usr/bin/clang++ ${{ matrix.config.testProfile }} + qbs setup-qt $(which qmake) qt + qbs config profiles.qt.baseProfile ${{ matrix.config.testProfile }} + qbs config defaultProfile qt + qbs config --list + if: matrix.config.xcodeVersion == '' - name: Run Tests run: | sudo chmod g+w /cores @@ -690,12 +736,12 @@ jobs: if: ${{ failure() }} run: | for f in $(find /cores -maxdepth 1 -name 'core.*' -print); do - lldb --core $f --batch --one-line "bt" + lldb --core $f --batch --one-line "bt all" done; test-windows: name: ${{ matrix.config.name }} - runs-on: windows-latest + runs-on: windows-2022 timeout-minutes: 60 needs: build-windows strategy: @@ -703,19 +749,19 @@ jobs: matrix: config: - { - name: 'Run Windows tests (MSVC 2019)', + name: 'Run Windows tests (MSVC 2022)', target: 'desktop', toolchain: 'win64_msvc2019_64', - testProfile: 'MSVC2019-x64', - qtVersion: '5.15.2', + testProfile: 'MSVC2022-x64', + qtVersion: '6.5.0', script: './scripts/test-qbs.sh', } - { - name: 'Run Windows tests (MSVC 2019, Qt 6.0.2)', + name: 'Run Windows tests (MSVC 2022, Qt 5.15)', target: 'desktop', toolchain: 'win64_msvc2019_64', - testProfile: 'MSVC2019-x64', - qtVersion: '6.0.2', + testProfile: 'MSVC2022-x64', + qtVersion: '5.15.2', script: './scripts/test-qt.sh', } - { @@ -723,15 +769,15 @@ jobs: target: 'desktop', toolchain: 'win64_msvc2019_64', testProfile: 'clang-cl-x86_64', - qtVersion: '5.15.2', + qtVersion: '6.5.0', script: './scripts/test-qbs.sh', } - { name: 'Run Windows tests (MinGW)', target: 'desktop', - toolchain: 'win64_mingw81', + toolchain: 'win64_mingw', testProfile: 'mingw-qt', - qtVersion: '5.15.2', + qtVersion: '6.5.0', script: './scripts/test-qbs.sh', } env: @@ -742,7 +788,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: Download artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: qbs-windows-${{ github.run_id }}.zip path: ./ @@ -756,6 +802,7 @@ jobs: run: echo "./release/install-root/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Install required packages run: choco install -y pkgconfiglite --download-checksum=6004df17818f5a6dbf19cb335cc92702 + continue-on-error: true # pkgconfiglite installation is flaky - name: Install Qt uses: ./.github/actions/download-qt with: @@ -781,3 +828,92 @@ jobs: - name: Run Tests run: ${{ matrix.config.script }} ./release/install-root/bin shell: bash + + test-windows-extra: + name: ${{ matrix.config.name }} + runs-on: windows-latest + timeout-minutes: 60 + needs: build-windows + strategy: + fail-fast: false + matrix: + config: + - { + name: 'Run Windows tests (OpenWatcom DOS 32 bit)', + testProfile: 'watcom-2_0_0-dos-x86', + script: './scripts/test-baremetal.sh', + } + - { + name: 'Run Windows tests (OpenWatcom DOS 16 bit)', + testProfile: 'watcom-2_0_0-dos-x86_16', + script: './scripts/test-baremetal.sh', + } + - { + name: 'Run Windows tests (OpenWatcom OS/2 32 bit)', + testProfile: 'watcom-2_0_0-os2-x86', + script: './scripts/test-baremetal.sh', + } + - { + name: 'Run Windows tests (OpenWatcom OS/2 16 bit)', + testProfile: 'watcom-2_0_0-os2-x86_16', + script: './scripts/test-baremetal.sh', + } + - { + name: 'Run Windows tests (OpenWatcom Windows 32 bit)', + testProfile: 'watcom-2_0_0-windows-x86', + script: './scripts/test-baremetal.sh', + } + - { + name: 'Run Windows tests (OpenWatcom Windows 16 bit)', + testProfile: 'watcom-2_0_0-windows-x86_16', + script: './scripts/test-baremetal.sh', + } + - { + name: 'Run Windows tests (DigitalMars DOS 16 bit)', + testProfile: 'dmc-8_57_0-dos-x86_16', + script: './scripts/test-baremetal.sh', + } + - { + name: 'Run Windows tests (DigitalMars Windows 32 bit)', + testProfile: 'dmc-8_57_0-windows-x86', + script: './scripts/test-baremetal.sh', + } + - { + name: 'Run Windows tests (DigitalMars Windows 16 bit)', + testProfile: 'dmc-8_57_0-windows-x86_16', + script: './scripts/test-baremetal.sh', + } + env: + QTEST_FUNCTION_TIMEOUT: 9000000 + QBS_AUTOTEST_PROFILE: 'extra' + QBS_TEST_SOURCE_ROOT: 'tests' + QT_ASSUME_STDERR_HAS_CONSOLE: 1 + steps: + - uses: actions/checkout@v1 + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: qbs-windows-${{ github.run_id }}.zip + path: ./ + - name: Unpack artifact + run: | + mkdir -p release/install-root + cd release/install-root + 7z x ../../qbs-windows-${{ github.run_id }}.zip + shell: bash + - name: Update PATH + run: echo "./release/install-root/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + - name: Install OpenWatcom + uses: ./.github/actions/download-ow + - name: Install DigitalMars + uses: ./.github/actions/download-dm + - name: Setup Qbs + run: | + qbs setup-toolchains --detect + qbs config profiles.extra.baseProfile ${{ matrix.config.testProfile }} + qbs config defaultProfile extra + qbs config --list + shell: bash + - name: Run Tests + run: ${{ matrix.config.script }} ./release/install-root/bin + shell: bash |