Test Visual Studio 2026 and update dependencies#507
Conversation
97ffd50 to
dc37926
Compare
Move the primary Windows matrix to VS 2026 while retaining VS 2022 coverage, and update CMake and Conan dependencies to current supported releases. Force Boost and nlohmann_json across the Conan graph for outdated recipe pins, prefer BoostConfig for CMake 4.x, replace lukka/run-cmake with plain cmake, and bump remaining Actions toward Node 24. Signed-off-by: Gareth Sylvester-Bradley <garethsb@nvidia.com>
dc37926 to
04725b8
Compare
Boost 1.87 removed deprecated Asio APIs still required by unpatched websocketpp 0.8.2 and by nmos-cpp's own Asio usage, so Conan builds of cpprestsdk against 1.91 fail. Signed-off-by: Gareth Sylvester-Bradley <garethsb@nvidia.com>
compiler.version=194 maps to Visual Studio 17, which is absent on windows-2025; set tools.microsoft.msbuild:vs_version=18 so source builds (e.g. json-schema-validator) use the installed VS 2026. Signed-off-by: Gareth Sylvester-Bradley <garethsb@nvidia.com>
cbc9cb6 to
3368786
Compare
Use Boost.Filesystem when VS 2026 builds below C++17, while retaining std::filesystem for C++17 and adding a targeted CI job for that path. Signed-off-by: Gareth Sylvester-Bradley <garethsb@nvidia.com>
3368786 to
63897a3
Compare
|
@lo-simon, @jonathan-r-thorpe, @aholzinger ... so I think there's an approach here to support VS 2026 and update deps (if we're happy with Boost 1.86.0) ... thoughts? |
|
@garethsb Boost 1.86 does only help for current VS 2022 due to BoostDetectToolset.cmake:
In Boost 1.85 it does still look like this (1940 is too small for current VS 2022):
Regarding VS 2026, please note that there is no "vc145" in the above. VS 2026 is supported only since Boost 1.91:
|
Hm, seems to be building and passing tests here though? What am I missing? |
|
@garethsb It builds, but doesn't specialize for the toolset and emits this message (always BoostDetectToolset.cmake):
|
|
I don't think that affects correctness, does it? Moving all of nmos-cpp, cpprestsdk and websocketpp past Boost 1.86.0 would be a bit of a headache? (Not the code changes, but using forked repos and getting those approved into Conan Center recipes, for example.) |
|
Well, I'm not a Boost build expert, but I wouldn't use Boost with an unsupported toolset in a system critical application (without prior having checked all the inplications, ergo becoming a Boost build expert). For the time being I can live with VS 2022. So for the moment I suggest to stick with Boost 1.86 (meaning not officially support VS 2026), but for the long term (Boost 1.86 is already two years old) the cpprestsdk issue has to be resolved anyhow, which is the way bigger issue. If a replacement is found I guess the changes in nmos-cpp regarding updated Boost Asio in newer Boost versions will be the smalles part. |
True... That's #187. Our (@lo-simon, @jonathan-r-thorpe) feeling until recently has been that we would maintain a feature-frozen fork of cpprestsdk if that became necessary, because we don't need new features for nmos-cpp, just platform/build/security updates. However, with 🤖 support it might now be practical to switch nmos-cpp to other async-task, JSON and HTTP/WebSocket libraries, though I suspect not without a lot of pain for application developers who have directly integrated nmos-cpp (rather than using one of the API wrappers like NVIDIA/nvnmos's C API or gRPC daemon or GStreamer plugin). |
|
Well with Mythos you can probably fix the biggest part of any still unknown issues in cpprestsdk :-) I was able to build nmos-cpp (without Conan) on a freshly installed Ubuntu based 26.04 LTS due to the fact that there was still Boost 1.83 available in the Ubuntu 26.04 repos. Once Boost 1.83 isn't in available anymore in the next LTS it will be less easy. At least then it would be nice to have nmos-cpp2 relying on current libs (at least Boost). Obviously any changes in nmos-cpp will also hit myself then :-) Thank you for considering Boost 1.86 for the moment. |
Move the primary Windows matrix to VS 2026 while retaining VS 2022 coverage, and update CMake and Conan dependencies to current supported releases.