feat: aarch64-mingw-ucrt support - #650
Conversation
|
Thanks for opening this PR. Until I figure out why CI is failing on windows, I'm hesitant to accept additional platforms. I'm hoping to get a chance to investigate those failures soon, but if you're able to help, please do! |
|
Sure thing bud, will see if I get it all green, wouldn't want it to be merged without it. 💚 I don't believe arm64 support is avail via ruby installer for 3.1/3.2/3.3. I know sqlite gems ship with a gem for each supported ruby ABI, would it be okay to have a platform with support for only one ABI (3.4) currently |
bfaa359 to
9475be2
Compare
|
Should be all green now 💚 https://github.com/YOU54F/sqlite3-ruby/actions/runs/19346654309
I think the rake-compiler-dock bump is the reason the existing CI failures on windows are resolved See PR: #647 |
9475be2 to
e9ce2b8
Compare
e9ce2b8 to
9ebed86
Compare
flavorjones
left a comment
There was a problem hiding this comment.
This looks really good! I just kicked off CI.
Note that I rebased this branch onto latest main.
| recipe.patch_files = Dir[File.join(package_root_dir, "patches", "*.patch")].sort | ||
| end | ||
|
|
||
| # Fix host triplet for Windows ARM64 (native or cross-compilation) |
There was a problem hiding this comment.
Is there an upstream fix pending for this? Is it already in a rubygems release (in which case could we instead pin the required version for this architecture)?
There was a problem hiding this comment.
good question! i need to check that. it is possible this is already corrected, or the change actually needs proposing. i haven’t dug too far as this was sufficient for my needs.
i’ll report back
Reported from Windows 11 ARM64 running 1.0.2: CONNECT_TIMEOUT after 30s, and with the server down `check_setup` could not run either, so every skill that reaches the knowledge base was dead with no diagnosis anywhere a reader would look. Two things are missing on that platform and neither is ours to fix. `sqlite3` publishes no `aarch64-mingw-ucrt` binary and cannot be compiled there — SQLite's own config.sub rejects the `aarch64-w64-windows-gnu` triplet — and sqlite-vec's only Windows loadable is x86_64. Adding the platform to the lockfile would change nothing: there is no gem to resolve. So the platform is checked before anything is attempted, by one predicate with two callers: boot.rb, so the server stops instead of spending the connection window failing to compile SQLite, and the SessionStart hook, because the hook's output is the only one a reader sees. The message names the way out rather than only the fact, and `NOTA_RUBY` makes that way out usable: an x64 Ruby under emulation, chosen for this plugin alone rather than pushed to the front of PATH. Two things found while reading that report. knowledge.db was being downloaded inside the 30s connection handshake, which is a timeout risk on any slow connection anywhere; it now arrives through the hook and through the first tool call, both of which have room. And a failed `bundle install` reported stderr's first line, which on that machine was a pacman permissions warning in Spanish rather than the build failure at the end. Windows ARM stays unsupported. The sqlite3 side has an open pull request that is stalled rather than absent (sparklemotion/sqlite3-ruby#650); the sqlite-vec side has no build and no attempt.
👋🏾
Would be nice to get a precompiled gem for
aarch64-mingw-ucrtnow that rake-compiler-dock has supporthttps://github.com/rake-compiler/rake-compiler-dock/releases/tag/v1.10.0
Similar to
sparklemotion/nokogiri#3530
There is an existing PR for the required version of rake-compiler-dock #647
cross compiled with the applied fix on a macos m4 machine, and successfully installed in a windows-11-arm github actions vm and locally running VM with utm/qemu
There are some test failures regarding support for earlier ruby versions. There is only windows on arm support for Ruby 3.4 provided as part of the rubyinstaller toolking.
PS. If there is a better way to solve this, feel free to close this down, or suggest another approach. This worked for me in trying to add
windows-11-armcoverage to some tooling which makes our ruby rack app, available via a github action on any supported actions runner, mainly for CI testing on platforms where docker isn't available.PPS. I assume
featisn't the right classification for this change!Cheers!