Compare commits

...

305 Commits

Author SHA1 Message Date
Sebastian Lackner
1e1522ed25 Release 1.7.32. 2014-11-30 15:25:01 +01:00
Sebastian Lackner
abfee2d1b4 README.md: Update URLs. 2014-11-30 04:00:14 +01:00
Sebastian Lackner
9a82696680 Move DEVELOPERS.md to the Wiki. 2014-11-30 03:56:52 +01:00
Sebastian Lackner
d7a1c87111 Added patch to fix possible invalid memory access in wordpad. 2014-11-30 03:28:18 +01:00
Sebastian Lackner
2e2178f595 Added patch to fix passing of unicode environment from msvcrt to CreateProcessW. 2014-11-30 03:11:04 +01:00
Sebastian Lackner
90bd4d997c Added patch to fix handling of empty section and key name for profile files. 2014-11-30 02:39:37 +01:00
Sebastian Lackner
557a9e9899 Added patch to fix ordering of IP addresses by metric if two addresses have the same metric. 2014-11-30 00:20:58 +01:00
Sebastian Lackner
50794f220a Added patch to implement semi-stub for psapi/kernel32 K32EnumProcessModulesEx. 2014-11-29 23:04:33 +01:00
Sebastian Lackner
bb57db5f98 Added patch to change winedbg bug reporting URL to bugs.wine-staging.com. 2014-11-29 21:08:08 +01:00
Sebastian Lackner
4afa857aee Added patchset to fix copy and paste errors and ugly coding style in recently committed ws32 patch. 2014-11-29 11:30:04 +01:00
Sebastian Lackner
db0fd400e4 patchupdate.py: Various speed optimizations and improvements, removed several patches (accepted upstream). 2014-11-29 09:18:17 +01:00
Michael MĂĽller
e6d0cbe554 Remove old patches from api-ms-win-core-Stubs. 2014-11-26 22:06:56 +01:00
Michael MĂĽller
c17a70e03f api-ms-win-core-Stubs: Add even more stubs and add missing exports. 2014-11-26 21:57:11 +01:00
Michael MĂĽller
9d92d67b75 Added patch to implement stubs for additional api-ms-win-core-* dlls. 2014-11-26 20:47:57 +01:00
Sebastian Lackner
7f503dd5f1 Update several patches and include changes from tools/make_specfiles and tools/make_makefiles. 2014-11-26 18:30:43 +01:00
Michael MĂĽller
81ffd32566 Add DXT1 to B4G4R4A4, DXT1 to B5G5R5A1 and DXT3 to B4G4R4A4 conversion patch. 2014-11-26 14:30:52 +01:00
Sebastian Lackner
432cb9a889 ntoskrnl-Emulator: Some small style fixes. 2014-11-26 12:37:05 +01:00
Sebastian Lackner
dd4efb315a ntoskrnl-Emulator: Move logic for user shared data into separate patchset. 2014-11-26 11:02:03 +01:00
Sebastian Lackner
1979f90644 ntdll-FD_Cache: Update patch to use more efficient functions on x86_64 systems. 2014-11-26 09:13:27 +01:00
Sebastian Lackner
3a7d42fd2c Added patch to ensure wintrust resets data->pWintrustData->u.pFile->hFile after closing handle. 2014-11-25 21:29:26 +01:00
Sebastian Lackner
bb565dbad1 Added patch to fix issues with dragging layers between images in Adobe Photoshop 7.0. 2014-11-25 20:41:19 +01:00
Sebastian Lackner
e4caae5b65 Added patch to avoid sending unexpected wakeup with uninitialized cookie value. 2014-11-25 20:20:55 +01:00
Sebastian Lackner
c2bceff255 Add missing file. 2014-11-23 22:57:58 +01:00
Sebastian Lackner
2741db55bd Added patch to automatically detect if tests are running under Wine. 2014-11-23 22:52:48 +01:00
Sebastian Lackner
3b946491da Added patch to avoid failure because of missing ptrace support for Exagear. 2014-11-23 22:35:30 +01:00
Sebastian Lackner
0301a239d6 patchupdate.py: Fix escaping of some special characters. 2014-11-23 19:45:14 +01:00
Sebastian Lackner
7c3d480e56 Added patch to fix issues with write watches when using Exagear. 2014-11-22 05:52:24 +01:00
Sebastian Lackner
50b6b69053 Added patch to avoid race-conditions of async WSARecv() operations with write watches. 2014-11-22 01:52:41 +01:00
Sebastian Lackner
cc1292a1ac Removed several patches (accepted upstream). 2014-11-21 17:00:52 +01:00
Sebastian Lackner
3741c4fe33 Added patch to ensure ShowWindow avoids interthread no-op messages. 2014-11-21 07:30:26 +01:00
Sebastian Lackner
744f67198c Added patch to take abs() of vertex z coordinate as FFP fog coordinate. 2014-11-21 06:42:40 +01:00
Sebastian Lackner
3d68d500d9 ws2_32-Connect_Time: Update patch with latest attempt. 2014-11-20 22:48:23 +01:00
Sebastian Lackner
2bdc19de1a server-CreateProcess_ACLs: Rebase for latest git changes. 2014-11-20 22:47:35 +01:00
Sebastian Lackner
6a390b6b9a Merge pull request #186 (Added patch to implement exclusive mode in PulseAudio backend). 2014-11-20 07:45:43 +01:00
Mark Harmstone
41293aeb8d Added patch to implement exclusive mode in PulseAudio backend 2014-11-18 18:54:35 +00:00
Sebastian Lackner
26b52cdc49 Removed patches to avoid sending messages in FindWindowExW (accepted upstream). 2014-11-18 19:50:19 +01:00
Sebastian Lackner
cc5b91441d patchutils.py: Add '--no-backup-if-mismatch' when calling 'patch' to avoid creating backups. 2014-11-18 04:15:56 +01:00
Sebastian Lackner
d31c55702c Removed several patches (accepted upstream). 2014-11-17 15:17:34 +01:00
Sebastian Lackner
54b4500a85 Added patch to ensure dbghelp always checks for debug symbols in BINDIR. 2014-11-15 20:24:21 +01:00
Sebastian Lackner
87684b59a7 Release 1.7.31. 2014-11-15 15:37:30 +01:00
Sebastian Lackner
7e72d7770d Added patch to workaround bugs in CompareStringW (triggered by Adobe Flash). 2014-11-15 15:02:16 +01:00
Sebastian Lackner
73da458bc5 patchutils.py: Another small fix to prefer the longest matching version string. 2014-11-15 13:13:05 +01:00
Sebastian Lackner
e12216c644 patchutils.py: Fix a bug in parsing version numbers, make parser less strict in some cases. 2014-11-15 12:53:30 +01:00
Sebastian Lackner
2ec0d480e3 Added patch to avoid failing in d3dx9_mesh_OptimizeInplace because of unimplemented vertex reordering. 2014-11-15 12:30:18 +01:00
Sebastian Lackner
c9bed78b65 Update debian/changelog with recent changes. 2014-11-15 10:51:40 +01:00
Sebastian Lackner
7a419c031a Make definition files optional, move revision numbers to corresponding .patch files. 2014-11-15 10:33:43 +01:00
Sebastian Lackner
723bc23e50 patchupdate.py: Extract revision information directly from patch subject. 2014-11-15 10:01:12 +01:00
Sebastian Lackner
dc05c7f163 patchupdate.py: Change output format of 'wine --patches' to match the wine ANNOUNCE file. 2014-11-15 08:31:56 +01:00
Sebastian Lackner
972842c50e patchupdate.py: Use author information from patch files instead of definition file. 2014-11-15 06:35:26 +01:00
Sebastian Lackner
f9c1ebaa12 mshtml-sessionStorage: Remove message from README.md because the patch is currently disabled. 2014-11-15 02:31:35 +01:00
Sebastian Lackner
2789fdcece Added patch to close server fd if there is no space in thread inflight fd list. 2014-11-15 02:19:13 +01:00
Sebastian Lackner
1637f56db9 Removed several patches (accepeted upstream). 2014-11-14 11:17:24 +01:00
Sebastian Lackner
c501f9328f Added patch to fix implementation of K32GetPerformanceInfo. 2014-11-13 23:15:15 +01:00
Sebastian Lackner
917b9ce280 Removed patch for vectored continue handler stubs (accepted upstream). 2014-11-13 16:26:33 +01:00
Sebastian Lackner
82d94a776d Added patch to fix handling of invert_y in DrawTextExW. 2014-11-13 06:49:12 +01:00
Sebastian Lackner
75c5402c30 Exagear: Fix typo in patch to emulate SIDT. 2014-11-13 01:34:48 +01:00
Sebastian Lackner
a9b0616fc8 user32-FindWindowEx: Mark bug 27282 as fixed. 2014-11-12 18:04:49 +01:00
Sebastian Lackner
ed7e1530b5 Rebase patches for WS_SO_CONNECT_TIME. 2014-11-12 17:59:01 +01:00
Sebastian Lackner
693e4d185b Added patch to avoid sending window messages in FindWindowExW. 2014-11-12 07:55:50 +01:00
Sebastian Lackner
3a5f2b6be0 Added patch to avoid crashing when broken app tries to release surface although refcount is zero. 2014-11-11 22:36:19 +01:00
Sebastian Lackner
7641fa58b9 Removed patches for D3DXCreatePolygon (accepted upstream), rebased imm32-Cross_Thread_Access patches. 2014-11-11 18:36:12 +01:00
Sebastian Lackner
4b062e3f22 Added patch to return more context attributes in schan_InitializeSecurityContextW. 2014-11-11 08:55:07 +01:00
Sebastian Lackner
de353ee024 Exagear: Fix spelling error in subject of patch. 2014-11-11 08:06:52 +01:00
Sebastian Lackner
513952a066 Added patch to implement emulation SIDT instruction when using Exagear. 2014-11-11 03:28:23 +01:00
Sebastian Lackner
78784bf5d3 Added patch to initialize irp.Tail.Overlay.OriginalFileObject with stub file object. 2014-11-10 23:51:34 +01:00
Sebastian Lackner
f5cb09e9a4 ntoskrnl-Emulator: Add additional patch to emulate access to KI_USER_SHARED_DATA kernel page on x86_64. 2014-11-10 22:01:27 +01:00
Sebastian Lackner
c9da32b6b0 d3dx9_36-CreatePolygon: Update to latest version submitted to winehq (minor style fixes). 2014-11-10 19:59:44 +01:00
Sebastian Lackner
5eae92bf33 Added patch to emulate 'mov Eb, Gb' instruction on x86 processor architecture. 2014-11-10 07:36:40 +01:00
Sebastian Lackner
c3920efc17 Added patch to fix crash of winedevice when relocation entry crosses page boundary. 2014-11-10 04:09:18 +01:00
Michael MĂĽller
475485ce5b Added patch to fix crash in atof and strtod when passing NULL as string. 2014-11-08 22:56:49 +01:00
Sebastian Lackner
d7bdce7fb6 Added patch to allow NULL pointer for optional arguments of D3DXIntersectTri. 2014-11-08 19:38:13 +01:00
Sebastian Lackner
e5b7f0c052 Added patch to fix wglDescribePixelFormat when NULL is passed as pixel format descriptor. 2014-11-08 11:35:23 +01:00
Sebastian Lackner
03554ec52b ntdll-Vectored_Continue_Handler: Fix wrong prototype for RtlRemoveVectoredContinueHandler function. 2014-11-08 07:26:00 +01:00
Sebastian Lackner
b0f0338a95 Added patch with vectored continue handler functions. 2014-11-08 07:20:27 +01:00
Sebastian Lackner
8308e3a332 LICENSE.md: Replace Compholio -> Staging. 2014-11-08 07:00:38 +01:00
Sebastian Lackner
a5bc6762f1 debian: Remove outdated / deprecated [postinst|postrm|prerm] files. 2014-11-08 06:25:20 +01:00
Sebastian Lackner
90d7c40949 Added patch with stub for IoCsqInitialize. 2014-11-08 06:14:33 +01:00
Sebastian Lackner
52263be2fe Replace Compholio -> Staging in developer readme. 2014-11-07 14:24:47 +01:00
Sebastian Lackner
1aa8b412df Added patch to align texture dimensions to block size for compressed textures. 2014-11-07 14:19:10 +01:00
Sebastian Lackner
1ec6f34853 Partially removed kernel32-UTF7_Support patches (accepted upstream). 2014-11-07 14:12:27 +01:00
Sebastian Lackner
c213417376 Added patch to return correct values in GetThreadTimes function for all threads. 2014-11-07 03:34:58 +01:00
Sebastian Lackner
393eed4e68 d3dx9_36-DXTn: Don't mark bug 28851 as fixed because it still crashes. 2014-11-07 00:03:35 +01:00
Sebastian Lackner
11f1207852 patchupdate.py: Remove some dead code. 2014-11-06 18:43:35 +01:00
Sebastian Lackner
a05b7dc368 Remove several patches (accepted upstream). 2014-11-06 18:17:40 +01:00
Sebastian Lackner
8d9d2558c9 Added patch to implement DXTn support for d3dx9_36. 2014-11-06 11:08:00 +01:00
Sebastian Lackner
f6dd7940f0 ntdll-Fix_Alignment: Use DECLSPEC_ALIGN instead of __attribute__((aligned(..))). 2014-11-06 03:18:26 +01:00
Sebastian Lackner
14ae97f5a2 kernel32-GetSystemTimes: Fix invalid value passed to NtQuerySystemInformation. 2014-11-06 03:16:36 +01:00
Sebastian Lackner
677a246d22 Several minor style fixes. 2014-11-06 03:08:11 +01:00
Sebastian Lackner
6cc9038091 ole32-CoWaitForMultipleHandles: Add additional test to confirm correct behaviour of MsgWaitForMultipleObjectsEx. 2014-11-06 00:16:47 +01:00
Michael MĂĽller
653547070d Fix missing spec file change in last commit. 2014-11-05 05:20:23 +01:00
Michael MĂĽller
fdd2f4a7f3 Add patch for KeSetSystemAffinityThread stub. 2014-11-05 05:14:07 +01:00
Sebastian Lackner
1c01fe44d7 Added patch to prevent processing message events for CoWaitForMultipleHandles when APC calls are queued. 2014-11-05 00:54:45 +01:00
Sebastian Lackner
2c0583d002 Added patch with stub for NtSetLdtEntries/ZwSetLdtEntries. 2014-11-04 21:09:40 +01:00
Sebastian Lackner
a691cec6e7 Remove several patches (accepted/fixed upstream). 2014-11-04 17:11:34 +01:00
Sebastian Lackner
f66b06739e patchutils.py: Speed improvement for hunk parsing (approximately by a factor of 2).
We don't need to keep the whole line in memory, the first character is sufficient.
Moreover, exception handling is faster in python than explicitly checking for None.
2014-11-04 06:49:35 +01:00
Sebastian Lackner
92fc5f6141 Merge branch 'master' of github.com:wine-compholio/wine-staging 2014-11-04 06:05:38 +01:00
Sebastian Lackner
d260e9e7c4 d3dx9_36-CreatePolygon: Updated with feedback from Matteo Bruni. 2014-11-04 06:04:41 +01:00
slackner
d0d310a271 Merge pull request #121 from maharmstone/master
winepulse: Expose individual audio devices directly.
2014-11-04 04:52:02 +01:00
Mark Harmstone
305af53597 winepulse: expose individual audio devices directly 2014-11-04 04:42:32 +01:00
Mark Harmstone
f09106e8c4 winepulse: expose individual audio devices directly 2014-11-04 02:30:03 +00:00
Michael MĂĽller
775e8675c1 Replace wine-compholio with Wine Staging in patches. 2014-11-04 02:15:16 +01:00
Michael MĂĽller
463d01d3aa Replace Wine-compholio with Wine Staging in README. 2014-11-04 00:47:24 +01:00
Sebastian Lackner
5a51c64426 patchupdate.py: Remove unused function _winebugs_query_short_desc. 2014-11-03 21:01:07 +01:00
Sebastian Lackner
7c793eb695 Remove several patches (accepted upstream), temporarily disable mshtml patchset. 2014-11-03 20:12:34 +01:00
Sebastian Lackner
25e56dc257 Release 1.7.30. 2014-11-02 00:48:02 +01:00
Sebastian Lackner
749fc944fc Added patch to silence a few FIXMEs and for ITextSelection_fnGetDuplicate implementation. 2014-11-01 23:11:57 +01:00
Sebastian Lackner
9c556a5905 Added patch to update ProductVersion when applying MSI transforms. 2014-11-01 21:30:04 +01:00
Sebastian Lackner
61769b2227 Added patch for TLB dependencies lookup in resources. 2014-11-01 08:59:45 +01:00
Sebastian Lackner
212f94bb9f d3dx9_36-CreatePolygon: Fix parameter type of second argument in spec file. 2014-11-01 01:49:27 +01:00
Sebastian Lackner
514e29e7dc winex11-Clipboard_HTML: On invalid HTML, interpret the whole tag as content. 2014-11-01 00:06:05 +01:00
Sebastian Lackner
9414a2da0a patchupdate.py: Directly link to https urls on winehq.org. 2014-10-31 15:15:13 +01:00
Sebastian Lackner
3cf93b92fc Added patch to implement D3DXCreatePolygon. 2014-10-31 15:05:38 +01:00
Sebastian Lackner
35adc2a6f7 Added patch for implementation of GdipCreateRegionRgnData. 2014-10-31 08:20:17 +01:00
Sebastian Lackner
5661a76f20 Removed patch to fix compilation errors on Archlinux (fixed upstream).
Fixed with 4b1aba754e
2014-10-31 08:01:38 +01:00
Sebastian Lackner
953163c6ff Added patch to emulate write to CR4 register. 2014-10-31 07:34:09 +01:00
Sebastian Lackner
7e6191a4cd Removed patch to Iimplement IRichEditOle and ITextDocument support for ITextServices (accepted upstream). 2014-10-30 20:43:01 +01:00
Sebastian Lackner
621ece3c6f Added patch to implement RtlDecompressBuffer. 2014-10-30 18:46:55 +01:00
Sebastian Lackner
9c9639f3ae Fix wrong escaping of quote/slash characters in patchupdater script (thanks felixonmars). 2014-10-30 15:50:33 +01:00
Sebastian Lackner
ade7c1e886 Added patch to add support for pasting HTML from native Unix applications. 2014-10-27 09:28:38 +01:00
Sebastian Lackner
26699042ab Added patch to implement iphlpapi stub functions. 2014-10-27 02:55:56 +01:00
Michael MĂĽller
1349af11e7 Use lowercase constants in dxtn patch. 2014-10-26 22:57:27 +01:00
Michael MĂĽller
ca7325e83a Improve wined3d-DXTn patch. 2014-10-26 22:33:11 +01:00
Sebastian Lackner
3dd8fd35af Removed patch for additional ATL thunks (accepted upstream). 2014-10-21 17:16:35 +02:00
Sebastian Lackner
cc459b2b4f Added patch to filter out specific warning messages for D3DCompileShader. 2014-10-20 22:14:11 +02:00
Sebastian Lackner
aa07c4b087 Removed patch to avoid Clang compiler warning because of unused Vtable (accepted upstream). 2014-10-20 19:54:20 +02:00
Sebastian Lackner
79d612a5ad Release 1.7.29. 2014-10-19 19:39:25 +02:00
Sebastian Lackner
c554fa8396 Fix test failure of kernel32/loader when WRITECOPY protection is enabled (fixes issue 88). 2014-10-19 08:54:16 +02:00
Sebastian Lackner
2dcb4d2c27 Fix compilation warnings. 2014-10-19 07:43:41 +02:00
Sebastian Lackner
4410ccbead Replaced patch for shell32-Default_Folder_ACLs.
The old patch contained several issues, including invalid memory access, a memory leak,
and wrong DACL size calculation. This updated version simplifies the logic a bit and should
fix those issues.
2014-10-19 06:53:16 +02:00
Sebastian Lackner
2f5a9b7ba1 ntdll-DOS_Attributes: If multiple header files are found make sure that the right implementation is used. 2014-10-19 04:20:13 +02:00
Sebastian Lackner
f9c393b4a8 Update server-CreateProcess_ACLs with latest submitted version. 2014-10-19 01:40:33 +02:00
Sebastian Lackner
4934857730 Fix whitespace error in patch for shell32-Default_Folder_ACLs. 2014-10-19 01:18:17 +02:00
Sebastian Lackner
021356ceb0 Remove duplicate mail header from patch (breaks 'git am'). 2014-10-19 01:15:45 +02:00
Sebastian Lackner
6c4eb0bb53 Added patch for implementation of BindImageEx. 2014-10-19 00:45:51 +02:00
Sebastian Lackner
36dafc95aa Merge branch 'master' of github.com:wine-compholio/wine-staging 2014-10-19 00:28:39 +02:00
Michael MĂĽller
475489c79c Add gdi patches for multi monitor support. 2014-10-19 00:01:01 +02:00
Sebastian Lackner
110924352c Added patch to remove unusued TransformFilter_Vtbl. 2014-10-18 22:01:35 +02:00
Sebastian Lackner
09cb0884c5 kernel32-UTF7_Support: Updated patches with recent changes. 2014-10-18 21:56:58 +02:00
Sebastian Lackner
07f9996abc Added patch for wine64 support on FreeBSD/PC-BSD. 2014-10-18 18:37:20 +02:00
Michael MĂĽller
d3d40b651b Add patch for GetNumaProcessorNode. 2014-10-18 06:03:40 +02:00
slackner
e63ff1be87 Merge pull request #87 from Endle/mshtml_sessionStorage
Add partially support for mshtml sessionStorage.
2014-10-18 05:56:35 +02:00
Zhenbo Li
8cd730631b Add partially support for sessionStorage 2014-10-18 11:52:47 +08:00
Sebastian Lackner
500d83235b Added patch to implement support for additional ATL thunks. 2014-10-18 04:36:26 +02:00
Sebastian Lackner
971d304a1f Added patch to ensure tests check exact return value of ParseURLFromOutsideSourceX. 2014-10-18 01:22:08 +02:00
Sebastian Lackner
6e3502a34b Added patches for implementation of D3DXGetShaderInputSemantics. 2014-10-17 23:41:40 +02:00
Sebastian Lackner
6039fad49e Compholio: Add missing SONAME_ constants for 'missing library' diagnostic. 2014-10-17 23:22:40 +02:00
Sebastian Lackner
b7668e1d7a Some small formatting fixes in multiple patches. 2014-10-17 22:20:23 +02:00
Sebastian Lackner
291d4468f7 Updated patches for NtQuerySection. 2014-10-16 23:34:43 +02:00
Michael MĂĽller
34cab4fddf Add patch for ID3DXSkinInfoImpl_UpdateSkinnedMesh. 2014-10-15 23:43:20 +02:00
Sebastian Lackner
5a35178f86 Removed remaining patches for ATL thunk improvements (accepted upstream). 2014-10-15 19:10:59 +02:00
Erich E. Hoover
71db25dc7d Update DOS Attribute patches with latest submitted version. 2014-10-13 13:55:54 -06:00
Sebastian Lackner
b757d6fe5c Partially removed patches for ATL thunk fixes (accepted upstream). 2014-10-13 18:48:49 +02:00
Sebastian Lackner
7336108ab8 ntdll-ATL_Thunk: Add one additional test to confirm that ExceptionInformation[0] is set correctly. 2014-10-11 19:05:40 +02:00
Sebastian Lackner
90c872c5fe Updated patch for kernel32-UTF7_Support. 2014-10-11 02:38:54 +02:00
Sebastian Lackner
8a1c3d4d46 Updated patch for ntdll-ATL_Thunk. 2014-10-11 02:07:22 +02:00
Erich E. Hoover
9e2db30661 Fix possible CloseHandle on bad token in the Default Folder ACLs patch. 2014-10-09 12:43:38 -06:00
Erich E. Hoover
18657270f8 Make _SHGetUserSecurityDescriptor static in the Default Folder ACLs patch. 2014-10-09 12:04:07 -06:00
Erich E. Hoover
414b6059ba Simplify the security descriptor return value in the Default Folder ACLs patch. 2014-10-09 12:04:07 -06:00
Erich E. Hoover
90cccc00fb Simplify the allocation of the security descriptor in the Default Folder ACLs patch. 2014-10-09 12:04:07 -06:00
Erich E. Hoover
e8e7e9c09b Move obtaining the admin SID to a separate function in the Default Folder ACLs patch. 2014-10-09 12:04:07 -06:00
Erich E. Hoover
1cbbc802af Move obtaining the user SID to a separate function in the Default Folder ACLs patch. 2014-10-09 12:04:07 -06:00
Michael MĂĽller
f0a3c3c2f4 Change return value of string_wchar_dtor in msvcp90 instead of msvcp60. 2014-10-09 17:40:56 +02:00
Erich E. Hoover
ac0b4fe1ac Split DOS Attributes patches to include Mac OS X and FreeBSD support separately. 2014-10-09 08:01:21 -06:00
Erich E. Hoover
69db736c0c Fix xattr package name suggestion in configure error message. 2014-10-09 08:01:21 -06:00
Sebastian Lackner
413b5ee73f kernel32-UTF7_Support: Replace do{}while loop with while loop, remove assertion. 2014-10-09 05:58:22 +02:00
Sebastian Lackner
04467e7e68 Added patch to add UTF7 encoding/decoding support. 2014-10-09 05:47:51 +02:00
Michael MĂĽller
5ee11fd2d6 Fix function definition in basic_string_wchar_dtor patch for 64 bit. 2014-10-09 05:39:04 +02:00
Michael MĂĽller
6c9d5534cb Add patch for basic_string_wchar_dtor. 2014-10-09 05:27:35 +02:00
Michael MĂĽller
014eb110f1 Add patch for SHFileOperationW. 2014-10-09 01:44:18 +02:00
Sebastian Lackner
5ce94e4f43 Removed patch to implement stubs for [Get|Set]SystemFileCacheSize (accepted upstream). 2014-10-08 21:52:59 +02:00
Sebastian Lackner
9fb8420891 Added patch to fix issues with execute permissions on pages with guard / write watch flags. 2014-10-08 21:41:19 +02:00
Sebastian Lackner
aada22c826 Removed ksuser-stub patch (accepted upstream). 2014-10-07 22:07:26 +02:00
Sebastian Lackner
9efec7af28 Merge branch 'master' of github.com:compholio/wine-compholio 2014-10-07 22:06:09 +02:00
Sebastian Lackner
b165863a60 Removed several patches (accepted upstream). 2014-10-07 22:05:04 +02:00
Michael MĂĽller
4164b920d2 Add patch for ksuser.dll stub 2014-10-07 02:06:52 +02:00
Erich E. Hoover
f8f2f10751 Fix indentation in configure.ac. 2014-10-05 18:19:00 -06:00
Sebastian Lackner
7787c66cc7 Updated debian/changelog file. 2014-10-06 01:03:19 +02:00
Michael MĂĽller
541cc8d086 Add patch to support IDF_CHECKFIRST in SetupPromptForDisk. 2014-10-06 00:29:49 +02:00
Erich E. Hoover
05fbac8c95 Update DOS Attributes patches to better detect whether xattr functions take extra parameters. 2014-10-05 14:25:02 -06:00
Sebastian Lackner
e4d758a10b Release 1.7.28. 2014-10-04 04:40:22 +02:00
Sebastian Lackner
35bcebd562 ntdll-WRITECOPY: Merge patches 4 and 7. 2014-10-04 04:02:07 +02:00
Sebastian Lackner
e273769702 ntdll-WRITECOPY: Fix some additional issues, disable this patch by default since it might trigger additional Wine bugs. 2014-10-04 03:28:03 +02:00
Sebastian Lackner
7f43d57d01 Added tests for patch ntdll-loader_EntryPoint. 2014-10-03 22:18:32 +02:00
Sebastian Lackner
b585bfb7f4 Added patch for FindFirstFileExW level FindExInfoBasic. 2014-10-03 21:04:01 +02:00
Sebastian Lackner
6a19f586ea Added patch to implement NtQuerySection. 2014-10-03 18:25:08 +02:00
Michael MĂĽller
8634ed8ea4 Use original memory protection flags for x86_64 in WRITECOPY patch. 2014-10-03 17:45:26 +02:00
Michael MĂĽller
339e6431d0 Solve builtin dll problem in WRITECOPY patch. 2014-10-03 17:31:47 +02:00
Sebastian Lackner
aaf0c7d2dc kernel32-FindFirstFile: Remove patch (accepted upstream), update changelog. 2014-10-03 00:21:12 +02:00
Sebastian Lackner
2616a89d50 Show winediag message informing about applied patches, append '(Compholio)' to wine --version string. 2014-10-02 20:04:58 +02:00
Sebastian Lackner
4f5b5fa483 Rename wine_patch struct field hash to name. 2014-10-02 20:03:19 +02:00
Erich E. Hoover
c4b33f044e Remove unneeded free protection patches. 2014-10-02 10:19:39 -06:00
Sebastian Lackner
f2f8ea98c5 Removed several patches (accepted upstream). 2014-10-01 21:54:28 +02:00
Sebastian Lackner
fb86960b4f shlwapi-SH_Shared: Fix test failures on Windows7/8 testbots. 2014-10-01 03:26:57 +02:00
Michael MĂĽller
108cd9f304 Add patch to handle WRITECOPY memory protection properly. 2014-10-01 03:14:07 +02:00
Sebastian Lackner
7a36c29ef4 Rebase riched20-IText_Interface patches. 2014-10-01 02:51:16 +02:00
Sebastian Lackner
f062a5a3ba Added patch to fix implementation of SH*Shared commands. 2014-10-01 02:44:22 +02:00
Sebastian Lackner
fa52b6489a Fix compilation issue introduced by e8107fe104. 2014-09-30 18:25:38 +02:00
Sebastian Lackner
e8107fe104 Remove several patches (accepted upstream). 2014-09-29 23:08:35 +02:00
Sebastian Lackner
b4642f5151 Forward return value from QueryInterface instead of always returning S_OK. 2014-09-29 04:57:30 +02:00
Sebastian Lackner
e9da761795 Added patch for IRichEditOle and ITextDocument support for ITextServices. 2014-09-29 04:50:06 +02:00
Sebastian Lackner
acacbd588d Added patch to limit cross thread access to ImmSet* functions. 2014-09-29 02:52:26 +02:00
Sebastian Lackner
ed22aea5bd Added patch to export ?_BADOFF@std@@3_JB on both i386 and win64. 2014-09-29 00:23:24 +02:00
Sebastian Lackner
6a81960f7a Added patch to fix differences in exception handling behaviour between Wine and Windows. 2014-09-28 23:54:50 +02:00
Michael MĂĽller
8fbca5cb69 Update changelog. 2014-09-28 22:05:42 +02:00
Michael MĂĽller
97d1e27035 Add patch to alter wglShareLists behavior when passing an used context. 2014-09-28 21:56:58 +02:00
Michael MĂĽller
626c7fccd7 Add patch to correctly treat '.' when checking for empty directories. 2014-09-28 21:48:52 +02:00
Michael MĂĽller
9882020ee6 Add patch to add ProductId registry value 2014-09-28 21:40:53 +02:00
Sebastian Lackner
7b26c74d54 Added patch to fix issues when driver dispatch routine returns different status codes. 2014-09-28 17:34:05 +02:00
Sebastian Lackner
a9a8b351ea wined3d-DXTn: Fix typo in commit message. 2014-09-28 00:01:20 +02:00
Sebastian Lackner
d8de3eb6fa Added patch to send WM_PAINT event during dialog creation. 2014-09-26 20:27:43 +02:00
Sebastian Lackner
a5250a0fc4 Added patch for support of FIND_FIRST_EX_CASE_SENSITIVE flag in FindFirstFileExW. 2014-09-25 03:13:16 +02:00
Sebastian Lackner
7dae05d4de Added patch to create desktop shortcuts with absolute wine path. 2014-09-24 21:21:01 +02:00
slackner
d35ca29434 Merge pull request #77 from felixonmars/master
Update winex11-CandidateWindowPos to use a new implementation from slackner.
2014-09-23 17:35:02 +02:00
Felix Yan
4aabc285b9 Update winex11-CandidateWindowPos to use a new implementation from slackner 2014-09-23 23:30:26 +08:00
slackner
421dcf31d5 Merge pull request #76 from felixonmars/master
Added patch to update a candidate window's position with over-the-spot style.
2014-09-22 07:49:37 +02:00
Felix Yan
2f26c3d624 Added patch to update a candidate window's position with over-the-spot style 2014-09-22 13:47:26 +08:00
Sebastian Lackner
f43cf8d682 patchupdate.py: Don't query bugzilla for additional bug information (not displayed in the README page anyway). 2014-09-22 06:27:47 +02:00
Sebastian Lackner
68a575f319 Add recommendation for libtxc-dxtn-s2tc0 on Ubuntu. 2014-09-21 01:46:34 +02:00
Sebastian Lackner
c8164d802d Release 1.7.27. 2014-09-20 05:53:36 +02:00
Sebastian Lackner
d8aaa94042 Add build dependency to libtxc-dxtn-s2tc-dev. 2014-09-20 05:13:54 +02:00
Sebastian Lackner
297a301f35 Added patch to implement software decoding/encoding of DXT1 textures (by Michael MĂĽller).
Since we have a lot of changes to configure.ac, we need to get rid of a bit context in order to apply
them in arbitrary order.
2014-09-20 03:18:27 +02:00
Sebastian Lackner
0f73278955 patchupdate.py: Fix escaping of single quoted strings in definition files. 2014-09-19 16:30:05 +02:00
Sebastian Lackner
299a2daeac Added patch to revert pixelformat changes (caused regression for many apps).
Well, usually we don't revert Wine commits in this branch. In this case the original author of the
patches suggested to revert them, because its unfinished and the rest of the patches will not be
accepted anymore in the near future. Without the complete patchset it causes a lot of side effects
(flickering, black/grey screen, missing video). This makes Wine basically useless for all affected
apps. Since the revert was not accepted upstream, we do it in our branch, until either the problems
are gone, or the revert got accepted.
2014-09-19 04:44:18 +02:00
Sebastian Lackner
969e9d5583 Added patch to silence repeated GSUB_applly_ChainContext[Subst|Pos] FIXMEs. 2014-09-18 00:59:20 +02:00
Sebastian Lackner
312800fa66 riched20-IText_Interface: Removed some patches (accepted upstream), rebased against wine git. 2014-09-17 23:21:23 +02:00
Sebastian Lackner
943405c277 Added patch to avoid filling KdHelp structure for uermode applications. 2014-09-15 22:58:22 +02:00
Sebastian Lackner
d874e1323d Removed several patches (accepted upstream). 2014-09-15 21:08:12 +02:00
Sebastian Lackner
773df03830 Added patch to fix wrapper for glu polygon/contour functions. 2014-09-14 08:03:11 +02:00
Sebastian Lackner
c5f802363f riched20-IText_Interface: Added patch to fix invalid memory access when parent object was destroyed before child object. 2014-09-13 17:27:01 +02:00
Sebastian Lackner
6aecd5a407 riched20-IText_Interface: Rebased patches (first part accepted upstream). 2014-09-13 16:50:22 +02:00
Sebastian Lackner
42f18b7237 Added patch to support FIND_FIRST_EX_LARGE_FETCH flag in FindFirstFileExW. 2014-09-13 01:43:56 +02:00
Sebastian Lackner
4fb2477927 Removed patch to fix uninitialized cch member in GetMenuItemInfo (accepted upstream). 2014-09-09 22:47:34 +02:00
Sebastian Lackner
5ba46f55f2 kernel32-GetSystemTimes: Set errorcode to something useful in case of a failure. 2014-09-09 16:36:30 +02:00
Sebastian Lackner
774f0634ba kernel32-GetSystemTimes: Fix some issues in the patchset. 2014-09-09 16:14:39 +02:00
Sebastian Lackner
797ead4b3c Removed patch to use assembly wrapper for TLS callbacks (accepted upstream). 2014-09-08 21:15:09 +02:00
Sebastian Lackner
9a4a7e1cb3 Release 1.7.26. 2014-09-07 23:51:44 +02:00
Sebastian Lackner
6053bea2da Updated debian/changelog. 2014-09-07 22:20:51 +02:00
Michael MĂĽller
c83e83b911 Add patch for GetMenuItemInfo. 2014-09-07 20:26:44 +02:00
Sebastian Lackner
aaf6e38a98 configure-Detect_Gnutls: Still not the right library, check for linking against libgnutls-openssl.so. 2014-09-07 19:19:26 +02:00
Sebastian Lackner
b33ea6c233 configure-Detect_Gnutls: Try 2, maybe Ubuntu 14.10 links against libgnutls-openssl.so? 2014-09-07 17:12:17 +02:00
Sebastian Lackner
f5abff47fb README.md: Some improvements in the first chapter. 2014-09-07 16:31:57 +02:00
Sebastian Lackner
1a5b602120 Remove deprecated information from debian/control (patchlist incomplete, and 31993 already fixed upstream). 2014-09-07 16:12:35 +02:00
Sebastian Lackner
7b90cca3d7 Added patch to (hopefully) fix detection of gnutls on Ubuntu 14.10. 2014-09-07 08:14:56 +02:00
Sebastian Lackner
6bca298771 patchupdate.py: Fix whitespace issue in 'Modified files' string. 2014-09-07 01:53:29 +02:00
Sebastian Lackner
ba1bf62faa Added additional patch to use assembly wrapper for TLS callbacks. 2014-09-07 01:51:30 +02:00
Sebastian Lackner
1598a4326e Added missing file ... there should be some automatic check for that ;) 2014-09-06 05:17:21 +02:00
Sebastian Lackner
baae7829ff Added patch to silence noise when compiling with -Werror on Archlinux. 2014-09-06 05:06:09 +02:00
Sebastian Lackner
41b4bc29a0 server-Inherited_ACLs: One more small fix to ensure we don't dereference a NULL pointer. 2014-09-06 04:07:11 +02:00
Sebastian Lackner
1d0979cb9b server-Inherited_ACLs: Fix leaking combined security descriptor and parent_sd. 2014-09-06 04:00:58 +02:00
Sebastian Lackner
b91cca8e61 server-Inherited_ACLs: More bugfixes (easy ones). 2014-09-06 03:10:50 +02:00
Sebastian Lackner
130fbbe654 server-Inherited_ACLs: Remove unused flag. 2014-09-06 00:34:40 +02:00
Sebastian Lackner
e536c2d707 server-ACL_Compat/server-Inherited_ACLs: Avoid creating unnecessary file object for checking the parent SDs. 2014-09-06 00:02:39 +02:00
Sebastian Lackner
6c26951aae server-Inherited_ACLs: Added check for return value of strndup, improve detection of parent directory.
This is the same method that is used to traverse the path in kernel32.dll. Its still not perfect, because
the wineserver will easily get confused by symlinks. In this case the attributes should be inherited
from the real parent directory, not from the directory that contains the symlink.
2014-09-05 22:53:25 +02:00
Sebastian Lackner
cc1c1f12ae Removed patch to fix detection of ncurses on Archlinux (accepted upstream). 2014-09-05 18:44:34 +02:00
Sebastian Lackner
b1a5dfb1f7 Updated libncursesw patch to be FreeBSD/MacOS compatible. 2014-09-04 22:23:45 +02:00
Sebastian Lackner
3cd7f91608 Removed patchset msi-MoveFiles (accepted upstream). 2014-09-04 22:04:40 +02:00
Sebastian Lackner
752393bbe3 Replace ncurses fix with easier solution (regex pattern instead of checking for two libs). 2014-09-04 09:34:49 +02:00
Sebastian Lackner
4c094dc57d Makefile: Add support for 'series' and 'install-git' target. 2014-09-04 04:46:15 +02:00
Sebastian Lackner
5cab0e1b8f kernel32-GetVolumePathName: Fix possible leak and merge patches 1 and 5. 2014-09-03 13:58:27 +02:00
Sebastian Lackner
819a738d3d server-ACL_Compat: Make parser more strict and clean up code.
Voila! This new parser should catch all invalid security descriptor ACLs... I
only hope that it doesn't block valid ones. Probably makes sense to do some testing
before the release. ;)
2014-09-03 00:28:40 +02:00
Sebastian Lackner
4caa3f834f server-ACL_Compat: Fix some style issues and buffer handling errors.
As we probably shouldn't remove ACL_Compat too soon, we have to maintain it unfortunately...
It would crash easily at the moment, when the extended attribute contains invalid data.
This patch is the easy part, there are a lot more issues left in the parser.
2014-09-02 07:13:24 +02:00
Sebastian Lackner
749bdd1781 Added patch to fix some of the issues with GetVolumePathName. 2014-09-02 05:37:54 +02:00
Sebastian Lackner
a118c9b4bd Added additional tests for GetVolumePathName (todo_wine still missing...). 2014-09-02 05:25:35 +02:00
Sebastian Lackner
b0f0c3ea9f kernel32-GetFinalPathNameByHandle: Fix an incorrect comment. 2014-09-01 23:47:48 +02:00
Sebastian Lackner
e272c49cd8 kernel32-GetFinalPathNameByHandle: Fix possible issues if GetVolumePathNameW changes upper/lowercase of characters. 2014-09-01 23:34:01 +02:00
Sebastian Lackner
c51df83deb kernel32-GetVolumePathName: Avoid reformatting unchanged lines. 2014-09-01 22:48:15 +02:00
Sebastian Lackner
c45a17079d Explicitly run patch scripts with python2 (since Archlinux has 3 installed by default). 2014-09-01 21:32:23 +02:00
Sebastian Lackner
faf78575ac Added patch to fix detection of ncurses library on Archlinux. 2014-09-01 21:30:32 +02:00
Sebastian Lackner
027b85ed1b Fix formatting issue in debian/changelog. 2014-08-29 22:43:06 +02:00
Sebastian Lackner
9b303a4f82 server-Stored_ACLs: Fix check for invalid security descriptors.
Checking for the length is not sufficient. The values contained in the SD (like AceCount) could
still be garbage, and lead to errors when the SD is processed later.
2014-08-29 04:22:32 +02:00
Sebastian Lackner
4ff0b53021 server-Inherited_ACLs: Avoid using different sizes for mem_alloc and memcpy, some style cleanup.
It is a bit risky to use two different values for mem_alloc and memcpy - under some circumstances
these values probably don't match, leading to an invalid memory access. As the ACLs are accessed
without any special checks this shows that we'll also need additional protection in one of the
earlier patches.
2014-08-29 03:58:31 +02:00
Sebastian Lackner
04d674d9b6 server-Stored_ACLs: Minor cleanup.
We can avoid some variable declarations in the regular code, and only need them for ACL_Compat.
2014-08-29 03:37:44 +02:00
Sebastian Lackner
e91e2daca4 ntdll-DOS_Attributes: Minor cleanup.
I think its more clear when all functions that take a tuple (struct stat, ULONG attr)
use the same argument order. Besides that I've removed the "const" prefix from ULONG
variables.
2014-08-28 18:11:00 +02:00
Sebastian Lackner
ece1d51745 ntdll-Fix_Free: Move fix for invalid memory access to patch 9, which introduced the error. 2014-08-28 07:26:53 +02:00
Sebastian Lackner
125673271d Simplify logic in patch to indicate direct rendering through OpenGL extension. 2014-08-28 07:14:02 +02:00
Sebastian Lackner
da7d2715d3 bcrypt-BCryptGetFipsAlgorithmMode: Don't expect mode to be off (otherwise it will be difficult to get this patch upstream). 2014-08-28 07:10:32 +02:00
Sebastian Lackner
e2f635a164 Fix copy&paste error in Junction_Point tests. 2014-08-28 06:14:52 +02:00
Sebastian Lackner
9e6408add9 Fix invalid memory access and handle leak in Fix_Free / Junction_Point patches. 2014-08-28 05:48:17 +02:00
Sebastian Lackner
f6566f892d README.md: Move most of the content to the Wiki. 2014-08-28 04:39:29 +02:00
Sebastian Lackner
9c80cd53f9 patchupdate.py: Clean up some comments and spelling fixes. 2014-08-28 04:06:16 +02:00
Sebastian Lackner
f4e3d72fc1 patchupdate.py: Fix issue in patch dependency detection (ntdll-Junction_Points depend on ntdll-Fix_Free to apply properly). 2014-08-28 03:53:34 +02:00
Sebastian Lackner
15a19d27fc patchupdate.py: Fix typo in name of exception. 2014-08-28 03:53:23 +02:00
Sebastian Lackner
a8f3f9c4e4 Added patch to improve heap allocation performance. 2014-08-27 02:58:27 +02:00
Sebastian Lackner
3246faa114 Add patch to fix issues with setcap on wine-preloader executable. 2014-08-27 00:38:26 +02:00
Sebastian Lackner
4e4a8b7d32 Fix issue in winepulse patches (wrong syntax in configure script). 2014-08-26 23:23:59 +02:00
Sebastian Lackner
cf5a6bdbf3 Add patch to make allow dynamic linking of wpcap. 2014-08-26 23:04:55 +02:00
Erich E. Hoover
7e7a3881c4 Fix (safe) duplicate free in last 'Free Fix' patch. 2014-08-26 12:22:36 -06:00
Erich E. Hoover
023b7bd4cb Revise README message for ntdll leak fixes. 2014-08-25 09:22:53 -06:00
Erich E. Hoover
ff169cd1b7 Add fix for unintentional leaks with ntdll internals. 2014-08-25 09:18:10 -06:00
Erich E. Hoover
5f93d74102 Remove unintentionally added experimental Junction Point patch. 2014-08-24 13:52:18 -06:00
Erich E. Hoover
ce3f41cee9 Merge updates in master. 2014-08-24 13:50:56 -06:00
Erich E. Hoover
52453428f2 Release 1.7.25. 2014-08-24 11:12:20 -06:00
Sebastian Lackner
1c40aa1553 Add missing entry to debian/changelog. 2014-08-23 15:32:45 +02:00
Sebastian Lackner
dad496036d shell32-Default_Path: Fix whitespace errors. 2014-08-23 07:47:26 +02:00
Sebastian Lackner
fe0aa3f54d server-OpenProcess: Update to latest version of the patch. 2014-08-23 07:39:07 +02:00
Sebastian Lackner
26b0797bcb Rewrite part of server-CreateProcess_ACLs in order to fix incorrect error codes and memory leaks. 2014-08-23 06:33:01 +02:00
Sebastian Lackner
bba9e118d9 server-CreateProcess_ACLs: Remove whitespace issues, remove duplicate subject line. 2014-08-23 03:29:30 +02:00
Sebastian Lackner
0bc7ba983c Add some additional changes to debian/changelog. 2014-08-23 03:00:32 +02:00
Sebastian Lackner
a445ccf24f Modify some bug descriptions. 2014-08-23 02:47:55 +02:00
Sebastian Lackner
8680d3ff32 Rename server-Process -> server-OpenProcess to avoid confusion with other patchsets. 2014-08-23 02:31:17 +02:00
Sebastian Lackner
11341b00f6 riched20-IText_Interface: Update patches. 2014-08-23 02:15:02 +02:00
Sebastian Lackner
0f9f7dc428 Add patch to implement KF_FLAG_DEFAULT_PATH for SHGetKnownFolderPath. 2014-08-23 01:40:17 +02:00
Erich E. Hoover
d447778cfb Revise the DOS attributes patch to simplify the addition of extended attributes. 2014-08-20 22:36:51 -06:00
Michael MĂĽller
6fa663e823 Add patch for linker version in PE header. 2014-08-20 22:36:51 -06:00
Erich E. Hoover
fa92b283ed Added patch to implement DOS hidden/system file attributes. 2014-08-20 19:22:07 -06:00
322 changed files with 21578 additions and 5582 deletions

3
.gitignore vendored
View File

@@ -1,5 +1,4 @@
debian/tools/wine
.depcache
.srccache
.patchupdate.cache
*.ok
*.pyc

View File

@@ -1,152 +0,0 @@
Developers and maintainers guide
================================
This document will provide some information targeted at developers, who
either want to build/package Wine-Compholio for their distribution, but also
for developers who would like to contribute their patches to Wine-Compholio,
to get them included in future releases.
Compiling Wine-Compholio
========================
**Warning:** Please note that starting with Wine-Compholio 1.7.23 it is
deprecated to manually apply patches without using the Makefile. To avoid
typical pitfalls for package maintainers (like trying to use the patch
commandline utility for binary patches or not updating the patchlist) it is
highly recommended to use the Makefile in order to apply all patches. This
ensures that the the correct patch utility is used, that the list of patches
is updated appropriately, and so on. Please note that it is still possible
to exclude patches if desired, take a look at the end of this document for
more details.
Instructions
------------
The following instructions (based on the [Gentoo
Wiki](https://wiki.gentoo.org/wiki/Netflix/Pipelight#Compiling_manually))
will give a short overview how to compile Wine-Compholio, but of course not
explain all details. Make sure to install all required Wine dependencies
before proceeding.
As the first step please grab the latest Wine source:
```bash
wget http://prdownloads.sourceforge.net/wine/wine-1.7.24.tar.bz2
wget https://github.com/compholio/wine-compholio-daily/archive/v1.7.24.tar.gz
```
Extract the archives:
```bash
tar xvjf wine-1*.tar.bz2
cd wine-1*
tar xvzf ../v1.7.24.tar.gz --strip-components 1
```
And apply the patches:
```bash
make -C ./patches DESTDIR=$(pwd) install
```
Afterwards run configure (you can also specify a prefix if you don't want to install
Wine-Compholio system-wide):
```bash
./configure --with-xattr
```
Before you continue you should make sure that `./configure` doesn't show any
warnings (look at the end of the output). If there are any warnings, this
most likely means that you're missing some important header files. Install
them and repeat the `./configure` step until all problems are fixed.
Afterwards compile it (and grab a cup of coffee):
```bash
make
```
And install it (you only need sudo for a system-wide installation):
```bash
sudo make install
```
Excluding patches
-----------------
It is also possible to apply only a subset of the patches, for example if
you're compiling for a distribution where PulseAudio is not installed, or
if you just don't like a specific patchset. Please note that some patchsets
depend on each other, and requesting an impossible situation might result
in a failure to apply all patches.
Lets assume you want to exclude the patchset in directory `DIRNAME`, then
just invoke the Makefile like this:
```bash
make -C ./patches DESTDIR=$(pwd) install -W DIRNAME.ok
```
Using the same method its also possible to exclude multiple patchsets. If you
want to exclude a very large number of patches, it is easier to do specify
a list of patches which should be included instead. To apply for example
only the patchsets in directory `DIRNAME1` and `DIRNAME2`, you can use:
```bash
make -C ./patches DESTDIR=$(pwd) PATCHLIST="DIRNAME1.ok DIRNAME2.ok" install
```
Contributing to Wine-Compholio
==============================
Please note that Wine-Compholio is not just an arbitrary collection of Wine
patches. We see Wine-Compholio as a **testing version** in preparation for
patches to be submitted to upstream Wine. This implies that all patches should
at least have a minimum standard quality. Unlike some other PPAs/AURs which
provide heavily patched Wine versions, we will not accept hacks for very
specific games. Such hacks often break compatibility with other applications,
which means we probably don't want to include them, sorry.
If you think your patches are indeed a proper implementation, then feel free
to contribute them. Please note that to allow possible later inclusion
into upstream Wine, we will require you to pay attention to the same
[rules](http://wiki.winehq.org/SubmittingPatches). Please be patient and
give us up to about a week to review them - we're a very small team, so
it might take some time, and we want to make sure that the implementation
doesn't contain any critical errors, which could cause regressions. If you
want to contribute huge sets of patches, we would really like you to *stay
contributing* in the future. Even if we accepted your patches, this doesn't
necessary mean we understand all of it, and if you cannot or don't want
to maintain them (especially in case of errors, or difficult rebasing),
we will probably end up removing them again.
You can also suggest adding patches written by other people - in this case
your request should include who wrote the patch. Anonymous patches which
don't include the author information aren't welcome, similar to the rules
for upstream Wine.
Attribution guidelines
----------------------
The Wine "Compholio" Edition repository expects all patches to conform to
Wine's (undocumented) attribution guidelines. There are a variety of ways
to attribute patches, but they all involve an additional line to the patch
subject:
```
commit 0000000000000000000000000000000000000000
Author: Example Author <example.email@email-provider.com>
Date: Sat Jul 26 12:31:50 2014 -0600
Name of patch.
TYPE-OF-ATTRIBUTION.
```
TYPE-OF-ATTRIBUTION can be any of the following:
`Found/Spotted by FINDER.`: The resolved issue was found by FINDER, they
should receive appropriate credit for finding the problem - even though
their patch was not used in the final implementation.
`Based on patch by AUTHOR.`: The patch created by AUTHOR was a starting point
for the patch, some modifications were made to their patch - but they should
receive credit since the original implementation was theirs.

View File

@@ -1,15 +1,15 @@
Wine-Compholio license
======================
Wine Staging license
====================
**Note:** Some files in this repository are provided under a different license.
Please check the list of exceptions below. Unless stated otherwise all files
are part of **Wine-Compholio** and are licensed under the terms of the
are part of **Wine Staging** and are licensed under the terms of the
[LGPLv2.1](#gnu-lgpl-version-21), to stay compatible with Wine:
```
Copyright (C) 2014 the Wine-Compholio project authors.
Copyright (C) 2014 the Wine Staging project authors.
Wine-Compholio is free software; you can redistribute it and/or
Wine Staging is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
@@ -26,7 +26,7 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
### Exceptions
The following files are not part of Wine-Compholio and provided under a
The following files are not part of Wine Staging and provided under a
different license. These files are not linked to the rest of the project in
any way and are simply installed for end-user convenience.

510
README.md

File diff suppressed because it is too large Load Diff

190
debian/changelog vendored
View File

@@ -1,7 +1,190 @@
wine-compholio (1.7.25) UNRELEASED; urgency=low
wine-compholio (1.7.32) unstable; urgency=low
* Various optimizations of patchupdate.py.
* Update patch for SO_CONNECT_TIME and adding better tests.
* Update patch for FD Cache and use faster method on x86_64.
* Added patch to ensure dbghelp always checks for debug symbols in BINDIR.
* Added patch for pulseaudio exclusive mode support.
* Added patch to take abs() of vertex z coordinate as FFP fog coordinate.
* Added patch to ensure ShowWindow avoids interthread no-op messages.
* Added patch to avoid race-conditions of async WSARecv() operations with write watches.
* Added patch to fix issues with write watches when using Exagear.
* Added patch to avoid failure because of missing ptrace support for Exagear.
* Added patch to automatically detect if tests are running under Wine.
* Added patch to avoid sending unexpected wakeup with uninitialized cookie value.
* Added patch to fix issues with dragging layers between images in Adobe Photoshop 7.0.
* Added patch to ensure wintrust resets data->pWintrustData->u.pFile->hFile after closing handle.
* Added patch to add additional format conversions for DXT1 and DXT3.
* Added patch to implement stubs for additional api-ms-win-core-* dlls.
* Added patch to fix copy and paste error recently introduced in ws2_32 tests.
* Added patch to change bug reporting URL in winedbg.
* Added patch to implement semi-stub for psapi/kernel32 K32EnumProcessModulesEx.
* Added patch to fix ordering of IP addresses by metric if two addresses have the same metric.
* Added patch to fix handling of empty section and key name for profile files.
* Added patch to fix passing of unicode environment from msvcrt to CreateProcessW.
* Removed patch to close server fd is there is no space in thread inflight fd list (accepted upstream).
* Removed patch to fix bugs in StrStr functions (accepted upstream).
* Removed patches to avoid sending messages in FindWindowExW (accepted upstream).
* Removed patch to fix implementation ofCoWaitForMultipleHandles (accepted upstream).
* Removed patch to avoid interthread no-op messages in ShowWindow (accepted upstream).
* Removed patches to take abs() of vertex z coordinate as FFP fog coordinate (fixed upstream).
* Removed patch to fix detection of gnutls on Ubuntu 14.10.
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 30 Nov 2014 15:22:49 +0100
wine-compholio (1.7.31) unstable; urgency=low
* Improve output of 'wine --patches' and simplify syntax of definition files.
* Update kernel32-GetSystemTimes patches.
* Improve style for ntdll-Fix_Alignment patches.
* Added possibility to temporarily disable patches to patch system.
* Added patch to allow selecting specific audio device for PulseAudio backend.
* Added patch with stub for NtSetLdtEntries/ZwSetLdtEntries.
* Added patch to prevent processing message events for CoWaitForMultipleHandles when APC calls are queued.
* Added patch with stub for KeSetSystemAffinityThread.
* Added patch to implement DXTn support for d3dx9_36.
* Added patch to return correct values for GetThreadTimes.
* Added patch to align texture dimensions to block size for compressed textures.
* Added patch with stub for IoCsqInitialize.
* Added patch with stubs for vectored continue handler functions.
* Added patch to fix wglDescribePixelFormat when NULL is passed as pixel format descriptor.
* Added patch to allow NULL pointer for optional arguments of D3DXIntersectTri.
* Added patch to fix crash of winedevice when relocation entry crosses page boundary.
* Added patch to emulate 'mov Eb, Gb' instruction on x86 processor architecture.
* Added patch to emulate access to KI_USER_SHARED_DATA kernel page on x86_64.
* Added patch to initialize irp.Tail.Overlay.OriginalFileObject with stub file object.
* Added patch to implement emulation of SIDT instruction when using Exagear.
* Added patch to return more context attributes in schan_InitializeSecurityContextW.
* Added patch to avoid crashing when broken app tries to release surface although refcount is zero.
* Added patch to avoid sending window messages in FindWindowExW.
* Added patch to fix handling of invert_y in DrawTextExW.
* Added patch to fix implementation of K32GetPerformanceInfo.
* Added patch to close server fd if there is no space in thread inflight fd list.
* Added patch to avoid failing in d3dx9_mesh_OptimizeInplace because of unimplemented vertex reordering.
* Added patch to workaround bugs in CompareStringW (triggered by Adobe Flash).
* Removed patch for iphlpapi stub functions (accepted upstream).
* Removed patches for FindFirstFileExW (accepted upstream).
* Removed patches for TLB dependencies lookup in resources (accepted upstream).
* Removed patches for ws2_32.inet_pton implementation (fixed upstream).
* Removed patch to update properties when applying MSI transforms (fixed upstream).
* Removed patch to silence repeated GSUB_apply_ChainContext[Subst|Pos] FIXMEs (accepted upstream).
* Removed patch with additional tests for MsgWaitForMultipleObjectsEx (accepted upstream).
* Removed patches for D3DXCreatePolygon (accepted upstream).
* Removed patches vor vectored continue handler stubs (accepted upstream).
* Removed patches for K32GetPerformanceInfo (accepted upstream).
* Removed patch for D3DXIntersectTri (accepted upstream).
* Partially removed patches for UTF-7 tests (accepted upstream).
* Partially removed patches for WS_SO_CONNECT_TIME (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Sat, 15 Nov 2014 15:36:38 +0100
wine-compholio (1.7.30) unstable; urgency=low
* Fix wrong escaping of quote/slash characters in patchupdater script.
* Added additional conversion functions to DXTn patch.
* Added patch to filter specific warning messages for D3DCompileShader.
* Added patch to implement iphlpapi stub functions.
* Added patch to implement support for pasting HTML from native Unix applications.
* Added patch to implement RtlDecompressBuffer.
* Added patch to emulate write to CR4 register.
* Added patch for implementation of GdipCreateRegionRgnData.
* Added patch for implementation of D3DXCreatePolygon.
* Added patch for TLB dependencies lookup in resources.
* Added patch to update ProductVersion when applying MSI transforms.
* Added patch for ITextSelection_fnGetDuplicate implementation.
* Removed patch to avoid Clang compiler warning because of unused Vtable (accepted upstream).
* Removed patch for additional ATL thunks (accepted upstream).
* Removed patch to Ă­mplement IRichEditOle and ITextDocument support for ITextServices (accepted upstream).
* Removed patch to fix compile errors on Archlinux (fixed upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 02 Nov 2014 00:45:28 +0100
wine-compholio (1.7.29) unstable; urgency=low
* Updated DOS Attributes patch to better detect XATTR functions.
* Updated patch for shell32 default folder ACLs.
* Updated NtQuerySection patch.
* Updated patch for WRITECOPY memory protection.
* Added patch to support IDF_CHECKFIRST in SetupPromptForDisk.
* Added patch to fix issues when executing pages with guard page / write watch permissions.
* Added patch to set return value of basic_string_wchar_dtor to return NULL.
* Added patch for UTF7 encoding/decoding support.
* Added patch to implement ID3DXSkinInfoImpl_UpdateSkinnedMesh.
* Added patch for implementation of D3DXGetShaderInputSemantics.
* Added patch to ensure tests check exact return value of ParseURLFromOutsideSourceX.
* Added patch for additional ATL thunks.
* Added patch to add partially support for sessionStorage.
* Added patch for implementation of GetNumaProcessorNode.
* Added patch for wine64 support on FreeBSD/PC-BSD.
* Added patch for improved multi monitor support.
* Added patch for implementation of BindImageEx.
* Removed patch to fix issues with drag image in ImageLists (accepted upstream).
* Removed patch to set ldr.EntryPoint for main executable (accepted upstream).
* Removed patch to implement stubs for [Get|Set]SystemFileCacheSize (accepted upstream).
* Removed patches for ATL thunk implementation (accepted upstream).
* Partially removed patches for WRITECOPY memory protection (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 19 Oct 2014 19:37:21 +0200
wine-compholio (1.7.28) unstable; urgency=low
* Added missing recommendation for libtxc-dxtn-s2tc0 on Ubuntu.
* Added patch to fix issues with over-the-spot input method.
* Added patch to fix winemenubuilder desktop icon wine path (when using multiple wine versions).
* Added patch to support FIND_FIRST_EX_CASE_SENSITIVE flag in FindFirstFileExW.
* Added patch to send WM_PAINT event during dialog creation.
* Added patch to fix issues when driver dispatch routine returns different status codes.
* Added several patches for Unity3D Editor.
* Added patch to fix differences between exception handling behaviour in Wine and Windows.
* Added patch to export ?_BADOFF@std@@3_JB on both i386 and win64.
* Added patch to limit cross thread access to ImmSet* functions.
* Added patch for IRichEditOle and ITextDocument support for ITextServices.
* Added patch to fix implementation of SH*Shared commands.
* Added patch to handle WRITECOPY memory protection properly on i386 (disabled by default).
* Added patch to fix some issues with write watches / guard page access.
* Added patch to implement NtQuerySection.
* Added patches to make clearly visible, that this is a patched wine version.
* Added patch for FindFirstFileExW level FindExInfoBasic.
* Removed patch to support FIND_FIRST_EX_CASE_SENSITIVE flag in FindFirstFileExW (accepted upstream).
* Removed patch to fix implementation of SH*Shared commands (accepted upstream).
* Removed patch to export ?_BADOFF@std@@3_JB on both i386 and win64 (accepted upstream).
* Partially removed patches for CreateProcess ACLs (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Sat, 04 Oct 2014 04:36:22 +0200
wine-compholio (1.7.27) unstable; urgency=low
* Fixed some issues in the patches for GetSystemTimes.
* Added patch to support FIND_FIRST_EX_LARGE_FETCH flag in FindFirstFileExW.
* Added patch to fix deadlock caused by incorrect wrapper of glu polygon/contour function.
* Added patch to avoid filling out KdHelp for usermode applications.
* Added patch to silence repeated GSUB_apply_ChainContext[Subst|Pos] FIXMEs.
* Added patch to revert wined3d pixelformat changes (causes regression in many games).
* Added patch to implement software decoding/encoding of DXT1 textures.
* Removed patch to use assembly wrapper for TLS callbacks (accepted upstream).
* Removed patch to fix uninitialized cch struct member in GetMenuItemInfo (accepted upstream).
* Removed some patches for riched20/IText*-interface (accepted upstream).
* Removed patch to fix deadlock caused by incorrect wrapper of glu functions (accepted upstream).
* Removed patch for stub of BCryptGetFipsAlgorithmMode (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Sat, 20 Sep 2014 05:52:23 +0200
wine-compholio (1.7.26) unstable; urgency=low
* Added new make targets 'series' and 'install-git'.
* Some improvements in the patch system scripts.
* Fixed issues in the winepulse configure script.
* Fixed some issues in patches for Inherited ACLs.
* Fixed some issues in patches for backwards compatibility with old ACL format.
* Added patch to fix unintentional leaks with ntdll internals.
* Added patch to add support for DOS hidden/system file attributes.
* Added patch to use dynamic linking for libpcap.
* Added patch to fix issues when using setcap on wine executable.
* Added patch to improve heap allocation performance by using more freelists.
* Added patch to fix detection of ncurses on Archlinux (avoids ugly workarounds at build time).
* Added patch to fix detection of gnutls on Ubuntu 14.10.
* Added patch to use assembly wrapper for TLS callbacks.
* Added patch to fix uninitialized cch struct member in GetMenuItemInfo.
* Removed patch to fix issue with msi/ITERATE_MoveFiles (accepted upstream).
* Removed patch to fix detection of ncurses on Archlinux (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 07 Sep 2014 23:50:25 +0200
wine-compholio (1.7.25) unstable; urgency=low
* Improve generation of README.md on patch update.
* Updated patches for riched20 IText* Interface.
* Fixed some issues in the patches for TransmitFile.
* Fixed some issues in the patches for CreateProcess ACLs.
* Fixed issue with gitapply.sh script on Gentoo systems.
* Added patch with stub for DwmInvalidateIconicBitmaps.
* Added Courier Prime (OFLv1.1) as a Courier New replacement.
* Added patch to implement DOS hidden/system file attributes.
* Added patch to better detect broken nVidia RandR 1.2 support.
* Added patch to set linker version in PE header.
* Added patch to move NtProtectVirtualMemory and NtCreateSection to separate pages.
@@ -10,12 +193,13 @@ wine-compholio (1.7.25) UNRELEASED; urgency=low
* Added patch to fix issues with OpenProcess on terminated processes.
* Added patch to fix issues with msi/ITERATE_MoveFiles.
* Added patch to avoid grouping all Wine windows together.
* Updated patches for riched20 IText* Interface.
* Added patch to implement KF_FLAG_DEFAULT_PATH for SHGetKnownFolderPath.
* Added patch to implement GetFinalPathNameByHandle.
* Removed patch to update gl_drawable for embedded windows (deprecated).
* Removed patch to return empty D3D hardware flags for RGB device enumeration (accepted upstream).
* Removed patch with stub for DwmInvalidateIconicBitmaps (accepted upstream).
* Removed patch for SetNamedPipeHandleState implementation (accepted upstream).
-- Erich E. Hoover <erich.e.hoover@gmail.com> Mon, 11 Aug 2014 16:21:22 -0600
-- Erich E. Hoover <erich.e.hoover@gmail.com> Sun, 24 Aug 2014 11:09:58 -0600
wine-compholio (1.7.24) unstable; urgency=low
* Various further improvements to the patch system.

25
debian/control vendored
View File

@@ -46,6 +46,7 @@ Build-Depends: autotools-dev,
libssl-dev,
libstdc++6-4.5-dev | libstdc++-dev,
libtiff5-dev | libtiff4-dev | libtiff-dev,
libtxc-dxtn-s2tc-dev,
libv4l-dev,
libx11-dev,
libxcomposite-dev,
@@ -86,11 +87,13 @@ Recommends: libcapi20-3,
libjpeg8,
libopenal1 (>= 1:1.12),
libosmesa6,
libpcap0.8,
libpng12-0,
libpulse0,
libsane,
libssl1.0.0,
libtiff5 | libtiff4,
libtxc-dxtn-s2tc0,
libv4l-0,
libxcomposite1,
libxcursor1,
@@ -109,10 +112,6 @@ Replaces: wine-compholio (<< 1.7.15-1~)
Breaks: wine-compholio (<< 1.7.15-1~)
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
@@ -144,11 +143,13 @@ Recommends: libcapi20-3,
libjpeg8,
libopenal1 (>= 1:1.12),
libosmesa6,
libpcap0.8,
libpng12-0,
libpulse0,
libsane,
libssl1.0.0,
libtiff5 | libtiff4,
libtxc-dxtn-s2tc0,
libv4l-0,
libxcomposite1,
libxcursor1,
@@ -167,10 +168,6 @@ Replaces: wine-compholio (<< 1.7.15-1~)
Breaks: wine-compholio (<< 1.7.15-1~)
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
@@ -195,10 +192,6 @@ Section: otherosfs
Priority: optional
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
@@ -227,10 +220,6 @@ Replaces: wine-compholio (<< 1.7.15-1~)
Breaks: wine-compholio (<< 1.7.15-1~)
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.
@@ -254,10 +243,6 @@ Replaces: wine-compholio (<< 1.7.15-1~)
Breaks: wine-compholio (<< 1.7.15-1~)
Description: The Compholio Edition is a special build of the popular Wine software
with patches representing my current staging tree for Wine.
Currently these patches fix:
* Netflix on Firefox hangs with loading bar at 100% (Bug 31993).
* Netflix on Firefox fails with Internet Connection Problem when loading bar is
at 99% (Bug 31858).
.
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
Wine is a compatibility layer for running Windows applications on Linux.

23
debian/postinst vendored
View File

@@ -1,23 +0,0 @@
#!/bin/sh -e
if [ "$1" = "upgrade" ] ; then
if ps -C wineserver > /dev/null && test -d /var/lib/update-notifier/user.d/ ; then
cp -f /usr/share/wine/wineserver-restart-required.update-notifier /var/lib/update-notifier/user.d/wineserver-restart-required
fi
fi
service procps start || /etc/init.d/procps restart
# Automatically added by dh_installmime
if [ "$1" = "configure" ] && [ -x "`which update-mime 2>/dev/null`" ]; then
update-mime
fi
# End automatically added section
# Automatically added by dh_makeshlibs
if [ "$1" = "configure" ]; then
ldconfig
fi
# End automatically added section

10
debian/postrm vendored
View File

@@ -1,10 +0,0 @@
#!/bin/sh
set -e
# Automatically added by dh_installmime
if which update-mime >/dev/null 2>&1; then update-mime; fi
# End automatically added section
# Automatically added by dh_makeshlibs
if [ "$1" = "remove" ]; then
ldconfig
fi
# End automatically added section

9
debian/prerm vendored
View File

@@ -1,9 +0,0 @@
#!/bin/sh -e
if [ "$1" = "remove" ] ; then
if [ -x /usr/sbin/update-binfmts ]; then
/usr/sbin/update-binfmts --package wine --remove wine /usr/bin/wine || true
fi
fi

View File

@@ -1,152 +0,0 @@
Developers and maintainers guide
================================
This document will provide some information targeted at developers, who
either want to build/package Wine-Compholio for their distribution, but also
for developers who would like to contribute their patches to Wine-Compholio,
to get them included in future releases.
Compiling Wine-Compholio
========================
**Warning:** Please note that starting with Wine-Compholio 1.7.23 it is
deprecated to manually apply patches without using the Makefile. To avoid
typical pitfalls for package maintainers (like trying to use the patch
commandline utility for binary patches or not updating the patchlist) it is
highly recommended to use the Makefile in order to apply all patches. This
ensures that the the correct patch utility is used, that the list of patches
is updated appropriately, and so on. Please note that it is still possible
to exclude patches if desired, take a look at the end of this document for
more details.
Instructions
------------
The following instructions (based on the [Gentoo
Wiki](https://wiki.gentoo.org/wiki/Netflix/Pipelight#Compiling_manually))
will give a short overview how to compile Wine-Compholio, but of course not
explain all details. Make sure to install all required Wine dependencies
before proceeding.
As the first step please grab the latest Wine source:
```bash
wget http://prdownloads.sourceforge.net/wine/wine-{version}.tar.bz2
wget https://github.com/compholio/wine-compholio-daily/archive/v{version}.tar.gz
```
Extract the archives:
```bash
tar xvjf wine-1*.tar.bz2
cd wine-1*
tar xvzf ../v{version}.tar.gz --strip-components 1
```
And apply the patches:
```bash
make -C ./patches DESTDIR=$(pwd) install
```
Afterwards run configure (you can also specify a prefix if you don't want to install
Wine-Compholio system-wide):
```bash
./configure --with-xattr
```
Before you continue you should make sure that `./configure` doesn't show any
warnings (look at the end of the output). If there are any warnings, this
most likely means that you're missing some important header files. Install
them and repeat the `./configure` step until all problems are fixed.
Afterwards compile it (and grab a cup of coffee):
```bash
make
```
And install it (you only need sudo for a system-wide installation):
```bash
sudo make install
```
Excluding patches
-----------------
It is also possible to apply only a subset of the patches, for example if
you're compiling for a distribution where PulseAudio is not installed, or
if you just don't like a specific patchset. Please note that some patchsets
depend on each other, and requesting an impossible situation might result
in a failure to apply all patches.
Lets assume you want to exclude the patchset in directory `DIRNAME`, then
just invoke the Makefile like this:
```bash
make -C ./patches DESTDIR=$(pwd) install -W DIRNAME.ok
```
Using the same method its also possible to exclude multiple patchsets. If you
want to exclude a very large number of patches, it is easier to do specify
a list of patches which should be included instead. To apply for example
only the patchsets in directory `DIRNAME1` and `DIRNAME2`, you can use:
```bash
make -C ./patches DESTDIR=$(pwd) PATCHLIST="DIRNAME1.ok DIRNAME2.ok" install
```
Contributing to Wine-Compholio
==============================
Please note that Wine-Compholio is not just an arbitrary collection of Wine
patches. We see Wine-Compholio as a **testing version** in preparation for
patches to be submitted to upstream Wine. This implies that all patches should
at least have a minimum standard quality. Unlike some other PPAs/AURs which
provide heavily patched Wine versions, we will not accept hacks for very
specific games. Such hacks often break compatibility with other applications,
which means we probably don't want to include them, sorry.
If you think your patches are indeed a proper implementation, then feel free
to contribute them. Please note that to allow possible later inclusion
into upstream Wine, we will require you to pay attention to the same
[rules](http://wiki.winehq.org/SubmittingPatches). Please be patient and
give us up to about a week to review them - we're a very small team, so
it might take some time, and we want to make sure that the implementation
doesn't contain any critical errors, which could cause regressions. If you
want to contribute huge sets of patches, we would really like you to *stay
contributing* in the future. Even if we accepted your patches, this doesn't
necessary mean we understand all of it, and if you cannot or don't want
to maintain them (especially in case of errors, or difficult rebasing),
we will probably end up removing them again.
You can also suggest adding patches written by other people - in this case
your request should include who wrote the patch. Anonymous patches which
don't include the author information aren't welcome, similar to the rules
for upstream Wine.
Attribution guidelines
----------------------
The Wine "Compholio" Edition repository expects all patches to conform to
Wine's (undocumented) attribution guidelines. There are a variety of ways
to attribute patches, but they all involve an additional line to the patch
subject:
```
commit 0000000000000000000000000000000000000000
Author: Example Author <example.email@email-provider.com>
Date: Sat Jul 26 12:31:50 2014 -0600
Name of patch.
TYPE-OF-ATTRIBUTION.
```
TYPE-OF-ATTRIBUTION can be any of the following:
`Found/Spotted by FINDER.`: The resolved issue was found by FINDER, they
should receive appropriate credit for finding the problem - even though
their patch was not used in the final implementation.
`Based on patch by AUTHOR.`: The patch created by AUTHOR was a starting point
for the patch, some modifications were made to their patch - but they should
receive credit since the original implementation was theirs.

View File

@@ -2,10 +2,21 @@
# This file is automatically generated, DO NOT EDIT!
#
CURDIR ?= ${{.CURDIR}}
PATCH := $(CURDIR)/../debian/tools/gitapply.sh
APPLY := (cd $(DESTDIR) && $(PATCH))
APPLY_FILE = @echo "Applying $(1)"; $(APPLY) < $(CURDIR)/$(1)
.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}
@@ -16,9 +27,44 @@ install: $(PATCHLIST)
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
.NOTPARALLEL:

View File

@@ -1,325 +1,41 @@
What is Wine-Compholio?
=======================
What is Wine Staging?
=====================
The **Wine "Compholio" Edition** is a special patched version of Wine that
includes both patches written by our team directly and specific patches by
third party developers that we consider good enough for inclusion. This can
be seen as a testing version in preparation for patches to be submitted
to upstream Wine - don't be surprised if you encounter additional bugs,
which are not present in regular wine, and always report such issues to us
(via github), so we can improve our fixes even further. Thanks!
**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 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.
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
instructions available on the [website](http://www.wine-staging.com/install.html).
When using Wine Staging there are a few differences compared to regular
Wine. The main difference is that it is not sufficient to type `wine` to
run it, but instead you will have to type `/opt/wine-compholio/bin/wine`.
Besides that there are also some other differences, for example additional
configuration options to tweak performance, which are not available in regular
Wine. All those differences are also documented on the
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Usage).
Included bugfixes and improvements
----------------------------------
Included bug fixes and improvements
===================================
{fixes}
How to install Wine-Compholio
=============================
Ready-to-use packages for Wine-Compholio are available for a variety
of different Linux distributions directly for download. Just follow the
instructions below to install it (and all required dependencies). After the
installation, please take a look at the next section for instructions how
to use it in order to run your desired application.
**Important:** If you already have installed 'pipelight' on your system, there
is a good chance that you already have Wine-Compholio. Take a look at the
next section on how to find out if this is the case.
If your distribution is not listed below, feel free to add a feature request -
if the demand is high enough we might consider packaging it for additional
distributions.
![alt text](http://repos.fds-team.de/misc/images/ubuntu.png) Ubuntu / Linux Mint
--------------------------------------------------------------------------------
Please run the following commands from a terminal, one line after each other.
```bash
sudo add-apt-repository ppa:pipelight/stable
sudo apt-get update
sudo apt-get install --install-recommends wine-compholio
```
![alt text](http://repos.fds-team.de/misc/images/arch.png) Arch Linux
---------------------------------------------------------------------
As a first step you have to import the key for our repository, and set the
trust level to trusted:
```bash
sudo pacman-key -r E49CC0415DC2D5CA
sudo pacman-key --lsign-key E49CC0415DC2D5CA
```
Afterwards you have to add the following lines to `/etc/pacman.conf`:
```
[compholio]
Server = http://cdn.fds-team.de/stable/arch/$arch
```
Now you can install Wine-Compholio directly using `pacman`:
```bash
sudo pacman -Syu wine-compholio
```
![alt text](http://repos.fds-team.de/misc/images/debian.png) Debian Jessie/Sid
------------------------------------------------------------------------------
*(Instructions for Debian Wheezy can be found below)*
In order to install i386 packages on a 64-bit system, you have to run the
following command as a first step:
```bash
sudo dpkg --add-architecture i386
```
Afterwards import the key for our repository:
```bash
wget http://repos.fds-team.de/Release.key
sudo apt-key add Release.key
```
And add our repository at the end of your `/etc/apt/sources.list` file:
```
# For Debian Jessie add the following line:
deb http://cdn.fds-team.de/stable/debian/ jessie main
# For Debian Sid this one:
deb http://cdn.fds-team.de/stable/debian/ sid main
```
Afterwards update the package cache and install it:
```bash
sudo apt-get update
sudo apt-get install wine-compholio
```
![alt text](http://repos.fds-team.de/misc/images/debian.png) Debian Wheezy
--------------------------------------------------------------------------
In order to install i386 packages on a 64-bit system, you have to run the
following command as a first step:
```bash
sudo dpkg --add-architecture i386
```
Afterwards import the key for our repository:
```bash
wget http://download.opensuse.org/repositories/home:/DarkPlayer:/Pipelight/Debian_7.0/Release.key
sudo apt-key add Release.key
```
And add our repository at the end of your `/etc/apt/sources.list` file:
```
# For Debian Wheezy add the following line:
deb http://download.opensuse.org/repositories/home:/DarkPlayer:/Pipelight/Debian_7.0/ ./
```
Afterwards update the package cache and install it:
```bash
sudo apt-get update
sudo apt-get install wine-compholio
```
![alt text](http://repos.fds-team.de/misc/images/opensuse.png) OpenSUSE
-----------------------------------------------------------------------
All the following steps have to be executed as root user. As a first step
you have to add the repository - this step depends on the openSUSE version
you're using.
| openSUSE version | Path component |
| ------------------- | ----------------------- |
| openSUSE 12.2 | `/openSUSE_12.2/` |
| openSUSE 12.3 | `/openSUSE_12.3/` |
| openSUSE 13.1 | `/openSUSE_13.1/` |
| openSUSE Factory | `/openSUSE_Factory/` |
| openSUSE Tumbleweed | `/openSUSE_Tumbleweed/` |
The following commandline is an example for openSUSE 13.1, for a different
version just replace the path component according to the table above:
```bash
zypper ar --refresh http://download.opensuse.org/repositories/home:/DarkPlayer:/Pipelight/openSUSE_13.1/home:DarkPlayer:Pipelight.repo
```
Afterwards just run the following commands to install it:
```bash
zypper ref
zypper install wine-compholio
```
![alt text](http://repos.fds-team.de/misc/images/fedora.png) Fedora
-------------------------------------------------------------------
**Warning:** In contrary to other distributions, its not possible to have both
a regular wine version and Wine-Compholio installed at the same time - using
the instructions below will replace your regular version. Moreover it will
be installed to `/usr/bin/wine` in contrary to `/opt/wine-compholio/bin/wine`.
As a first step you have to add the repository - this step depends on the
Fedora version you're using.
| Fedora version | Patch component |
| --------------- | --------------- |
| Fedora 18 | `/Fedora_18/` |
| Fedora 19 | `/Fedora_19/` |
| Fedora 20 | `/Fedora_20/` |
The following commandline is an example for Fedora 19, for a different version
just replace the path component according to the table above:
```bash
sudo wget http://download.opensuse.org/repositories/home:/DarkPlayer:/Pipelight/Fedora_19/home:DarkPlayer:Pipelight.repo -O /etc/yum.repos.d/pipelight.repo
```
Afterwards run the following command to install the package:
```bash
sudo yum install wine-compholio
```
Please note that you might run into trouble if the official Fedora package
(without compholio patches) is newer than the one from the repository above,
so if something doesn't work, always make sure that you have installed
our version. To do that just run:
```bash
/usr/bin/wine --patches
```
When you're using Wine-Compholio this will show to a list of all patches
included, for an unpatched version this command will fail.
![alt text](http://repos.fds-team.de/misc/images/mageia.png) Mageia 4
---------------------------------------------------------------------
As a first step please add the key for our repository
```bash
wget http://repos.fds-team.de/Release.key
rpm --import Release.key
```
If you're using a 32-bit version of Mageia just add the repository
for 32-bit packages:
```bash
sudo urpmi.addmedia "Compholio 32-bit" http://cdn.fds-team.de/stable/mageia/4/i586/
```
For a 64-bit version of Mageia you'll need both the 32-bit and the
64-bit repository:
```bash
sudo urpmi.addmedia "Compholio 32-bit" http://cdn.fds-team.de/stable/mageia/4/i586/
sudo urpmi.addmedia "Compholio 64-bit" http://cdn.fds-team.de/stable/mageia/4/x86_64/
```
Afterwards run the following commands to install the package:
```bash
sudo urpmi.update -a
sudo urpmi wine-compholio
```
Using Wine-Compholio
====================
Since we don't want to duplicate a lot of information here, we recommend
to take a look at the [official Wine FAQ](http://wiki.winehq.org/FAQ) for
general information about how to use Wine. The following part will mainly
concentrate on the differences between wine and Wine-Compholio.
Running Wine-Compholio
----------------------
**Using multiple Wine versions:** Unless you specify a special `WINEPREFIX`
environment variable, Wine-Compholio will use the same wineprefix `~/.wine`
(in your home directory) like regular wine. This allows you to use your
already installed programs directly, without much effort or reinstalling
them. Often you have both regular wine and Wine-Compholio installed at the
same time, which is *absolutely no problem* - by typing in either `wine`
(=regular wine) or `/opt/wine-compholio/bin/wine` you can decide, which
wine version you want to run. You can switch between versions as often as
you like - just make sure that all Windows programs have terminated before
starting them with a different version.
To run Wine-Compholio always type `/opt/wine-compholio/bin/wine`, for example:
```bash
cd ~/.wine/drive_c/<your path>/
/opt/wine-compholio/bin/wine game.exe
```
You also have to add `/opt/wine-compholio/bin/` when running other wine
related programs, here are some additional example:
```bash
# Initialize the wine prefix
/opt/wine-compholio/bin/wineboot
# Open the wine configuration
/opt/wine-compholio/bin/winecfg
# Run winepath to convert paths
/opt/wine-compholio/bin/winepath --unix 'c:\Windows'
# Kill the running wineserver instance
/opt/wine-compholio/bin/wineserver -k
...
```
If you're an experienced user, and always want to use Wine-Compholio, you
can also add `/opt/wine-compholio/bin` to your bash profile. We will not
go into detail here, because such a setup has the big disadvantage, that
it hides which version you're using - which is very important for getting
support or reporting bugs.
Submitting bugs
---------------
**Warning: Do not submit bug reports at bugs.winehq.org when using this
version!**
If you encounter any issues, the first thing you should do is to try it with
regular wine. We're only a very small developer team, and although we would
like to do that, we probably cannot really solve all your Wine bugs. When
it turns out that the official Wine version also doesn't work, you can file
a bugreport at the official [Wine bugtracker](http://bugs.winehq.org/).
Feel free to mention that you also tested with Wine-Compholio, but all
bugreport related information (logs, crashdumps, ...) should concentrate
only on upstream wine.
If it turns out, that it works with upstream wine, but not with Wine-Compholio,
then it might be a regression caused by our patches. We would like you to
report this issue to us, so we can fix it in future versions. You can also
report issues, when testing with upstream Wine is impossible or it crashes
with a different error (for example much earlier).
When submitting a application related bug here on github, please make sure to
include at least the following information. Generally its always a good idea
to provide as much information as possible, since this will significantly
increase chances to provide support and to fix it.
1. **Which application triggers the bug**
* Application name and version number
* How to obtain it (download URL + checksum if public available)
2. **What exactly doesn't work**
* Log of the terminal output of the application
* For visual issues please additionally attach a screenshot, and describe
what it should look like
* *Optionally:* If you already know whats going wrong, please attach
appropriate `WINEDEBUG` logs or excerpts showing the issue.
3. **Details about your WINEPREFIX**
* *Recommended:* Test it in a new wine prefix, and report if this works
* Did you install any overrides? (for examples by using `winetricks`)
* Did you change any settings by running `winecfg`?
4. **Information about your Wine-Compholio version**
* *Recommended:* Test with regular wine, and report if this works
* Version number (`/opt/wine-compholio/bin/wine --version`)
* Patches in your build (`/opt/wine-compholio/bin/wine --patches`)
* Installed optional libraries (`/opt/wine-compholio/bin/wine --check-libs`)

View File

@@ -1,32 +1,47 @@
#!/bin/sh
PATCH_DATA=$(cat);
PATCH_LINES=$(echo "${PATCH_DATA}" | wc -l);
PATCH_LINES=$((${PATCH_LINES}+20));
PATCH_LINES=$((${PATCH_LINES}+23));
cat <<EOF
From: "FDS-Team" <webmaster@fds-team.de>
From: FDS-Team <webmaster@fds-team.de>
Subject: Autogenerated patch list.
---
diff --git a/include/wine/library.h b/include/wine/library.h
index 242bb69..fae73fe 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void);
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
+extern const void *wine_get_patches(void);
extern const char *wine_get_build_id(void);
extern void wine_init_argv0_path( const char *argv0 );
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index a273502..5fa0cd5 100644
index a273502..0a3182f 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -478,6 +478,${PATCH_LINES} @@ const char *wine_get_version(void)
return PACKAGE_VERSION;
}
+struct wine_patch {
+ const char *hash;
+static const struct
+{
+ const char *author;
+ const char *title;
+} wine_patch_data[] = {
+ const char *subject;
+ int revision;
+}
+wine_patch_data[] =
+{
${PATCH_DATA}
+ { NULL, NULL, NULL }
+ { NULL, NULL, 0 }
+};
+
+/* return the applied non-standard patches */
+const void * wine_get_patches(void)
+const void *wine_get_patches(void)
+{
+ return &wine_patch_data[0];
+}
@@ -58,16 +73,4 @@ index 2159fac..7cb2918 100644
wine_init;
wine_init_argv0_path;
wine_is_dbcs_leadbyte;
diff --git a/include/wine/library.h b/include/wine/library.h
index 242bb69..aa9e585 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void);
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
+extern const void *wine_get_patches(void);
extern const char *wine_get_build_id(void);
extern void wine_init_argv0_path( const char *argv0 );
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
EOF

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/python2
#
# Python functions to read, split and apply patches.
#
@@ -21,13 +21,17 @@
import collections
import difflib
import email.header
import hashlib
import itertools
import os
import re
import shutil
import subprocess
import tempfile
_devnull = open(os.devnull, 'wb')
class PatchParserError(RuntimeError):
"""Unable to parse patch file - either an unimplemented feature, or corrupted patch."""
pass
@@ -37,22 +41,27 @@ class PatchApplyError(RuntimeError):
pass
class PatchObject(object):
def __init__(self, filename):
self.extracted_patch = None
self.unique_hash = None
def __init__(self, filename, header):
self.patch_author = header['author']
self.patch_email = header['email']
self.patch_subject = header['subject']
self.patch_revision = header['revision'] if header.has_key('revision') else 1
self.filename = filename
self.offset_begin = None
self.offset_end = None
self.isbinary = False
# self.extracted_patch = None
self.unique_hash = None
self.oldname = None
self.newname = None
self.modified_file = None
self.filename = filename
self.offset_begin = None
self.offset_end = None
self.isbinary = False
self.oldsha1 = None
self.newsha1 = None
self.newmode = None
self.oldname = None
self.newname = None
self.modified_file = None
self.oldsha1 = None
self.newsha1 = None
self.newmode = None
def is_binary(self):
return self.isbinary
@@ -64,80 +73,62 @@ class PatchObject(object):
fp.seek(self.offset_begin)
i = self.offset_end - self.offset_begin
while i > 0:
buf = fp.read(4096 if i > 4096 else i)
buf = fp.read(16384 if i > 16384 else i)
if buf == "": raise IOError("Unable to extract patch.")
yield buf
i -= len(buf)
def extract(self):
"""Create a temporary file containing the extracted patch."""
if not self.extracted_patch:
self.extracted_patch = tempfile.NamedTemporaryFile()
for chunk in self.read_chunks():
self.extracted_patch.write(chunk)
self.extracted_patch.flush()
return self.extracted_patch
class _FileReader(object):
def __init__(self, filename):
self.filename = filename
self.fp = open(self.filename)
self.peeked = None
def hash(self):
"""Hash the content of the patch."""
if not self.unique_hash:
m = hashlib.sha256()
for chunk in self.read_chunks():
m.update(chunk)
self.unique_hash = m.digest()
return self.unique_hash
def close(self):
self.fp.close()
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
self.close()
def seek(self, pos):
"""Change the file cursor position."""
self.fp.seek(pos)
self.peeked = None
def tell(self):
"""Return the current file cursor position."""
if self.peeked is None:
return self.fp.tell()
return self.peeked[0]
def peek(self):
"""Read one line without changing the file cursor."""
if self.peeked is None:
pos = self.fp.tell()
tmp = self.fp.readline()
if len(tmp) == 0: return None
self.peeked = (pos, tmp)
return self.peeked[1]
def read(self):
"""Read one line from the file, and move the file cursor to the next line."""
if self.peeked is None:
tmp = self.fp.readline()
if len(tmp) == 0: return None
return tmp
tmp, self.peeked = self.peeked, None
return tmp[1]
def read_patch(filename):
"""Iterates over all patches contained in a file, and returns PatchObject objects."""
class _FileReader(object):
def __init__(self, filename):
self.filename = filename
self.fp = open(self.filename)
self.peeked = None
def close(self):
self.fp.close()
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
self.close()
def seek(self, pos):
"""Change the file cursor position."""
self.fp.seek(pos)
self.peeked = None
def tell(self):
"""Return the current file cursor position."""
if self.peeked is None:
return self.fp.tell()
return self.peeked[0]
def peek(self):
"""Read one line without changing the file cursor."""
if self.peeked is None:
pos = self.fp.tell()
tmp = self.fp.readline()
if len(tmp) == 0: return None
self.peeked = (pos, tmp)
return self.peeked[1]
def read(self):
"""Read one line from the file, and move the file cursor to the next line."""
if self.peeked is None:
tmp = self.fp.readline()
if len(tmp) == 0: return None
return tmp
tmp, self.peeked = self.peeked, None
return tmp[1]
def _read_single_patch(fp, oldname=None, newname=None):
def _read_single_patch(fp, header, oldname=None, newname=None):
"""Internal function to read a single patch from a file."""
patch = PatchObject(fp.filename)
patch = PatchObject(fp.filename, header)
patch.offset_begin = fp.tell()
patch.oldname = oldname
patch.newname = newname
@@ -152,28 +143,39 @@ def read_patch(filename):
line = fp.peek()
if line is None:
break
elif line.startswith("--- "):
patch.oldname = line[4:].strip()
elif line.startswith("+++ "):
patch.newname = line[4:].strip()
elif line.startswith("old mode") or line.startswith("deleted file mode"):
pass # ignore
elif line.startswith("new mode "):
patch.newmode = line[9:].strip()
elif line.startswith("new file mode "):
patch.newmode = line[14:].strip()
elif line.startswith("new mode") or line.startswith("new file mode"):
raise PatchParserError("Unable to parse header line '%s'." % line)
elif line.startswith("copy from") or line.startswith("copy to"):
raise NotImplementedError("Patch copy header not implemented yet.")
elif line.startswith("rename "):
raise NotImplementedError("Patch rename header not implemented yet.")
elif line.startswith("similarity index") or line.startswith("dissimilarity index"):
pass # ignore
elif line.startswith("index "):
r = re.match("^index ([a-fA-F0-9]*)\.\.([a-fA-F0-9]*)", line)
if not r: raise PatchParserError("Unable to parse index header line '%s'." % line)
patch.oldsha1, patch.newsha1 = r.group(1), r.group(2)
else:
break
assert fp.read() == line
@@ -218,27 +220,28 @@ def read_patch(filename):
raise PatchParserError("Empty hunk doesn't make sense.")
assert fp.read() == line
while srclines > 0 or dstlines > 0:
line = fp.read()
if line is None:
raise PatchParserError("Truncated patch.")
elif line.startswith(" "):
if srclines == 0 or dstlines == 0:
raise PatchParserError("Corrupted patch.")
srclines -= 1
dstlines -= 1
elif line.startswith("-"):
if srclines == 0:
raise PatchParserError("Corrupted patch.")
srclines -= 1
elif line.startswith("+"):
if dstlines == 0:
raise PatchParserError("Corrupted patch.")
dstlines -= 1
elif line.startswith("\\ "):
pass # ignore
else:
raise PatchParserError("Unexpected line in hunk.")
try:
while srclines > 0 or dstlines > 0:
line = fp.read()[0]
if line == " ":
if srclines == 0 or dstlines == 0:
raise PatchParserError("Corrupted patch.")
srclines -= 1
dstlines -= 1
elif line == "-":
if srclines == 0:
raise PatchParserError("Corrupted patch.")
srclines -= 1
elif line == "+":
if dstlines == 0:
raise PatchParserError("Corrupted patch.")
dstlines -= 1
elif line == "\\":
pass # ignore
else:
raise PatchParserError("Unexpected line in hunk.")
except TypeError: # triggered by None[0]
raise PatchParserError("Truncated patch.")
while True:
line = fp.peek()
@@ -270,51 +273,92 @@ def read_patch(filename):
patch.offset_end = fp.tell()
return patch
def _parse_author(author):
author = ' '.join([data.decode(format or 'utf-8').encode('utf-8') for \
data, format in email.header.decode_header(author)])
r = re.match("\"?([^\"]*)\"? <(.*)>", author)
if r is None: raise NotImplementedError("Failed to parse From - header.")
return r.group(1).strip(), r.group(2).strip()
def _parse_subject(subject):
version = "(v|try|rev|take) *([0-9]+)"
subject = subject.strip()
if subject.endswith("."): subject = subject[:-1]
r = re.match("^\\[PATCH([^]]*)\\](.*)$", subject, re.IGNORECASE)
if r is not None:
subject = r.group(2).strip()
r = re.search(version, r.group(1), re.IGNORECASE)
if r is not None: return subject, int(r.group(2))
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("^(.*)[.,] +%s$" % version, subject, re.IGNORECASE)
if r is not None: return r.group(1).strip(), int(r.group(3))
r = re.match("^([^:]+) %s: (.*)$" % version, subject, re.IGNORECASE)
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))
return subject, 1
header = {}
with _FileReader(filename) as fp:
while True:
line = fp.peek()
if line is None:
break
elif line.startswith("From: "):
header['author'], header['email'] = _parse_author(line[6:])
assert fp.read() == line
elif line.startswith("Subject: "):
subject = line[9:].rstrip("\r\n")
assert fp.read() == line
while True:
line = fp.peek()
if not line.startswith(" "): break
subject += line.rstrip("\r\n")
assert fp.read() == line
subject, revision = _parse_subject(subject)
if not subject.endswith("."): subject += "."
header['subject'], header['revision'] = subject, revision
elif line.startswith("diff --git "):
tmp = line.strip().split(" ")
if len(tmp) != 4: raise PatchParserError("Unable to parse git diff header line '%s'." % line)
yield _read_single_patch(fp, tmp[2].strip(), tmp[3].strip())
yield _read_single_patch(fp, header, tmp[2].strip(), tmp[3].strip())
elif line.startswith("--- "):
yield _read_single_patch(fp)
yield _read_single_patch(fp, header)
elif line.startswith("@@ -") or line.startswith("+++ "):
raise PatchParserError("Patch didn't start with a git or diff header.")
else:
assert fp.read() == line
def apply_patch(content, patches, reverse=False, fuzz=2):
def apply_patch(original, patchfile, reverse=False, fuzz=2):
"""Apply a patch with optional fuzz - uses the commandline 'patch' utility."""
if not isinstance(patches, collections.Sequence):
patches = [patches]
contentfile = tempfile.NamedTemporaryFile(delete=False)
result = tempfile.NamedTemporaryFile(delete=False)
try:
contentfile.write(content)
contentfile.close()
# We open the file again to avoid race-conditions with multithreaded reads
with open(original.name) as fp:
shutil.copyfileobj(fp, result)
result.close()
for patch in patches:
cmdline = ["patch", "--no-backup-if-mismatch", "--force", "--silent", "-r", "-"]
if reverse: cmdline.append("--reverse")
if fuzz != 2: cmdline.append("--fuzz=%d" % fuzz)
cmdline += [result.name, patchfile.name]
patchfile = patch.extract()
cmdline = ["patch", "--force", "--silent", "-r", "-"]
if reverse: cmdline.append("--reverse")
if fuzz != 2: cmdline.append("--fuzz=%d" % fuzz)
cmdline += [contentfile.name, patchfile.name]
with open(os.devnull, 'w') as devnull:
exitcode = subprocess.call(cmdline, stdout=devnull, stderr=devnull)
if exitcode != 0:
raise PatchApplyError("Failed to apply patch (exitcode %d)." % exitcode)
with open(contentfile.name) as fp:
content = fp.read()
finally:
os.unlink(contentfile.name)
return content
exitcode = subprocess.call(cmdline, stdout=_devnull, stderr=_devnull)
if exitcode != 0:
raise PatchApplyError("Failed to apply patch (exitcode %d)." % exitcode)
# Hack - we can't keep the file open while patching ('patch' might rename/replace
# the file), so create a new _TemporaryFileWrapper object for the existing path.
return tempfile._TemporaryFileWrapper(file=open(result.name, 'r+b'), \
name=result.name, delete=True)
except:
os.unlink(result.name)
raise

106
debian/tools/progressbar.py vendored Normal file
View File

@@ -0,0 +1,106 @@
#!/usr/bin/python2
#
# Python progressbar functions.
#
# Copyright (C) 2014 Sebastian Lackner
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
#
import fcntl
import os
import signal
import struct
import sys
import termios
def _sig_winch(signum=None, frame=None):
"""Signal handler for SIGWINCH."""
global _term_width
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()
signal.signal(signal.SIGWINCH, _sig_winch)
except IOError:
_term_width = int(os.environ.get('COLUMNS', 80)) - 1
class ProgressBar(object):
def __init__(self, desc="", msg=None, current=0, total=100):
"""Initialize a new progress bar with given properties."""
self.desc = desc
self.msg = msg
self.current = current
self.total = total
def __enter__(self):
self.update()
return self
def __exit__(self, type, value, traceback):
if type is not None:
sys.stdout.write("\r")
msg = "<interrupted>"
else:
msg = None
self.finish(msg)
if self.msg is not None:
sys.stdout.write("\n")
def update(self, value = None):
"""Redraw the progressbar and optionally update the value."""
if value is not None:
self.current = value
if self.current == 0 or (self.current >= self.total and self.msg is None):
sys.stdout.write("%s\r" % (' ' * _term_width))
sys.stdout.flush()
return
width = _term_width / 2
s1 = self.desc.ljust(width - 1, ' ')[:width - 1]
width = _term_width - width
if self.current >= self.total:
s2 = self.msg.ljust(width, ' ')[:width]
elif width > 2:
numbars = min(self.current * (width - 2) / self.total, width - 2)
s2 = "[%s%s]" % ('#' * numbars, '-' * (width - 2 - numbars))
percent = " %d%% " % min(self.current * 100 / self.total, 100)
i = (len(s2)-len(percent))/2
s2 = "%s%s%s" % (s2[:i], percent, s2[i+len(percent):])
sys.stdout.write("%s %s\r" % (s1, s2))
sys.stdout.flush()
def finish(self, msg = None):
"""Finalize the progressbar."""
if msg is not None:
self.msg = msg
self.current = self.total
self.update()
sys.stdout.flush()
if __name__ == '__main__':
import time
print ""
with ProgressBar(desc="description") as x:
for i in xrange(100):
x.update(i)
time.sleep(1)

View File

@@ -0,0 +1,288 @@
From 7cb209e122fc503190dcad411483147ebc6d6cb4 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 11 Nov 2014 03:11:33 +0100
Subject: ntdll: Implement emulation of SIDT instruction when using Exagear.
---
configure.ac | 8 ++
dlls/ntdll/signal_i386.c | 224 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 232 insertions(+)
diff --git a/configure.ac b/configure.ac
index 92d78a2..c88a139 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,6 +32,7 @@ AC_ARG_ENABLE(win16, AS_HELP_STRING([--disable-win16],[do not include Win16 supp
AC_ARG_ENABLE(win64, AS_HELP_STRING([--enable-win64],[build a Win64 emulator on AMD64 (won't run Win32 binaries)]))
AC_ARG_ENABLE(tests, AS_HELP_STRING([--disable-tests],[do not build the regression tests]))
AC_ARG_ENABLE(maintainer-mode, AS_HELP_STRING([--enable-maintainer-mode],[enable maintainer-specific build rules]))
+AC_ARG_ENABLE(exagear-compat, AS_HELP_STRING([--enable-exagear-compat],[use workarounds for known problems in the Exagear emulator]))
AC_ARG_WITH(alsa, AS_HELP_STRING([--without-alsa],[do not use the Alsa sound support]),
[if test "x$withval" = "xno"; then ac_cv_header_sys_asoundlib_h=no; ac_cv_header_alsa_asoundlib_h=no; fi])
@@ -367,6 +368,13 @@ fi
WINE_WARNING_WITH(gettext,[test "$MSGFMT" = false],
[gettext tools not found (or too old), translations won't be built.])
+dnl **** Enable Exagear workarounds ****
+
+if test "x$enable_exagear_compat" = "xyes"
+then
+ AC_DEFINE(EXAGEAR_COMPAT, 1, [Define if you want to enable Exagear emulator workarounds])
+fi
+
dnl **** Check for some libraries ****
dnl Check for -li386 for NetBSD and OpenBSD
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 13df4bb..edf5ea8 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -96,6 +96,14 @@ typedef struct
BYTE Reserved4[96];
} XMM_SAVE_AREA32;
+#include "pshpack1.h"
+struct idtr
+{
+ WORD limit;
+ BYTE *base;
+};
+#include "poppack.h"
+
/***********************************************************************
* signal context platform-specific definitions
*/
@@ -1573,6 +1581,214 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
}
}
+
+#ifdef EXAGEAR_COMPAT
+
+/***********************************************************************
+ * INSTR_GetOperandAddr
+ *
+ * Return the address of an instruction operand (from the mod/rm byte).
+ */
+static BYTE *INSTR_GetOperandAddr( CONTEXT *context, const BYTE *instr,
+ int long_addr, int segprefix, int *len )
+{
+ int mod, rm, base = 0, index = 0, ss = 0, off;
+
+#define GET_VAL(val,type) \
+ { *val = *(type *)instr; instr += sizeof(type); *len += sizeof(type); }
+
+ *len = 0;
+ GET_VAL( &mod, BYTE );
+ rm = mod & 7;
+ mod >>= 6;
+
+ if (mod == 3)
+ {
+ switch(rm)
+ {
+ case 0: return (BYTE *)&context->Eax;
+ case 1: return (BYTE *)&context->Ecx;
+ case 2: return (BYTE *)&context->Edx;
+ case 3: return (BYTE *)&context->Ebx;
+ case 4: return (BYTE *)&context->Esp;
+ case 5: return (BYTE *)&context->Ebp;
+ case 6: return (BYTE *)&context->Esi;
+ case 7: return (BYTE *)&context->Edi;
+ }
+ }
+
+ if (long_addr)
+ {
+ if (rm == 4)
+ {
+ BYTE sib;
+ GET_VAL( &sib, BYTE );
+ rm = sib & 7;
+ ss = sib >> 6;
+ switch((sib >> 3) & 7)
+ {
+ case 0: index = context->Eax; break;
+ case 1: index = context->Ecx; break;
+ case 2: index = context->Edx; break;
+ case 3: index = context->Ebx; break;
+ case 4: index = 0; break;
+ case 5: index = context->Ebp; break;
+ case 6: index = context->Esi; break;
+ case 7: index = context->Edi; break;
+ }
+ }
+
+ switch(rm)
+ {
+ case 0: base = context->Eax; break;
+ case 1: base = context->Ecx; break;
+ case 2: base = context->Edx; break;
+ case 3: base = context->Ebx; break;
+ case 4: base = context->Esp; break;
+ case 5: base = context->Ebp; break;
+ case 6: base = context->Esi; break;
+ case 7: base = context->Edi; break;
+ }
+ switch (mod)
+ {
+ case 0:
+ if (rm == 5) /* special case: ds:(disp32) */
+ {
+ GET_VAL( &base, DWORD );
+ }
+ break;
+
+ case 1: /* 8-bit disp */
+ GET_VAL( &off, BYTE );
+ base += (signed char)off;
+ break;
+
+ case 2: /* 32-bit disp */
+ GET_VAL( &off, DWORD );
+ base += (signed long)off;
+ break;
+ }
+ }
+ else /* short address */
+ {
+ switch(rm)
+ {
+ case 0: /* ds:(bx,si) */
+ base = LOWORD(context->Ebx) + LOWORD(context->Esi);
+ break;
+ case 1: /* ds:(bx,di) */
+ base = LOWORD(context->Ebx) + LOWORD(context->Edi);
+ break;
+ case 2: /* ss:(bp,si) */
+ base = LOWORD(context->Ebp) + LOWORD(context->Esi);
+ break;
+ case 3: /* ss:(bp,di) */
+ base = LOWORD(context->Ebp) + LOWORD(context->Edi);
+ break;
+ case 4: /* ds:(si) */
+ base = LOWORD(context->Esi);
+ break;
+ case 5: /* ds:(di) */
+ base = LOWORD(context->Edi);
+ break;
+ case 6: /* ss:(bp) */
+ base = LOWORD(context->Ebp);
+ break;
+ case 7: /* ds:(bx) */
+ base = LOWORD(context->Ebx);
+ break;
+ }
+
+ switch(mod)
+ {
+ case 0:
+ if (rm == 6) /* special case: ds:(disp16) */
+ {
+ GET_VAL( &base, WORD );
+ }
+ break;
+
+ case 1: /* 8-bit disp */
+ GET_VAL( &off, BYTE );
+ base += (signed char)off;
+ break;
+
+ case 2: /* 16-bit disp */
+ GET_VAL( &off, WORD );
+ base += (signed short)off;
+ break;
+ }
+ base &= 0xffff;
+ }
+ /* FIXME: we assume that all segments have a base of 0 */
+ return (BYTE *)(base + (index << ss));
+#undef GET_VAL
+}
+
+
+/***********************************************************************
+ * check_invalid_instr
+ *
+ * Support for instructions not implemented by Exagear.
+ */
+static inline BOOL check_invalid_instr( CONTEXT *context )
+{
+ const BYTE *instr;
+ unsigned int prefix_count = 0;
+ int len, long_addr = 1;
+
+ if (!wine_ldt_is_system( context->SegCs )) return FALSE;
+ instr = (BYTE *)context->Eip;
+
+ for (;;) switch (*instr)
+ {
+ /* instruction prefixes */
+ case 0x2e: /* %cs: */
+ case 0x36: /* %ss: */
+ case 0x3e: /* %ds: */
+ case 0x26: /* %es: */
+ case 0x64: /* %fs: */
+ case 0x65: /* %gs: */
+ case 0x66: /* opcode size */
+ case 0x67: /* addr size */
+ case 0xf0: /* lock */
+ case 0xf2: /* repne */
+ case 0xf3: /* repe */
+ if (++prefix_count >= 15) return FALSE;
+ if (*instr == 0x67) long_addr = !long_addr; /* addr size */
+ instr++;
+ continue;
+ case 0x0f: /* extended instruction */
+ switch (instr[1])
+ {
+ case 0x01:
+ if (((instr[2] >> 3) & 7) == 1) /* sidt m */
+ {
+ struct idtr ret;
+ BYTE *addr;
+
+ if ((instr[2] >> 6) == 3) return FALSE; /* loading to register not allowed */
+ addr = INSTR_GetOperandAddr( context, instr + 2, long_addr, 0, &len );
+
+ /* fake IDT structure */
+ ret.limit = 0xfff;
+ ret.base = (void *)0xff000000;
+ memcpy(addr, &ret, sizeof(ret));
+
+ context->Eip += prefix_count + len + 2;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+#endif /* EXAGEAR_COMPAT */
+
+
/***********************************************************************
* check_invalid_gs
*
@@ -1902,6 +2118,14 @@ static void WINAPI raise_segv_exception( EXCEPTION_RECORD *rec, CONTEXT *context
switch(rec->ExceptionCode)
{
+#ifdef EXAGEAR_COMPAT
+ case EXCEPTION_ILLEGAL_INSTRUCTION:
+ {
+ if (check_invalid_instr( context ))
+ goto done;
+ }
+ break;
+#endif
case EXCEPTION_ACCESS_VIOLATION:
if (rec->NumberParameters == 2)
{
--
2.1.3

View File

@@ -0,0 +1,51 @@
From 8c7754a1da9f43cf15057a8467c0b76c9da2ce40 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 22 Nov 2014 05:49:30 +0100
Subject: ntdll: Fix issues with write watches when using Exagear.
---
dlls/ntdll/virtual.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index 1a8e4a4..4140323 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -1558,6 +1558,26 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err )
{
void *page = ROUND_ADDR( addr, page_mask );
BYTE *vprot = &view->prot[((const char *)page - (const char *)view->base) >> page_shift];
+#ifdef EXAGEAR_COMPAT
+ /* Exagear doesn't correctly set err, so always check for write watches, and
+ * retry after removing the VPROT_WRITEWATCH or VPROT_WRITECOPY flag. In
+ * contrary to the general implementation below this is not completely race-
+ * condition safe. When multiple threads trigger the write watch at the same
+ * time only the first thread will properly continue the execution, the rest
+ * will crash. */
+ if ((view->protect & VPROT_WRITEWATCH) && (*vprot & VPROT_WRITEWATCH))
+ {
+ *vprot &= ~VPROT_WRITEWATCH;
+ VIRTUAL_SetProt( view, page, page_size, *vprot );
+ if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
+ }
+ if (*vprot & VPROT_WRITECOPY)
+ {
+ *vprot = (*vprot & ~VPROT_WRITECOPY) | VPROT_WRITE;
+ VIRTUAL_SetProt( view, page, page_size, *vprot );
+ if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
+ }
+#else
if (err & EXCEPTION_WRITE_FAULT)
{
if ((view->protect & VPROT_WRITEWATCH) && (*vprot & VPROT_WRITEWATCH))
@@ -1573,6 +1593,7 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err )
/* ignore fault if page is writable now */
if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
}
+#endif
if (*vprot & VPROT_GUARD)
{
VIRTUAL_SetProt( view, page, page_size, *vprot & ~VPROT_GUARD );
--
2.1.3

View File

@@ -0,0 +1,25 @@
From 67cc0e23b26d5d9abda7eb771dc2bec309cb8650 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 23 Nov 2014 22:33:51 +0100
Subject: server: Don't attempt to use ptrace when running with Exagear.
---
server/ptrace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/ptrace.c b/server/ptrace.c
index cb436b6..fb29b5a 100644
--- a/server/ptrace.c
+++ b/server/ptrace.c
@@ -531,7 +531,7 @@ void get_selector_entry( struct thread *thread, int entry, unsigned int *base,
#if defined(linux) && (defined(HAVE_SYS_USER_H) || defined(HAVE_ASM_USER_H)) \
- && (defined(__i386__) || defined(__x86_64__))
+ && (defined(__i386__) || defined(__x86_64__)) && !defined(EXAGEAR_COMPAT)
#ifdef HAVE_SYS_USER_H
#include <sys/user.h>
--
2.1.3

View File

@@ -0,0 +1 @@
Depends: ntdll-WRITECOPY

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