Skip to content

[Xorg_xkeyboard_config] Build per-platform to fix Windows install#13680

Merged
maleadt merged 1 commit into
JuliaPackaging:masterfrom
bauglir:jk/xorg-xkeyboard-config-fix-windows-symlinks
May 18, 2026
Merged

[Xorg_xkeyboard_config] Build per-platform to fix Windows install#13680
maleadt merged 1 commit into
JuliaPackaging:masterfrom
bauglir:jk/xorg-xkeyboard-config-fix-windows-symlinks

Conversation

@bauglir
Copy link
Copy Markdown
Contributor

@bauglir bauglir commented May 8, 2026

Starting with 2.47, the upstream xkeyboard-config ninja install step creates symlinks at:

  • share/X11/xkb
  • share/pkgconfig/xkeyboard-config.pc
  • share/man/man7/xkeyboard-config.7

where 2.44's install did not. With the recipe set to [AnyPlatform()], those symlinks end up in the universal Xorg_xkeyboard_config.v2.47.0.any.tar.gz and prevent extraction on Windows for users who don't hold SeCreateSymbolicLinkPrivilege (developer mode off, non-elevated shell — the default for end users).

Verified directly:

Artifact Version Symlinks
051bcd87a956c48ab829b7da04a56222c10f0a47 v2.47.0+0 3
23d821271a00e164eb2b5c273985da44f9a831a1 v2.44.0+0 0

Switching to supported_platforms() matches the precedent in iso_codes (#7926, refined in #10894) and adwaita_icon_theme (#7930): BinaryBuilder's per-platform packaging materialises the symlinks as copies on Windows, while the contents remain identical across platforms. The recipe comment is reused verbatim from the iso_codes 4.17 PR for consistency.

The artifact is data-only (no native code), so per-platform builds are straightforward.

Disclaimer: investigated and generated by Claude. Surfaced in a private repository.

Starting with 2.47 the upstream `ninja install` creates symlinks
(`share/X11/xkb`, `share/pkgconfig/xkeyboard-config.pc`, and
`share/man/man7/xkeyboard-config.7`) where 2.44 had none. With the
recipe set to `[AnyPlatform()]` these symlinks end up in the
universal `Xorg_xkeyboard_config.v2.47.0.any.tar.gz` and prevent
extraction on Windows for users without `SeCreateSymbolicLinkPrivilege`
(developer mode off, non-elevated shell — the default for end users).

Verified: artifact `051bcd87a956c48ab829b7da04a56222c10f0a47`
(`v2.47.0+0`) contains the three symlinks above; artifact
`23d821271a00e164eb2b5c273985da44f9a831a1` (`v2.44.0+0`) contains
zero.

Switching to `supported_platforms()` matches the precedent in
`iso_codes` (JuliaPackaging#7926, refined in JuliaPackaging#10894) and `adwaita_icon_theme`
(JuliaPackaging#7930): BinaryBuilder's per-platform packaging materialises the
symlinks as copies in the Windows tarball, while the contents
remain identical across platforms.
@bauglir bauglir marked this pull request as ready for review May 8, 2026 09:42
Copy link
Copy Markdown
Member

@maleadt maleadt left a comment

Choose a reason for hiding this comment

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

LGTM. cc @eschnett who did the last bump here.

@giordano Should we run the symlink removal for AnyPlatform builds?

@maleadt
Copy link
Copy Markdown
Member

maleadt commented May 18, 2026

Looks like JuliaPackaging/BinaryBuilder.jl#1430 is stuck on CI issues, so let's go ahead with this version already.

@maleadt maleadt merged commit 5df1da2 into JuliaPackaging:master May 18, 2026
21 checks passed
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.

2 participants