Windows x64 build (library only): add manual workflow#349
Conversation
|
@keeshux The Windows job added by this PR is passing on the upstream run. The current red check is from the pre-existing macOS I checked the workflow diff: this PR does not change the macOS test job, it only appends the new I don’t have permission to rerun the failed upstream job from my fork. Could you rerun the failed check when you have a moment? |
Sources/CMakeLists.txt applies a symmetric exclusion for the crypto vendor, but had no equivalent for wg-go. As a result, PP_BUILD_USE_WGGO=OFF still compiled PartoutWireGuardConnection_C/wireguard.c, which includes wg_go.h unavailable when wg-go is not built. Mirror the existing crypto filtering pattern. Signed-off-by: Jean-Baptiste Robert-Jardine <[email protected]>
2afc748 to
7b93248
Compare
|
@jbjardine First, I'm genuinely surprised by a PR about the Windows part of this library, thank you! Second, for similar reasons, I didn't have this on my current schedule, so I'll need more time to see where this might fit. All in all, this should be a manual workflow ( By the way, how far did you get with Partout on Windows? Have you experimented with something in particular, or do you have any goal in mind? I'm very curious now. Thanks again. Side note: better not to push force in order to track changes. The PR doesn't need to be perfect all along. |
Adds a manually triggered Windows x64 smoke build that verifies libpartout.lib and libpartout_c.lib are produced. Vendors OpenSSL, MbedTLS and wg-go are intentionally disabled for this first Windows build step because each has independent toolchain issues to address separately. The workflow is manual-only to avoid spending CI minutes on Windows builds unless a maintainer explicitly requests it. It uses clang-cl from the Swift toolchain, MSVC link.exe/lib.exe via VsDevCmd.bat, SDKROOT from the Swift install, and CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY. Signed-off-by: Jean-Baptiste Robert-Jardine <[email protected]>
7b93248 to
3df8036
Compare
|
@keeshux I adjusted the PR to match that constraint: the Windows build is now a separate manual So this no longer spends Windows CI minutes on every PR. The fork PR now only runs the existing SwiftPM tests automatically, and that check is green. I could not trigger the new manual workflow from the PR branch because GitHub only exposes new Noted on force-pushes. I was trying to keep the branch tidy while the CI shape was still moving, but I’ll use normal follow-up commits from here. On the Windows status: my goal is mostly personal R&D / community help, low pressure. I’m exploring what it would take to use Partout from a Windows app, with the longer-term idea of understanding whether a Passepartout-like client could eventually be brought to Windows too. I started by trying to reproduce the Windows build on a fresh toolchain over the weekend. I got as far as a minimal library-only Windows x64 build producing both The working configuration is intentionally small:
I have not reached a full Windows build with vendors or This PR fixes the smallest independent issue I found: the missing CMake filter when wg-go is disabled. Happy to help on follow-ups if it makes sense for you, but no pressure from my side. |
|
FYI, Passepartout already builds on Windows. Everything is set up to even connect to a VPN, the data and the events are properly bound, but the UI part is missing. The wx app only shows a blank window at the moment on Linux and Windows. But you are right, the tooling for building the vendors is the real nightmare. I'll follow up on this after I get a beta for Android. |
|
@keeshux That’s very useful context, I didn’t realize Passepartout was already that far on Windows. I’ll keep this PR scoped to the small CMake/workflow cleanup then. No pressure on timing from my side, Android beta sounds like the right priority. When/if you revisit Windows later, I’d be happy to help with the vendor/tooling part first. From my weekend testing, that also looked like the main reproducibility pain point. |
Constrain OpenVPN support to a crypto vendor. Addresses the CMake issue in #349 thoroughly.
Adds a Windows x64 build for the Partout library to catch regressions in the C/Swift core. This first iteration keeps OpenSSL, MbedTLS and wg-go disabled so the core library build can land independently from vendor toolchain follow-ups.
Changes
Sources/CMakeLists.txtexcludesPartoutWireGuardConnection_C/whenPP_BUILD_USE_WGGO=OFF, mirroring the existing crypto vendor filtering. Without this, the WGGO-disabled build still compileswireguard.c, which includeswg_go.hunavailable when wg-go is not built..github/workflows/test.ymladds a Windows x64 library-only build job that verifieslibpartout.libandlibpartout_c.libare produced.Build configuration
compnerd/gha-setup-swift.clang-clfrom the Swift toolchain as C/C++ compiler, since the C headers use Clang nullability annotations.link.exe/lib.exeviailammy/msvc-dev-cmd.SDKROOTresolved from the Swift installation when the environment does not already provide a valid value.swift -print-target-info.CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARYto avoid fragile executable try-link/resource steps.Validation
Run SwiftPM tests: passWindows x64 build (library): passbin\windows-amd64\partout\libpartout.libbin\windows-amd64\partout\libpartout_c.libNot in this PR
swift teston Windows.