Skip to content

Conversation

@PazerOP
Copy link
Owner

@PazerOP PazerOP commented Dec 21, 2025

  • actions/checkout: v2.3.4 → v4
  • lukka/run-vcpkg: v7 → v11 (removed deprecated setupOnly parameter)
  • actions/upload-artifact: v2 → v4
  • seanmiddleditch/gha-setup-ninja: v3 → v5
  • ilammy/msvc-dev-cmd: v1.5.0 → v1

These updates fix deprecation warnings and should resolve the Windows build failure by using the latest stable action versions.

- actions/checkout: v2.3.4 → v4
- lukka/run-vcpkg: v7 → v11 (removed deprecated setupOnly parameter)
- actions/upload-artifact: v2 → v4
- seanmiddleditch/gha-setup-ninja: v3 → v5
- ilammy/msvc-dev-cmd: v1.5.0 → v1

These updates fix deprecation warnings and should resolve the Windows
build failure by using the latest stable action versions.
The http/client.cpp uses libcurl but it wasn't listed as a dependency.
This caused the Windows build with MH_STUFF_COMPILE_LIBRARY=true to fail.

- Add curl to vcpkg.json dependencies
- Add find_package(CURL) and link CURL::libcurl in CMakeLists.txt
The nuget CLI is not available on Linux GitHub runners, causing all
Linux builds to fail with exit code 127 (command not found).

run-vcpkg@v11 automatically uses GitHub Actions cache for binary
caching when VCPKG_BINARY_SOURCES is not set, which works on all
platforms without requiring additional setup.

- Remove VCPKG_BINARY_SOURCES and X_VCPKG_NUGET_ID_PREFIX env vars
- Remove PazerOP/gha-setup-nuget@HEAD step from Linux and Windows builds
The vcpkg fork (commit from June 2021) is incompatible with run-vcpkg@v11.
Removing the custom vcpkg URL/commit allows run-vcpkg to use the official
Microsoft vcpkg with latest updates.

The custom mh-cmake-common package is still available via vcpkg-registry
configured in vcpkg-configuration.json.
run-vcpkg@v11 requires vcpkgGitCommitId to know which version of vcpkg
to fetch. Without it, the action fails as there's no vcpkg submodule.

Using latest commit from official Microsoft vcpkg (2025-12-21).
The old LLVM repository URLs (apt.llvm.org/focal) are for Ubuntu 20.04.
ubuntu-latest is now Ubuntu 22.04+ where these repos don't work.

Using ubuntu-20.04 explicitly to ensure old compiler versions
(clang-7 through clang-11, g++-8 through g++-10) are available.
vcpkg needs a default registry baseline to resolve versions for
packages from the official registry (catch2, curl, fmt).

Using the same baseline as VCPKG_COMMIT in the workflow.
Replace outdated compiler matrix (clang-7 to clang-11, g++-8 to g++-10)
with modern compilers available on ubuntu-latest:
- g++-12, g++-13
- clang++-14, clang++-15

This eliminates the need for custom LLVM apt repos and ensures
runners are available (ubuntu-20.04 runners were not starting).
- format.hpp: Use fmt::runtime() for non-consteval format strings
- task.hpp: Add template keyword for dependent template name
- process.inl, dispatcher.inl: Fix not_implemented_error constructor calls
- process_manager.inl: Suppress nodiscard warning with (void) cast
- mutex_debug.hpp: Guard native_handle for MSVC compatibility
- native_handle.hpp: Guard unistd.h include with __unix__
- CMakeLists.txt: Add /utf-8 flag for MSVC builds
- CMakeLists.txt: Include CheckCXXCompilerFlag module before use
- fd_source.inl, fd_sink.inl: Guard Unix headers with __unix__
- dispatcher.inl: Remove unused winsock includes on Windows
- stack_info.inl, coroutine_task_test.cpp: Add WIN32_LEAN_AND_MEAN
- uint128.hpp: Fix bit_cast to use std::bit_cast when available
- text_filebuf_test.cpp: Guard tests with __unix__ (fmemopen is POSIX-only)
- coroutine_task_test.cpp: Suppress nodiscard warning for intentionally discarded task
- source.hpp, sink.hpp, fd_source.hpp, fd_sink.hpp: Guard with __unix__
- future.hpp: Add template keyword for dependent template names
- generator.hpp: Add #include <utility> for std::exchange
- nested_exception.hpp: Add #include <utility> for std::forward
- lazy.hpp: Add template keyword for dependent template emplace
- exception_details.inl: Add <utility> for std::exchange
- variant.hpp: Add <cstddef> for size_t
- charconv_helper.hpp: Add <cstdint> for uint8_t
- scope_exit.hpp: Add <utility> for std::forward
Required for uint8_t, uint16_t, and uint32_t types.
- Fix typo in getopt.hpp: uinstd.h -> unistd.h
- Use C++ header <cstring> instead of C header <string.h> in memstream.hpp
- Replace POSIX off_t with std::streamsize in memstream.hpp
The variable_pusher class was missing a semicolon after its closing brace,
causing syntax errors.
libc++ requires explicit includes for std::move and std::forward,
while libstdc++ may provide them transitively through other headers.
Add [[fallthrough]] attribute after std::rethrow_exception to silence
compiler warning about missing return/break.
libc++ requires explicit includes that libstdc++ provides transitively.
Added cstddef to all files using size_t.
- Set -stdlib=libc++ before CPMAddPackage to ensure Catch2 is built
  with the same stdlib as the main project on clang
- Add Catch::StringMaker<std::byte> specialization to fix Windows
  linker error when using CAPTURE with std::byte values
Catch2 v3.4.0 already provides StringMaker<std::byte> specialization.
Catch2 v3.4.0 declares StringMaker<std::byte> but doesn't implement it.
Use a helper function to convert std::byte to unsigned for CAPTURE.
Catch2 v3.4.0 declares but doesn't implement StringMaker<std::string_view>,
causing linker errors on MSVC. Add to_str() helper to convert string_view
to std::string before comparisons in REQUIRE/CHECK macros.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants