Skip to content

Add Windows on Arm (arm64) CI: build + regression-test the driver, ...#196

Open
jraiford1 wants to merge 2 commits into
postgresql-interfaces:mainfrom
LWOpenSource:main
Open

Add Windows on Arm (arm64) CI: build + regression-test the driver, ...#196
jraiford1 wants to merge 2 commits into
postgresql-interfaces:mainfrom
LWOpenSource:main

Conversation

@jraiford1

Copy link
Copy Markdown

MSM and MSI natively on windows-11-arm, with libpq and OpenSSL built from source

…M and MSI natively on windows-11-arm, with libpq and OpenSSL built from source
@jraiford1

Copy link
Copy Markdown
Author

Hi. This PR adds Windows on Arm (arm64) support. I've extended the Windows CI action to also compile and regression-test the driver natively on arm64, and it builds the arm64 installers (MSM/MSI) alongside the existing x86/x64 ones. I've also updated the release action to require the arm build to pass. I believe I have matched the style and organization already being used. Please let me know if you require any changes.

By the way, mimalloc isn't available for arm64 the same way it is for x86/x64: its vs2022 project (which winbuild uses) has no ARM64 platform configuration — see microsoft/mimalloc#941. Only mimalloc's CMake build supports arm64, which would diverge from the x86/x64 winbuild scripts, so I've left mimalloc out of the arm64 build for now. Happy to add it via CMake as a follow-up if you'd prefer.

@Sir-J-AU

Copy link
Copy Markdown

In case no one else makes the time to say it, you’re a legend :)

@davecramer

Copy link
Copy Markdown
Contributor

FYI, there is a download for OpenSSL on Arm https://slproweb.com/download/Win64ARMOpenSSL-3_5_7.exe alternatively, we could add a build for it in the project and just pull from there instead of building it every time

@jraiford1

Copy link
Copy Markdown
Author

Sure, no problem. I'll update it to pull from there.

@jraiford1

Copy link
Copy Markdown
Author

Done. The arm64 job now pulls the prebuilt Win64ARM OpenSSL from slproweb (silent install, cached) instead of building from source. This matches the same pattern used by the x86/x64 jobs. I also brought the rest of the arm64 section in line with x64 (cache-key components, step ids, MSVC-setup placement), so they're easier to compare now.

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