Skip to content

Commit

Permalink
Use the latest MinGW versions available
Browse files Browse the repository at this point in the history
Also enable 32-bit MinGW builds.

Squashed commit of the following:

commit 6a74cab
Author: Paul Colby <git@colby.id.au>
Date:   Fri Oct 11 15:45:31 2024 +1100

    Reinstate Linux and macOS builds

commit aa21f40
Author: Paul Colby <git@colby.id.au>
Date:   Fri Oct 11 15:12:43 2024 +1100

    Use the `__MINGW64__` macro to differentiate 32/64-bit

commit c4a298a
Author: Paul Colby <git@colby.id.au>
Date:   Fri Oct 11 15:04:40 2024 +1100

    Inspect the build commands

commit 5c14a45
Author: Paul Colby <git@colby.id.au>
Date:   Fri Oct 11 14:53:09 2024 +1100

    Work around a persistent 32-bit MinGW rounding error

commit c226be2
Author: Paul Colby <git@colby.id.au>
Date:   Fri Oct 11 14:25:48 2024 +1100

    Define the aqtArch for all 32-bit MinGW build configurations

commit 447de54
Author: Paul Colby <git@colby.id.au>
Date:   Fri Oct 11 14:14:58 2024 +1100

    Choose 64-bit MinGW version based on Qt versions

    And get some CMake debugging to understand the 32-bit MinGW issue.

commit b446f42
Author: Paul Colby <git@colby.id.au>
Date:   Fri Oct 11 13:49:32 2024 +1100

    Try using the latest MinGW's available from Qt Online Installer

    For both 32-bit and 64-bit architectures.
  • Loading branch information
pcolby committed Oct 11, 2024
1 parent 11868ab commit 44106ac
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 10 deletions.
28 changes: 20 additions & 8 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -371,9 +371,8 @@ jobs:
# Exclude MinGW (including LLVM) builds for arm64, since Qt does not provide those binaries yet.
- { arch: arm64, toolchain: llvm }
- { arch: arm64, toolchain: mingw }
# Exclude MinGW (includeing LLVM) builds for x86, since the GitHub hosted runners only includes MinGW-w64.
# Exclude LLVM builds for x86, since neither Qt nor GitHub runners provide 32-bit LLVM MinGW binaries.
- { arch: x86, toolchain: llvm }
- { arch: x86, toolchain: mingw }
# Exclude x86 (32-bit) builds for Qt 5.10.1 with MSVC. See https://bugreports.qt.io/browse/QTBUG-67259
- { arch: x86, qt: '5.10.1', toolchain: msvc }
# Exclude x86 (32-bit) builds for Qt 6.x, since the Qt online installer dropped those.
Expand Down Expand Up @@ -410,29 +409,36 @@ jobs:
- { toolchain: llvm, qt: '6.8.0' }
include:
# Map the aqtinstall (aqt) architectures.
- { qt: '5.9.9', toolchain: mingw, arch: x86, aqtArch: win32_mingw53 }
- { qt: '5.9.9', toolchain: msvc, arch: x86, aqtArch: win32_msvc2015 }
- { qt: '5.9.9', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2013_64 }
- { qt: '5.9.9', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2015_64 }
- { qt: '5.9.9', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2017_64 }
- { qt: '5.10.1', toolchain: mingw, arch: x86, aqtArch: win32_mingw53 }
# { qt: '5.10.1', toolchain: msvc, arch: x86, aqtArch: win32_msvc2015 } # Excluded above (QTBUG-67259).
- { qt: '5.10.1', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2013_64 }
- { qt: '5.10.1', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2015_64 }
- { qt: '5.10.1', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2017_64 }
- { qt: '5.11.3', toolchain: mingw, arch: x86, aqtArch: win32_mingw53 }
- { qt: '5.11.3', toolchain: msvc, arch: x86, aqtArch: win32_msvc2015 }
- { qt: '5.11.3', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2015_64 }
- { qt: '5.11.3', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2017_64 }
- { qt: '5.12.12', toolchain: mingw, arch: x86, aqtArch: win32_mingw73 }
- { qt: '5.12.12', toolchain: mingw, arch: x86-64, aqtArch: win64_mingw73 }
- { qt: '5.12.12', toolchain: msvc, arch: x86, aqtArch: win32_msvc2017 }
- { qt: '5.12.12', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2015_64 }
- { qt: '5.12.12', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2017_64 }
- { qt: '5.13.2', toolchain: mingw, arch: x86, aqtArch: win32_mingw73 }
- { qt: '5.13.2', toolchain: mingw, arch: x86-64, aqtArch: win64_mingw73 }
- { qt: '5.13.2', toolchain: msvc, arch: x86, aqtArch: win32_msvc2017 }
- { qt: '5.13.2', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2015_64 }
- { qt: '5.13.2', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2017_64 }
- { qt: '5.14.2', toolchain: mingw, arch: x86, aqtArch: win32_mingw73 }
- { qt: '5.14.2', toolchain: mingw, arch: x86-64, aqtArch: win64_mingw73 }
- { qt: '5.14.2', toolchain: msvc, arch: x86, aqtArch: win32_msvc2017 }
- { qt: '5.14.2', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2015_64 }
- { qt: '5.14.2', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2017_64 }
- { qt: '5.15.2', toolchain: mingw, arch: x86, aqtArch: win32_mingw81 }
- { qt: '5.15.2', toolchain: mingw, arch: x86-64, aqtArch: win64_mingw81 }
- { qt: '5.15.2', toolchain: msvc, arch: x86, aqtArch: win32_msvc2019 }
- { qt: '5.15.2', toolchain: msvc, arch: x86-64, aqtArch: win64_msvc2015_64 }
Expand Down Expand Up @@ -467,6 +473,16 @@ jobs:
# { toolchain: 'llvm', generator: 'MinGW Makefiles', dll: libQtPokit.dll } \todo See temp exclusion above.
- { toolchain: 'mingw', generator: 'MinGW Makefiles', dll: libQtPokit.dll }
- { toolchain: 'msvc', generator: 'NMake Makefiles', dll: QtPokit.dll }
# Optional additional tools to be installed by aqtinstall (via install-qt-action).
- { toolchain: 'mingw', arch: x86, aqtTools: 'tools_mingw,qt.tools.win32_mingw810' }
# Use Qt-provided 64-bit MinGW for recent Qt's (defaulting to GitHub's 12.2.0 version for older Qt versions).
- { toolchain: 'mingw', arch: x86-64, qt: '5.14.2', aqtTools: 'tools_mingw1310' }
- { toolchain: 'mingw', arch: x86-64, qt: '5.15.2', aqtTools: 'tools_mingw1310' }
- { toolchain: 'mingw', arch: x86-64, qt: '6.4.3', aqtTools: 'tools_mingw1310' }
- { toolchain: 'mingw', arch: x86-64, qt: '6.5.3', aqtTools: 'tools_mingw1310' }
- { toolchain: 'mingw', arch: x86-64, qt: '6.6.3', aqtTools: 'tools_mingw1310' }
- { toolchain: 'mingw', arch: x86-64, qt: '6.7.3', aqtTools: 'tools_mingw1310' }
- { toolchain: 'mingw', arch: x86-64, qt: '6.8.0', aqtTools: 'tools_mingw1310' }
steps:
- uses: actions/checkout@v4
- name: Install host Qt for cross-compilation
Expand All @@ -489,11 +505,7 @@ jobs:
version: ${{ matrix.qt }}
modules: ${{ startsWith(matrix.qt, '6') && 'qtconnectivity' || '' }}
arch: ${{ matrix.aqtArch }}
# Use Qt's shipped MinGW for Qt 6.6+ for now, as the runner's MinGW version crashes with Qt 6.6 and 6.7.
# \todo Remove this if/when the runner's MinGW is updated to fix the incompatibility.
tools: >-
${{ (startsWith(matrix.qt, '6.6') || startsWith(matrix.qt, '6.7') || startsWith(matrix.qt, '6.8' )) &&
startsWith(matrix.generator, 'MinGW') && 'tools_mingw90' || '' }}
tools: ${{ matrix.aqtTools }}
add-tools-to-path: true
documentation: true
doc-archives: >-
Expand Down Expand Up @@ -527,7 +539,7 @@ jobs:
-D QT_HOST_PATH=%qtHostPath% ^
-D QT_INSTALL_DOCS=%RUNNER_WORKSPACE%\Qt\Docs\Qt-${{ matrix.qt }} ^
-G "${{ matrix.generator }}" -S "%GITHUB_WORKSPACE%" -B "%RUNNER_TEMP%"
cmake --build "%RUNNER_TEMP%"
cmake --build "%RUNNER_TEMP%" --verbose
- name: Capture build-output variables
id: post-build
shell: bash
Expand Down
19 changes: 17 additions & 2 deletions test/unit/cli/testabstractcommand.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,14 @@ void TestAbstractCommand::parseMicroValue_data()

// Floats work the same.
QTest::addRow("123.0") << QStringLiteral("123.0") << QString() << (quint32)100 << (quint32)123;
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1230;
QTest::addRow("123.0s") << QStringLiteral("123.0s") << QStringLiteral("s") << (quint32)100 << (quint32)123000000;
#if defined(Q_CC_MINGW) && !defined(__MINGW64__) // 32-bit MinGW has a persistent rounding error.
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1229;
QTest::addRow("1.230s") << QStringLiteral("1.230s") << QStringLiteral("s") << (quint32)100 << (quint32)1229999;
#else
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1230;
QTest::addRow("1.230s") << QStringLiteral("1.230s") << QStringLiteral("s") << (quint32)100 << (quint32)1230000;
#endif

// Invalid numbers return 0.
QTest::addRow("xxx") << QStringLiteral("xxx") << QString() << (quint32)100 << (quint32)0;
Expand Down Expand Up @@ -129,9 +134,14 @@ void TestAbstractCommand::parseMilliValue_data()

// Floats work the same.
QTest::addRow("123.0") << QStringLiteral("123.0") << QString() << (quint32)100 << (quint32)123;
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1230;
QTest::addRow("123.0s") << QStringLiteral("123.0s") << QStringLiteral("s") << (quint32)100 << (quint32)123000;
#if defined(Q_CC_MINGW) && !defined(__MINGW64__) // 32-bit MinGW has a persistent rounding error.
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1229;
QTest::addRow("1.230s") << QStringLiteral("1.230s") << QStringLiteral("s") << (quint32)100 << (quint32)1229;
#else
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1230;
QTest::addRow("1.230s") << QStringLiteral("1.230s") << QStringLiteral("s") << (quint32)100 << (quint32)1230;
#endif

// Invalid numbers return 0.
QTest::addRow("xxx") << QStringLiteral("xxx") << QString() << (quint32)100 << (quint32)0;
Expand Down Expand Up @@ -169,8 +179,13 @@ void TestAbstractCommand::parseWholeValue_data()

// Floats work the same.
QTest::addRow("123.0") << QStringLiteral("123.0") << QString() << (quint32)123;
#if defined(Q_CC_MINGW) && !defined(__MINGW64__) // 32-bit MinGW has a persistent rounding error.
QTest::addRow("1.23K") << QStringLiteral("1.23K") << QString() << (quint32)1229;
QTest::addRow("1.23M") << QStringLiteral("1.23M") << QString() << (quint32)1229999;
#else
QTest::addRow("1.23K") << QStringLiteral("1.23K") << QString() << (quint32)1230;
QTest::addRow("1.23M") << QStringLiteral("1.23M") << QString() << (quint32)1230000;
#endif

// Invalid numbers return 0.
QTest::addRow("xxx") << QStringLiteral("xxx") << QString() << (quint32)0;
Expand Down

0 comments on commit 44106ac

Please sign in to comment.