wine-gohryt-wayland-wow64
maintainer Gohryt
· 0 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package builds from a forked Git repository on a project-owned GitLab instance (gitlab.winehq.org), which is a legitimate development practice; the source is not a prebuilt binary, and the worst case of a compromised source would be code execution within the Wine build, not remote arbitrary code execution.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package builds from a forked Git repository on a project-owned GitLab instance (gitlab.winehq.org), which is a legitimate development practice; the source is not a prebuilt binary, and the worst case of a compromised source would be code execution within the Wine build, not remote arbitrary code execution.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:116
source=(git+https://gitlab.winehq.org/gohryt/wine.git#branch=wayland-wow64 -
PKGBUILD:117
https://dl.winehq.org/wine/wine-mono/$_monover/wine-mono-$_monover-x86.tar.xz
PKGBUILD
2 offending line(s) highlighted
1
# Maintainer: gohryt
2
# Based on the official Arch Linux wine package by Peter Jung <ptr1337@archlinux.org>
3
#
4
# Pure WoW64 build (no lib32/multilib), Wayland-only (no X11 driver),
5
# NTSYNC (auto-enabled via linux/ntsync.h from linux-api-headers >= 6.14),
6
# GStreamer media support.
7
#
8
# Source is our Wine fork (gitlab.winehq.org/gohryt/wine), branch wayland-wow64,
9
# which carries the custom Wayland/Vulkan feature commits (described below) on
10
# top of upstream Wine. To pin a commit instead of tracking the branch tip,
11
# replace #branch=wayland-wow64 with #commit=<sha> in source().
12
#
13
# LTO is enabled for the native ELF side (the official Arch package uses !lto,
14
# so revert to that if anything misbehaves at runtime). The PE side is built
15
# without LTO. mold links the ELF side; Wine 11 builds the preloader as
16
# -static-pie, so mold's missing -Ttext-segment support is no longer an issue.
17
#
18
# The preloader and ntdll.so are compiled with -fno-lto: their hand-written
19
# asm (_start, __wine_syscall_dispatcher) references C symbols by name, which
20
# LTO would otherwise discard, breaking the link with undefined references.
21
#
22
# Feature commits carried on the branch (in apply order):
23
#
24
# - Client-side WSI presenting cross-process Vulkan frames: swapchain images are
25
# allocated as DMABUFs, exported, and duplicated into the GDI/Steam process to
26
# present on Wayland. Integrates GPU-compositor synchronization via sync_file
27
# (SYNC_FD semaphores) to prevent flickering/black frames during scrolls/resizes.
28
# - Cross-process and GL/VK-obscured child window rendering (WineHQ bug #56014):
29
# required for CEF applications (Steam, Battle.net, ...) to display their UI.
30
# Includes bottom-up restacking of subsurfaces to match Win32 Z-order (resolving
31
# flickering of store/library content), and healing orphaned subsurfaces.
32
# - Live tracking of compositor text-input (IME): zwp_text_input_v3 is only
33
# enabled when an input context is associated (ImmAssociateContext), preventing
34
# gameplay keys from getting swallowed after chat interactions.
35
# - System tray icons via the StatusNotifierItem D-Bus protocol instead of the
36
# floating tray window (needs an SNI host: KDE natively, GNOME via the
37
# AppIndicator extension; WINEWAYLAND_NO_SNI=1 reverts to the floating window).
38
# Requires libdbus at configure time, hence dbus in makedepends.
39
# - 16bpp cursor fix for Source 2 games (Dota 2): color cursors that GetDIBits
40
# cannot convert to 32bpp fall back to a GDI DIB blit. Also fixes 16bpp icons.
41
# - Windows implicit Vulkan layer loading from the registry (Steam overlay:
42
# Shift+Tab in Vulkan/DXVK games works). On by default, disable with
43
# WINE_VK_LAYERS=0.
44
# - Monitor EDID synthesis so games can identify the output (UE titles like
45
# Gothic 1 Remake otherwise see no display/resolution list and fall back to
46
# borderless native).
47
# - Per-window surface scale derived from the real compositor output scale
48
# (physical mode size / xdg_output logical size) instead of Wine's DPI. Fixes
49
# HiDPI / fractional / mixed-DPI window mis-sizing (off-screen or black-border
50
# fullscreen) and mouse-offset; also stretches a non-native exclusive
51
# fullscreen surface to fill the output.
52
# - Per-process emulated display modes: a game changing the resolution only
53
# affects itself (Windows "fullscreen optimizations" semantics) instead of
54
# zooming every other window in the prefix; EmulateModeset restores the old
55
# global behaviour. Also runs inside gamescope's nested compositor: prefers
56
# GAMESCOPE_WAYLAND_DISPLAY, works without wl_subcompositor/wp_viewporter
57
# (GL/VK takes over the toplevel surface, gamescope scales buffers itself),
58
# so -w/-h game resolution is honoured.
59
pkgname=wine-gohryt-wayland-wow64
60
pkgver=11.14
61
pkgrel=1
62
_monover=11.2.0 # must match MONO_VERSION in dlls/appwiz.cpl/addons.c
63
_geckover=2.47.4 # must match GECKO_VERSION in dlls/appwiz.cpl/addons.c
64
pkgdesc="Compatibility layer for running Windows programs. This is my custom build with special fixes for wayland, vulkan and wow64. No steam flickering, Unreal and Unity games are working properly without shaman dances."
65
url="https://www.winehq.org"
66
arch=(x86_64)
67
options=(lto !debug)
68
license=(LGPL-2.1-or-later)
69
provides=("wine=$pkgver" "wine-mono=$_monover" "wine-gecko=$_geckover")
70
conflicts=(wine wine-staging wine-mono wine-gecko)
71
72
depends=(
73
desktop-file-utils
74
fontconfig
75
freetype2
76
gettext
77
glib2
78
glibc
79
libgcc
80
libpcap
81
libunwind
82
libxkbcommon
83
systemd-libs
84
wayland
85
)
86
makedepends=(
87
alsa-lib
88
dbus
89
ffmpeg
90
git
91
gnutls
92
gst-plugins-base-libs
93
libpulse
94
mesa
95
mingw-w64-gcc
96
sdl2
97
vulkan-headers
98
vulkan-icd-loader
99
)
100
optdepends=(
101
'alsa-lib: ALSA audio driver'
102
'alsa-plugins: ALSA audio plugins'
103
'dbus: system tray icons (StatusNotifierItem)'
104
'ffmpeg: WMA decoding (winedmo)'
105
'gnutls: TLS/SSL support (strongly recommended)'
106
'gst-plugins-bad: extra media codecs'
107
'gst-plugins-base: media playback'
108
'gst-plugins-base-libs: GStreamer media support'
109
'gst-plugins-good: extra media codecs'
110
'gst-plugins-ugly: extra media codecs'
111
'libpulse: PulseAudio/PipeWire audio driver'
112
'sdl2: game controller support'
113
'vulkan-icd-loader: Vulkan support'
114
)
115
116
source=(git+https://gitlab.winehq.org/gohryt/wine.git#branch=wayland-wow64
117
https://dl.winehq.org/wine/wine-mono/$_monover/wine-mono-$_monover-x86.tar.xz
118
https://dl.winehq.org/wine/wine-gecko/$_geckover/wine-gecko-$_geckover-x86.tar.xz
119
https://dl.winehq.org/wine/wine-gecko/$_geckover/wine-gecko-$_geckover-x86_64.tar.xz
120
30-win32-aliases.conf
121
wine-binfmt.conf
122
ntsync.conf)
123
noextract=(wine-mono-$_monover-x86.tar.xz
124
wine-gecko-$_geckover-x86.tar.xz
125
wine-gecko-$_geckover-x86_64.tar.xz)
126
sha512sums=('SKIP'
127
'SKIP'
128
'SKIP'
129
'SKIP'
130
'SKIP'
131
'SKIP'
132
'SKIP')
133
134
install=wine.install
135
136
prepare() {
137
# The Wayland/Vulkan feature commits live in the fork branch (see source),
138
# so there is nothing to patch here; just set up the out-of-tree build dir.
139
rm -rf build
140
mkdir build
141
}
142
143
build() {
144
# ccache for the MinGW cross compilers (the native side is handled by
145
# makepkg's ccache BUILDENV option, see ~/.config/pacman/makepkg.conf)
146
if command -v ccache > /dev/null; then
147
local _cc
148
mkdir -p "$srcdir/ccache-cross"
149
for _cc in x86_64-w64-mingw32-gcc i686-w64-mingw32-gcc \
150
x86_64-w64-mingw32-g++ i686-w64-mingw32-g++; do
151
printf '#!/bin/sh\nexec ccache /usr/bin/%s "$@"\n' "$_cc" > "$srcdir/ccache-cross/$_cc"
152
chmod +x "$srcdir/ccache-cross/$_cc"
153
done
154
export PATH="$srcdir/ccache-cross:$PATH"
155
fi
156
157
# Link the native ELF side with mold (PE side keeps mingw ld)
158
export LDFLAGS+=" -fuse-ld=mold"
159
160
# Flags for the MinGW cross-compiled PE parts (no LTO, no mold here)
161
export CROSSCFLAGS="-O2 -pipe"
162
export CROSSCXXFLAGS="-O2 -pipe"
163
export CROSSLDFLAGS="-Wl,-O1"
164
165
cd "$srcdir/build"
166
../wine/configure \
167
--prefix=/usr \
168
--libdir=/usr/lib \
169
--disable-tests \
170
--enable-archs=x86_64,i386 \
171
--enable-build-id \
172
--without-x \
173
--with-wayland \
174
--with-gstreamer \
175
--with-ffmpeg
176
177
# Build the preloader and ntdll.so without LTO first (see header comment),
178
# then everything else; make skips the already-built objects.
179
make -j"$(nproc)" CFLAGS="$CFLAGS -fno-lto" \
180
loader/preloader.o loader/preloader_mac.o dlls/ntdll/ntdll.so
181
make -j"$(nproc)"
182
}
183
184
package() {
185
cd "$srcdir/build"
186
make -j"$(nproc)" \
187
prefix="$pkgdir/usr" \
188
libdir="$pkgdir/usr/lib" \
189
dlldir="$pkgdir/usr/lib/wine" install
190
191
# Font aliasing settings for Win32 applications
192
install -d "$pkgdir"/usr/share/fontconfig/conf.{avail,default}
193
install -m644 "$srcdir/30-win32-aliases.conf" "$pkgdir/usr/share/fontconfig/conf.avail"
194
ln -s ../conf.avail/30-win32-aliases.conf "$pkgdir/usr/share/fontconfig/conf.default/30-win32-aliases.conf"
195
install -Dm644 "$srcdir/wine-binfmt.conf" "$pkgdir/usr/lib/binfmt.d/wine.conf"
196
197
# Load the ntsync kernel module at boot
198
install -Dm644 "$srcdir/ntsync.conf" "$pkgdir/usr/lib/modules-load.d/10-ntsync.conf"
199
200
# Bundle wine-mono and wine-gecko: new prefixes pick these up from
201
# /usr/share/wine/{mono,gecko} offline, shared across all prefixes
202
install -d "$pkgdir/usr/share/wine/mono" "$pkgdir/usr/share/wine/gecko"
203
tar xf "$srcdir/wine-mono-$_monover-x86.tar.xz" -C "$pkgdir/usr/share/wine/mono"
204
tar xf "$srcdir/wine-gecko-$_geckover-x86.tar.xz" -C "$pkgdir/usr/share/wine/gecko"
205
tar xf "$srcdir/wine-gecko-$_geckover-x86_64.tar.xz" -C "$pkgdir/usr/share/wine/gecko"
206
}
207
Changes since previous scan
--- PKGBUILD @ 2026-07-26 00:07+++ PKGBUILD @ 2026-08-03 00:08@@ -57,8 +57,8 @@ # (GL/VK takes over the toplevel surface, gamescope scales buffers itself), # so -w/-h game resolution is honoured. pkgname=wine-gohryt-wayland-wow64-pkgver=11.13-pkgrel=6+pkgver=11.14+pkgrel=1 _monover=11.2.0 # must match MONO_VERSION in dlls/appwiz.cpl/addons.c _geckover=2.47.4 # must match GECKO_VERSION in dlls/appwiz.cpl/addons.c pkgdesc="Compatibility layer for running Windows programs. This is my custom build with special fixes for wayland, vulkan and wow64. No steam flickering, Unreal and Unity games are working properly without shaman dances."Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 11:32:17 | MEDIUM | 1 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 03:18:55 | MEDIUM | 1 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 21:18:19 | MEDIUM | 1 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 13:14:10 | MEDIUM | 1 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |