Repository navigation
feat(release): publish a Windows x86_64 .zip - #290
Conversation
Signed-off-by: Virgile Pourchet <222121099+Virgile-pct@users.noreply.github.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
|
Thanks @Virgile-pct, the Windows packaging reads right to me: the matrix entry, the One blocker from CI: |
Signed-off-by: Virgile Pourchet <222121099+Virgile-pct@users.noreply.github.com>
|
Thanks, fixed in b27e895: the zip is now Info-ZIP |
Closes #288.
Original problem
Releases publish macOS arm64 and Linux x86_64/arm64 archives only, so
mesh-llm plugins install capsules(and therecommendedset in Mesh-LLM/mesh-llm#2978) finds nothing to install on Windows. The plugin itself already builds and passes its chain store, import and lock tests onwindows-2025in CI (rust-windows).Fix
release.yml: anx86_64-pc-windows-msvcbuild onwindows-2025. The path remapping uses%USERPROFILE%there, since rustc sees Windows paths and Git Bash's$HOMEis a/c/...path; the "no build-machine paths" check looks for the same prefixes withgrep -a(Git for Windows ships nostrings). The package job packages four targets,SHA256SUMScovers the.zip, and the attestation and release upload include it.scripts/package.sh: the Windows target shipscapsules-<version>-x86_64-pc-windows-msvc.zipwithcapsules/capsules.exe, the archive mesh-llm resolves for a windows target (ArchiveExt::Zipinmesh-llm-plugin-manager/src/target.rs). Unix targets are unchanged.min_host_versionis read back out of the.ziplike out of the.tar.gz..zipis the counterpart of the tar flags, so it stays byte-for-byte reproducible: Info-ZIPzip -X -D -9over the sorted file list, every mtimeSOURCE_DATE_EPOCH(raised to 1980-01-01, the earliest a zip can hold) andTZ=UTC, since zip stores local time.unzip -preadsplugin.tomlback. zip and unzip are on the Ubuntu runner images.ci.yml: the reproducibility job also packages the Windows target twice and compares the two.zipfiles.Validation
On Windows 11 (a laptop), at this branch:
cargo build --locked --release --bin capsulesbuilds, and the executable's--print-package-manifestequalsplugin.package.json..zipof that executable, laid out aspackage.shstages it (the web UI bundle replaced by a stand-in file, no pnpm here), installs withmesh-llm plugins install --archive capsules-0.1.18-x86_64-pc-windows-msvc.zip --name capsules --version 0.1.18(mesh-llm 0.78.0, plugin directory isolated withMESH_LLM_PLUGIN_DIR), andplugins listshows it enabled withcapsules\capsules.exeas its command.release.yml(%USERPROFILE%, the checkout path) leaves 0 matches of either prefix in the executable, against 1171 without it;grepthen exits 1, so the check step passes.sh -npasses onpackage.sh, and both workflows parse as YAML.Not run here: the release workflow itself (it runs on a tag) and
package.shend to end (no jq, GNU tar or zip on this machine); thepackage (reproducible)CI job runs the.zippath twice on Linux and compares the two archives.