Hello community, here is the log from the commit of package wine for openSUSE:Factory checked in at 2018-03-07 10:34:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/wine (Old) and /work/SRC/openSUSE:Factory/.wine.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wine" Wed Mar 7 10:34:46 2018 rev:246 rq:582585 version:3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/wine/wine.changes 2018-02-26 23:26:38.327125744 +0100 +++ /work/SRC/openSUSE:Factory/.wine.new/wine.changes 2018-03-07 10:34:51.874073952 +0100 @@ -1,0 +2,18 @@ +Mon Mar 5 08:52:57 UTC 2018 - [email protected] + +- update wine-staging and wine-nine to 3.3 +- enable wine staging + +------------------------------------------------------------------- +Fri Mar 2 18:49:34 UTC 2018 - [email protected] + +- Update to 3.3 development release + - Beginnings of Vulkan support. + - Direct3D multi-threaded command stream enabled by default. + - Multisample textures enabled by default. + - Support for game controllers through SDL. + - Support for loading CIL-only .Net binaries. + - Various bug fixes. +- Updated winetricks + +------------------------------------------------------------------- Old: ---- wine-3.2.tar.xz wine-3.2.tar.xz.sign wine-d3d9-patches-2.20.tar.xz wine-staging-2.21.tar.xz New: ---- wine-3.3.tar.xz wine-3.3.tar.xz.sign wine-d3d9-patches-3.3.tar.xz wine-staging-3.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ wine.spec ++++++ --- /var/tmp/diff_new_pack.sNFleW/_old 2018-03-07 10:34:53.494015519 +0100 +++ /var/tmp/diff_new_pack.sNFleW/_new 2018-03-07 10:34:53.498015375 +0100 @@ -69,6 +69,7 @@ %else Recommends: wine-mp3 %endif +BuildRequires: SDL2-devel BuildRequires: ncurses-devel BuildRequires: openal-soft-devel BuildRequires: openldap2-devel @@ -77,18 +78,19 @@ BuildRequires: sane-backends-devel BuildRequires: update-desktop-files BuildRequires: valgrind-devel +BuildRequires: vulkan-devel BuildRequires: xorg-x11-devel BuildRequires: pkgconfig(libudev) -%define realver 3.2 -Version: 3.2 +%define realver 3.3 +Version: 3.3 Release: 0 Summary: An MS Windows Emulator -License: LGPL-2.1+ +License: LGPL-2.1-or-later Group: System/Emulators/PC Url: http://www.winehq.org/ -Source0: http://downloads.sourceforge.net/wine/%{projectname}-%{realver}.tar.xz +Source0: https://dl.winehq.org/wine/source/3.x/%{projectname}-%{realver}.tar.xz Source41: wine.keyring -Source42: http://downloads.sourceforge.net/wine/%{projectname}-%{realver}.tar.xz.sign +Source42: https://dl.winehq.org/wine/source/3.x/%{projectname}-%{realver}.tar.xz.sign Source1: https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks Source11: https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.1 Source2: http://kegel.com/wine/wisotool @@ -118,7 +120,7 @@ ExclusiveArch: %{ix86} x86_64 ppc %arm %if %{staging} # upstream patch target version -%define staging_version 2.21 +%define staging_version 3.3 Source100: wine-staging-%{staging_version}.tar.xz BuildRequires: gtk3-devel BuildRequires: libOSMesa-devel @@ -126,7 +128,7 @@ %endif %if %{nine} # upstream patch target version -%define nine_version 2.20 +%define nine_version 3.3 BuildRequires: Mesa-libd3d-devel BuildRequires: dri2proto-devel BuildRequires: libOSMesa-devel ++++++ _multibuild ++++++ --- /var/tmp/diff_new_pack.sNFleW/_old 2018-03-07 10:34:53.562013066 +0100 +++ /var/tmp/diff_new_pack.sNFleW/_new 2018-03-07 10:34:53.566012922 +0100 @@ -1,5 +1,5 @@ <multibuild> <package>nine</package> - <!-- no staging currently <package>staging</package> - <package>staging-nine</package> --> + <package>staging</package> + <package>staging-nine</package> </multibuild> ++++++ _service ++++++ --- /var/tmp/diff_new_pack.sNFleW/_old 2018-03-07 10:34:53.582012345 +0100 +++ /var/tmp/diff_new_pack.sNFleW/_new 2018-03-07 10:34:53.586012200 +0100 @@ -2,8 +2,8 @@ <service name="tar_scm" mode="disabled"> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> - <param name="url">https://github.com/wine-compholio/wine-staging.git</param> - <param name="revision">refs/tags/v2.21</param> + <param name="url">https://github.com/wine-staging/wine-staging.git</param> + <param name="revision">refs/tags/v3.3</param> <param name="match-tag">v*.*</param> <param name="scm">git</param> </service> @@ -11,7 +11,7 @@ <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">wined3d9(.*)</param> <param name="url">https://github.com/sarnex/wine-d3d9-patches.git</param> - <param name="revision">refs/tags/wine-d3d9-2.20</param> + <param name="revision">refs/tags/wine-d3d9-3.3</param> <param name="scm">git</param> </service> <service name="recompress" mode="disabled"> ++++++ wine-3.2.tar.xz -> wine-3.3.tar.xz ++++++ /work/SRC/openSUSE:Factory/wine/wine-3.2.tar.xz /work/SRC/openSUSE:Factory/.wine.new/wine-3.3.tar.xz differ: char 26, line 1 ++++++ wine-d3d9-patches-2.20.tar.xz -> wine-d3d9-patches-3.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wine-d3d9-patches-2.20/d3d9-helper.patch new/wine-d3d9-patches-3.3/d3d9-helper.patch --- old/wine-d3d9-patches-2.20/d3d9-helper.patch 2017-11-06 04:33:09.000000000 +0100 +++ new/wine-d3d9-patches-3.3/d3d9-helper.patch 2018-03-04 18:58:49.000000000 +0100 @@ -1,27 +1,27 @@ -From f0991570f98db2ffcb64fa88882ecccd40474392 Mon Sep 17 00:00:00 2001 +From 1b441555922dc0d80699de41b52aa0fa51e65aaf Mon Sep 17 00:00:00 2001 From: Nick Sarnie <[email protected]> -Date: Sun, 5 Nov 2017 22:31:50 -0500 +Date: Sun, 4 Mar 2018 12:55:12 -0500 Subject: [PATCH] D3D9 Helper Signed-off-by: Nick Sarnie <[email protected]> --- - dlls/ntdll/loader.c | 66 ++++++---- - dlls/ntdll/loadorder.c | 304 ++++++++++++++++++++++++++++++++----------- + dlls/ntdll/loader.c | 205 ++++++++++++++++++++++++----- + dlls/ntdll/loadorder.c | 298 ++++++++++++++++++++++++++++++++----------- dlls/ntdll/ntdll_misc.h | 1 + programs/winecfg/Makefile.in | 1 + programs/winecfg/main.c | 12 +- programs/winecfg/resource.h | 5 + - programs/winecfg/staging.c | 93 +++++++++++++ + programs/winecfg/staging.c | 93 ++++++++++++++ programs/winecfg/winecfg.h | 1 + programs/winecfg/winecfg.rc | 10 ++ - 9 files changed, 394 insertions(+), 99 deletions(-) + 9 files changed, 522 insertions(+), 104 deletions(-) create mode 100644 programs/winecfg/staging.c diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 9c89d57154..5c493b98a4 100644 +index de2cc543bc..b8b990ba70 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -93,6 +93,7 @@ struct builtin_load_info +@@ -99,6 +99,7 @@ struct builtin_load_info { const WCHAR *load_path; const WCHAR *filename; @@ -29,7 +29,7 @@ NTSTATUS status; WINE_MODREF *wm; }; -@@ -118,7 +119,8 @@ static WINE_MODREF *cached_modref; +@@ -124,7 +125,8 @@ static WINE_MODREF *cached_modref; static WINE_MODREF *current_modref; static WINE_MODREF *last_failed_modref; @@ -39,7 +39,7 @@ static NTSTATUS process_attach( WINE_MODREF *wm, LPVOID lpReserved ); static FARPROC find_ordinal_export( HMODULE module, const IMAGE_EXPORT_DIRECTORY *exports, DWORD exp_size, DWORD ordinal, LPCWSTR load_path ); -@@ -469,7 +471,7 @@ static FARPROC find_forwarded_export( HMODULE module, const char *forward, LPCWS +@@ -477,7 +479,7 @@ static FARPROC find_forwarded_export( HMODULE module, const char *forward, LPCWS if (!(wm = find_basename_module( mod_name ))) { TRACE( "delay loading %s for '%s'\n", debugstr_w(mod_name), forward ); @@ -47,8 +47,8 @@ + if (load_dll( load_path, mod_name, NULL, 0, &wm ) == STATUS_SUCCESS && !(wm->ldr.Flags & LDR_DONT_RESOLVE_REFS)) { - if (process_attach( wm, NULL ) != STATUS_SUCCESS) -@@ -625,7 +627,7 @@ static BOOL import_dll( HMODULE module, const IMAGE_IMPORT_DESCRIPTOR *descr, LP + if (!imports_fixup_done && current_modref) +@@ -647,7 +649,7 @@ static BOOL import_dll( HMODULE module, const IMAGE_IMPORT_DESCRIPTOR *descr, LP { ascii_to_unicode( buffer, name, len ); buffer[len] = 0; @@ -57,7 +57,7 @@ } else /* need to allocate a larger buffer */ { -@@ -633,7 +635,7 @@ static BOOL import_dll( HMODULE module, const IMAGE_IMPORT_DESCRIPTOR *descr, LP +@@ -655,7 +657,7 @@ static BOOL import_dll( HMODULE module, const IMAGE_IMPORT_DESCRIPTOR *descr, LP if (!ptr) return FALSE; ascii_to_unicode( ptr, name, len ); ptr[len] = 0; @@ -66,7 +66,16 @@ RtlFreeHeap( GetProcessHeap(), 0, ptr ); } -@@ -957,7 +959,7 @@ static NTSTATUS fixup_imports( WINE_MODREF *wm, LPCWSTR load_path ) +@@ -940,7 +942,7 @@ static NTSTATUS fixup_imports_ilonly( WINE_MODREF *wm, LPCWSTR load_path, void * + + prev = current_modref; + current_modref = wm; +- if (!(status = load_dll( load_path, mscoreeW, 0, &imp ))) wm->deps[0] = imp; ++ if (!(status = load_dll( load_path, mscoreeW, NULL, 0, &imp ))) wm->deps[0] = imp; + current_modref = prev; + if (status) + { +@@ -1023,7 +1025,7 @@ static NTSTATUS fixup_imports( WINE_MODREF *wm, LPCWSTR load_path ) * Allocate a WINE_MODREF structure and add it to the process list * The loader_section must be locked while calling this function. */ @@ -75,16 +84,16 @@ { WINE_MODREF *wm; const WCHAR *p; -@@ -979,7 +981,7 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename ) - wm->ldr.TimeDateStamp = 0; - wm->ldr.ActivationContext = 0; +@@ -1037,7 +1039,7 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename ) + wm->ldr.TlsIndex = -1; + wm->ldr.LoadCount = 1; - RtlCreateUnicodeString( &wm->ldr.FullDllName, filename ); + RtlCreateUnicodeString( &wm->ldr.FullDllName, fakemodule ? fakemodule : filename ); if ((p = strrchrW( wm->ldr.FullDllName.Buffer, '\\' ))) p++; else p = wm->ldr.FullDllName.Buffer; RtlInitUnicodeString( &wm->ldr.BaseDllName, p ); -@@ -1640,7 +1642,7 @@ static void load_builtin_callback( void *module, const char *filename ) +@@ -1649,7 +1651,7 @@ static void load_builtin_callback( void *module, const char *filename ) return; } @@ -93,27 +102,27 @@ RtlFreeHeap( GetProcessHeap(), 0, fullname ); if (!wm) { -@@ -1820,8 +1822,8 @@ static NTSTATUS perform_relocations( void *module, SIZE_T len ) +@@ -1859,8 +1861,8 @@ static BOOL is_valid_binary( HMODULE module, const pe_image_info_t *info ) /****************************************************************************** * load_native_dll (internal) */ -static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file, -- DWORD flags, WINE_MODREF** pwm ) +- DWORD flags, WINE_MODREF** pwm, struct stat *st ) +static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, LPCWSTR fakemodule, -+ HANDLE file, DWORD flags, WINE_MODREF** pwm ) ++ HANDLE file, DWORD flags, WINE_MODREF** pwm, struct stat *st ) { void *module; HANDLE mapping; -@@ -1856,7 +1858,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file, +@@ -1903,7 +1905,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file, /* create the MODREF */ - if (!(wm = alloc_module( module, name ))) + if (!(wm = alloc_module( module, name, fakemodule ))) { - status = STATUS_NO_MEMORY; - goto done; -@@ -1918,8 +1920,8 @@ done: + if (module) NtUnmapViewOfSection( NtCurrentProcess(), module ); + return STATUS_NO_MEMORY; +@@ -1967,8 +1969,8 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file, /*********************************************************************** * load_builtin_dll */ @@ -124,7 +133,7 @@ { char error[256], dllname[MAX_PATH]; const WCHAR *name, *p; -@@ -1939,6 +1941,7 @@ static NTSTATUS load_builtin_dll( LPCWSTR load_path, LPCWSTR path, HANDLE file, +@@ -1988,6 +1990,7 @@ static NTSTATUS load_builtin_dll( LPCWSTR load_path, LPCWSTR path, HANDLE file, */ info.load_path = load_path; info.filename = NULL; @@ -132,14 +141,171 @@ info.status = STATUS_SUCCESS; info.wm = NULL; -@@ -2257,14 +2260,14 @@ overflow: - return STATUS_BUFFER_TOO_SMALL; +@@ -2186,6 +2189,108 @@ done: + return status; } -- ++#if defined(__i386__) ++#define CURRENT_ARCH IMAGE_FILE_MACHINE_I386 ++#elif defined(__x86_64__) ++#define CURRENT_ARCH IMAGE_FILE_MACHINE_AMD64 ++#elif defined(__arm__) ++#define CURRENT_ARCH IMAGE_FILE_MACHINE_ARM ++#elif defined(__aarch64__) ++#define CURRENT_ARCH IMAGE_FILE_MACHINE_ARM64 ++#endif ++ ++/*********************************************************************** ++ * get_machine_type (internal) ++ * ++ * Determines the machine type of a module. Based on the code in ++ * dlls/kernel32/module.c. ++ */ ++static WORD get_machine_type( HANDLE hfile ) ++{ ++ union ++ { ++ struct ++ { ++ unsigned char magic[4]; ++ unsigned char class; ++ unsigned char data; ++ unsigned char version; ++ unsigned char ignored[9]; ++ unsigned short type; ++ unsigned short machine; ++ } elf; ++ struct ++ { ++ unsigned int magic; ++ unsigned int cputype; ++ unsigned int cpusubtype; ++ unsigned int filetype; ++ } macho; ++ IMAGE_DOS_HEADER mz; ++ } header; ++ ++ IO_STATUS_BLOCK io; ++ LARGE_INTEGER offset; ++ ++ /* Seek to the start of the file and read the header information. */ ++ offset.QuadPart = 0; ++ if (NtReadFile( hfile, 0, NULL, 0, &io, &header, sizeof(header), &offset, NULL )) return 0; ++ if (io.Information < sizeof(header)) return 0; ++ ++ if (!memcmp( header.elf.magic, "\177ELF", 4 )) ++ { ++#ifdef WORDS_BIGENDIAN ++ if (header.elf.data == 1) ++#else ++ if (header.elf.data == 2) ++#endif ++ { ++ header.elf.machine = RtlUshortByteSwap( header.elf.machine ); ++ } ++ ++ switch(header.elf.machine) ++ { ++ case 3: return IMAGE_FILE_MACHINE_I386; ++ case 20: return IMAGE_FILE_MACHINE_POWERPC; ++ case 40: return IMAGE_FILE_MACHINE_ARMNT; ++ case 50: return IMAGE_FILE_MACHINE_IA64; ++ case 62: return IMAGE_FILE_MACHINE_AMD64; ++ case 183: return IMAGE_FILE_MACHINE_ARM64; ++ default: return 0; ++ } ++ } ++ /* Mach-o File with Endian set to Big Endian or Little Endian */ ++ else if (header.macho.magic == 0xfeedface || header.macho.magic == 0xcefaedfe || ++ header.macho.magic == 0xfeedfacf || header.macho.magic == 0xcffaedfe) ++ { ++ if (header.macho.magic == 0xcefaedfe || header.macho.magic == 0xcffaedfe) ++ header.macho.cputype = RtlUlongByteSwap( header.macho.cputype ); ++ ++ switch(header.macho.cputype) ++ { ++ case 0x00000007: return IMAGE_FILE_MACHINE_I386; ++ case 0x01000007: return IMAGE_FILE_MACHINE_AMD64; ++ case 0x0000000c: return IMAGE_FILE_MACHINE_ARMNT; ++ case 0x0100000c: return IMAGE_FILE_MACHINE_ARM64; ++ case 0x00000012: return IMAGE_FILE_MACHINE_POWERPC; ++ default: return 0; ++ } ++ } ++ /* Not ELF, try DOS */ ++ else if (header.mz.e_magic == IMAGE_DOS_SIGNATURE) ++ { ++ IMAGE_NT_HEADERS32 ext_header; ++ ++ offset.QuadPart = header.mz.e_lfanew; ++ if (NtReadFile( hfile, 0, NULL, 0, &io, &ext_header, sizeof(ext_header), &offset, NULL )) return 0; ++ if (io.Information < sizeof(ext_header)) return 0; ++ ++ if (!memcmp( &ext_header.Signature, "PE\0\0", 4 )) ++ return ext_header.FileHeader.Machine; ++ } ++ ++ return 0; ++} + /*********************************************************************** - * load_dll (internal) - * + * open_dll_file +@@ -2232,7 +2337,7 @@ static HANDLE open_dll_file( UNICODE_STRING *nt_name, WINE_MODREF **pwm, struct + */ + static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname, + WCHAR *filename, ULONG *size, WINE_MODREF **pwm, +- HANDLE *handle, struct stat *st ) ++ HANDLE *handle, struct stat *st, BOOL check_arch ) + { + UNICODE_STRING nt_name; + WCHAR *file_part, *ext, *dllname; +@@ -2277,20 +2382,41 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname, + + if (RtlDetermineDosPathNameType_U( libname ) == RELATIVE_PATH) + { +- /* we need to search for it */ +- len = RtlDosSearchPath_U( load_path, libname, NULL, *size, filename, &file_part ); +- if (len) ++ while (load_path) + { ++ /* we need to search for it */ ++ len = RtlDosSearchPath_U( load_path, libname, NULL, *size, filename, &file_part ); ++ if (!len) break; ++ + if (len >= *size) goto overflow; + if ((*pwm = find_fullname_module( filename ))) goto found; ++ if (!handle) goto next; + + if (!RtlDosPathNameToNtPathName_U( filename, &nt_name, NULL, NULL )) + { + RtlFreeHeap( GetProcessHeap(), 0, dllname ); + return STATUS_NO_MEMORY; + } ++ + *handle = open_dll_file( &nt_name, pwm, st ); +- goto found; ++ ++ #ifdef CURRENT_ARCH ++ if (*handle && check_arch) ++ { ++ WORD machine_type = get_machine_type( *handle ); ++ if (machine_type && machine_type != CURRENT_ARCH) ++ { ++ FIXME( "skipping %s because of wrong architecture\n", debugstr_w(filename) ); ++ NtClose( *handle ); ++ *handle = 0; ++ } ++ } ++ #endif ++ if (*handle) goto found; ++ ++ next: ++ load_path = strchrW(load_path, ';'); ++ if (load_path) load_path++; + } + + /* not found */ +@@ -2338,8 +2464,10 @@ overflow: * Load a PE style module according to the load order. * The loader_section must be locked while calling this function. */ @@ -147,9 +313,20 @@ +static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, LPCWSTR fakemodule, + DWORD flags, WINE_MODREF** pwm ) { ++ BOOL data = flags & (LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE); enum loadorder loadorder; WCHAR buffer[64]; -@@ -2301,6 +2304,25 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_ + WCHAR *filename; +@@ -2356,7 +2484,7 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_ + size = sizeof(buffer); + for (;;) + { +- nts = find_dll_file( load_path, libname, filename, &size, pwm, &handle, &st ); ++ nts = find_dll_file( load_path, libname, filename, &size, pwm, &handle, &st, !data ); + if (nts == STATUS_SUCCESS) break; + if (filename != buffer) RtlFreeHeap( GetProcessHeap(), 0, filename ); + if (nts != STATUS_BUFFER_TOO_SMALL) return nts; +@@ -2376,6 +2504,25 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_ } main_exe = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress ); @@ -175,12 +352,12 @@ loadorder = get_load_order( main_exe ? main_exe->ldr.BaseDllName.Buffer : NULL, filename ); if (handle && is_fake_dll( handle )) -@@ -2323,22 +2345,22 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_ +@@ -2398,22 +2545,22 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_ if (!handle) nts = STATUS_DLL_NOT_FOUND; else { -- nts = load_native_dll( load_path, filename, handle, flags, pwm ); -+ nts = load_native_dll( load_path, filename, fakemodule, handle, flags, pwm ); +- nts = load_native_dll( load_path, filename, handle, flags, pwm, &st ); ++ nts = load_native_dll( load_path, filename, fakemodule, handle, flags, pwm, &st ); if (nts == STATUS_INVALID_IMAGE_NOT_MZ) /* not in PE format, maybe it's a builtin */ - nts = load_builtin_dll( load_path, filename, handle, flags, pwm ); @@ -203,16 +380,16 @@ if (nts == STATUS_SUCCESS && loadorder == LO_DEFAULT && (MODULE_InitDLL( *pwm, DLL_WINE_PREATTACH, NULL ) != STATUS_SUCCESS)) { -@@ -2348,7 +2370,7 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_ +@@ -2423,7 +2570,7 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_ nts = STATUS_DLL_NOT_FOUND; } if (nts == STATUS_DLL_NOT_FOUND && loadorder != LO_BUILTIN) -- nts = load_native_dll( load_path, filename, handle, flags, pwm ); -+ nts = load_native_dll( load_path, filename, fakemodule, handle, flags, pwm ); +- nts = load_native_dll( load_path, filename, handle, flags, pwm, &st ); ++ nts = load_native_dll( load_path, filename, fakemodule, handle, flags, pwm, &st ); break; } -@@ -2381,7 +2403,7 @@ NTSTATUS WINAPI DECLSPEC_HOTPATCH LdrLoadDll(LPCWSTR path_name, DWORD flags, +@@ -2456,7 +2603,7 @@ NTSTATUS WINAPI DECLSPEC_HOTPATCH LdrLoadDll(LPCWSTR path_name, DWORD flags, RtlEnterCriticalSection( &loader_section ); if (!path_name) path_name = NtCurrentTeb()->Peb->ProcessParameters->DllPath.Buffer; @@ -221,7 +398,16 @@ if (nts == STATUS_SUCCESS && !(wm->ldr.Flags & LDR_DONT_RESOLVE_REFS)) { -@@ -3349,7 +3371,7 @@ void __wine_process_init(void) +@@ -2495,7 +2642,7 @@ NTSTATUS WINAPI LdrGetDllHandle( LPCWSTR load_path, ULONG flags, const UNICODE_S + size = sizeof(buffer); + for (;;) + { +- status = find_dll_file( load_path, name->Buffer, filename, &size, &wm, &handle, &st ); ++ status = find_dll_file( load_path, name->Buffer, filename, &size, &wm, &handle, &st, TRUE ); + if (handle) NtClose( handle ); + if (filename != buffer) RtlFreeHeap( GetProcessHeap(), 0, filename ); + if (status != STATUS_BUFFER_TOO_SMALL) break; +@@ -3420,7 +3567,7 @@ void __wine_process_init(void) /* setup the load callback and create ntdll modref */ wine_dll_set_callback( load_builtin_callback ); @@ -231,7 +417,7 @@ MESSAGE( "wine: could not load kernel32.dll, status %x\n", status ); exit(1); diff --git a/dlls/ntdll/loadorder.c b/dlls/ntdll/loadorder.c -index 157d2cb2d7..9b2eab2cb9 100644 +index c6c0245931..c247a50380 100644 --- a/dlls/ntdll/loadorder.c +++ b/dlls/ntdll/loadorder.c @@ -290,102 +290,165 @@ static inline enum loadorder get_env_load_order( const WCHAR *module ) @@ -258,7 +444,7 @@ + attr.SecurityQualityOfService = NULL; + RtlInitUnicodeString( &nameW, key_name ); + -+ if (NtOpenKey( &hkey, KEY_ALL_ACCESS, &attr )) hkey = 0; ++ if (NtOpenKey( &hkey, KEY_WOW64_64KEY | KEY_ALL_ACCESS, &attr )) hkey = 0; + NtClose( root ); + + return hkey; @@ -474,40 +660,28 @@ { TRACE( "got standard key %s for %s\n", debugstr_loadorder(ret), debugstr_w(module) ); return ret; -@@ -424,24 +487,44 @@ static enum loadorder get_load_order_value( HANDLE std_key, HANDLE app_key, cons - +@@ -422,25 +485,43 @@ static enum loadorder get_load_order_value( HANDLE std_key, HANDLE app_key, cons + return ret; + } - /*************************************************************************** -- * get_load_order (internal) -+ * get_redirect_value - * -- * Return the loadorder of a module. -- * The system directory and '.dll' extension is stripped from the path. ++ /*************************************************************************** ++ * get_redirect_value ++ * + * Get the redirect value for the exact specified module string, looking in: + * 1. The per-application DllRedirects key + * 2. The standard DllRedirects key - */ --enum loadorder get_load_order( const WCHAR *app_name, const WCHAR *path ) ++ */ +static WCHAR* get_redirect_value( HANDLE std_key, HANDLE app_key, const WCHAR *module, + BYTE *buffer, ULONG size ) - { -- enum loadorder ret = LO_INVALID; -- HANDLE std_key, app_key = 0; -- WCHAR *module, *basename; -- UNICODE_STRING path_str; -- int len; ++{ + WCHAR *ret = NULL; - -- if (!init_done) init_load_order(); -- std_key = get_standard_key(); -- if (app_name) app_key = get_app_key( app_name ); ++ + if (app_key && (ret = get_registry_string( app_key, module, buffer, size ))) + { + TRACE( "got app defaults %s for %s\n", debugstr_w(ret), debugstr_w(module) ); + return ret; + } - -- TRACE("looking for %s\n", debugstr_w(path)); ++ + if (std_key && (ret = get_registry_string( std_key, module, buffer, size ))) + { + TRACE( "got standard key %s for %s\n", debugstr_w(ret), debugstr_w(module) ); @@ -516,23 +690,32 @@ + + return ret; +} -+ -+ -+/*************************************************************************** -+ * get_module_basename -+ * -+ * Determine the module basename. The caller is responsible for releasing -+ * the memory. -+ */ + + /*************************************************************************** +- * get_load_order (internal) ++ * get_module_basename (internal) + * + * Return the loadorder of a module. + * The system directory and '.dll' extension is stripped from the path. + */ +-enum loadorder get_load_order( const WCHAR *app_name, const WCHAR *path ) +static WCHAR* get_module_basename( const WCHAR *path, WCHAR **basename ) -+{ -+ UNICODE_STRING path_str; + { +- enum loadorder ret = LO_INVALID; +- HANDLE std_key, app_key = 0; +- WCHAR *module, *basename; + int len; +- +- if (!init_done) init_load_order(); +- std_key = get_standard_key(); +- if (app_name) app_key = get_app_key( app_name ); +- +- TRACE("looking for %s\n", debugstr_w(path)); + WCHAR *module; -+ int len; /* Strip path information if the module resides in the system directory */ -@@ -453,12 +536,36 @@ enum loadorder get_load_order( const WCHAR *app_name, const WCHAR *path ) +@@ -451,12 +532,36 @@ enum loadorder get_load_order( const WCHAR *app_name, const WCHAR *path ) if (!strchrW( p, '\\' ) && !strchrW( p, '/' )) path = p; } @@ -572,7 +755,7 @@ /* first explicit module name */ if ((ret = get_load_order_value( std_key, app_key, module+1 )) != LO_INVALID) -@@ -489,3 +596,48 @@ enum loadorder get_load_order( const WCHAR *app_name, const WCHAR *path ) +@@ -487,3 +592,48 @@ enum loadorder get_load_order( const WCHAR *app_name, const WCHAR *path ) RtlFreeHeap( GetProcessHeap(), 0, module ); return ret; } @@ -622,10 +805,10 @@ + return ret; +} diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h -index 907bbdd2d9..3c90389fa6 100644 +index 85bdd9ed05..0eb5ae6241 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h -@@ -208,6 +208,7 @@ enum loadorder +@@ -214,6 +214,7 @@ enum loadorder }; extern enum loadorder get_load_order( const WCHAR *app_name, const WCHAR *path ) DECLSPEC_HIDDEN; @@ -634,7 +817,7 @@ struct debug_info { diff --git a/programs/winecfg/Makefile.in b/programs/winecfg/Makefile.in -index 7b52a6943e..c86fdd07d0 100644 +index d516778834..dd847307cd 100644 --- a/programs/winecfg/Makefile.in +++ b/programs/winecfg/Makefile.in @@ -11,6 +11,7 @@ C_SRCS = \ @@ -842,5 +1025,5 @@ /* @makedep: winecfg.ico */ -- -2.15.0 +2.16.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wine-d3d9-patches-2.20/staging-helper.patch new/wine-d3d9-patches-3.3/staging-helper.patch --- old/wine-d3d9-patches-2.20/staging-helper.patch 2017-11-06 04:33:09.000000000 +0100 +++ new/wine-d3d9-patches-3.3/staging-helper.patch 2018-03-04 18:58:49.000000000 +0100 @@ -1,7 +1,7 @@ -From 292a2474457aebe491984f07d952f53bf8ec77dc Mon Sep 17 00:00:00 2001 +From c6243cd8229cbbcb9824cfe1fe4be8229028f34b Mon Sep 17 00:00:00 2001 From: Nick Sarnie <[email protected]> -Date: Sun, 5 Nov 2017 22:30:35 -0500 -Subject: [PATCH 1/2] Staging Helper +Date: Sun, 4 Mar 2018 12:16:22 -0500 +Subject: [PATCH] Staging Helper Signed-off-by: Nick Sarnie <[email protected]> --- @@ -12,10 +12,10 @@ 4 files changed, 33 insertions(+) diff --git a/dlls/ntdll/loadorder.c b/dlls/ntdll/loadorder.c -index 3668d73643..24e8a6f109 100644 +index d05d7b321e..7945d2a599 100644 --- a/dlls/ntdll/loadorder.c +++ b/dlls/ntdll/loadorder.c -@@ -633,8 +633,10 @@ WCHAR* get_redirect( const WCHAR *app_name, const WCHAR *path, BYTE *buffer, ULO +@@ -629,8 +629,10 @@ WCHAR* get_redirect( const WCHAR *app_name, const WCHAR *path, BYTE *buffer, ULO goto done; /* then module basename without '*' (only if explicit path) */ @@ -119,5 +119,5 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -- -2.15.0 +2.16.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wine-d3d9-patches-2.20/wine-d3d9.patch new/wine-d3d9-patches-3.3/wine-d3d9.patch --- old/wine-d3d9-patches-2.20/wine-d3d9.patch 2017-11-06 04:33:09.000000000 +0100 +++ new/wine-d3d9-patches-3.3/wine-d3d9.patch 2018-03-04 18:58:49.000000000 +0100 @@ -1,7 +1,7 @@ -From f8574ff8a8c64fe6ab7a4399eb0d693e926f45d1 Mon Sep 17 00:00:00 2001 +From 60db98243f61cf283510f81dfd5437d989602b3f Mon Sep 17 00:00:00 2001 From: Nick Sarnie <[email protected]> -Date: Sun, 5 Nov 2017 22:31:07 -0500 -Subject: [PATCH 2/2] Wine D3D9 +Date: Sun, 4 Mar 2018 12:17:42 -0500 +Subject: [PATCH] Wine D3D9 Signed-off-by: Nick Sarnie <[email protected]> --- @@ -41,10 +41,10 @@ create mode 100644 dlls/d3d9-nine/wndproc.h diff --git a/configure.ac b/configure.ac -index 7a8fcc4987..0f2a45f336 100644 +index 3735c1695e..ed65e21469 100644 --- a/configure.ac +++ b/configure.ac -@@ -67,6 +67,14 @@ AC_ARG_WITH(openal, AS_HELP_STRING([--without-openal],[do not use OpenAL]), +@@ -69,6 +69,14 @@ AC_ARG_WITH(openal, AS_HELP_STRING([--without-openal],[do not use OpenAL]), AC_ARG_WITH(opencl, AS_HELP_STRING([--without-opencl],[do not use OpenCL]), [if test "x$withval" = "xno"; then ac_cv_header_CL_cl_h=no; ac_cv_header_OpenCL_opencl_h=no; fi]) AC_ARG_WITH(opengl, AS_HELP_STRING([--without-opengl],[do not use OpenGL])) @@ -59,7 +59,7 @@ AC_ARG_WITH(osmesa, AS_HELP_STRING([--without-osmesa],[do not use the OSMesa library])) AC_ARG_WITH(oss, AS_HELP_STRING([--without-oss],[do not use the OSS sound support])) AC_ARG_WITH(pcap, AS_HELP_STRING([--without-pcap],[do not use the Packet Capture library]), -@@ -391,6 +399,8 @@ AC_CHECK_LIB(ossaudio,_oss_ioctl) +@@ -415,6 +423,8 @@ AC_CHECK_LIB(ossaudio,_oss_ioctl) AC_SUBST(OPENGL_LIBS,"") @@ -68,7 +68,7 @@ dnl **** Check for header files **** AC_SYS_LARGEFILE() -@@ -1248,6 +1258,183 @@ OpenGL and Direct3D won't be supported.]) +@@ -1261,6 +1271,183 @@ OpenGL and Direct3D won't be supported.]) WINE_NOTICE_WITH(va,[test "x$ac_cv_lib_soname_va" = "x" -o "x$ac_cv_lib_soname_va_x11" = "x" -o "x$ac_cv_lib_soname_va_drm" = "x"], [libva ${notice_platform}development files not found, GPU video acceleration won't be supported.]) @@ -252,9 +252,9 @@ CPPFLAGS="$ac_save_CPPFLAGS" else X_CFLAGS="" -@@ -3127,6 +3314,7 @@ WINE_CONFIG_DLL(d3d8,,[implib]) +@@ -3189,6 +3376,7 @@ WINE_CONFIG_DLL(d3d8) WINE_CONFIG_TEST(dlls/d3d8/tests) - WINE_CONFIG_DLL(d3d9,,[implib]) + WINE_CONFIG_DLL(d3d9) WINE_CONFIG_TEST(dlls/d3d9/tests) +WINE_CONFIG_DLL(d3d9-nine,,[implib]) WINE_CONFIG_DLL(d3dcompiler_33) @@ -5781,5 +5781,5 @@ + +#endif -- -2.15.0 +2.16.2 ++++++ wine-staging-2.21.tar.xz -> wine-staging-3.3.tar.xz ++++++ /work/SRC/openSUSE:Factory/wine/wine-staging-2.21.tar.xz /work/SRC/openSUSE:Factory/.wine.new/wine-staging-3.3.tar.xz differ: char 26, line 1 ++++++ winetricks ++++++ --- /var/tmp/diff_new_pack.sNFleW/_old 2018-03-07 10:34:53.826003544 +0100 +++ /var/tmp/diff_new_pack.sNFleW/_new 2018-03-07 10:34:53.830003400 +0100 @@ -34,7 +34,7 @@ # - zenity is needed by the GUI, though it can limp along somewhat with kdialog/xmessage. # - xdg-open (if present) or open (for OS X) is used to open download pages # for the user when downloads cannot be fully automated. -# - pfexec, sudo, or kdesu (gksu/gksudo/kdesudo are deprecated upstream but also still supported) +# - pkexec, sudo, or kdesu (gksu/gksudo/kdesudo are deprecated upstream but also still supported) # are used to mount .iso images if the user cached them with -k option. # - perl is used to munge steam config files. # - torify is used with option "--torify" if sites are blocked in single countries. @@ -1178,6 +1178,9 @@ w_try_cd "$_W_dl_olddir" unset _W_dl_olddir + + # downloaded successfully, exit from loop + break elif test $tries = 2; then test -f "$_W_file" && rm "$_W_file" w_die "Downloading $_W_url failed" @@ -14094,7 +14097,7 @@ WinWait, Call of Duty, Start ControlClick Button1 } - WinWait, Insert CD, Please insert the Call of Duty w_try_cd 2 + WinWait, Insert CD, Please insert the Call of Duty cd 2 " "$WINE" eject ${W_ISO_MOUNT_LETTER}: @@ -14105,7 +14108,7 @@ if ( w_opt_unattended > 0 ) { Send {Enter} ;continue installation } - WinWait, Insert CD, Please insert the Call of Duty w_try_cd 1 + WinWait, Insert CD, Please insert the Call of Duty cd 1 " "$WINE" eject ${W_ISO_MOUNT_LETTER}:
