Skip to content

Add support for building msi for ARM64 Windows - #1130

Closed
Watson1978 wants to merge 5 commits into
fluent:masterfrom
Watson1978:windows-arm64-msi
Closed

Watson1978 wants to merge 5 commits into
fluent:masterfrom
Watson1978:windows-arm64-msi

Conversation

@Watson1978

Copy link
Copy Markdown
Contributor

Fluentd now works on Windows 11 on Arm, so this builds an ARM64 msi in a new "Windows (ARM64)" workflow and runs the same package size check and installation tests as x86_64. Windows container images are amd64 only, so the msi is built and tested directly on the windows-11-arm runner with WiX 3.14.1. Until an ARM64 msi is released, the package size check compares it with the previous x86_64 msi.

Some gems need changes for ARM64. winevt_c is updated to 0.11.6 because 0.11.2 doesn't compile with clang. nokogiri is no longer bundled, because its packaged libxml2 can't be built on ARM64 (sparklemotion/nokogiri#3470) and fluent-plugin-parser-winevt_xml 0.3.1 falls back to REXML. This also applies to x86_64. ffi is replaced with 1.17.4 on ARM64 only, because ffi 1.17.0 segfaults when registering the service and ffi-win32-extensions 1.1.0 doesn't allow newer ffi (chef/ffi-win32-extensions#14).

🤖 Generated with Claude Code

Watson1978 and others added 5 commits October 17, 2026 06:07
Fluentd now works on Windows 11 on Arm, so build an ARM64 msi as well.
The windows-11-arm runner has no Docker, so the msi is built directly
on the runner with WiX 3.14.1, which supports arm64.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Shizuo Fujita <fujita@clear-code.com>
winevt_c 0.11.2 fails to compile with clang on ARM64 Windows because
winevt_utils.cpp uses std::back_inserter without including <iterator>.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Shizuo Fujita <fujita@clear-code.com>
ffi 1.17.0 segfaults on ARM64 Windows, so registering the service
fails and the msi installation is rolled back. ffi-win32-extensions
1.1.0 doesn't allow newer ffi, so relax its dependency after
installing ffi 1.17.4. See chef/ffi-win32-extensions#14.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Shizuo Fujita <fujita@clear-code.com>
fluent-plugin-parser-winevt_xml 0.3.1 falls back to REXML when nokogiri
isn't installed, and it was the only gem that needed nokogiri. nokogiri
also can't build its packaged libxml2 on ARM64 Windows. See
sparklemotion/nokogiri#3470.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Shizuo Fujita <fujita@clear-code.com>
The test scripts are the same as x86_64. They run directly on the
runner because the windows-11-arm runner has no Docker. serverspec
expects the replaced ffi on ARM64.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Shizuo Fujita <fujita@clear-code.com>
@Watson1978

Copy link
Copy Markdown
Contributor Author

Superseded by #1132, which targets release-v610 for 6.1.0.

@Watson1978 Watson1978 closed this Oct 19, 2026
@Watson1978
Watson1978 deleted the windows-arm64-msi branch October 19, 2026 06:20
kenhys pushed a commit that referenced this pull request Oct 20, 2026
Resolve #774

Fluentd now works on Windows 11 on Arm, so this builds an ARM64 msi for
6.1.0 in a new "Windows (ARM64)" workflow and runs the same package size
check and installation tests as x86_64. Windows container images are
amd64 only, so the msi is built and tested directly on the
windows-11-arm runner with WiX 3.14.1. Until an ARM64 msi is released,
the package size check compares it with the previous x86_64 msi.

nokogiri is no longer bundled, because its packaged libxml2 can't be
built on ARM64 (sparklemotion/nokogiri#3470). This also applies to
x86_64. The winevt_xml parser uses REXML instead, and
in_windows_eventlog2 checks bookmarks less strictly. The changelog tells
how to install nokogiri.

A new test loads every extension library after installing the msi
without MSYS2, so a missing bundled DLL is caught on both architectures.
MSYS2 on the windows-11-arm runner is hidden during the tests, because
RubyInstaller would load DLLs from it. The current tests pass even with
the x86_64 msi built from master, where winevt_c can't be loaded because
libgcc_s_seh-1.dll isn't bundled.

fluent-plugin-fluent-package-update-notifier is updated to 0.2.4, which
checks the arm64 msi instead of the x86_64 one on ARM64 Windows.

This is based on #1107 and supersedes #1130.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Signed-off-by: Shizuo Fujita <fujita@clear-code.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kenhys pushed a commit that referenced this pull request Oct 22, 2026
Resolve #774

Fluentd now works on Windows 11 on Arm, so this builds an ARM64 msi for
6.1.0 in a new "Windows (ARM64)" workflow and runs the same package size
check and installation tests as x86_64. Windows container images are
amd64 only, so the msi is built and tested directly on the
windows-11-arm runner with WiX 3.14.1. Until an ARM64 msi is released,
the package size check compares it with the previous x86_64 msi.

nokogiri is no longer bundled, because its packaged libxml2 can't be
built on ARM64 (sparklemotion/nokogiri#3470). This also applies to
x86_64. The winevt_xml parser uses REXML instead, and
in_windows_eventlog2 checks bookmarks less strictly. The changelog tells
how to install nokogiri.

A new test loads every extension library after installing the msi
without MSYS2, so a missing bundled DLL is caught on both architectures.
MSYS2 on the windows-11-arm runner is hidden during the tests, because
RubyInstaller would load DLLs from it. The current tests pass even with
the x86_64 msi built from master, where winevt_c can't be loaded because
libgcc_s_seh-1.dll isn't bundled.

fluent-plugin-fluent-package-update-notifier is updated to 0.2.4, which
checks the arm64 msi instead of the x86_64 one on ARM64 Windows.

This is based on #1107 and supersedes #1130.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Signed-off-by: Shizuo Fujita <fujita@clear-code.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant