Compare commits

..

4 Commits

708 changed files with 24923 additions and 28225 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,2 @@
debian/tools/wine
*.pyc
.patchupdate.cache

172
README.md
View File

@@ -1,26 +1,25 @@
What is Wine Staging?
---------------------
=====================
**Warning: Do not report bugs at bugs.winehq.org when using this version!
Please take a look [here](http://bugs.wine-staging.com) for more information
about how to report bugs.**
**Wine Staging** (formerly wine-compholio) is a special wine version containing
bug fixes and features, which are not yet available in regular wine versions.
The idea of Wine Staging is to provide new features faster to end users and to
bug fixes and features that are not yet available in regular wine versions. The
idea behind Wine Staging is to provide new features faster to end users and to
give developers the possibility to discuss and improve their patches before
they are sent upstream. We also intend to create a community of wine developers
to share experience and to make it easier for beginners to start hacking on
wine. More information about Wine Staging can also be found on our website
[wine-staging.com](http://wine-staging.com).
wine.
Although we are reviewing and testing all patches before adding them, you may
encounter additional bugs, which are not present in vanilla wine. Make sure to
report such issues in our bug tracker instead of winehq.org so that we can try
to solve them in future versions. Thanks!
Although we are reviewing all patches before adding them, you may encounter
additional bugs, which are not present in regular wine. Make sure to report
such issues in our bug tracker instead of winehq.org so that we can try to
solve them in future versions. Thanks!
How to install and use Wine Staging
-----------------------------------
===================================
Ready-to-use packages for Wine Staging are available for a variety
of different Linux distributions directly for download. Just follow the
@@ -37,120 +36,105 @@ Wine. All those differences are also documented on the
Included bug fixes and improvements
-----------------------------------
===================================
**Bug fixes and features in Wine Staging 1.7.48 [238]:**
**Bugfixes and features included in the next upcoming release [9]:**
*Note: The following list only contains features and bug fixes which are not
yet available in vanilla Wine. They are removed from the list as soon as they
are included upstream. The list also includes features and fixes from previous
releases, take a look at the
[changelog](https://github.com/wine-compholio/wine-staging/blob/master/debian/changelog)
for more details.*
* Add stub fltmgr.sys (filter manager driver) ([Wine Bug #23583](https://bugs.winehq.org/show_bug.cgi?id=23583))
* Add stubs for Power[Set|Clear]Request
* Avoid spam of FIXME messages for PsLookupProcessByProcessId stub ([Wine Bug #36821](https://bugs.winehq.org/show_bug.cgi?id=36821))
* Don't return an error in WS_select when EINTR happens during timeout
* Fix calculation of 3D sound source ([Wine Bug #38041](https://bugs.winehq.org/show_bug.cgi?id=38041))
* Fix compatibility of Uplay with gnutls28 ([Wine Bug #38134](https://bugs.winehq.org/show_bug.cgi?id=38134))
* Fix handling of ANSI NTLM credentials ([Wine Bug #37063](https://bugs.winehq.org/show_bug.cgi?id=37063))
* Implement empty enumerator for IWiaDevMgr::EnumDeviceInfo ([Wine Bug #27775](https://bugs.winehq.org/show_bug.cgi?id=27775))
* Software support for Environmental Audio Extensions (EAX)
* Add HTTP Host header in HttpSendRequest instead of HttpOpenRequest ([Wine Bug #28911](https://bugs.winehq.org/show_bug.cgi?id=28911))
* Add a ProfileList\<UserSID> registry subkey ([Wine Bug #15670](https://bugs.winehq.org/show_bug.cgi?id=15670))
* Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811))
* Add implementation for shlwapi.AssocGetPerceivedType
**Bugs fixed in Wine Staging 1.7.39 [205]:**
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](https://bugs.winehq.org/show_bug.cgi?id=36374))
* Add default ACLs for user shell folders
* Add implementation for CreateThreadpool ([Wine Bug #35192](https://bugs.winehq.org/show_bug.cgi?id=35192))
* Add nvapi stubs required for GPU PhysX support
* Add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2 ([Wine Bug #33661](https://bugs.winehq.org/show_bug.cgi?id=33661))
* Add semi-stub for FileFsVolumeInformation information class ([Wine Bug #21466](https://bugs.winehq.org/show_bug.cgi?id=21466))
* Add shell32 placeholder icons to match offsets with Windows ([Wine Bug #30185](https://bugs.winehq.org/show_bug.cgi?id=30185))
* Add stub fltmgr.sys (filter manager driver) ([Wine Bug #23583](https://bugs.winehq.org/show_bug.cgi?id=23583))
* Add semi-stub for GetFileVersionInfoExA/W ([Wine Bug #38098](https://bugs.winehq.org/show_bug.cgi?id=38098))
* Add semi-stub for GetFileVersionInfoSizeExA/W ([Wine Bug #38090](https://bugs.winehq.org/show_bug.cgi?id=38090))
* Add stub for D3DXComputeNormalMap
* Add stub for D3DXFrameFind ([Wine Bug #38334](https://bugs.winehq.org/show_bug.cgi?id=38334))
* Add stub for D3DXTessellateNPatches
* Add stub for D3DXComputeTangentFrameEx ([Wine Bug #31984](https://bugs.winehq.org/show_bug.cgi?id=31984))
* Add stub for D3DXIntersect
* Add stub for NtSetLdtEntries/ZwSetLdtEntries ([Wine Bug #26268](https://bugs.winehq.org/show_bug.cgi?id=26268))
* Add stub for PowerCreateRequest
* Add stub for gdiplus.GdipCreateEffect ([Wine Bug #32163](https://bugs.winehq.org/show_bug.cgi?id=32163))
* Add stub for ntoskrnl.ExAcquireResourceExclusiveLite
* Add stub for ntoskrnl.ExDeleteResourceLite
* Add stub for ntoskrnl.ExReleaseResourceForThread
* Add stub for ntoskrnl.KeWaitForMultipleObjects
* Add stub for ntoskrnl.Mm{Map,Unmap}LockedPages
* Add stub for ntoskrnl.PsRemoveLoadImageNotifyRoutine
* Add stub for setupapi.SetupDiSelectBestCompatDrv ([Wine Bug #32088](https://bugs.winehq.org/show_bug.cgi?id=32088))
* Add stub for wininet.ParseX509EncodedCertificateForListBoxEntry ([Wine Bug #29842](https://bugs.winehq.org/show_bug.cgi?id=29842))
* Add stub for winscard.SCardListReadersA/W ([Wine Bug #26978](https://bugs.winehq.org/show_bug.cgi?id=26978))
* Add stub for winsta.WinStationEnumerateW ([Wine Bug #38102](https://bugs.winehq.org/show_bug.cgi?id=38102))
* Add stubbed ISWbemSecurity interfaces in wbemdisp
* Add stubs for D3DCompile2 and D3DCompileFromFile
* Add stubs for D3DXCreateAnimationController interface
* Add stubs for d3dx10_43.D3DX10CreateEffectFromFileA/W ([Wine Bug #27739](https://bugs.winehq.org/show_bug.cgi?id=27739))
* Add support for CopyFileEx progress callback ([Wine Bug #22692](https://bugs.winehq.org/show_bug.cgi?id=22692))
* Add support for GetPropValue to PulseAudio backend
* Add support for ThreadQuerySetWin32StartAddress info class ([Wine Bug #8277](https://bugs.winehq.org/show_bug.cgi?id=8277))
* Add support for hiding wine version information from applications ([Wine Bug #38656](https://bugs.winehq.org/show_bug.cgi?id=38656))
* Add support for process specific debug channels
* Add wined3d detection for GeForce GT 425M ([Wine Bug #35054](https://bugs.winehq.org/show_bug.cgi?id=35054))
* Adobe Reader needs ITextSelection_fnGetDuplicate implementation
* Allow selection of audio device for PulseAudio backend
* Allow special characters in pipe names ([Wine Bug #28995](https://bugs.winehq.org/show_bug.cgi?id=28995))
* Allow to cancel a file operation via progress callback ([Wine Bug #22690](https://bugs.winehq.org/show_bug.cgi?id=22690))
* Allow to edit winecfg library override by double clicking
* Allow to open files/directories without any access rights in order to query attributes
* Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE. ([Wine Bug #12652](https://bugs.winehq.org/show_bug.cgi?id=12652))
* Allow to set pixel format for desktop window
* Anno 1602 installer depends on Windows 98 behavior of SHFileOperationW ([Wine Bug #37916](https://bugs.winehq.org/show_bug.cgi?id=37916))
* Assign a drive serial number during prefix creation/update ([Wine Bug #17823](https://bugs.winehq.org/show_bug.cgi?id=17823))
* Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](https://bugs.winehq.org/show_bug.cgi?id=30639))
* Avoid crashing when broken app tries to release surface although refcount is zero ([Wine Bug #18477](https://bugs.winehq.org/show_bug.cgi?id=18477))
* Avoid race-conditions in NtReadFile() operations with write watches.
* Avoid race-conditions of async WSARecv() operations with write watches.
* Avoid race-conditions with long running threadpool tasks
* Avoid race-conditions with write watches in WS2_async_accept.
* Avoid unloading msctf library while textservices are activated ([Wine Bug #31579](https://bugs.winehq.org/show_bug.cgi?id=31579))
* Avseq crashes when multisampling is enabled ([Wine Bug #31998](https://bugs.winehq.org/show_bug.cgi?id=31998))
* Basic handling of write watches triggered while we're on the signal stack.
* Basic support for CUDA
* Black & White needs DXTn software decoding support ([Wine Bug #14939](https://bugs.winehq.org/show_bug.cgi?id=14939))
* CPU-Z fails to start because GetLogicalProcessorInformationEx returns FALSE
* Calculate msvcrt exponential math operations with higher precision ([Wine Bug #37149](https://bugs.winehq.org/show_bug.cgi?id=37149))
* Check architecture before trying to load libraries ([Wine Bug #38021](https://bugs.winehq.org/show_bug.cgi?id=38021))
* Create HKLM\Software\Microsoft\Cryptography\MachineGuid registry key ([Wine Bug #38508](https://bugs.winehq.org/show_bug.cgi?id=38508))
* Create stub files for system32/drivers/etc/{services,hosts,networks,protocol} ([Wine Bug #12076](https://bugs.winehq.org/show_bug.cgi?id=12076))
* ~~Child of Light expects FindConnectionPoint to succeed and increase the refcount~~ ([Wine Bug #36408](https://bugs.winehq.org/show_bug.cgi?id=36408))
* CreateProcess does not prioritize the working directory over the system search path ([Wine Bug #23934](https://bugs.winehq.org/show_bug.cgi?id=23934))
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
* Do not append duplicate NULL characters when importing keys with regedit ([Wine Bug #37575](https://bugs.winehq.org/show_bug.cgi?id=37575))
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436))
* Do not use unixfs for devices without mountpoint
* EA Origin needs support for job objects ([Wine Bug #33723](https://bugs.winehq.org/show_bug.cgi?id=33723))
* Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849))
* Enforce that surfaces are flushed after ReleaseDC
* Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](https://bugs.winehq.org/show_bug.cgi?id=33162))
* Ensure X11 input events are handled even without explicit message loop ([Wine Bug #8854](https://bugs.winehq.org/show_bug.cgi?id=8854))
* Exception during start of fr-043 caused by missing DXTn support ([Wine Bug #37391](https://bugs.winehq.org/show_bug.cgi?id=37391))
* Export additional OpenAL32 functions ([Wine Bug #38972](https://bugs.winehq.org/show_bug.cgi?id=38972))
* Expose PKEY_AudioEndpoint_PhysicalSpeakers device property in PulseAudio driver
* FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](https://bugs.winehq.org/show_bug.cgi?id=37358))
* Fake success in kernel32.SetFileCompletionNotificationModes ([Wine Bug #38960](https://bugs.winehq.org/show_bug.cgi?id=38960))
* Fallback to system ping command when CAP_NET_RAW is not available ([Wine Bug #8332](https://bugs.winehq.org/show_bug.cgi?id=8332))
* Fallback to global key state for threads without a queue ([Wine Bug #27238](https://bugs.winehq.org/show_bug.cgi?id=27238))
* Fix NULL dereference in ICSeqCompressFrameStart ([Wine Bug #27595](https://bugs.winehq.org/show_bug.cgi?id=27595))
* Fix access violation when calling GetStringTypeW with NULL src. ([Wine Bug #37759](https://bugs.winehq.org/show_bug.cgi?id=37759))
* Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](https://bugs.winehq.org/show_bug.cgi?id=35950))
* Fix caps lock state issues with multiple processes ([Wine Bug #35907](https://bugs.winehq.org/show_bug.cgi?id=35907))
* Fix check for end_frame in RtlUnwindEx on x86_64. ([Wine Bug #34254](https://bugs.winehq.org/show_bug.cgi?id=34254))
* Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](https://bugs.winehq.org/show_bug.cgi?id=10767))
* Fix condition mask handling in RtlVerifyVersionInfo ([Wine Bug #36143](https://bugs.winehq.org/show_bug.cgi?id=36143))
* Fix crash in Space Rangers2 caused by missing DXTn support ([Wine Bug #24983](https://bugs.winehq.org/show_bug.cgi?id=24983))
* Fix crash in clip_cursor_notify caused by uninitialized TLS ([Wine Bug #36915](https://bugs.winehq.org/show_bug.cgi?id=36915))
* Fix crash of Trine Demo on start ([Wine Bug #19231](https://bugs.winehq.org/show_bug.cgi?id=19231))
* Fix crash of winedevice when relocation entry crosses page boundary ([Wine Bug #28254](https://bugs.winehq.org/show_bug.cgi?id=28254))
* Fix cursor clip regression / broken raw input in multiple games ([Wine Bug #33479](https://bugs.winehq.org/show_bug.cgi?id=33479))
* Fix device paths in HKLM\SYSTEM\MountedDevices ([Wine Bug #38235](https://bugs.winehq.org/show_bug.cgi?id=38235))
* Fix endless loop in regedit when importing files with very long lines
* Fix flickering introduced by pixelformat changes. ([Wine Bug #35718](https://bugs.winehq.org/show_bug.cgi?id=35718))
* Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](https://bugs.winehq.org/show_bug.cgi?id=16550))
* Fix for programs leaking wndproc slots ([Wine Bug #32451](https://bugs.winehq.org/show_bug.cgi?id=32451))
* Fix graphical corruption in FarCry 3 with NVIDIA drivers ([Wine Bug #35062](https://bugs.winehq.org/show_bug.cgi?id=35062))
* Fix gray screen on startup introduced by pixelformat changes. ([Wine Bug #35975](https://bugs.winehq.org/show_bug.cgi?id=35975))
* Fix handling of ANSI NTLM credentials ([Wine Bug #37063](https://bugs.winehq.org/show_bug.cgi?id=37063))
* Fix handling of empty section and key name for profile files. ([Wine Bug #8036](https://bugs.winehq.org/show_bug.cgi?id=8036))
* Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109))
* Fix handling of opening a file with RootDirectory pointing to a file handle
* Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE ([Wine Bug #38417](https://bugs.winehq.org/show_bug.cgi?id=38417))
* Fix handling of window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED ([Wine Bug #37876](https://bugs.winehq.org/show_bug.cgi?id=37876))
* Fix issues with dragging layers between images in Adobe Photoshop 7.0 ([Wine Bug #12007](https://bugs.winehq.org/show_bug.cgi?id=12007))
* Fix loading of libraries with incomplete IMAGE_LOAD_CONFIG_DIRECTORY struct
* Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](https://bugs.winehq.org/show_bug.cgi?id=36900))
* Fix multithreading issues with fullscreen clipping ([Wine Bug #38087](https://bugs.winehq.org/show_bug.cgi?id=38087))
* Fix possible segfault in pulse_rd_loop of PulseAudio backend
* Fix race-condition when threads are killed during shutdown
* Fix regression caused by blacklisting supported OpenGL extensions ([Wine Bug #38480](https://bugs.winehq.org/show_bug.cgi?id=38480))
* ~~Fix regression causing black screen on startup~~ ([Wine Bug #38248](https://bugs.winehq.org/show_bug.cgi?id=38248))
* ~~Fix regression causing too dark/missing textures in several games~~ ([Wine Bug #38256](https://bugs.winehq.org/show_bug.cgi?id=38256))
* Fix return value of ScrollWindowEx for invisible windows ([Wine Bug #37706](https://bugs.winehq.org/show_bug.cgi?id=37706))
* Fix scaling behaviour of images and mipmap levels in IDirect3DTexture2_Load (needed for example by Prezzie Hunt)
* Fix security cookie handling for UPX compressed executables ([Wine Bug #38949](https://bugs.winehq.org/show_bug.cgi?id=38949))
* Fix texture corruption in CSI: Fatal Conspiracy ([Wine Bug #33768](https://bugs.winehq.org/show_bug.cgi?id=33768))
* Fix unintentional leaks with ntdll internals
* Fix wined3d performance drop introduced by pixelformat changes. ([Wine Bug #35655](https://bugs.winehq.org/show_bug.cgi?id=35655))
@@ -158,79 +142,68 @@ for more details.*
* Fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function.
* Fix wrong version of ID3DXEffect interface for d3dx9_24
* Fix wrong version of ID3DXEffect interface for d3dx9_25 ([Wine Bug #25138](https://bugs.winehq.org/show_bug.cgi?id=25138))
* Forward exitcode from child process when in wineconsole
* Free RPC parameters allocated by application before anything else ([Wine Bug #36743](https://bugs.winehq.org/show_bug.cgi?id=36743))
* Games For Windows Live 1.x expects a valid linker version in the PE header ([Wine Bug #28768](https://bugs.winehq.org/show_bug.cgi?id=28768))
* GetMessage should remove already seen messages with higher priority ([Wine Bug #28884](https://bugs.winehq.org/show_bug.cgi?id=28884))
* GetMonitorInfo returns the same name for all monitors ([Wine Bug #37709](https://bugs.winehq.org/show_bug.cgi?id=37709))
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](https://bugs.winehq.org/show_bug.cgi?id=15980))
* Globally invalidate key state on changes in other threads ([Wine Bug #29871](https://bugs.winehq.org/show_bug.cgi?id=29871))
* Graphical issues in Inquisitor ([Wine Bug #32490](https://bugs.winehq.org/show_bug.cgi?id=32490))
* Hearthstone fails to start ([Wine Bug #36216](https://bugs.winehq.org/show_bug.cgi?id=36216))
* IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests ([Wine Bug #37767](https://bugs.winehq.org/show_bug.cgi?id=37767))
* Ignore unsupported alpha channels in TIFF decoder ([Wine Bug #38027](https://bugs.winehq.org/show_bug.cgi?id=38027))
* Ignore unsupported flags for CoInternetSetFeatureEnabled ([Wine Bug #35197](https://bugs.winehq.org/show_bug.cgi?id=35197))
* Implement AMStream GetMultiMediaStream functions ([Wine Bug #37090](https://bugs.winehq.org/show_bug.cgi?id=37090))
* Implement D3DXGetShaderOutputSemantics
* Implement DDENUMSURFACES_CANBECREATED in IDirectDraw7::EnumSurfaces ([Wine Bug #17233](https://bugs.winehq.org/show_bug.cgi?id=17233))
* Implement ID3DXEffect::FindNextValidTechnique ([Wine Bug #34101](https://bugs.winehq.org/show_bug.cgi?id=34101))
* Implement IDXGIOutput::GetDesc
* Implement SetFileInformationByHandle
* ~~Implement SetupLogError[A|W] and Setup[Open|Close]Log~~
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](https://bugs.winehq.org/show_bug.cgi?id=13829))
* Implement additional stubs for vcomp dlls ([Wine Bug #31640](https://bugs.winehq.org/show_bug.cgi?id=31640))
* Implement an Arial replacement font ([Wine Bug #32323](https://bugs.winehq.org/show_bug.cgi?id=32323))
* Implement combase.WindowsSubstring function
* Implement dbghelp.UnDecorateSymbolNameW ([Wine Bug #38828](https://bugs.winehq.org/show_bug.cgi?id=38828))
* Implement default homepage button in inetcpl.cpl
* Implement empty enumerator for IWiaDevMgr::EnumDeviceInfo ([Wine Bug #27775](https://bugs.winehq.org/show_bug.cgi?id=27775))
* Implement exclusive mode in PulseAudio backend ([Wine Bug #37042](https://bugs.winehq.org/show_bug.cgi?id=37042))
* Implement general tab for file property dialog
* Implement locking and synchronization of key states ([Wine Bug #31899](https://bugs.winehq.org/show_bug.cgi?id=31899))
* Implement mscoree._CorValidateImage for mono runtime ([Wine Bug #38662](https://bugs.winehq.org/show_bug.cgi?id=38662))
* Implement ntoskrnl driver testing framework.
* Implement ntoskrnl.KeInitializeMutex
* Implement proper handling of CLI .NET images in Wine library loader ([Wine Bug #38661](https://bugs.winehq.org/show_bug.cgi?id=38661))
* Implement stub for ntoskrnl.IoGetAttachedDeviceReference
* Implement stub for ntoskrnl.KeDelayExecutionThread.
* Implement stubs for ntoskrnl.Ex{Acquire,Release}FastMutexUnsafe
* Implement stubs for ntoskrnl.ObReferenceObjectByPointer and ntoskrnl.ObDereferenceObject
* Implement various vcomp functions ([Wine Bug #31640](https://bugs.winehq.org/show_bug.cgi?id=31640))
* Improve ReadDataAvailable handling in FilePipeLocalInformation class
* Implement threadpool timers ([Wine Bug #37306](https://bugs.winehq.org/show_bug.cgi?id=37306))
* Implement threadpool wait objects
* Implement threadpool work items ([Wine Bug #32531](https://bugs.winehq.org/show_bug.cgi?id=32531))
* Improve stub for AEV_GetVolumeRange ([Wine Bug #35658](https://bugs.winehq.org/show_bug.cgi?id=35658))
* Improve stub for ID3DXEffectImpl_CloneEffect
* Improve stub for NtQueryEaFile
* Improve stubs for AEV_{Get,Set}MasterVolumeLevel
* Improve stubs for AEV_{Get,Set}Mute
* Improvement for heap allocation performance
* Initialize *lpcDevices in RasEnumDevicesA ([Wine Bug #30378](https://bugs.winehq.org/show_bug.cgi?id=30378))
* Initialize System\CurrentControlSet\Control\TimeZoneInformation registry keys
* Increase wineconsole commandline buffer size ([Wine Bug #34814](https://bugs.winehq.org/show_bug.cgi?id=34814))
* Invalidate key state cache globally after calling LL hooks ([Wine Bug #29871](https://bugs.winehq.org/show_bug.cgi?id=29871))
* Jedi Knight: Dark Forces II crashes with winmm set to native ([Wine Bug #37983](https://bugs.winehq.org/show_bug.cgi?id=37983))
* Lego Stunt Rally requires DXTn software de/encoding support ([Wine Bug #25486](https://bugs.winehq.org/show_bug.cgi?id=25486))
* Lockfree algorithm for filedescriptor cache (improves file access speed)
* MSVCRT crashes when NULL is passed as string to atof or strtod ([Wine Bug #32550](https://bugs.winehq.org/show_bug.cgi?id=32550))
* MSYS2 expects correct handling of WRITECOPY memory protection ([Wine Bug #35561](https://bugs.winehq.org/show_bug.cgi?id=35561))
* Make it possible to change media center / tablet pc status ([Wine Bug #18732](https://bugs.winehq.org/show_bug.cgi?id=18732))
* MediaCoder needs CUDA for video encoding ([Wine Bug #37664](https://bugs.winehq.org/show_bug.cgi?id=37664))
* Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](https://bugs.winehq.org/show_bug.cgi?id=34978))
* Multiple applications needs better NtQueryInformationJobObject stub
* Multiple applications start wrong executable if whitespace present in name ([Wine Bug #19666](https://bugs.winehq.org/show_bug.cgi?id=19666))
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](https://bugs.winehq.org/show_bug.cgi?id=7115))
* Only send WM_DROPFILES when OLE dnd fails ([Wine Bug #29081](https://bugs.winehq.org/show_bug.cgi?id=29081))
* Other Pipelight-specific enhancements
* Port Royale doesn't display ocean correctly ([Wine Bug #17913](https://bugs.winehq.org/show_bug.cgi?id=17913))
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699))
* Process APC calls before starting process
* Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103))
* Properly track handle count of wineserver objects
* Python PIP needs better NtQueryInformationJobObject stub
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
* Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087))
* Return correct IMediaSeeking stream positions in quartz
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174))
* Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230))
* Return default palette entries from GetSystemPaletteEntries for non-palette-based devices ([Wine Bug #36895](https://bugs.winehq.org/show_bug.cgi?id=36895))
* Return dummy ID3DXSkinInfo interface when skinning info not present ([Wine Bug #33904](https://bugs.winehq.org/show_bug.cgi?id=33904))
* Return fake device type when systemroot is located on virtual disk ([Wine Bug #36546](https://bugs.winehq.org/show_bug.cgi?id=36546))
* Return proper status codes when NtReadFile/NtWriteFile is called on closed (but not disconnected) pipe
* Return more context attributes in schan_InitializeSecurityContextW ([Wine Bug #37527](https://bugs.winehq.org/show_bug.cgi?id=37527))
* SO_CONNECT_TIME returns the appropriate time
* Scrolling causes mouse and screen to lock in Call to Power II ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559))
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
* Set NamedPipeState to FILE_PIPE_CLOSING_STATE on broken pipe in NtQueryInformationFile
* Share source of d3dx9_36 with d3dx9_33 to avoid Wine DLL forwards ([Wine Bug #21817](https://bugs.winehq.org/show_bug.cgi?id=21817))
* Show unmounted devices in winecfg and allow changing the unix path
* Silence repeated LocaleNameToLCID/LCIDToLocaleName unsupported flags FIXMEs ([Wine Bug #30076](https://bugs.winehq.org/show_bug.cgi?id=30076))
* Silence repeated wbemprox "timeout not supported" fixme ([Wine Bug #37618](https://bugs.winehq.org/show_bug.cgi?id=37618))
* Skip unknown item when decoding a CMS certificate ([Wine Bug #34388](https://bugs.winehq.org/show_bug.cgi?id=34388))
* Software support for Environmental Audio Extensions (EAX)
* Store registry timestamps with nanoseconds precision ([Wine Bug #38927](https://bugs.winehq.org/show_bug.cgi?id=38927))
* Set last error when GetRawInputDeviceList fails ([Wine Bug #37667](https://bugs.winehq.org/show_bug.cgi?id=37667))
* Super Mario 3: Mario Forever fails to load keyboard mapping from profile files. ([Wine Bug #18099](https://bugs.winehq.org/show_bug.cgi?id=18099))
* Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](https://bugs.winehq.org/show_bug.cgi?id=34372))
* Support for BindImageEx ([Wine Bug #3591](https://bugs.winehq.org/show_bug.cgi?id=3591))
@@ -240,11 +213,16 @@ for more details.*
* Support for D3DXGetShaderInputSemantics ([Wine Bug #22682](https://bugs.winehq.org/show_bug.cgi?id=22682))
* Support for DDS file format in D3DXSaveTextureToFileInMemory ([Wine Bug #26898](https://bugs.winehq.org/show_bug.cgi?id=26898))
* Support for DOS hidden/system file attributes ([Wine Bug #9158](https://bugs.winehq.org/show_bug.cgi?id=9158))
* Support for FileFsFullSizeInformation information class
* Support for Dynamic DST (daylight saving time) information in registry
* Support for GdipCreateRegionRgnData ([Wine Bug #34843](https://bugs.winehq.org/show_bug.cgi?id=34843))
* Support for GetFinalPathNameByHandle ([Wine Bug #34851](https://bugs.winehq.org/show_bug.cgi?id=34851))
* Support for GetSystemTimes ([Wine Bug #19813](https://bugs.winehq.org/show_bug.cgi?id=19813))
* Support for GetVolumePathName
* Support for H264 DXVA2 GPU video decoding through vaapi
* Support for ID3DXFont::DrawTextA/W ([Wine Bug #24754](https://bugs.winehq.org/show_bug.cgi?id=24754))
* Support for ID3DXSkinInfoImpl_UpdateSkinnedMesh ([Wine Bug #32572](https://bugs.winehq.org/show_bug.cgi?id=32572))
* Support for ITextDocument_fnRange function ([Wine Bug #12458](https://bugs.winehq.org/show_bug.cgi?id=12458))
* Support for ITextRange, ITextFont and ITextPara ([Wine Bug #18303](https://bugs.winehq.org/show_bug.cgi?id=18303))
* Support for Junction Points ([Wine Bug #12401](https://bugs.winehq.org/show_bug.cgi?id=12401))
* Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath ([Wine Bug #30385](https://bugs.winehq.org/show_bug.cgi?id=30385))
* Support for LoadIconMetric ([Wine Bug #35375](https://bugs.winehq.org/show_bug.cgi?id=35375))
@@ -252,15 +230,14 @@ for more details.*
* Support for NVIDIA video encoder library (nvencodeapi)
* Support for NtQuerySection ([Wine Bug #37338](https://bugs.winehq.org/show_bug.cgi?id=37338))
* Support for NtSetInformationFile class FileDispositionInformation ([Wine Bug #30397](https://bugs.winehq.org/show_bug.cgi?id=30397))
* Support for NtSetInformationFile class FileLinkInformation
* Support for NtSetInformationFile class FileRenameInformation ([Wine Bug #30399](https://bugs.winehq.org/show_bug.cgi?id=30399))
* Support for PulseAudio backend for audio ([Wine Bug #10495](https://bugs.winehq.org/show_bug.cgi?id=10495))
* Support for RtlDecompressBuffer ([Wine Bug #37449](https://bugs.winehq.org/show_bug.cgi?id=37449))
* Support for SHCreateSessionKey ([Wine Bug #35630](https://bugs.winehq.org/show_bug.cgi?id=35630))
* ~~Support for TOOLTIPS_GetTipText edge cases~~ ([Wine Bug #30648](https://bugs.winehq.org/show_bug.cgi?id=30648))
* Support for TransmitFile ([Wine Bug #5048](https://bugs.winehq.org/show_bug.cgi?id=5048))
* Support for WTSEnumerateProcessesW ([Wine Bug #29903](https://bugs.winehq.org/show_bug.cgi?id=29903))
* Support for extra large and jumbo icon lists in shell32 ([Wine Bug #24721](https://bugs.winehq.org/show_bug.cgi?id=24721))
* Support for inherited file ACLs
* Support for linux priority levels for faster performance
* Support for inherited file ACLs ([Wine Bug #34406](https://bugs.winehq.org/show_bug.cgi?id=34406))
* Support for loader dll redirections
* Support for named pipe message mode (Linux only) ([Wine Bug #17195](https://bugs.winehq.org/show_bug.cgi?id=17195))
* Support for non-blocking SIO_ADDRESS_LIST_CHANGE requests ([Wine Bug #38062](https://bugs.winehq.org/show_bug.cgi?id=38062))
@@ -269,16 +246,11 @@ for more details.*
* Support for setcap on wine-preloader ([Wine Bug #26256](https://bugs.winehq.org/show_bug.cgi?id=26256))
* Support for shell32 file operation progress dialog
* Support for stored file ACLs ([Wine Bug #33576](https://bugs.winehq.org/show_bug.cgi?id=33576))
* Support for ws2_32.dll.WSAPoll ([Wine Bug #38601](https://bugs.winehq.org/show_bug.cgi?id=38601))
* Try harder to get the host name address in getaddrinfo() ([Wine Bug #29609](https://bugs.winehq.org/show_bug.cgi?id=29609))
* Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586))
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](https://bugs.winehq.org/show_bug.cgi?id=30938))
* Use GLX_MESA_query_renderer extension to get more exact GPU infos
* Use NVX_GPU_MEMORY_INFO extension for more exact video memory accounting on NVIDIA graphic cards
* Use POSIX implementation to enumerate directory content on FreeBSD ([Wine Bug #35397](https://bugs.winehq.org/show_bug.cgi?id=35397))
* Use actual program name if available to describe PulseAudio streams
* Use manual relay for RunDLL_CallEntry16 in shell32 ([Wine Bug #23033](https://bugs.winehq.org/show_bug.cgi?id=23033))
* Use video memory for rendering targets if possible ([Wine Bug #34906](https://bugs.winehq.org/show_bug.cgi?id=34906))
* Voobly expects correct handling of WRITECOPY memory protection ([Wine Bug #29384](https://bugs.winehq.org/show_bug.cgi?id=29384))
* Wine ignores IDF_CHECKFIRST flag in SetupPromptForDisk ([Wine Bug #20465](https://bugs.winehq.org/show_bug.cgi?id=20465))
* Workaround for shlwapi URLs with relative paths

939
debian/changelog vendored

File diff suppressed because it is too large Load Diff

50
debian/control vendored
View File

@@ -7,6 +7,7 @@ Build-Depends: autotools-dev,
autoconf,
bison,
bsdmainutils,
coreutils,
debhelper (>= 7),
docbook-to-man,
docbook-utils,
@@ -14,8 +15,9 @@ Build-Depends: autotools-dev,
flex,
fontforge,
gawk,
gcc-4.5 | gcc-4.7 | gcc-4.9 | ubuntu-desktop (<< 1.207),
gcc-4.5 | gcc-4.7 | ubuntu-desktop (<< 1.207),
gettext,
gzip,
libacl1-dev,
libasound2-dev,
libcapi20-dev,
@@ -37,7 +39,6 @@ Build-Depends: autotools-dev,
libmpg123-dev,
libncurses5-dev | libncurses-dev,
libopenal-dev (>= 1:1.12) | ubuntu-desktop (<< 1.207),
libosmesa6-dev,
libpcap-dev,
libpng12-dev,
libpulse-dev,
@@ -62,13 +63,12 @@ Build-Depends: autotools-dev,
libxxf86vm-dev,
linux-kernel-headers,
linux-libc-dev,
patch,
perl,
prelink,
quilt (>= 0.46-7~),
sharutils,
unixodbc-dev,
x11proto-xinerama-dev
Standards-Version: 3.9.5
Standards-Version: 3.9.2
Package: wine-staging-i386
Architecture: i386
@@ -83,7 +83,10 @@ Recommends: libcapi20-3,
libfontconfig1 | libfontconfig,
libfreetype6,
libgnutls26,
libgphoto2-6 | libgphoto2-2 (>= 2.4.6),
libgphoto2-port10 | libgphoto2-port0 (>= 2.4.6),
libjpeg8,
libopenal1 (>= 1:1.12),
libosmesa6,
libpcap0.8,
libpng12-0,
@@ -137,7 +140,10 @@ Recommends: libcapi20-3,
libfontconfig1 | libfontconfig,
libfreetype6,
libgnutls26,
libgphoto2-6 | libgphoto2-2 (>= 2.4.6),
libgphoto2-port10 | libgphoto2-port0 (>= 2.4.6),
libjpeg8,
libopenal1 (>= 1:1.12),
libosmesa6,
libpcap0.8,
libpng12-0,
@@ -249,40 +255,6 @@ Description: special build of the popular Wine software
This package includes debugging symbols useful for reporting crashes and other
failures.
Package: wine-staging-compat
Architecture: i386 amd64
Depends: wine-staging, ${misc:Depends}
Section: otherosfs
Priority: optional
Replaces: wine, wine1.4, wine1.5, wine1.6, wine1.7, wine-i386, wine1.4-i386,
wine1.5-i386, wine1.6-i386, wine1.7-i386, ine-amd64, wine1.4-amd64,
wine1.5-amd64, wine1.6-amd64, wine1.7-amd64
Conflicts: wine, wine-i386, wine-amd64
Provides: wine, wine1.4, wine1.5, wine1.6, wine1.7, wine-i386, wine1.4-i386,
wine1.5-i386, wine1.6-i386, wine1.7-i386, wine-amd64 [amd64],
wine1.4-amd64 [amd64], wine1.5-amd64 [amd64], wine1.6-amd64 [amd64],
wine1.7-amd64 [amd64]
Description: special build of the popular Wine software
The Staging Edition is a special build of the popular Wine software
with patches representing our current staging tree for Wine.
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
Applications are run at full speed without the need of cpu emulation. Wine
does not require Microsoft Windows, however it can use native system dll
files in place of its own if they are available.
.
This package includes a program loader for running unmodified Windows
executables as well as the Wine project's free version of the Windows API
for running programs ported from Windows.
.
This package is based on a recent Wine beta. While many more applications
will work, there may be some loss of functionality compared with the stable
release provided by the regular wine package.
.
This compatibility package allows to use Wine Staging system-wide as
the default Wine version.
Package: wine-compholio
Architecture: i386 amd64
Depends: wine-staging, ${misc:Depends}

14
debian/rules vendored
View File

@@ -1,8 +1,11 @@
#!/usr/bin/make -f
# Prefer gcc-4.5, then 4.7, then 4.9 - otherwise fallback to gcc.
export CC = $(shell for _cc in gcc-4.5 gcc-4.7 gcc-4.9 gcc false; do \
if which "$$_cc" >/dev/null 2>&1; then echo "$$_cc"; break; fi; done)
# Use gcc-4.5 if it's available
ifeq ($(shell which gcc-4.5),)
CC = gcc
else
CC = gcc-4.5
endif
%:
dh $@ --parallel
@@ -53,23 +56,18 @@ override_dh_install:
# Create compatibility symlinks
mkdir -p debian/wine-compholio/opt/wine-compholio/bin
mkdir -p debian/wine-staging-compat/usr/bin
for _file in $$(ls "debian/wine-staging/opt/wine-staging/bin"); do \
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-compholio/opt/wine-compholio/bin/$$_file"; \
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-staging-compat/usr/bin/$$_file"; \
done
# Architecture specific compatibility symlinks
ifeq ($(DEB_HOST_ARCH),amd64)
for _file in wine wine-preloader wine64 wine64-preloader; do \
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-compholio/opt/wine-compholio/bin/$$_file"; \
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-staging-compat/usr/bin/$$_file"; \
done
else
for _file in wine wine-preloader; do \
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-compholio/opt/wine-compholio/bin/$$_file"; \
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-staging-compat/usr/bin/$$_file"; \
done
endif

70
debian/tools/Makefile.in vendored Normal file
View File

@@ -0,0 +1,70 @@
#
# This file is automatically generated, DO NOT EDIT!
#
.NOTPARALLEL:
CURDIR ?= ${{.CURDIR}}
PATCH := $(CURDIR)/../debian/tools/gitapply.sh
APPLY = (cd "$(DESTDIR)" && $(PATCH))
APPLY_FILE = @echo "Applying $(1)"; $(APPLY) < "$(CURDIR)/$(1)"
#
# This Makefile understands the following targets:
#
# install (default): apply patches to directory provided by DESTDIR
# install-git: as above, but use 'git am' to apply the patches
# series: create a 'series' file containing the patch order
# clean: delete autogenerated and temporary files
#
PATCHLIST := \
{patchlist}
.PHONY: install
install: $(PATCHLIST)
cat *.ok | sort | $(CURDIR)/../debian/tools/patchlist.sh | $(APPLY)
cd $(DESTDIR) && autoreconf -f
cd $(DESTDIR) && ./tools/make_requests
.PHONY: install-git
install-git: PATCH := git am
install-git: install
series: APPLY_FILE = @echo "$(1)" >> series
series: $(PATCHLIST)
@cat *.ok | sort | $(CURDIR)/../debian/tools/patchlist.sh > patchlist.diff
@echo "patchlist.diff" >> series
@( \
echo ""; \
echo "The 'series' file was created in current directory. Please note that"; \
echo "'patchlist.diff' is autogenerated based on your selection of patches and not"; \
echo "included in this repository - keep in mind to update it on every release."; \
echo ""; \
echo "Moreover, depending on which patches you have selected, you will have to run"; \
echo "'autoreconf -f' and/or './tools/make_requests' after applying them."; \
echo ""; \
binary=0; \
while IFS= read -r line; do \
if grep -q "^GIT binary patch" "$$line"; then \
binary=1; break; \
fi \
done < series; \
if [ "$$binary" -ne 0 ]; then \
echo "The following files contain binary patches and cannot be applied with the"; \
echo "regular 'patch' commandline tool:"; \
echo ""; \
while IFS= read -r line; do \
grep -q "^GIT binary patch" "$$line" && echo "$$line"; \
done < series; \
echo ""; \
echo "Please use 'git apply' or '../debian/tools/gitapply.sh' from this repository."; \
echo ""; \
fi \
)
.PHONY: clean
clean:
rm -f series patchlist.diff
rm -f *.ok

View File

@@ -1,26 +1,25 @@
What is Wine Staging?
---------------------
=====================
**Warning: Do not report bugs at bugs.winehq.org when using this version!
Please take a look [here](http://bugs.wine-staging.com) for more information
about how to report bugs.**
**Wine Staging** (formerly wine-compholio) is a special wine version containing
bug fixes and features, which are not yet available in regular wine versions.
The idea of Wine Staging is to provide new features faster to end users and to
bug fixes and features that are not yet available in regular wine versions. The
idea behind Wine Staging is to provide new features faster to end users and to
give developers the possibility to discuss and improve their patches before
they are sent upstream. We also intend to create a community of wine developers
to share experience and to make it easier for beginners to start hacking on
wine. More information about Wine Staging can also be found on our website
[wine-staging.com](http://wine-staging.com).
wine.
Although we are reviewing and testing all patches before adding them, you may
encounter additional bugs, which are not present in vanilla wine. Make sure to
report such issues in our bug tracker instead of winehq.org so that we can try
to solve them in future versions. Thanks!
Although we are reviewing all patches before adding them, you may encounter
additional bugs, which are not present in regular wine. Make sure to report
such issues in our bug tracker instead of winehq.org so that we can try to
solve them in future versions. Thanks!
How to install and use Wine Staging
-----------------------------------
===================================
Ready-to-use packages for Wine Staging are available for a variety
of different Linux distributions directly for download. Just follow the
@@ -37,7 +36,7 @@ Wine. All those differences are also documented on the
Included bug fixes and improvements
-----------------------------------
===================================
{fixes}

View File

@@ -115,27 +115,14 @@ if [ "$nogit" -eq 0 ] && command -v git >/dev/null 2>&1; then
fi
# Detect BSD - we check this first to error out as early as possible
if gzip -V 2>&1 | grep -q "BSD"; then
if gzip -V 2>&1 | grep "BSD" &> /dev/null; then
echo "This script is not compatible with *BSD utilities. Please install git," >&2
echo "which provides the same functionality and will be used instead." >&2
exit 1
fi
# Check if GNU Awk is available
if ! command -v gawk >/dev/null 2>&1; then
if ! awk -V 2>/dev/null | grep -q "GNU Awk"; then
echo "This script requires GNU Awk (or alternatively git) to work properly." >&2
exit 1
fi
gawk()
{
awk "$@"
}
fi
# Check for missing depdencies
for dependency in gawk cut dd du grep gzip hexdump patch sha1sum; do
for dependency in awk cut dd du grep gzip hexdump patch sha1sum; do
if ! command -v "$dependency" >/dev/null 2>&1; then
echo "Missing dependency: $dependency - please install this program and try again." >&2
exit 1
@@ -282,7 +269,7 @@ fi
# Go through the different patch sections
lastoffset=1
for offset in $(gawk '/^diff --git /{ print FNR; }' "$tmpfile"); do
for offset in $(awk '/^diff --git /{ print FNR; }' "$tmpfile"); do
# Check part between end of last patch and start of current patch
if [ "$lastoffset" -gt "$offset" ]; then
@@ -296,7 +283,7 @@ for offset in $(gawk '/^diff --git /{ print FNR; }' "$tmpfile"); do
# Find out the size of the patch header
tmpoffset=$((offset + 1))
tmpoffset=$(sed -n "$tmpoffset,\$ p" "$tmpfile" | gawk "$awk_eof_header")
tmpoffset=$(sed -n "$tmpoffset,\$ p" "$tmpfile" | awk "$awk_eof_header")
hdroffset=$((offset + tmpoffset))
# Parse all important fields of the header
@@ -353,7 +340,7 @@ for offset in $(gawk '/^diff --git /{ print FNR; }' "$tmpfile"); do
if [ "$patch_is_binary" -eq 0 ]; then
# Find end of textual patch
tmpoffset=$(sed -n "$hdroffset,\$ p" "$tmpfile" | gawk "$awk_eof_textpatch")
tmpoffset=$(sed -n "$hdroffset,\$ p" "$tmpfile" | awk "$awk_eof_textpatch")
lastoffset=$((hdroffset + tmpoffset - 1))
# Apply textual patch
@@ -383,7 +370,7 @@ for offset in $(gawk '/^diff --git /{ print FNR; }' "$tmpfile"); do
fi
# Find end of binary patch
tmpoffset=$(sed -n "$hdroffset,\$ p" "$tmpfile" | gawk "$awk_eof_binarypatch")
tmpoffset=$(sed -n "$hdroffset,\$ p" "$tmpfile" | awk "$awk_eof_binarypatch")
lastoffset=$((hdroffset + tmpoffset - 1))
# Special case - deleting the whole file
@@ -406,7 +393,7 @@ for offset in $(gawk '/^diff --git /{ print FNR; }' "$tmpfile"); do
# Decode base85 and gzip compression
tmpoffset=$((lastoffset - 1))
sed -n "$hdroffset,$tmpoffset p" "$tmpfile" | gawk "$awk_decode_b85" | gzip -dc > "$literal_tmpfile" 2>/dev/null
sed -n "$hdroffset,$tmpoffset p" "$tmpfile" | awk "$awk_decode_b85" | gzip -dc > "$literal_tmpfile" 2>/dev/null
if [ "$patch_binary_size" -ne "$(filesize "$literal_tmpfile")" ]; then
rm "$literal_tmpfile"
abort "Uncompressed binary patch has wrong size."
@@ -441,7 +428,7 @@ for offset in $(gawk '/^diff --git /{ print FNR; }' "$tmpfile"); do
patch_binary_complete=1
else break; fi
done < <(hexdump -v -e '32/1 "%02X" "\n"' "$delta_tmpfile" | gawk "$awk_decode_binarypatch")
done < <(hexdump -v -e '32/1 "%02X" "\n"' "$delta_tmpfile" | awk "$awk_decode_binarypatch")
rm "$delta_tmpfile"

View File

@@ -32,11 +32,9 @@ usage()
echo "Configuration:"
echo " DESTDIR=path Specify the path to the wine source tree"
echo " --all Select all patches"
echo " --force-autoconf Run autoreconf and tools/make_requests after each patch"
echo " --help Display this help and exit"
echo " --no-patchlist Do not apply patchlist (needed for 'wine --patches')"
echo " --no-autoconf Do not run autoreconf and tools/make_requests"
echo " --version Show version information"
echo " -W patchset Exclude a specific patchset"
echo ""
echo "Backends:"
@@ -48,17 +46,6 @@ usage()
echo ""
}}
# Show version information
version()
{{
echo "Wine Staging {latest_staging_version}"
echo "Copyright (C) 2014-2015 the Wine Staging project authors."
echo ""
echo "Patchset to be applied on upstream Wine:"
echo " commit {latest_wine_commit}"
echo ""
}}
# Critical error, abort
abort()
{{
@@ -76,11 +63,11 @@ warning()
# Default settings
patch_enable_all 0
category_enable_all 0
enable_patchlist=1
enable_autoconf=1
patchlist="/dev/null"
backend="patch"
enable=1
# Find location of patches
patchdir="$(dirname "$(readlink -f "$0")")"
@@ -98,6 +85,16 @@ if test "$#" -eq 0; then
fi
while test "$#" -gt 0; do
if patch_enable "$1" "$enable"; then
shift
enable=1
continue
fi
if test "$enable" -ne 1; then
abort "Wrong use of -W commandline argument, expected patchname."
fi
case "$1" in
DESTDIR=*)
DESTDIR="${{1#*=}}"
@@ -114,11 +111,6 @@ while test "$#" -gt 0; do
shift
;;
--force-autoconf)
enable_autoconf=2
shift
;;
--help)
usage
exit 0
@@ -134,30 +126,21 @@ while test "$#" -gt 0; do
shift
;;
--version)
version
exit 0
;;
-W)
# Disable patchset
if ! patch_enable "$2" 2; then
abort "Wrong usage of -W commandline argument, expected patchname."
fi
shift
enable=2
shift
;;
*)
# Enable patchset
if ! patch_enable "$1" 1; then
abort "Unknown commandline argument $1."
fi
shift
;;
abort "Unknown commandline argument $1"
exit 1
esac
done
if test "$enable" -ne 1; then
abort "Missing argument for -W, expected patchname."
fi
# Determine DESTDIR if not explicitly specified
if test -z "$DESTDIR" -a -f ./tools/make_requests; then
DESTDIR="$(pwd)"
@@ -171,85 +154,6 @@ if ! cd "$DESTDIR"; then
abort "Unable to change directory to $DESTDIR."
fi
# Helper to update configure / the wineserver protocol if required
if ! command -v diff >/dev/null 2>&1 ||
! command -v grep >/dev/null 2>&1 ||
! command -v cmp >/dev/null 2>&1; then
update_configure()
{{
autoreconf -f
}}
update_protocol()
{{
./tools/make_requests
}}
else
update_configure()
{{
_file="./configure"
if ! cp -a "$_file" "$_file.old"; then
abort "failed to create $_file.old"
fi
if ! autoreconf -f; then
rm "$_file.old"
unset _file
return 1
fi
# Shifting by 62 bits is undefined behaviour when off_t is 32-bit, see also
# https://launchpad.net/ubuntu/+source/autoconf/2.69-6 - the bug is still
# present in some other distros (including Archlinux).
_large_off_old="^#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))$"
_large_off_new="#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))"
sed -i'' -e "s|$_large_off_old|$_large_off_new|g" "$_file"
unset _large_off_old _large_off_new
# Restore original timestamp when nothing changed
if ! cmp "$_file.old" "$_file" >/dev/null; then
rm "$_file.old"
else
mv "$_file.old" "$_file"
fi
unset _file
return 0
}}
update_protocol()
{{
_file="./include/wine/server_protocol.h"
if ! cp -a "$_file" "$_file.old"; then
abort "failed to create $_file.old"
fi
if ! ./tools/make_requests; then
rm "$_file.old"
unset _file
return 1
fi
# Restore original timestamp when nothing changed
if diff -u "$_file.old" "$_file" |
grep -v "^[+-]#define SERVER_PROTOCOL_VERSION" |
grep -v "^\(+++\|---\)" | grep -q "^[+-]"; then
rm "$_file.old"
else
mv "$_file.old" "$_file"
fi
unset _file
return 0
}}
fi
# Most backends will try to use git, either directly or indirectly.
# Unfortunately this does not work when "$DESTDIR" points to a
# subdirectory of a git tree, which has the effect that no patches
@@ -268,15 +172,10 @@ if test "$backend" = "patch"; then
gitapply_args=""
fi
if test "$enable_autoconf" -gt 1; then
warning "Ignoring commandline argument --force-autoconf."
enable_autoconf=1
fi
patch_apply_file()
patch_apply_file ()
{{
echo "Applying $1"
if ! "$patchdir/gitapply.sh" $gitapply_args < "$1"; then
if ! "$patchdir/../debian/tools/gitapply.sh" $gitapply_args < "$1"; then
abort "Failed to apply patch, aborting!"
fi
}}
@@ -297,25 +196,18 @@ elif test "$backend" = "epatch"; then
abort "Shell functions epatch/ebegin/eend not found. You have to source this script from your ebuild."
fi
if test "$enable_autoconf" -gt 1; then
warning "Ignoring commandline argument --force-autoconf."
enable_autoconf=1
fi
patch_apply_file()
patch_apply_file ()
{{
_shortname="$(basename "$1")"
shortname="$(basename "$1")"
if grep -q "^GIT binary patch" "$1"; then
ebegin "Applying $_shortname"
if ! "$patchdir/gitapply.sh" $gitapply_args < "$1"; then
ebegin "Applying $shortname"
"$patchdir/../debian/tools/gitapply.sh" $gitapply_args < "$1" || \
die "Failed Patch: $1!"
fi
eend
else
epatch "$1" # epatch calls die upon failure
fi
unset _shortname
}}
# GIT backend - apply patches using 'git am'
@@ -325,44 +217,12 @@ elif test "$backend" = "git" -o "$backend" = "git-am"; then
abort "Backend 'git-am' not possible when DESTDIR points to a git subdirectory."
fi
patch_apply_file()
patch_apply_file ()
{{
echo "Applying $1"
if ! git am "$1"; then
abort "Failed to apply patch, aborting!"
fi
if test "$enable_autoconf" -gt 1; then
_do_commit=0
# Run 'autoreconf -f' if required
if git show --pretty=format: --name-only | grep -q "^\(configure.ac\|aclocal.m4\)$"; then
if ! update_configure; then
abort "'autoreconf -f' failed."
fi
git add ./configure
git add ./include/config.h.in
_do_commit=1
fi
# Run './tools/make_requests' if required
if git show --pretty=format: --name-only | grep -q "^server/"; then
if ! update_protocol; then
abort "'./tools/make_requests' failed."
fi
git add ./include/wine/server_protocol.h
git add ./server/trace.c
git add ./server/request.h
_do_commit=1
fi
if test "$_do_commit" -ne 0; then
if ! git commit --amend --reuse-message HEAD; then
abort "Failed to include autogenerated changes in commit."
fi
fi
unset _do_commit
fi
}}
# Git apply backend
@@ -372,12 +232,7 @@ elif test "$backend" = "git-apply"; then
abort "Backend 'git-apply' not possible when DESTDIR points to a git subdirectory."
fi
if test "$enable_autoconf" -gt 1; then
warning "Ignoring commandline argument --force-autoconf."
enable_autoconf=1
fi
patch_apply_file()
patch_apply_file ()
{{
echo "Applying $1"
if ! git apply "$1"; then
@@ -397,21 +252,20 @@ elif test "$backend" = "stg"; then
enable_patchlist=0
enable_autoconf=0
patch_apply_file()
patch_apply_file ()
{{
echo "Applying $1"
_shortname="$(basename "$1")"
if ! echo "staging/$_shortname" | cat - "$1" | stg import; then
shortname="$(basename "$1")"
if ! echo "staging/$shortname" | cat - "$1" | stg import; then
abort "Failed to apply patch, aborting!"
fi
unset _shortname
}}
else
abort "Selected backend $backend not supported."
fi
patch_apply()
patch_apply ()
{{
patch_apply_file "$patchdir/$1"
}}
@@ -483,12 +337,13 @@ EOF
fi
if test "$enable_autoconf" -eq 1; then
if ! update_configure; then
if ! autoreconf -f; then
abort "'autoreconf -f' failed."
fi
if ! update_protocol; then
if ! ./tools/make_requests; then
abort "'./tools/make_requests' failed."
fi
fi
# Success
exit 0

View File

@@ -43,13 +43,10 @@ import xml.dom.minidom
_devnull = open(os.devnull, 'wb')
# Cached information to speed up patch dependency checks
latest_wine_commit = None
latest_staging_version = None
cached_patch_result = {}
latest_wine_commit = None
cached_patch_result = {}
class config(object):
path_cache = ".patchupdate.cache"
path_patches = "patches"
path_changelog = "debian/changelog"
path_wine = "debian/tools/wine"
@@ -69,14 +66,12 @@ class PatchUpdaterError(RuntimeError):
class PatchSet(object):
def __init__(self, name, directory):
self.name = name
self.is_category = False
self.variable = None
self.directory = directory
self.fixes = []
self.changes = []
self.disabled = False
self.ifdefined = None
self.categories = []
self.files = []
self.patches = []
@@ -120,9 +115,8 @@ def _load_dict(filename):
def _save_dict(filename, value):
"""Save a Python dictionary object to a file."""
with open("%s.new" % filename, "wb") as fp:
with open(filename, "wb") as fp:
pickle.dump(value, fp, pickle.HIGHEST_PROTOCOL)
os.rename("%s.new" % filename, filename)
def _sha256(fp):
"""Calculate sha256sum from a file descriptor."""
@@ -179,13 +173,11 @@ def _read_changelog():
r = re.match("^([a-zA-Z0-9][^(]*)\((.*)\) ([^;]*)", line)
if r: yield (r.group(1).strip(), r.group(2).strip(), r.group(3).strip())
def _latest_staging_version(only_stable=False):
def _stable_compholio_version():
"""Get version number of the latest stable release."""
for package, version, distro in _read_changelog():
if distro.lower() != "unreleased":
return version
elif not only_stable:
return "%s (unreleased)" % version
def _latest_wine_commit(commit=None):
"""Get latest wine commit."""
@@ -193,7 +185,7 @@ def _latest_wine_commit(commit=None):
raise PatchUpdaterError("Please create a symlink to the wine repository in %s" % config.path_wine)
if commit is None:
commit = subprocess.check_output(["git", "rev-parse", "origin/master"], cwd=config.path_wine).strip()
assert len(commit) == 40 and commit == commit.lower()
assert len(commit) == 40
return commit
def enum_directories(revision, path):
@@ -235,7 +227,6 @@ def read_patchset(revision = None):
all_patches = {}
name_to_id = {}
all_bugids = set()
categories = {}
# Read in sorted order (to ensure created Makefile doesn't change too much)
for name, directory in sorted(enum_directories(revision, config.path_patches)):
@@ -300,12 +291,6 @@ def read_patchset(revision = None):
if i != j and any([fnmatch.fnmatch(f, val) for f in other_patch.modified_files]):
patch.auto_depends.add(j)
elif key == "category":
val = "category-%s" % val
if name_to_id.has_key(val):
raise PatchUpdaterError("Category name in definition file %s collides with patchset %s" % (filename, val))
patch.categories.append(val)
elif key == "fixes":
r = re.match("^[0-9]+$", val)
if r:
@@ -330,30 +315,12 @@ def read_patchset(revision = None):
elif revision is None:
print "WARNING: Ignoring unknown command in definition file %s: %s" % (filename, line)
# If patch is not disabled then finally add it to the category
if not patch.disabled:
for category in patch.categories:
if not categories.has_key(category):
categories[category] = set()
categories[category].add(i)
# Add virtual targets for all the categories
for category, indices in categories.iteritems():
patch = PatchSet(category, directory)
patch.is_category = True
patch.depends = indices
i = next(unique_id)
all_patches[i] = patch
name_to_id[name] = i
# To simplify the task of keeping the bug list up-to-date, list all bugs
# which might require attention.
if revision is None:
once = True
for bugid, bug in sorted(_winebugs_query(all_bugids).items()):
if bug['bug_status'] not in ["UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED"]:
if bug['bug_status'] not in ["UNCONFIRMED", "NEW", "REOPENED"]:
if once:
print ""
print "WARNING: The following bugs might require attention:"
@@ -397,7 +364,7 @@ def contains_binary_patch(all_patches, indices, filename):
return False
def get_wine_file(filename):
"""Return the content of a file."""
"""Return the hash and optionally the content of a file."""
entry = "%s:%s" % (latest_wine_commit, filename)
result = tempfile.NamedTemporaryFile()
try:
@@ -534,7 +501,6 @@ def generate_script(all_patches):
modified_files[f].append(i)
# Check dependencies
dependency_cache = _load_dict(config.path_cache)
pool = multiprocessing.pool.ThreadPool(processes=4)
try:
for filename, indices in modified_files.iteritems():
@@ -547,76 +513,47 @@ def generate_script(all_patches):
continue
original_content = get_wine_file(filename)
original_hash = _sha256(original_content)
selected_patches = select_patches(all_patches, indices, filename)
# Generate a unique id based on the original content, the selected patches
# and the dependency information. Since this information only has to be compared
# we can throw it into a single hash.
m = hashlib.sha256()
m.update(original_hash)
for i in indices:
m.update("P%s" % selected_patches[i][0])
for j in indices:
if causal_time_smaller(all_patches[j].verify_time, all_patches[i].verify_time):
m.update("D%s" % selected_patches[j][0])
unique_hash = m.digest()
# Skip checks if it matches the information from the cache
try:
if dependency_cache[filename] == unique_hash:
continue
except KeyError:
pass
# Show a progress bar while applying the patches - this task might take some time
chunk_size = 20
with progressbar.ProgressBar(desc=filename, total=2 ** len(indices) / chunk_size) as progress:
def test_apply(current):
set_apply = [(i, all_patches[i]) for i in current]
set_skip = [(i, all_patches[i]) for i in indices if i not in current]
def test_apply(bitstring):
set_apply = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if u]
set_skip = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if not u]
# Check if there is any patch2 which depends directly or indirectly on patch1.
# If this is the case we found an impossible situation, we can be skipped in this test.
for i, patch1 in set_apply:
for j, patch2 in set_skip:
if causal_time_smaller(patch2.verify_time, patch1.verify_time):
return None # we can skip this test
return True # we can skip this test
try:
original = original_content
for i, _ in set_apply:
for i, patch in set_apply:
original = patchutils.apply_patch(original, selected_patches[i][1], fuzz=0)
except patchutils.PatchApplyError:
return current
return False
return None # everything is fine
return True # everything is fine
def test_apply_seq(current_list):
for current in current_list:
failed = test_apply(current)
if failed is not None:
return failed
return None
def test_apply_seq(bitstrings):
for bitstring in bitstrings:
if not test_apply(bitstring):
return False
return True
iterables = []
for i in xrange(0, len(indices) + 1):
iterables.append(itertools.combinations(indices, i))
it = _split_seq(itertools.chain(*iterables), chunk_size)
for k, failed in enumerate(pool.imap_unordered(test_apply_seq, it)):
if failed is not None:
it = _split_seq(itertools.product([0,1], repeat=len(indices)), chunk_size)
for k, res in enumerate(pool.imap_unordered(test_apply_seq, it)):
if not res:
progress.finish("<failed to apply>")
raise PatchUpdaterError("Changes to file %s don't apply: %s" %
(filename, ", ".join([all_patches[i].name for i in failed])))
(filename, ", ".join([all_patches[i].name for i in indices])))
progress.update(k)
# Update the dependency cache
dependency_cache[filename] = unique_hash
finally:
pool.close()
_save_dict(config.path_cache, dependency_cache)
# Generate code for helper functions
lines = []
@@ -624,23 +561,11 @@ def generate_script(all_patches):
lines.append("patch_enable_all ()\n")
lines.append("{\n")
for i, patch in sorted([(i, all_patches[i]) for i in resolved], key=lambda x:x[1].name):
if patch.is_category: continue
patch.variable = "enable_%s" % patch.name.replace("-","_").replace(".","_")
lines.append("\t%s=\"$1\"\n" % patch.variable)
lines.append("}\n")
lines.append("\n")
lines.append("# Enable or disable all categories\n")
lines.append("category_enable_all ()\n")
lines.append("{\n")
for i, patch in sorted([(i, all_patches[i]) for i in resolved], key=lambda x:x[1].name):
if not patch.is_category: continue
patch.variable = "enable_%s" % patch.name.replace("-","_").replace(".","_")
lines.append("\t%s=\"$1\"\n" % patch.variable)
lines.append("}\n")
lines.append("\n")
lines.append("# Enable or disable a specific patchset/category\n")
lines.append("# Enable or disable a specific patchset\n")
lines.append("patch_enable ()\n")
lines.append("{\n")
lines.append("\tcase \"$1\" in\n")
@@ -674,11 +599,6 @@ def generate_script(all_patches):
# Generate code for applying all patchsets
lines = []
for i, patch in [(i, all_patches[i]) for i in resolved]:
# Categories do not have any files associated, so just skip over
if len(patch.files) == 0:
continue
lines.append("# Patchset %s\n" % patch.name)
lines.append("# |\n")
@@ -709,16 +629,14 @@ def generate_script(all_patches):
with open(config.path_template_script) as template_fp:
template = template_fp.read()
with open(config.path_script, "w") as fp:
fp.write(template.format(latest_staging_version=_latest_staging_version(),
latest_wine_commit=latest_wine_commit,
patch_helpers="".join(lines_helpers).rstrip("\n"),
fp.write(template.format(patch_helpers="".join(lines_helpers).rstrip("\n"),
patch_resolver="".join(lines_resolver).rstrip("\n"),
patch_apply="".join(lines_apply).rstrip("\n")))
# Add changes to git
subprocess.call(["git", "add", config.path_script])
def generate_markdown(all_patches, stable_patches):
def generate_markdown(all_patches, stable_patches, stable_compholio_version):
"""Generate README.md including information about specific patches and bugfixes."""
def _format_bug(mode, bugid, bugname):
@@ -738,20 +656,11 @@ def generate_markdown(all_patches, stable_patches):
# Compare with fixes for latest stable version
for _, patch in stable_patches.iteritems():
for bugid, bugname in patch.fixes:
if bugid is not None and all_fixes.has_key(bugid):
all_fixes[bugid][0] = 0
elif all_fixes.has_key(bugname):
all_fixes[bugname][0] = 0
elif bugid is None:
for k, v in all_fixes.iteritems():
if v[2] != bugname: continue
if v[1] is None: continue
all_fixes[v[1]][0] = 0
break
else:
all_fixes[bugname] = [-1, None, bugname]
key = bugid if bugid is not None else bugname
if all_fixes.has_key(key):
all_fixes[key][0] = 0
else:
all_fixes[bugid] = [-1, bugid, bugname]
all_fixes[key] = [-1, bugid, bugname]
# Generate lists for all new and old fixes
new_fixes = [(mode, bugid, bugname) for dummy, (mode, bugid, bugname) in
@@ -767,20 +676,13 @@ def generate_markdown(all_patches, stable_patches):
# Generate information for current version
lines = []
if len(new_fixes):
lines.append("**Bug fixes and features included in the next upcoming release [%d]:**" % len(new_fixes))
lines.append("**Bugfixes and features included in the next upcoming release [%d]:**" % len(new_fixes))
lines.append("")
for mode, bugid, bugname in sorted(new_fixes, key=lambda x: x[2]):
lines.append(_format_bug(mode, bugid, bugname))
lines.append("")
lines.append("")
lines.append("**Bug fixes and features in Wine Staging %s [%d]:**" % (latest_staging_version, len(old_fixes)))
lines.append("")
lines.append("*Note: The following list only contains features and bug fixes which are not")
lines.append("yet available in vanilla Wine. They are removed from the list as soon as they")
lines.append("are included upstream. The list also includes features and fixes from previous")
lines.append("releases, take a look at the")
lines.append("[changelog](https://github.com/wine-compholio/wine-staging/blob/master/debian/changelog)")
lines.append("for more details.*")
lines.append("**Bugs fixed in Wine Staging %s [%d]:**" % (stable_compholio_version, len(old_fixes)))
lines.append("")
for mode, bugid, bugname in sorted(old_fixes, key=lambda x: x[2]):
lines.append(_format_bug(mode, bugid, bugname))
@@ -794,25 +696,6 @@ def generate_markdown(all_patches, stable_patches):
# Add changes to git
subprocess.call(["git", "add", config.path_README_md])
def wrap_changelog():
lines = []
with open(config.path_changelog) as fp:
for line in fp:
if line.startswith(" *") and len(line.rstrip("\n")) > 80:
wrapped = textwrap.wrap(line[3:].strip(), 80 - 4)
lines.append(" * %s\n" % "\n ".join(wrapped))
else:
lines.append(line)
with open(config.path_changelog, "w") as fp:
for line in lines:
fp.write(line)
# Add changes to git
subprocess.call(["git", "add", config.path_changelog])
if __name__ == "__main__":
# Hack to avoid KeyboardInterrupts on different threads
@@ -821,23 +704,19 @@ if __name__ == "__main__":
raise RuntimeError("CTRL+C pressed")
signal.signal(signal.SIGINT, _sig_int)
tools_directory = os.path.dirname(os.path.realpath(__file__))
os.chdir(os.path.join(tools_directory, "./../.."))
try:
# Get information about Wine and Staging version
# Get information about Wine and Compholio version
latest_wine_commit = _latest_wine_commit(sys.argv[1] if len(sys.argv) >= 2 else None)
latest_staging_version = _latest_staging_version(only_stable=True)
stable_compholio_version = _stable_compholio_version()
# Read current and stable patches
all_patches = read_patchset()
stable_patches = read_patchset(revision="v%s" % latest_staging_version)
stable_patches = read_patchset(revision="v%s" % stable_compholio_version)
generate_ifdefined(all_patches)
generate_script(all_patches)
generate_markdown(all_patches, stable_patches)
wrap_changelog()
generate_markdown(all_patches, stable_patches, stable_compholio_version)
except PatchUpdaterError as e:
print ""

View File

@@ -305,8 +305,6 @@ def read_patch(filename):
if r is not None: return "%s: %s" % (r.group(1), r.group(4)), int(r.group(3))
r = re.match("^(.*) +%s$" % version, subject, re.IGNORECASE)
if r is not None: return r.group(1).strip(), int(r.group(3))
r = re.match("^(.*)\\(resend\\)$", subject, re.IGNORECASE)
if r is not None: return r.group(1).strip(), 1
return subject, 1
header = {}

View File

@@ -29,14 +29,9 @@ import termios
def _sig_winch(signum=None, frame=None):
"""Signal handler for SIGWINCH."""
global _term_width
try:
h, w, hp, wp = struct.unpack('HHHH', fcntl.ioctl(sys.stdout.fileno(),
termios.TIOCGWINSZ, struct.pack('HHHH', 0, 0, 0, 0)))
_term_width = w
except IOError:
# ignore 'IOError: [Errno 25] Inappropriate ioctl for device',
# which can occur when resizing the window while the output is redirected
pass
h, w, hp, wp = struct.unpack('HHHH', fcntl.ioctl(sys.stdout.fileno(),
termios.TIOCGWINSZ, struct.pack('HHHH', 0, 0, 0, 0)))
_term_width = w
try:
_sig_winch()

View File

@@ -1,3 +0,0 @@
# Wine preloader needs static linking to reserve memory and work properly, see
# the comments at loader/preloader.c for a fuller explanation
wine-staging-amd64 binary: statically-linked-binary opt/wine-staging/bin/wine64-preloader

View File

@@ -1,3 +0,0 @@
# Wine preloader needs static linking to reserve memory and work properly, see
# the comments at loader/preloader.c for a fuller explanation
wine-staging-i386 binary: statically-linked-binary opt/wine-staging/bin/wine-preloader

View File

@@ -1 +0,0 @@
Category: stable

View File

@@ -1,4 +1,4 @@
From 267583000e05b5ed8da1122df0830556fe7e69f6 Mon Sep 17 00:00:00 2001
From aa76ae0448583e87dbe7f374101eb5b20d55dea8 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Fri, 8 Aug 2014 19:33:14 -0600
Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled.
@@ -12,10 +12,10 @@ Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled.
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index f9cb71c..81f6131 100644
index 0c10ffa..2f35992 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -11967,7 +11967,7 @@ static void yuv_layout_test(void)
@@ -11161,7 +11161,7 @@ static void yuv_layout_test(void)
IDirect3D9 *d3d;
D3DCOLOR color;
DWORD ref_color;
@@ -25,7 +25,7 @@ index f9cb71c..81f6131 100644
IDirect3DDevice9 *device;
ULONG refcount;
diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c
index 7a1d408..649c866 100644
index d2a61fa..bb7ac1c 100644
--- a/dlls/netapi32/netapi32.c
+++ b/dlls/netapi32/netapi32.c
@@ -779,7 +779,7 @@ static NET_API_STATUS share_info_to_samba( DWORD level, const BYTE *buf, unsigne
@@ -38,7 +38,7 @@ index 7a1d408..649c866 100644
if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY;
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 14eac39..ebff9f1 100644
index e32cb54..ddf972d 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -359,7 +359,7 @@ static WCHAR *construct_device_id(EDataFlow flow, const WCHAR *chunk1, const cha
@@ -51,18 +51,18 @@ index 14eac39..ebff9f1 100644
static const WCHAR dashW[] = {' ','-',' ',0};
static const size_t dashW_len = (sizeof(dashW) / sizeof(*dashW)) - 1;
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index f69a2ce..00232a5 100644
index f3e921c..fa64436 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -6706,7 +6706,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
@@ -5834,7 +5834,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
GLuint vs_id = 0;
GLuint gs_id = 0;
GLuint ps_id = 0;
- struct list *ps_list, *vs_list;
+ struct list *ps_list = NULL, *vs_list = NULL;
WORD attribs_map;
struct wined3d_string_buffer *tmp_name;
if (!(context->shader_update_mask & (1 << WINED3D_SHADER_TYPE_VERTEX)))
{
diff --git a/tools/makedep.c b/tools/makedep.c
index 54aab45..103422e 100644
--- a/tools/makedep.c
@@ -77,5 +77,5 @@ index 54aab45..103422e 100644
expand = get_make_variable( make, name );
if (!expand) return NULL;
--
2.4.2
2.2.1

View File

@@ -1,4 +1,4 @@
From 598daa857778080524e3de4a5668a834ab084564 Mon Sep 17 00:00:00 2001
From 948a8706d6045fb6f8f624072bfa6ab97e91dc16 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:44:31 +0200
Subject: kernel32: Add winediag message to show warning, that this isn't
@@ -9,7 +9,7 @@ Subject: kernel32: Add winediag message to show warning, that this isn't
1 file changed, 10 insertions(+)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 2c8074b..70b2579 100644
index 0a087ab..1052a79 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -65,6 +65,7 @@
@@ -27,15 +27,15 @@ index 2c8074b..70b2579 100644
+ /* Wine developers don't like it, when bug are reported with Wine versions containing our patches. */
+ if (CreateEventA(0, 0, 0, "__winestaging_warn_event") && GetLastError() != ERROR_ALREADY_EXISTS)
+ {
+ FIXME_(winediag)("Wine Staging %s is a testing version containing experimental patches.\n", wine_get_version());
+ FIXME_(winediag)("Wine Staging is a testing version containing experimental patches.\n");
+ FIXME_(winediag)("Please report bugs at http://bugs.wine-staging.com (instead of winehq.org).\n");
+ }
+ else
+ WARN_(winediag)("Wine Staging %s is a testing version containing experimental patches.\n", wine_get_version());
+ WARN_(winediag)("Wine Staging is a testing version containing experimental patches.\n");
+
SetLastError( 0 ); /* clear error code */
if (peb->BeingDebugged) DbgBreakPoint();
return call_process_entry( peb, entry );
--
2.4.1
2.1.3

Some files were not shown because too many files have changed in this diff Show More