diff options
author | Ionen Wolkens <ionen@gentoo.org> | 2022-11-23 18:46:33 -0500 |
---|---|---|
committer | Ionen Wolkens <ionen@gentoo.org> | 2022-11-23 19:54:16 -0500 |
commit | a62ccb7245ecaedf4bf99bd1f4101f3b1d02ae49 (patch) | |
tree | e81430975cb0fc1fed8b171cb909c45f7eef3fbd /app-emulation/wine-vanilla | |
parent | net-misc/radvd: fix build w/ clang 16 (diff) | |
download | gentoo-a62ccb7245ecaedf4bf99bd1f4101f3b1d02ae49.tar.gz gentoo-a62ccb7245ecaedf4bf99bd1f4101f3b1d02ae49.tar.bz2 gentoo-a62ccb7245ecaedf4bf99bd1f4101f3b1d02ae49.zip |
app-emulation/wine-vanilla: backport opengl32.dll fix to 7.21
Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'app-emulation/wine-vanilla')
-rw-r--r-- | app-emulation/wine-vanilla/files/wine-vanilla-7.21-opengl32.patch | 73 | ||||
-rw-r--r-- | app-emulation/wine-vanilla/wine-vanilla-7.21-r1.ebuild (renamed from app-emulation/wine-vanilla/wine-vanilla-7.21.ebuild) | 3 |
2 files changed, 75 insertions, 1 deletions
diff --git a/app-emulation/wine-vanilla/files/wine-vanilla-7.21-opengl32.patch b/app-emulation/wine-vanilla/files/wine-vanilla-7.21-opengl32.patch new file mode 100644 index 000000000000..9411e05e96fd --- /dev/null +++ b/app-emulation/wine-vanilla/files/wine-vanilla-7.21-opengl32.patch @@ -0,0 +1,73 @@ +Fixes PE opengl32.dll failing to initialize. + +https://gitlab.winehq.org/wine/wine/-/commit/34099bba6cb +From: Rémi Bernon <rbernon@codeweavers.com> +Date: Mon, 14 Nov 2022 11:55:51 +0100 +Subject: [PATCH] ntdll: Delay loading unixlibs until the functions are + requested. + +Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53909 +--- a/dlls/ntdll/unix/virtual.c ++++ b/dlls/ntdll/unix/virtual.c +@@ -98,6 +98,7 @@ struct builtin_module + unsigned int refcount; + void *handle; + void *module; ++ char *unix_path; + void *unix_handle; + }; + +@@ -583,6 +584,7 @@ static void add_builtin_module( void *module, void *handle ) + builtin->handle = handle; + builtin->module = module; + builtin->refcount = 1; ++ builtin->unix_path = NULL; + builtin->unix_handle = NULL; + list_add_tail( &builtin_modules, &builtin->entry ); + } +@@ -603,6 +605,7 @@ void release_builtin_module( void *module ) + list_remove( &builtin->entry ); + if (builtin->handle) dlclose( builtin->handle ); + if (builtin->unix_handle) dlclose( builtin->unix_handle ); ++ free( builtin->unix_path ); + free( builtin ); + } + break; +@@ -652,6 +655,8 @@ static NTSTATUS get_builtin_unix_funcs( void *module, BOOL wow, const void **fun + LIST_FOR_EACH_ENTRY( builtin, &builtin_modules, struct builtin_module, entry ) + { + if (builtin->module != module) continue; ++ if (builtin->unix_path && !builtin->unix_handle) ++ builtin->unix_handle = dlopen( builtin->unix_path, RTLD_NOW ); + if (builtin->unix_handle) + { + *funcs = dlsym( builtin->unix_handle, ptr_name ); +@@ -669,26 +674,19 @@ static NTSTATUS get_builtin_unix_funcs( void *module, BOOL wow, const void **fun + */ + NTSTATUS load_builtin_unixlib( void *module, const char *name ) + { +- void *handle; + sigset_t sigset; +- NTSTATUS status = STATUS_DLL_NOT_FOUND; ++ NTSTATUS status = STATUS_SUCCESS; + struct builtin_module *builtin; + +- if (!(handle = dlopen( name, RTLD_NOW ))) return status; + server_enter_uninterrupted_section( &virtual_mutex, &sigset ); + LIST_FOR_EACH_ENTRY( builtin, &builtin_modules, struct builtin_module, entry ) + { + if (builtin->module != module) continue; +- if (!builtin->unix_handle) +- { +- builtin->unix_handle = handle; +- status = STATUS_SUCCESS; +- } ++ if (!builtin->unix_path) builtin->unix_path = strdup( name ); + else status = STATUS_IMAGE_ALREADY_LOADED; + break; + } + server_leave_uninterrupted_section( &virtual_mutex, &sigset ); +- if (status) dlclose( handle ); + return status; + } + diff --git a/app-emulation/wine-vanilla/wine-vanilla-7.21.ebuild b/app-emulation/wine-vanilla/wine-vanilla-7.21-r1.ebuild index d931d7219d8d..38fe963828ae 100644 --- a/app-emulation/wine-vanilla/wine-vanilla-7.21.ebuild +++ b/app-emulation/wine-vanilla/wine-vanilla-7.21-r1.ebuild @@ -128,7 +128,8 @@ QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext PATCHES=( "${FILESDIR}"/${PN}-7.0-noexecstack.patch "${FILESDIR}"/${PN}-7.20-unwind.patch - "${FILESDIR}"/${PN}-7.21-crossflags.patch + "${FILESDIR}"/${P}-crossflags.patch + "${FILESDIR}"/${P}-opengl32.patch ) pkg_pretend() { |