Repository navigation
ci(windows): Windows build in CI, and portable zips for x86_64 and aarch64 - #331
Merged
Merged
Conversation
…er.exe Without XKB_CONFIG_ROOT, libxkbcommon looks in the vcpkg prefix it was built in, so the server could not start anywhere else. An include path, not a set_var: libxkbcommon reads the variable with the CRT's getenv, which does not see SetEnvironmentVariableW. The root used is logged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"required Vulkan extension VK_KHR_surface is not available" was all a machine without a Vulkan driver got. Now the error says what the loader found (no loader, no driver, or the devices and their Vulkan versions) and points at lavapipe from mesa-dist-win as the fallback. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tools/windows/package.ps1 builds yserver-<version>-windows-<arch>.zip for x86_64 or aarch64: yserver.exe linked against vcpkg's static libraries on the DLL CRT (dumpbin-checked for non-system imports), the XKB data, a launcher that makes a cookie and starts rootless, a README, and the licenses of yserver, the C libraries and the Rust crates. tools/windows/build-xkb-data.sh builds the XKB data from the xkeyboard-config 2.48 release tarball, sha256-pinned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Linux job builds the XKB data once; a matrix over windows-latest and windows-11-arm installs the vcpkg ports (with a binary cache), runs clippy and uploads the zip. workflow_dispatch so a branch can run it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The xkbcommon crate's #[link] is dylib-kind, so its calls go through __imp_ pointers that vcpkg's static library does not define: 73 unresolved externals. A static -l in RUSTFLAGS overrides that kind. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
actions/cache saves at job end only when the job succeeds, so a failure after the vcpkg step threw away a 20-minute shaderc build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A cold vcpkg install built shaderc and, through the libxkbcommon port, libx11 and libxcb with autotools under MSYS2 for both the target and the host triplet; on ARM64 MSYS2 runs emulated and took over 85 minutes. glslc now comes from the pinned, sha256-checked Vulkan SDK installer, libxkbcommon from an overlay port without xkbcommon-x11, and the host triplet is the release-only target triplet. vcpkg-env.ps1 is now build-env.ps1. Cold vcpkg install on an x64 VM: 56 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…++ redistributable Rust builds with +crt-static (build-env.ps1's RUSTFLAGS) and the vcpkg libraries with the static-CRT x64/arm64 release triplets. The packaging check now refuses vcruntime140.dll and the api-ms-win-crt-* imports. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rootless is the default now, and --rootless would fix the mode and lock it in the Settings dialog. README.txt says where the mode is chosen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI now builds yserver on Windows, and produces portable zips for x86_64 and aarch64 (Windows on ARM).
yserver-<version>-windows-<arch>.zip, about 5 MB. Unzip it anywhere and runstart-yserver.cmd.%LOCALAPPDATA%\yserver\Xauthorityif there isn't one, then starts yserver. The mode comes from Settings.README.txtexplainsDISPLAYandXAUTHORITYfor WSL and remote machines, and the software-rendering fallback.xkb\, built from xkeyboard-config 2.48 with its checksum verified. yserver finds it next to the exe whenXKB_CONFIG_ROOTisn't set.VK_DRIVER_FILESas the software fallback.windowsjob onwindows-latestandwindows-11-armruns clippy, builds the zip and uploads it as an artifact. Both run in parallel with the existing jobs and finish before the BSD ones.glslccomes from the pinned, checksum-verified Vulkan SDK.ci.ymlcan now also be started by hand (workflow_dispatch). Releases build the zips through it but don't attach them yet.Verification:
glslcin under 2 minutes on x86_64 and about 4 on arm64.dumpbin /dependentson both zips' exes shows only system DLLs.start-yserver.cmdand uses the bundled XKB data.Refs #27
🤖 Generated with Claude Code