wine: version bump to 11.5

This commit is contained in:
suvari
2026-03-31 16:59:49 +03:00
parent 26e7b274e0
commit 7f5efa9ada
5 changed files with 391 additions and 16 deletions
+11 -11
View File
@@ -25,16 +25,16 @@ def setup():
# #
# More info can be obtained here: http://wiki.winehq.org/Wine64 # More info can be obtained here: http://wiki.winehq.org/Wine64
#shelltools.export("CPPFLAGS", "-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0") #shelltools.export("CPPFLAGS", "-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0")
#shelltools.system("make -C ./wine-staging-%s/patches DESTDIR=$(pwd) install" %get.srcVERSION()) #shelltools.system("make -C ./wine-staging-%s/patches DESTDIR=$(pwd) install" %get.srcVERSION())
#pisitools.flags.add("-fno-omit-frame-pointer") #pisitools.flags.add("-fno-omit-frame-pointer")
#shelltools.system("sed -i 's|OpenCL/opencl.h|CL/opencl.h|g' configure*") #shelltools.system("sed -i 's|OpenCL/opencl.h|CL/opencl.h|g' configure*")
autotools.autoreconf("-vif") autotools.autoreconf("-vif")
options = "--without-capi \ options = "--without-capi \
--without-oss \ --without-oss \
--without-opencl \ --without-opencl \
--without-gstreamer \ --disable-hal \
--without-hal \ --disable-tests \
--with-dbus \ --with-dbus \
--with-opengl \ --with-opengl \
--with-alsa \ --with-alsa \
@@ -43,17 +43,17 @@ def setup():
" "
if get.buildTYPE() == "emul32": if get.buildTYPE() == "emul32":
shelltools.export("PKG_CONFIG_PATH", "/usr/lib32/pkgconfig") shelltools.export("PKG_CONFIG_PATH", "/usr/lib32/pkgconfig")
shelltools.export("CC", "gcc -m32") shelltools.export("CC", "gcc")
shelltools.export("CXX", "g++ -m32") shelltools.export("CXX", "g++")
options += " --with-wine64=%s/work/wine-%s/build-wine \ options += " --with-wine64=%s/work/wine-%s/build-wine \
--libdir=/usr/lib \ --libdir=/usr/lib \
" % (get.pkgDIR(), get.srcVERSION()) " % (get.pkgDIR(), get.srcVERSION())
shelltools.system("mkdir build-wine-32") shelltools.system("mkdir build-wine-32")
shelltools.cd("build-wine-32") shelltools.cd("build-wine-32")
shelltools.system(". ../configure %s" %options) shelltools.system(". ../configure %s" %options)
elif get.ARCH() == "x86_64": elif get.ARCH() == "x86_64":
options += " --enable-win64 \ options += " --enable-win64 \
--libdir=/usr/lib \ --libdir=/usr/lib \
@@ -76,7 +76,7 @@ def build():
def install(): def install():
# We need especially specify libdir and dlldir prefixes. Otherwise the # We need especially specify libdir and dlldir prefixes. Otherwise the
# 32bit parts overwrite the 64bit files under /usr/lib # 32bit parts overwrite the 64bit files under /usr/lib
# shelltools.cd("build-wine") # shelltools.cd("build-wine")
if get.buildTYPE() == "emul32": if get.buildTYPE() == "emul32":
@@ -87,7 +87,7 @@ def install():
else: else:
shelltools.cd("build-wine") shelltools.cd("build-wine")
autotools.install("LDCONFIG=/bin/true UPDATE_DESKTOP_DATABASE=/bin/true prefix=%s/usr libdir=%s/usr/lib dlldir=%s/usr/lib/wine" % (get.installDIR(), get.installDIR(), get.installDIR())) autotools.install("LDCONFIG=/bin/true UPDATE_DESKTOP_DATABASE=/bin/true prefix=%s/usr libdir=%s/usr/lib dlldir=%s/usr/lib/wine" % (get.installDIR(), get.installDIR(), get.installDIR()))
shelltools.cd("..") shelltools.cd("..")
pisitools.dodoc("ANNOUNCE*", "AUTHORS", "COPYING.LIB", "LICENSE*", "README*", "documentation/README-*") pisitools.dodoc("ANNOUNCE*", "AUTHORS", "COPYING.LIB", "LICENSE*", "README*", "documentation/README-*")
@@ -0,0 +1,271 @@
From 2c628d0b8011bab4cb083c39474d20ac45c19848 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Tue, 14 Jul 2020 15:00:34 +0300
Subject: [PATCH] ntdll: Support x86_64 syscall emulation.
---
configure.ac | 1 +
dlls/ntdll/unix/signal_x86_64.c | 203 ++++++++++++++++++++++++++++++++
2 files changed, 204 insertions(+)
diff --git a/configure.ac b/configure.ac
index d0ea876891d..f55d0745a23 100644
--- a/configure.ac
+++ b/configure.ac
@@ -694,6 +694,7 @@ AC_CHECK_HEADERS(\
linux/memfd.h \
linux/ntsync.h \
linux/param.h \
+ linux/seccomp.h \
linux/serial.h \
linux/types.h \
linux/ucdrom.h \
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index 740df80341f..064af0015a4 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -27,6 +27,7 @@
#include "config.h"
#include <assert.h>
+#include <errno.h>
#include <pthread.h>
#include <signal.h>
#include <stdlib.h>
@@ -34,6 +35,8 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/mman.h>
+#include <sys/stat.h>
+#include <fcntl.h>
#include <unistd.h>
#ifdef HAVE_MACHINE_SYSARCH_H
# include <machine/sysarch.h>
@@ -73,6 +76,14 @@
extern void _thread_set_tsd_base(uint64_t);
#endif
+#if defined(HAVE_LINUX_FILTER_H) && defined(HAVE_LINUX_SECCOMP_H) && defined(HAVE_SYS_PRCTL_H)
+#define HAVE_SECCOMP 1
+# include <linux/filter.h>
+# include <linux/seccomp.h>
+# include <sys/prctl.h>
+# include <linux/audit.h>
+#endif
+
#include "ntstatus.h"
#include "windef.h"
#include "winternl.h"
@@ -2012,6 +2023,194 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
return 0;
}
+#ifdef HAVE_SECCOMP
+static void sigsys_handler( int signal, siginfo_t *siginfo, void *sigcontext )
+{
+ extern const void *__wine_syscall_dispatcher_prolog_end_ptr;
+ struct syscall_frame *frame = get_syscall_frame();
+ ucontext_t *ctx = sigcontext;
+
+ TRACE_(seh)("SIGSYS, rax %#llx, rip %#llx.\n", ctx->uc_mcontext.gregs[REG_RAX],
+ ctx->uc_mcontext.gregs[REG_RIP]);
+
+ if (ctx->uc_mcontext.gregs[REG_RAX] == 0xffff)
+ {
+ /* Test syscall from the Unix side (install_bpf). */
+ ctx->uc_mcontext.gregs[REG_RAX] = STATUS_INVALID_PARAMETER;
+ return;
+ }
+
+ frame->rip = ctx->uc_mcontext.gregs[REG_RIP] + 0xb;
+ frame->rcx = ctx->uc_mcontext.gregs[REG_RIP];
+ frame->eflags = ctx->uc_mcontext.gregs[REG_EFL];
+ frame->restore_flags = 0;
+ ctx->uc_mcontext.gregs[REG_RCX] = (ULONG_PTR)frame;
+ ctx->uc_mcontext.gregs[REG_R11] = frame->eflags;
+ ctx->uc_mcontext.gregs[REG_EFL] &= ~0x100; /* clear single-step flag */
+ ctx->uc_mcontext.gregs[REG_RIP] = (ULONG64)__wine_syscall_dispatcher_prolog_end_ptr;
+}
+#endif
+
+#ifdef HAVE_SECCOMP
+static int sc_seccomp(unsigned int operation, unsigned int flags, void *args)
+{
+#ifndef __NR_seccomp
+# define __NR_seccomp 317
+#endif
+ return syscall(__NR_seccomp, operation, flags, args);
+}
+#endif
+
+static void check_bpf_jit_enable(void)
+{
+ char enabled;
+ int fd;
+
+ fd = open("/proc/sys/net/core/bpf_jit_enable", O_RDONLY);
+ if (fd == -1)
+ {
+ WARN_(seh)("Could not open /proc/sys/net/core/bpf_jit_enable.\n");
+ return;
+ }
+
+ if (read(fd, &enabled, sizeof(enabled)) == sizeof(enabled))
+ {
+ TRACE_(seh)("enabled %#x.\n", enabled);
+
+ if (enabled != '1')
+ ERR_(seh)("BPF JIT is not enabled in the kernel, enable it to reduce syscall emulation overhead.\n");
+ }
+ else
+ {
+ WARN_(seh)("Could not read /proc/sys/net/core/bpf_jit_enable.\n");
+ }
+ close(fd);
+}
+
+static void install_bpf(struct sigaction *sig_act)
+{
+#ifdef HAVE_SECCOMP
+# ifndef SECCOMP_FILTER_FLAG_SPEC_ALLOW
+# define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
+# endif
+
+# ifndef SECCOMP_SET_MODE_FILTER
+# define SECCOMP_SET_MODE_FILTER 1
+# endif
+ static const BYTE syscall_trap_test[] =
+ {
+ 0x48, 0x89, 0xf8, /* mov %rdi, %rax */
+ 0x0f, 0x05, /* syscall */
+ 0xc3, /* retq */
+ };
+ static const unsigned int flags = SECCOMP_FILTER_FLAG_SPEC_ALLOW;
+
+#define NATIVE_SYSCALL_ADDRESS_START 0x700000000000
+
+ static struct sock_filter filter[] =
+ {
+ /* Allow i386. */
+ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, arch)),
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, AUDIT_ARCH_X86_64, 1, 0),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
+ /* Native libs are loaded at high addresses. */
+ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, instruction_pointer) + 4),
+ BPF_JUMP(BPF_JMP | BPF_JGT | BPF_K, NATIVE_SYSCALL_ADDRESS_START >> 32, 0, 8),
+ /* High addresses may be top-down allocations, trap those */
+ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x7fff, 1, 0),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
+ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, instruction_pointer)),
+ BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 0xfe000000, 1, 0),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
+ BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 0xffff0000, 0, 1),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_TRAP),
+ /* Allow wine64-preloader */
+ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, instruction_pointer)),
+ BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 0x7d400000, 1, 0),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_TRAP),
+ BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 0x7d402000, 0, 1),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_TRAP),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
+ };
+ long (*test_syscall)(long sc_number);
+ struct syscall_frame *frame = get_syscall_frame();
+ struct sock_fprog prog;
+ NTSTATUS status;
+
+ if ((ULONG_PTR)sc_seccomp < NATIVE_SYSCALL_ADDRESS_START
+ || (ULONG_PTR)syscall < NATIVE_SYSCALL_ADDRESS_START)
+ {
+ ERR_(seh)("Native libs are being loaded in low addresses, sc_seccomp %p, syscall %p, not installing seccomp.\n",
+ sc_seccomp, syscall);
+ ERR_(seh)("The known reasons are /proc/sys/vm/legacy_va_layout set to 1 or 'ulimit -s' being 'unlimited'.\n");
+ return;
+ }
+
+ sig_act->sa_sigaction = sigsys_handler;
+ memset(&prog, 0, sizeof(prog));
+
+ sigaction(SIGSYS, sig_act, NULL);
+
+
+
+
+ test_syscall = mmap((void *)0x600000000000, 0x1000, PROT_EXEC | PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANON, -1, 0);
+ if (test_syscall != (void *)0x600000000000)
+ {
+ int ret;
+
+ ERR("Could not allocate test syscall, falling back to seccomp presence check, test_syscall %p, errno %d.\n",
+ test_syscall, errno);
+ if (test_syscall != MAP_FAILED) munmap(test_syscall, 0x1000);
+
+ if ((ret = prctl(PR_GET_SECCOMP, 0, NULL, 0, 0)))
+ {
+ if (ret == 2)
+ TRACE_(seh)("Seccomp filters already installed.\n");
+ else
+ ERR_(seh)("Seccomp filters cannot be installed, ret %d, error %s.\n", ret, strerror(errno));
+ return;
+ }
+ }
+ else
+ {
+ memcpy(test_syscall, syscall_trap_test, sizeof(syscall_trap_test));
+ status = test_syscall(0xffff);
+ munmap(test_syscall, 0x1000);
+ if (status == STATUS_INVALID_PARAMETER)
+ {
+ TRACE_(seh)("Seccomp filters already installed.\n");
+ return;
+ }
+ if (status != -ENOSYS && (status != -1 || errno != ENOSYS))
+ {
+ ERR_(seh)("Unexpected status %#x, errno %d.\n", status, errno);
+ return;
+ }
+ }
+
+ TRACE_(seh)("Installing seccomp filters.\n");
+
+ prog.len = ARRAY_SIZE(filter);
+ prog.filter = filter;
+
+ if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0))
+ {
+ ERR_(seh)("prctl(PR_SET_NO_NEW_PRIVS, ...): %s.\n", strerror(errno));
+ return;
+ }
+ if (sc_seccomp(SECCOMP_SET_MODE_FILTER, flags, &prog))
+ {
+ ERR_(seh)("prctl(PR_SET_SECCOMP, ...): %s.\n", strerror(errno));
+ return;
+ }
+ check_bpf_jit_enable();
+#else
+ WARN_(seh)("Built without seccomp.\n");
+#endif
+}
/***********************************************************************
* handle_interrupt
@@ -2879,10 +3078,14 @@ void signal_init_process(void)
if (sigaction( SIGSEGV, &sig_act, NULL ) == -1) goto error;
if (sigaction( SIGILL, &sig_act, NULL ) == -1) goto error;
if (sigaction( SIGBUS, &sig_act, NULL ) == -1) goto error;
+
#ifdef __APPLE__
sig_act.sa_sigaction = sigsys_handler;
if (sigaction( SIGSYS, &sig_act, NULL ) == -1) goto error;
#endif
+
+ install_bpf(&sig_act);
+
return;
error:
--
2.51.0
+55
View File
@@ -0,0 +1,55 @@
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -10308,6 +10308,38 @@ fi
esac
;;
esac
+
+ # do this at the end because it needs double dollar for makefile
+ as_ac_var=`printf "%s\n" "ac_cv_cflags_-Wl,-rpath,\\\\\\$ORIGIN" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,-rpath,\\\$ORIGIN" >&5
+printf %s "checking whether the compiler supports -Wl,-rpath,\\\$ORIGIN... " >&6; }
+if eval test \${$as_ac_var+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_wine_try_cflags_saved=$CFLAGS
+CFLAGS="$CFLAGS -Wl,-rpath,\\\$ORIGIN"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int main(int argc, char **argv) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ eval "$as_ac_var=yes"
+else $as_nop
+ eval "$as_ac_var=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+fi
+eval ac_res=\$$as_ac_var
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
+ UNIXLDFLAGS="$UNIXLDFLAGS '-Wl,-rpath,\$\$ORIGIN'"
+fi
;;
esac
--- a/configure.ac
+++ b/configure.ac
@@ -761,6 +761,9 @@ case $host_os in
esac
;;
esac
+
+ # do this at the end because it needs double dollar for makefile
+ WINE_TRY_CFLAGS([-Wl,-rpath,\\\$ORIGIN],[UNIXLDFLAGS="$UNIXLDFLAGS '-Wl,-rpath,\$\$ORIGIN'"])
;;
esac
@@ -0,0 +1,36 @@
Fix build with llvm-libunwind, and also fix for non-llvm libunwind
when using clang+bfd given clang doesn't have _Unwind_Find_FDE in
its rtlib and expects it from llvm-libunwind.
The _CONFIG_H_ check is for <llvm-libunwind-15 (adds _VERSION).
--- a/dlls/ntdll/unix/dwarf.h
+++ b/dlls/ntdll/unix/dwarf.h
@@ -255,5 +255,7 @@
};
+#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
extern const struct dwarf_fde *_Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
+#endif
static unsigned char dwarf_get_u1( const unsigned char **p )
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -632,5 +632,5 @@
int rc;
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__)
rc = unw_getcontext( &unw_context );
if (rc == UNW_ESUCCESS)
@@ -755,4 +755,5 @@
{
struct dwarf_eh_bases bases;
+#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
const struct dwarf_fde *fde = _Unwind_Find_FDE( (void *)(context->Rip - 1), &bases );
@@ -760,4 +761,5 @@
return dwarf_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, fde,
&bases, &dispatch->LanguageHandler, &dispatch->HandlerData );
+#endif
#ifdef HAVE_LIBUNWIND
return libunwind_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context,
+18 -5
View File
@@ -13,7 +13,7 @@
<Icon>wine</Icon> <Icon>wine</Icon>
<Summary>WINE Is Not An Emulator, which lets you run Microsoft Windows applications</Summary> <Summary>WINE Is Not An Emulator, which lets you run Microsoft Windows applications</Summary>
<Description>Wine allows running Windows 3.*, Windows 95/98 and Windows NT programs on a i386 (or compatible) machine running X11. It is still alpha level code; don't expect everything to work.</Description> <Description>Wine allows running Windows 3.*, Windows 95/98 and Windows NT programs on a i386 (or compatible) machine running X11. It is still alpha level code; don't expect everything to work.</Description>
<Archive sha1sum="0141d7e654a0e6f7de3b59dc21dafc6f909dadac" type="tarxz">https://dl.winehq.org/wine/source/10.x/wine-10.20.tar.xz</Archive> <Archive sha1sum="8b4786a787ddb36b64bf2ec069f24d9ba0c9c973" type="tarxz">https://dl.winehq.org/wine/source/11.x/wine-11.5.tar.xz</Archive>
<BuildDependencies> <BuildDependencies>
<Dependency>git</Dependency> <Dependency>git</Dependency>
<Dependency>mit-kerberos-devel</Dependency> <Dependency>mit-kerberos-devel</Dependency>
@@ -88,16 +88,24 @@
<Dependency>compiler-rt</Dependency> <Dependency>compiler-rt</Dependency>
<Dependency>lldb-devel</Dependency> <Dependency>lldb-devel</Dependency>
<Dependency>lld-devel</Dependency> <Dependency>lld-devel</Dependency>
<Dependency>libXpm-devel</Dependency>
<Dependency>flex</Dependency>
<Dependency>autoconf</Dependency>
<Dependency>perl</Dependency>
<Dependency>glib2-devel</Dependency>
<Dependency>libX11-devel</Dependency>
</BuildDependencies> </BuildDependencies>
<Patches> <Patches>
<!-- <Patch>0001-ntdll-Support-x86_64-syscall-emulation.patch</Patch> -->
<Patch>rpath.patch</Patch>
<!-- patches --> <!-- patches -->
<!-- <Patch level="1">wine-1.9.3-gcc-5_3_0-disable-force-alignment.patch</Patch> --> <!-- <Patch level="1">wine-1.9.3-gcc-5_3_0-disable-force-alignment.patch</Patch> -->
<!-- <Patch level="1">gcc_erorr.patch</Patch> --> <!-- <Patch level="1">gcc_erorr.patch</Patch> -->
<Patch level="1">0001-programs-winhlp32-Use-noyywrap-for-macro.lex.l-and-p.patch</Patch> <!-- <Patch level="1">0001-programs-winhlp32-Use-noyywrap-for-macro.lex.l-and-p.patch</Patch> -->
<!-- Use XDG_DOCUMENTS_DIR for "My Documents" --> <!-- Use XDG_DOCUMENTS_DIR for "My Documents" -->
</Patches> </Patches>
</Source> </Source>
<Package> <Package>
@@ -107,6 +115,7 @@
<Dependency version="current">wine-32bit</Dependency> <Dependency version="current">wine-32bit</Dependency>
<Dependency version="current">winetricks</Dependency> <Dependency version="current">winetricks</Dependency>
<Dependency>lcms2</Dependency> <Dependency>lcms2</Dependency>
<Dependency>dosbox</Dependency>
<Dependency>libX11</Dependency> <Dependency>libX11</Dependency>
<Dependency>libSM</Dependency> <Dependency>libSM</Dependency>
<Dependency>vkd3d</Dependency> <Dependency>vkd3d</Dependency>
@@ -149,6 +158,7 @@
<Dependency>wayland-client</Dependency> <Dependency>wayland-client</Dependency>
<Dependency>pcsc-lite</Dependency> <Dependency>pcsc-lite</Dependency>
<Dependency>libxkbcommon</Dependency> <Dependency>libxkbcommon</Dependency>
<Dependency>glib2</Dependency>
</RuntimeDependencies> </RuntimeDependencies>
<Files> <Files>
<Path fileType="data">/etc/xdg</Path> <Path fileType="data">/etc/xdg</Path>
@@ -235,6 +245,7 @@
<Summary>32-bit shared libraries for wine</Summary> <Summary>32-bit shared libraries for wine</Summary>
<BuildType>emul32</BuildType> <BuildType>emul32</BuildType>
<BuildDependencies> <BuildDependencies>
<Dependency>gcc</Dependency>
<Dependency>gsm-32bit</Dependency> <Dependency>gsm-32bit</Dependency>
<Dependency>zlib-32bit</Dependency> <Dependency>zlib-32bit</Dependency>
<Dependency>glib2-32bit</Dependency> <Dependency>glib2-32bit</Dependency>
@@ -292,6 +303,7 @@
<Dependency>mesa-glu-32bit</Dependency> <Dependency>mesa-glu-32bit</Dependency>
<Dependency>openldap-32bit</Dependency> <Dependency>openldap-32bit</Dependency>
<Dependency>gsm-32bit</Dependency> <Dependency>gsm-32bit</Dependency>
<Dependency>glib2-32bit</Dependency>
<Dependency>eudev-32bit</Dependency> <Dependency>eudev-32bit</Dependency>
<Dependency>libusb-32bit</Dependency> <Dependency>libusb-32bit</Dependency>
<Dependency>cups-32bit</Dependency> <Dependency>cups-32bit</Dependency>
@@ -317,6 +329,7 @@
<Dependency>libXcomposite-32bit</Dependency> <Dependency>libXcomposite-32bit</Dependency>
<Dependency>libjpeg-turbo-32bit</Dependency> <Dependency>libjpeg-turbo-32bit</Dependency>
<Dependency>pulseaudio-libs-32bit</Dependency> <Dependency>pulseaudio-libs-32bit</Dependency>
<Dependency>gst-plugins-base-32bit</Dependency>
</RuntimeDependencies> </RuntimeDependencies>
<Files> <Files>
<Path fileType="library">/usr/lib32/libwine.so*</Path> <Path fileType="library">/usr/lib32/libwine.so*</Path>
@@ -332,7 +345,7 @@
<History> <History>
<Update release="26"> <Update release="26">
<Date>2026-03-07</Date> <Date>2026-03-07</Date>
<Version>10.20</Version> <Version>11.5</Version>
<Comment>Version bump.</Comment> <Comment>Version bump.</Comment>
<Name>Pisi Linux Community</Name> <Name>Pisi Linux Community</Name>
<Email>admin@pisilinux.org</Email> <Email>admin@pisilinux.org</Email>