diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/actions/download-mingw/action.yml | 2 | ||||
-rw-r--r-- | .github/actions/download-qt/action.yml | 4 | ||||
-rw-r--r-- | .github/actions/download-qtc/action.yml | 2 | ||||
-rw-r--r-- | .github/workflows/docs.yml | 6 | ||||
-rw-r--r-- | .github/workflows/main.yml | 374 | ||||
-rw-r--r-- | .github/workflows/release.yml | 77 |
6 files changed, 241 insertions, 224 deletions
diff --git a/.github/actions/download-mingw/action.yml b/.github/actions/download-mingw/action.yml index f8fb47f28..24d196785 100644 --- a/.github/actions/download-mingw/action.yml +++ b/.github/actions/download-mingw/action.yml @@ -4,7 +4,7 @@ inputs: version: description: 'MinGW version' required: false - default: '8.1.0' + default: '9.0.0' toolchain: description: 'Toolchain' required: false diff --git a/.github/actions/download-qt/action.yml b/.github/actions/download-qt/action.yml index e27358125..039f29ca6 100644 --- a/.github/actions/download-qt/action.yml +++ b/.github/actions/download-qt/action.yml @@ -4,7 +4,7 @@ inputs: version: description: 'Qt version' required: false - default: '5.15.2' + default: '6.6.0' target: description: 'Qt target (desktop, ios, android)' required: false @@ -17,6 +17,6 @@ runs: steps: - name: Install Qt run: | - QT_DIR=$(./scripts/install-qt.sh -d $HOME/Qt --version ${{ inputs.version }} --target ${{ inputs.target }} --toolchain ${{ inputs.toolchain }} qtbase qtdeclarative qttools qtscript qtscxml qt5compat) + QT_DIR=$(./scripts/install-qt.sh -d $HOME/Qt --version ${{ inputs.version }} --target ${{ inputs.target }} --toolchain ${{ inputs.toolchain }} qtbase qtdeclarative qttools qtscxml qt5compat) (cygpath -w ${QTC_DIR} 2>/dev/null || echo ${QT_DIR}) >> ${GITHUB_PATH} shell: bash diff --git a/.github/actions/download-qtc/action.yml b/.github/actions/download-qtc/action.yml index 292991b38..a04681df4 100644 --- a/.github/actions/download-qtc/action.yml +++ b/.github/actions/download-qtc/action.yml @@ -4,7 +4,7 @@ inputs: version: description: 'Qt Creator version' required: false - default: '5.0.3' + default: '11.0.3' runs: using: "composite" steps: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 248baf5f7..d820a03aa 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -27,10 +27,10 @@ jobs: WITH_TESTS: 0 steps: - uses: actions/checkout@v1 - - name: Pull the Focal Image - run: docker-compose pull focal + - name: Pull the Docker Image + run: docker-compose pull jammy - name: Build Qbs Docs - run: docker-compose run focal ${{ matrix.config.script }} + run: docker-compose run jammy ${{ matrix.config.script }} - name: Upload artifacts uses: 'actions/upload-artifact@v2' with: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bacf90555..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, Qt 6)', - image: 'focal-qt6', + name: 'Build on Linux (gcc, UBSAN)', + image: 'jammy-qt6', script: './scripts/build-qbs-with-qbs.sh', options: 'modules.cpp.compilerWrapper:ccache - modules.qbsbuildconfig.enableAddressSanitizer:false + modules.qbsbuildconfig.enableUbSanitizer:true modules.qbs.debugInformation:true modules.qbsbuildconfig.enableBundledQt:true', - cacheid: 'gcc-qt6', + cacheid: 'gcc-ubsan', + } + - { + name: 'Build on Linux (gcc, Qt 5.15)', + image: 'jammy-qt5', + script: './scripts/build-qbs-with-qbs.sh', + options: 'modules.cpp.compilerWrapper:ccache + modules.qbs.debugInformation:true + modules.qbsbuildconfig.enableBundledQt:true', + 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,7 +186,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-macos-${{ github.run_id }}.tar.gz path: release/qbs-macos-${{ github.run_id }}.tar.gz @@ -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,7 +243,7 @@ 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 @@ -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,93 +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 Linux tests (gcc, Qt 6.2 static)', - image: 'focal-qt6-static', + 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.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 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.3.0)', - image: 'focal-android-630', - 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', } @@ -402,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 @@ -423,30 +422,30 @@ 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) @@ -462,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: ./ @@ -608,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: ./ @@ -681,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 @@ -694,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 @@ -703,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-2019 + runs-on: windows-2022 timeout-minutes: 60 needs: build-windows strategy: @@ -716,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', } - { @@ -736,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: @@ -755,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: ./ @@ -769,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: @@ -857,7 +891,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: ./ @@ -869,8 +903,6 @@ jobs: shell: bash - name: Update PATH 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 - name: Install OpenWatcom uses: ./.github/actions/download-ow - name: Install DigitalMars diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7c3396a1d..1b65762e7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,6 +21,7 @@ jobs: options: 'qbs.installPrefix:"" modules.cpp.compilerWrapper:ccache modules.qbsbuildconfig.enableAddressSanitizer:false + project.withTests:false modules.qbsbuildconfig.enableUnitTests:false modules.qbsbuildconfig.enableBundledQt:true products.qbs_archive.targetName:qbs-linux-${{ github.run_id }}', @@ -36,40 +37,37 @@ jobs: run: mkdir -p ~/.ccache - name: test run: echo ${{ github.ref }} - - 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 jammy-qt6 - name: Print ccache stats - run: docker-compose run focal ccache -s + run: docker-compose run jammy-qt6 ccache -s - name: Build Qbs - run: docker-compose run focal ${{ matrix.config.script }} + run: docker-compose run jammy-qt6 ${{ matrix.config.script }} - name: Print ccache stats - run: docker-compose run focal ccache -s + run: docker-compose run jammy-qt6 ccache -s - name: Get archive name id: get-archive-name - run: echo ::set-output name=archive-name::$(git describe) + run: echo "archive-name=$(git describe)" >> $GITHUB_OUTPUT - 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 build-macos: name: Build on macOS - runs-on: macos-10.15 + runs-on: macos-12 timeout-minutes: 60 env: BUILD_OPTIONS: | qbs.installPrefix:"" modules.cpp.compilerWrapper:ccache + project.withTests:false modules.qbsbuildconfig.enableUnitTests:false modules.qbsbuildconfig.enableAddressSanitizer:false modules.qbsbuildconfig.enableBundledQt:true @@ -79,15 +77,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 }}-release-ccache-${{ steps.get-timestamp.outputs.timestamp }} - restore-keys: ${{ runner.os }}-release-ccache- + key: ${{ runner.os }}-release-ccache - name: Install required packages run: | brew install ccache p7zip @@ -98,13 +92,11 @@ jobs: toolchain: clang_64 - name: Install Qt Creator uses: ./.github/actions/download-qtc - with: - version: 5.0.3 - name: Setup Qbs 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 @@ -114,7 +106,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-macos-${{ github.run_id }}.tar.gz path: release/qbs-macos-${{ github.run_id }}.tar.gz @@ -132,16 +124,11 @@ jobs: - name: Create .ccache dir run: mkdir -p ~/.ccache shell: bash - - 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: ~/.ccache - key: ${{ runner.os }}-release-msvc-docker-clcache-${{ steps.get-timestamp.outputs.timestamp }} - restore-keys: ${{ runner.os }}-release-msvc-docker-clcache- + key: ${{ runner.os }}-release-msvc-docker-clcache - name: Pull the Windows Image run: docker-compose pull windows - name: Print clcache stats @@ -152,26 +139,24 @@ jobs: -p dist qbs.buildVariant:release modules.cpp.compilerWrapper:clcache + project.withTests:false modules.qbsbuildconfig.enableBundledQt:true modules.qbsbuildconfig.enableUnitTests:false modules.cpp.treatWarningsAsErrors:true project.withDocumentation:true - config:release-64 profile:qt64 - config:release profile:qt + config:release profile:qt64 - name: Print clcache stats run: docker-compose run --rm windows clcache -s - name: Get archive name id: get-archive-name - run: echo ::set-output name=archive-name::$(git describe) - shell: bash + run: echo "archive-name=$(git describe)" >> $GITHUB_OUTPUT - name: Upload artifacts - uses: 'actions/upload-artifact@v2' + uses: 'actions/upload-artifact@v4' with: name: qbs-windows-${{ github.run_id }} path: | release/qbs.*.nupkg release/qbs-windows-*.zip - release-64/qbs-windows-*.zip create-archives: name: Create Archives @@ -179,9 +164,11 @@ jobs: needs: [build-linux, build-windows-with-docker] steps: - uses: actions/checkout@v1 + with: + submodules: true - name: Get version name id: get-version-name - run: echo ::set-output name=version-name::$(cat VERSION) + run: echo "version-name=$(cat VERSION)" >> $GITHUB_OUTPUT - name: Create directories run: | mkdir release @@ -197,7 +184,7 @@ jobs: cd tmp/ tar czf ../release/qbs-src-${{ steps.get-version-name.outputs.version-name }}.tar.gz qbs-src-${{ steps.get-version-name.outputs.version-name }} - name: Download Linux artifacts - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: qbs-linux-${{ github.run_id }}.tar.gz path: ./tmp @@ -208,15 +195,14 @@ jobs: cd tmp/ tar czf ../release/qbs-linux-x86_64-${{ steps.get-version-name.outputs.version-name }}.tar.gz qbs-linux-x86_64-${{ steps.get-version-name.outputs.version-name }} - name: Download Windows artifacts - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: qbs-windows-${{ github.run_id }} - path: ./tmp + path: ./tmp/release - name: Copy Windows artifacts run: | cp ./tmp/release/qbs.*.nupkg ./release - cp ./tmp/release/qbs-windows-x86-*.zip ./release - cp ./tmp/release-64/qbs-windows-x86_64-*.zip ./release + cp ./tmp/release/qbs-windows-x86_64-*.zip ./release - name: Copy changelog run: cp changelogs/changes-${{ steps.get-version-name.outputs.version-name }}.md release || echo "changelog not found" - name: Generate checksums @@ -226,9 +212,9 @@ jobs: find . -type f -printf '%f\n' | grep -v .txt | xargs sha256sum > sha256sums.txt - name: Get archive name id: get-archive-name - run: echo ::set-output name=archive-name::$(git describe) + run: echo "archive-name=$(git describe)" >> $GITHUB_OUTPUT - name: Upload artifacts - uses: 'actions/upload-artifact@v2' + uses: 'actions/upload-artifact@v4' with: name: qbs-release-${{ steps.get-archive-name.outputs.archive-name }} path: | @@ -236,7 +222,6 @@ jobs: release/qbs-src-*.tar.gz release/qbs-linux-*.tar.gz release/qbs.*.nupkg - release/qbs-windows-x86-*.zip release/qbs-windows-x86_64-*.zip release/changes-*.md release/md5sums.txt |