Open
Conversation
Enable MSVC multi-process compilation (-MP) and cmake --parallel to significantly reduce Appveyor build times. Changes: - Add -DCMAKE_CXX_FLAGS="-MP" to enable parallel compilation within each MSBuild target (~80 files in copyq-common benefit most) - Add --parallel to cmake --build for project-level parallelism - Add --parallel to dependency builds in kf_build.sh - Parallelize independent dependency builds in before_build.sh using background processes grouped by dependency order: Group A (concurrent): qca, qtkeychain, snoretoast, extra-cmake-modules Group B (after ECM): kconfig, kwindowsystem Group C (after B): knotifications, kstatusnotifieritem Expected build_script phase reduction: ~19.5 min to ~6-8 min. Assisted-by: Claude (Anthropic)
Cache Homebrew bottle downloads and KDE framework Cellar entries to avoid redundant network I/O and source compilation on every CI run. Changes to .github/workflows/build-macos.yml: - Add Homebrew downloads cache step with restore-keys for broad reuse - Add KDE frameworks cache step (Cellar entries), keyed on formula hashes - Increase ccache max-size from 500M to 1G for headroom Changes to utils/github/install-macos.sh: - Remove full Homebrew reinstall from scratch (runner already has it) - Remove pointless cmake uninstall (same version gets reinstalled) - On KDE cache hit: re-link packages instead of rebuilding from source - On cache miss: build from source as before Expected install step reduction: ~9 min to ~2 min on cache hit. Assisted-by: Claude (Anthropic)
6333137 to
7f89550
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3466 +/- ##
==========================================
+ Coverage 80.28% 80.34% +0.05%
==========================================
Files 243 243
Lines 30614 30614
==========================================
+ Hits 24578 24596 +18
+ Misses 6036 6018 -18 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
c898b2e to
fd1a65f
Compare
Add PCH for the copyq-common OBJECT library with the most commonly included Qt headers (QObject, QString, QWidget, QApplication, etc.). MSVC re-parses these heavy headers for every translation unit. PCH eliminates this redundant parsing, typically reducing MSVC compilation time by 30-50%. GCC/Clang also benefit but to a lesser degree. Assisted-by: Claude (Anthropic)
Skip 88 tests that exercise only platform-independent logic (scripting engine, data operations, config parsing, class tests, CLI basics, import/export) which are already fully covered by the Linux CI. The remaining 145 core tests cover Windows-specific behavior: clipboard, window focus, tray icon, shortcuts, dialogs, notifications, navigation, drag-and-drop, and encryption. Plugin tests run separately to cover plugin-specific Windows behavior. This reduces Windows test runtime from ~13 min to ~5 min. Assisted-by: Claude (Anthropic)
Move the SKIP_TESTS array from utils/appveyor/test.sh to a shared file utils/windows-test-skip-list.sh so both Appveyor and GitHub Actions test scripts can source it without duplication. Assisted-by: Claude (Anthropic)
Replace Appveyor's Visual Studio generator (2-core VM, ~31 min) with GitHub Actions using Ninja + MSVC (4-core runner). Expected improvement: build ~4-6 min (down from ~16 min) + tests ~5 min (down from ~13 min). Key changes: - CMakePresets.json: Add Windows preset (Ninja, sccache, Release) - build-windows.yml: Full CI pipeline with dependency caching - build-windows-deps.sh: KDE framework builder using Ninja - test-windows.sh: Test runner sourcing shared skip list Dependencies: - Qt 6.8.3 via jurplel/install-qt-action (cached) - OpenSSL 3.x via Chocolatey - MSVC via ilammy/msvc-dev-cmd - sccache for compilation caching - KDE frameworks built from source (cached by version) Note: Packaging (portable zip, InnoSetup installer, screenshots) not yet included. This commit establishes the build+test pipeline. Packaging can be added once the core pipeline is verified. Assisted-by: Claude (Anthropic)
Drop appveyor.yml and all utils/appveyor/ scripts. Windows CI is now handled by .github/workflows/build-windows.yml. Move KNotifications patch from utils/appveyor/patches/ to utils/patches/ (referenced by the GitHub Actions dep builder). Update docs to remove Appveyor references. Assisted-by: Claude (Anthropic)
fd1a65f to
662af32
Compare
- Add qt5compat module to install-qt-action (needed by KConfig) - Build CMAKE_PREFIX_PATH from QT_ROOT_DIR explicitly since install-qt-action may not set CMAKE_PREFIX_PATH - Set VCPKG_ROOT='' to prevent lukka/run-cmake from trying vcpkg environment setup (no vcpkg.json in this project) Assisted-by: Claude (Anthropic)
Chocolatey installs OpenSSL to 'C:\Program Files\OpenSSL', not 'C:\Program Files\OpenSSL-Win64'. Auto-detect the actual path so QCA can find OpenSSL and build the ossl plugin. Assisted-by: Claude (Anthropic)
The precompiled headers include Qt headers (QWidget, QApplication) which on MSVC pull in <windows.h>. The min/max macros from windows.h conflict with std::max, std::min, and std::numeric_limits<T>::min()/max(). Add NOMINMAX definition for WIN32 builds to prevent these macros from being defined. Assisted-by: Claude (Anthropic)
- Add NOMINMAX definition for Windows builds to prevent min/max macro
conflicts from windows.h (pulled in by precompiled Qt headers).
- Fix test step: use $GITHUB_WORKSPACE env var instead of
${{ github.workspace }} context expression, which produces
backslash-escaped Windows paths that Git Bash misinterprets.
Assisted-by: Claude (Anthropic)
Track exit codes for core and plugin tests separately. Remove set -e so both test stages run even if the first fails, and report which stage failed. This makes CI failures easier to diagnose. Assisted-by: Claude (Anthropic)
Precompiled headers break Clang builds (-Weverything on Qt system headers) and macOS builds (ccache+PCH incompatibility). Guard PCH with if(MSVC) since it was only intended for MSVC build speed. Remove the Windows test skip list and simplify test-windows.sh to run all tests without filtering. Assisted-by: Claude (Anthropic)
cc2b9e5 to
5cf3dd8
Compare
Git Bash (MSYS2) on Windows GHA runners does not reliably capture stdout from native Windows console applications. Switch the test step from bash to pwsh (PowerShell) which natively runs Windows executables and captures their output correctly. Remove the now-unused bash test script (utils/github/test-windows.sh) and inline the test invocation in the workflow. Assisted-by: Claude (Anthropic)
5cf3dd8 to
81615d2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Assisted-by: Claude (Anthropic)