Skip to content

Comments

fix: windows CI by adding cross-platform Makefile support (#3109)#7635

Open
swar09 wants to merge 16 commits intounicode-org:mainfrom
swar09:crossplatform-makefile
Open

fix: windows CI by adding cross-platform Makefile support (#3109)#7635
swar09 wants to merge 16 commits intounicode-org:mainfrom
swar09:crossplatform-makefile

Conversation

@swar09
Copy link
Contributor

@swar09 swar09 commented Feb 11, 2026

Fix Windows CI by adding cross-platform Makefile support

  • Add .exe extension detection for Windows binaries in Makefiles
  • Update CI workflow to run on Windows
  • Install harfbuzz dependencies for Windows using vcpkg
  • Fix file path separators and binary extensions in tools/make/tests.toml
  • Quote file paths properly to handle spaces in Windows paths

Fixes #3109

@swar09 swar09 requested review from a team, Manishearth and sffc as code owners February 11, 2026 13:54
@swar09
Copy link
Contributor Author

swar09 commented Feb 11, 2026

Screenshot 2026-02-11 191834

@swar09
Copy link
Contributor Author

swar09 commented Feb 11, 2026

image

@sffc
Copy link
Member

sffc commented Feb 11, 2026

Good work!

I noticed that "Install harfbuzz (Windows)" takes 7m 10s. Can we use a faster installation process for harfbuzz and/or cache the installation so that we don't need to wait for it on every PR moving forward?

Copy link
Member

@robertbastian robertbastian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's nice to get this working on windows, but I don't think we should spend CI resources on it

runs-on: ubuntu-latest
strategy:
matrix:
os: [ ubuntu-latest, windows-latest ]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the cost of an additional runner is worth it. the linux job is barely worth it, because we never touch the code that this tests

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I'm on the fence. wdyt about running it only on Windows? Then at least the job is covering something that most of the other jobs don't cover.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm also fine with having Windows makefile support for harfbuzz being best-effort: we don't CI it but we try to maintain it when people ask us to fix things.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having it in .github/workflows means that it remains reproducible, which is nice.

Wdyt about making it a trigger-only job (requires pressing a button in the Actions tab) that we run periodically such as when preparing a release (except we don't want to make releases harder)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wdyt about making it a trigger-only job (requires pressing a button in the Actions tab) that we run periodically such as when preparing a release (except we don't want to make releases harder)

then you might as well run it locally. all that the CI would test is that harfbuzz is installed correctly – this is not something we need to test because it's outside of ICU4X.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I still have a slight preference to enforce Windows client builds in CI (not just tests).

I don't care much about harfbuzz in particular as a CI thing; I would be happy if we built the cargo example crates without the harfbuzz one.

Copy link
Member

@robertbastian robertbastian Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

then lets run test-c on windows (we already run test-dart). keep in mind that windows CI takes 2x longer than ubuntu

@swar09
Copy link
Contributor Author

swar09 commented Feb 12, 2026

Thanks for the feedback! I see the concern about CI .

Would you prefer if I

  1. Keep only the Makefile changes for cross-platform compatibility
  2. Revert the CI workflow changes

@sffc
Copy link
Member

sffc commented Feb 12, 2026

Thanks for the feedback! I see the concern about CI .

Would you prefer if I

  1. Keep only the Makefile changes for cross-platform compatibility
  2. Revert the CI workflow changes

I don't think the maintainers have decided yet how we want to handle the CI, but if you want to split the Makefile changes into their own PR, I think that would be landable.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes Windows CI compatibility by adding cross-platform support to Makefiles and build scripts. It addresses issue #3109 where the test-cargo CI job was failing on Windows due to missing .exe extensions on binary names and incorrect path quoting. The changes enable the test-cargo workflow to run on both Ubuntu and Windows.

Changes:

  • Added Windows to the test-cargo CI job matrix and configured harfbuzz installation for both Linux (apt) and Windows (vcpkg)
  • Implemented binary extension detection in Makefiles using $(OS) environment variable check
  • Updated DuckScript test automation to detect Windows and apply .exe extension to binary references
  • Fixed file path quoting to properly handle spaces in Windows paths

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
.github/workflows/build-test.yml Adds Windows to test-cargo job matrix with platform-specific harfbuzz installation
tools/make/tests.toml Adds Windows detection and binary extension logic to DuckScript test task
examples/cargo/buffer/Makefile Adds binary extension detection and applies to all binary references and paths
examples/cargo/custom_compiled/Makefile Adds binary extension detection and applies to icu4x-datagen references

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@sffc
Copy link
Member

sffc commented Feb 14, 2026

@swar09 Please resolve conflicts with the main branch. Thanks.

swar09 and others added 2 commits February 14, 2026 06:41
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.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.

Make test-cargo CI run on Windows

4 participants