Skip to content

Fix runtime compatibility #190

Fix runtime compatibility

Fix runtime compatibility #190

Workflow file for this run

name: Build and test Qbs
on:
push:
paths-ignore:
- 'changelogs/**'
- 'doc/**'
jobs:
build-linux:
name: ${{ matrix.config.name }}
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
config:
- {
name: 'Build on Linux (Noble, gcc)',
image: 'noble-qt6',
options: 'modules.cpp.compilerWrapper:ccache
modules.qbs.debugInformation:true
modules.qbsbuildconfig.enableBundledQt:true
products.qbs_archive.targetName:qbs-linux-noble-${{ github.run_id }}
products.qbs_archive.includeTests:true',
script: './scripts/build-qbs-with-qbs.sh',
cacheid: 'gcc-qt6-noble',
suffix: 'linux-noble',
}
env:
BUILD_OPTIONS: ${{ matrix.config.options }}
WITH_TESTS: 0
steps:
- uses: actions/checkout@v1
- name: Create .ccache dir
run: mkdir -p ~/.ccache
- name: prepare timestamp
id: get-timestamp
run: echo "timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT
shell: bash
- name: ccache cache files
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 Docker Image
run: docker compose pull ${{ matrix.config.image }}
- name: Print ccache stats
run: docker compose run ${{ matrix.config.image }} ccache -s
- name: Build Qbs
run: docker compose run ${{ matrix.config.image }} ${{ matrix.config.script }}
- name: Print ccache stats
run: docker compose run ${{ matrix.config.image }} ccache -s
- name: Upload artifacts
uses: 'actions/upload-artifact@v4'
with:
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: 90
strategy:
fail-fast: false
matrix:
config:
- {
name: 'Build on Linux (clang_tidy)',
script: './scripts/run-analyzer.sh',
image: 'noble-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: 'noble-qt6',
cacheid: 'cmake',
}
- {
name: 'Build on Linux (gcc, ASAN)',
image: 'noble-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: 'noble-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 5.15)',
image: 'noble-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
- name: Create .ccache dir
run: mkdir -p ~/.ccache
- name: prepare timestamp
id: get-timestamp
run: echo "timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT
shell: bash
- name: ccache cache files
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 Docker Image
run: docker compose pull ${{ matrix.config.image }}
- name: Print ccache stats
run: docker compose run ${{ matrix.config.image }} ccache -s
- name: Build Qbs
run: docker compose run ${{ matrix.config.image }} ${{ matrix.config.script }}
- 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-12
timeout-minutes: 60
env:
BUILD_OPTIONS: |
modules.cpp.compilerWrapper:ccache
modules.qbs.debugInformation:true
modules.qbsbuildconfig.enableAddressSanitizer:false
modules.qbsbuildconfig.enableBundledQt:true
products.qbs_archive.targetName:qbs-macos-${{ github.run_id }}
products.qbs_archive.includeTests:true
WITH_TESTS: 0
steps:
- uses: actions/checkout@v1
- name: Create .ccache dir
run: mkdir -p ~/.ccache
- name: prepare timestamp
id: get-timestamp
run: echo "timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT
shell: bash
- name: ccache cache files
uses: actions/cache@v4
with:
path: ~/.ccache
key: ${{ runner.os }}-clang-ccache-${{ steps.get-timestamp.outputs.timestamp }}
restore-keys: ${{ runner.os }}-clang-ccache
- name: Install required packages
run: |
brew install ccache p7zip
python3 -m pip install --user beautifulsoup4 lxml
- name: Install Qt
uses: ./.github/actions/download-qt
with:
toolchain: clang_64
- name: Install Qt Creator
uses: ./.github/actions/download-qtc
- name: Setup Qbs
run: |
qbs setup-toolchains --detect
qbs setup-qt --detect
qbs config profiles.qt.baseProfile xcode_13_2_1-macosx-x86_64
qbs config defaultProfile qt
qbs config --list
- name: Print ccache stats
run: ccache -s
- name: Build Qbs
run: scripts/build-qbs-with-qbs.sh
- name: Print ccache stats
run: ccache -s
- name: Upload artifacts
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-2022
timeout-minutes: 60
env:
BUILD_OPTIONS: |
modules.cpp.compilerWrapper:clcache
modules.qbs.debugInformation:true
modules.qbsbuildconfig.enableAddressSanitizer:false
modules.qbsbuildconfig.enableBundledQt:true
products.qbs_archive.targetName:qbs-windows-${{ github.run_id }}
products.qbs_archive.includeTests:true,
WITH_TESTS: 0
QT_ASSUME_STDERR_HAS_CONSOLE: 1
steps:
- uses: actions/checkout@v1
- name: prepare timestamp
id: get-timestamp
run: echo "timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT
shell: bash
- name: clcache cache files
uses: actions/cache@v4
with:
path: ~/clcache
key: ${{ runner.os }}-msvc-clcache-${{ steps.get-timestamp.outputs.timestamp }}
restore-keys: ${{ runner.os }}-msvc-clcache
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Install required packages
run: |
python -m pip install --upgrade pip
pip install beautifulsoup4 lxml
pip install git+https://github.com/frerich/clcache.git@cae73d8255d78db8ba11e23c51fd2c9a89e7475b
- name: Install Qt
uses: ./.github/actions/download-qt
with:
toolchain: win64_msvc2019_64
- name: Install Qt Creator
uses: ./.github/actions/download-qtc
- name: Setup Qbs
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
- name: Print clcache stats
run: clcache -s
- name: Build Qbs
run: scripts/build-qbs-with-qbs.sh
shell: bash
- name: Print clcache stats
run: clcache -s
- name: Upload artifacts
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-2022
timeout-minutes: 60
env:
BUILD_OPTIONS: |
modules.cpp.compilerWrapper:ccache
modules.qbsbuildconfig.enableAddressSanitizer:false
modules.qbsbuildconfig.enableBundledQt:true
products.qbs_archive.targetName:qbs-windows-mingw-${{ github.run_id }}
products.qbs_archive.includeTests:true,
QT_ASSUME_STDERR_HAS_CONSOLE: 1
WITH_TESTS: 0
CCACHE_DIR: ${{ github.workspace }}\ccache
steps:
- uses: actions/checkout@v1
- name: prepare timestamp
id: get-timestamp
run: echo "timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT
shell: bash
- name: ccache cache files
uses: actions/cache@v4
with:
path: ~/.ccache
key: ${{ runner.os }}-mingw-ccache-${{ steps.get-timestamp.outputs.timestamp }}
restore-keys: ${{ runner.os }}-mingw-ccache
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Install required packages
run: |
choco install ccache
python -m pip install --upgrade pip
pip install beautifulsoup4 lxml
- name: Install Qt
uses: ./.github/actions/download-qt
with:
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 --type mingw $(which g++).exe mingw-qt
qbs setup-qt $(which qmake).exe qt
qbs config profiles.qt.baseProfile mingw-qt
qbs config defaultProfile qt
qbs config --list
shell: bash
- name: Print ccache stats
run: ccache -s
- name: Build Qbs
run: scripts/build-qbs-with-qbs.sh
shell: bash
- name: Print ccache stats
run: ccache -s
- name: Upload artifacts
uses: 'actions/upload-artifact@v4'
with:
name: qbs-windows-mingw-${{ github.run_id }}.zip
path: release/qbs-windows-mingw-${{ github.run_id }}.zip
test-linux:
name: ${{ matrix.config.name }}
runs-on: ubuntu-latest
timeout-minutes: 90
needs: build-linux
strategy:
fail-fast: false
matrix:
config:
- {
name: 'Run Linux tests (gcc, Qt 6)',
image: 'noble-qt6',
suffix: 'linux-noble',
profile: 'qt-gcc_64',
script: './scripts/test-qbs.sh',
}
- {
name: 'Run Linux tests (clang, Qt 6)',
image: 'noble-qt6',
suffix: 'linux-noble',
profile: 'qt-clang_64',
script: './scripts/test-qbs.sh',
}
- {
name: 'Run Linux tests (gcc, Qt 5)',
image: 'noble-qt5',
suffix: 'linux-noble',
profile: 'qt-gcc_64',
script: './scripts/test-qt.sh',
}
- {
name: 'Run Android tests (Qt 6.5)',
image: 'noble-android-65',
suffix: 'linux-noble',
profile: '',
script: './scripts/test-qt-for-android.sh',
}
- {
name: 'Run Android tests (Qt 5.15)',
image: 'noble-android-515',
suffix: 'linux-noble',
profile: '',
script: './scripts/test-qt-for-android.sh',
}
- {
name: 'Run Android tests (ndk r25)',
image: 'noble-android-ndk-r25',
suffix: 'linux-noble',
profile: '',
script: './scripts/test-for-android.sh',
}
- {
name: 'Run WebAssembly tests',
image: 'noble-qt6-wasm',
suffix: 'linux-noble',
profile: '',
script: './scripts/test-wasm.sh',
}
env:
QBS_TEST_SOURCE_ROOT: 'tests'
QBS_AUTOTEST_PROFILE: ${{ matrix.config.profile }}
QTEST_FUNCTION_TIMEOUT: 9000000
steps:
- uses: actions/checkout@v1
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: qbs-${{ matrix.config.suffix }}-${{ github.run_id }}.tar.gz
path: ./
- name: Unpack artifact
run: mkdir -p release/install-root/ && tar xzf qbs-${{ matrix.config.suffix }}-${{ github.run_id }}.tar.gz -C release/install-root/
- name: Setup Coredumps
run: |
sudo bash -c 'echo "/cores/core.%e.%t.%p" > /proc/sys/kernel/core_pattern'
sudo mkdir /cores
sudo chmod 777 /cores
- name: Pull the Docker Image
run: docker compose pull ${{ matrix.config.image }}
- name: Run tests
run: docker compose run ${{ matrix.config.image }} ${{ matrix.config.script }} release/install-root/usr/local/bin
- name: Coredump on failure
if: ${{ failure() }}
run: docker compose run ${{ matrix.config.image }} ./scripts/print-cores.sh
test-baremetal:
name: Run Baremetal tests (Linux)
runs-on: ubuntu-latest
timeout-minutes: 60
needs: build-linux
env:
QBS_TEST_SOURCE_ROOT: 'tests'
steps:
- uses: actions/checkout@v1
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: qbs-linux-noble-${{ github.run_id }}.tar.gz
path: ./
- name: Unpack artifact
run: mkdir -p release/install-root/ && tar xzf qbs-linux-noble-${{ github.run_id }}.tar.gz -C release/install-root/
- name: Pull the Docker Image
run: docker compose pull noble-baremetal
- name: arm-none-eabi-gcc-13_2
run: QBS_AUTOTEST_PROFILE=arm-none-eabi-gcc-13_2 docker compose run noble-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
- name: avr-gcc-7_3
run: QBS_AUTOTEST_PROFILE=avr-gcc-7_3 docker compose run noble-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
- name: riscv64-unknown-elf-gcc-13_2
run: QBS_AUTOTEST_PROFILE=riscv64-unknown-elf-gcc-13_2 docker compose run noble-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
- name: sdcc-4_0_0-hcs8
run: QBS_AUTOTEST_PROFILE=sdcc-4_2_0-hcs8 docker compose run noble-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
- name: sdcc-4_0_0-mcs51
run: QBS_AUTOTEST_PROFILE=sdcc-4_2_0-mcs51 docker compose run noble-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
- name: sdcc-4_0_0-stm8
run: QBS_AUTOTEST_PROFILE=sdcc-4_2_0-stm8 docker compose run noble-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
- name: xtensa-lx106-elf-gcc-13_2
run: QBS_AUTOTEST_PROFILE=xtensa-lx106-elf-gcc-13_2 docker compose run noble-baremetal scripts/test-baremetal.sh release/install-root/usr/local/bin
test-macos:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.runner }}
timeout-minutes: 60
needs: build-macos
env:
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 15.1)',
runner: 'macos-13',
target: 'desktop',
toolchain: 'clang_64',
xcodeVersion: '15.1',
testProfile: 'xcode_15_1-macosx-x86_64',
qtVersion: '6.5.0',
script: './scripts/test-qbs.sh',
}
- {
name: 'Run macOS tests (Xcode 15.1, Qt 5.15)',
runner: 'macos-13',
target: 'desktop',
toolchain: 'clang_64',
xcodeVersion: '15.1',
testProfile: 'xcode_15_1-macosx-x86_64',
qtVersion: '5.15.2',
script: './scripts/test-qt.sh',
}
- {
name: 'Run iOS tests (Xcode 15.1)',
runner: 'macos-13',
target: 'ios',
toolchain: 'ios',
xcodeVersion: '15.1',
testProfile: 'xcode_15_1-iphoneos-arm64',
qtVersion: '6.5.0',
script: './scripts/test-qbs.sh',
}
- {
name: 'Run iOS-sim tests (Xcode 15.1)',
runner: 'macos-13',
target: 'ios',
toolchain: 'ios',
xcodeVersion: '15.1',
testProfile: 'xcode_15_1-iphonesimulator-x86_64',
qtVersion: '6.5.0',
script: './scripts/test-qbs.sh',
}
- {
name: 'Run macOS tests (Xcode 14.3.1)',
runner: 'macos-13',
target: 'desktop',
toolchain: 'clang_64',
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 14.2)',
runner: 'macos-13',
target: 'desktop',
toolchain: 'clang_64',
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: 'clang',
qtVersion: '6.5.0',
script: './scripts/test-qbs.sh',
}
steps:
- uses: actions/checkout@v1
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: qbs-macos-${{ github.run_id }}.tar.gz
path: ./
- name: Unpack artifact
run: mkdir -p release/install-root/ && tar xzf qbs-macos-${{ github.run_id }}.tar.gz -C release/install-root/
- name: Update PATH
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: Set up Python
uses: actions/setup-python@v5
if: matrix.config.toolchain == 'clang_64'
with:
python-version: 3.12
- name: Install Conan
if: matrix.config.toolchain == 'clang_64'
uses: turtlebrowser/get-conan@main
- name: Setup Conan
if: matrix.config.toolchain == 'clang_64'
run: |
brew install ninja
./scripts/setup-conan-profiles.sh
- 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
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: 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 777 /cores
ulimit -c unlimited
${{ matrix.config.script }} ./release/install-root/usr/local/bin
- name: Coredump on failure
if: ${{ failure() }}
run: |
for f in $(find /cores -maxdepth 1 -name 'core.*' -print); do
lldb --core $f --batch --one-line "bt all"
done;
test-windows:
name: ${{ matrix.config.name }}
runs-on: windows-2022
timeout-minutes: 60
needs: build-windows
strategy:
fail-fast: false
matrix:
config:
- {
name: 'Run Windows tests (MSVC 2022)',
target: 'desktop',
toolchain: 'win64_msvc2019_64',
testProfile: 'MSVC2022-x64',
conan_toolchain: 'msvc_64',
qtVersion: '6.5.0',
script: './scripts/test-qbs.sh',
}
- {
name: 'Run Windows tests (MSVC 2022, Qt 5.15)',
target: 'desktop',
toolchain: 'win64_msvc2019_64',
testProfile: 'MSVC2022-x64',
conan_toolchain: '',
qtVersion: '5.15.2',
script: './scripts/test-qt.sh',
}
- {
name: 'Run Windows tests (clang-cl)',
target: 'desktop',
toolchain: 'win64_msvc2019_64',
testProfile: 'clang-cl-x86_64',
conan_toolchain: '',
qtVersion: '6.5.0',
script: './scripts/test-qbs.sh',
}
- {
name: 'Run Windows tests (MinGW)',
target: 'desktop',
toolchain: 'win64_mingw',
testProfile: 'mingw-qt',
conan_toolchain: 'mingw_64',
qtVersion: '6.5.0',
script: './scripts/test-qbs.sh',
}
env:
QTEST_FUNCTION_TIMEOUT: 9000000
QBS_AUTOTEST_PROFILE: 'qt'
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 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:
toolchain: ${{ matrix.config.toolchain }}
version: ${{ matrix.config.qtVersion }}
- name: Install MinGW
uses: ./.github/actions/download-mingw
- name: Install Ninja
if: matrix.config.conan_toolchain != ''
run: |
choco install ninja
shell: bash
- name: Install Conan
if: matrix.config.conan_toolchain != ''
uses: turtlebrowser/get-conan@main
- name: Configure Conan
if: matrix.config.conan_toolchain != ''
run: |
./scripts/setup-conan-profiles.sh --toolchain ${{ matrix.config.conan_toolchain }}
which ninja
shell: bash
- 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 ${{ matrix.config.testProfile }}
qbs config defaultProfile qt
qbs config --list
shell: bash
- name: Setup self-signed certificate
run: |
New-SelfSignedCertificate -DnsName [email protected] -Type CodeSigning -CertStoreLocation cert:\CurrentUser\My
Export-Certificate -Cert (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0] -FilePath qbs-code-signing.crt
Import-Certificate -FilePath .\qbs-code-signing.crt -CertStoreLocation Cert:\CurrentUser\TrustedPublisher
shell: powershell
- 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