Compare commits

..

86 Commits

Author SHA1 Message Date
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
217 changed files with 7529 additions and 3272 deletions

View File

@@ -2,16 +2,16 @@ 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,
either want to build/package Wine Staging for their distribution, but also
for developers who would like to contribute their patches to Wine Staging,
to get them included in future releases.
Compiling Wine-Compholio
========================
Compiling Wine Staging
======================
**Warning:** Please note that starting with Wine-Compholio 1.7.23 it is
**Warning:** Please note that starting with Staging 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
@@ -26,21 +26,21 @@ 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
will give a short overview how to compile Wine Staging, 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.29.tar.bz2
wget https://github.com/compholio/wine-compholio-daily/archive/v1.7.29.tar.gz
wget http://prdownloads.sourceforge.net/wine/wine-1.7.31.tar.bz2
wget https://github.com/wine-compholio/wine-staging/archive/v1.7.31.tar.gz
```
Extract the archives:
```bash
tar xvjf wine-1*.tar.bz2
cd wine-1*
tar xvzf ../v1.7.29.tar.gz --strip-components 1
tar xvzf ../v1.7.31.tar.gz --strip-components 1
```
And apply the patches:
@@ -49,7 +49,7 @@ 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):
Wine Staging system-wide):
```bash
./configure --with-xattr
```
@@ -93,11 +93,11 @@ make -C ./patches DESTDIR=$(pwd) PATCHLIST="DIRNAME1.ok DIRNAME2.ok" install
```
Contributing to Wine-Compholio
==============================
Contributing to Wine Staging
============================
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
Please note that Wine Staging is not just an arbitrary collection of Wine
patches. We see Wine Staging 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
@@ -126,7 +126,7 @@ for upstream Wine.
Attribution guidelines
----------------------
The Wine "Compholio" Edition repository expects all patches to conform to
The Wine Staging 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:

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.

197
README.md
View File

@@ -1,120 +1,145 @@
What is Wine-Compholio?
=======================
What is Wine Staging?
=====================
**Warning: Do not report bugs at bugs.winehq.org when using this version!
Please take a look at our
[Wiki](https://github.com/compholio/wine-compholio/wiki/Reporting-bugs)
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Reporting-bugs)
for more information about how to report bugs.**
The **Wine "Compholio" Edition** is a special build of the popular Wine
software that includes both patches written by our team and selected 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!
**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-Compholio
=====================================
How to install and use Wine Staging
===================================
Ready-to-use packages for Wine-Compholio are available for a variety
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
[Wiki](https://github.com/compholio/wine-compholio/wiki/Installation).
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Installation).
When using Wine-Compholio there are a few differences compared to regular
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/compholio/wine-compholio/wiki/Usage).
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Usage).
Included bugfixes and improvements
==================================
Included bug fixes and improvements
===================================
**Bugs fixed in Wine-Compholio 1.7.29 [80]:**
**Bugs fixed in Wine Staging 1.7.31 [101]:**
* ATL IOCS data should not be stored in GWLP_USERDATA ([Wine Bug #21767](http://bugs.winehq.org/show_bug.cgi?id=21767))
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](http://bugs.winehq.org/show_bug.cgi?id=36374))
* ATL IOCS data should not be stored in GWLP_USERDATA ([Wine Bug #21767](https://bugs.winehq.org/show_bug.cgi?id=21767))
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](https://bugs.winehq.org/show_bug.cgi?id=36374))
* Add default ACLs for user shell folders
* Add partially support for sessionStorage
* Allow special characters in pipe names ([Wine Bug #28995](http://bugs.winehq.org/show_bug.cgi?id=28995))
* Add stub for NtSetLdtEntries/ZwSetLdtEntries ([Wine Bug #26268](https://bugs.winehq.org/show_bug.cgi?id=26268))
* Adobe Reader needs ITextSelection_fnGetDuplicate implementation
* Allow selection of audio device for PulseAudio backend
* Allow special characters in pipe names ([Wine Bug #28995](https://bugs.winehq.org/show_bug.cgi?id=28995))
* Anno 1602 installer depends on Windows 98 behavior of SHFileOperationW
* Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](http://bugs.winehq.org/show_bug.cgi?id=30639))
* Correctly treat '.' when checking for empty directories ([Wine Bug #26272](http://bugs.winehq.org/show_bug.cgi?id=26272))
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](http://bugs.winehq.org/show_bug.cgi?id=11436))
* Don't fill KdHelp structure for usermode applications ([Wine Bug #37272](http://bugs.winehq.org/show_bug.cgi?id=37272))
* Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](http://bugs.winehq.org/show_bug.cgi?id=33162))
* FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](http://bugs.winehq.org/show_bug.cgi?id=37358))
* Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](http://bugs.winehq.org/show_bug.cgi?id=35950))
* Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](http://bugs.winehq.org/show_bug.cgi?id=10767))
* Fix flickering introduced by pixelformat changes. ([Wine Bug #35718](http://bugs.winehq.org/show_bug.cgi?id=35718))
* Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](http://bugs.winehq.org/show_bug.cgi?id=16550))
* Fix for programs leaking wndproc slots ([Wine Bug #32451](http://bugs.winehq.org/show_bug.cgi?id=32451))
* Fix gray screen on startup introduced by pixelformat changes. ([Wine Bug #35975](http://bugs.winehq.org/show_bug.cgi?id=35975))
* Fix issues when driver dispatch routine returns different status codes ([Wine Bug #30155](http://bugs.winehq.org/show_bug.cgi?id=30155))
* Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](http://bugs.winehq.org/show_bug.cgi?id=36900))
* Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](https://bugs.winehq.org/show_bug.cgi?id=30639))
* Avoid crashing when broken app tries to release surface although refcount is zero ([Wine Bug #18477](https://bugs.winehq.org/show_bug.cgi?id=18477))
* Avoid sending window messages in FindWindowExW ([Wine Bug #27282](https://bugs.winehq.org/show_bug.cgi?id=27282))
* CoWaitForMultipleHandles shouldn't process window events when APC calls are queued ([Wine Bug #32568](https://bugs.winehq.org/show_bug.cgi?id=32568))
* Correctly treat '.' when checking for empty directories ([Wine Bug #26272](https://bugs.winehq.org/show_bug.cgi?id=26272))
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436))
* Don't fill KdHelp structure for usermode applications ([Wine Bug #37272](https://bugs.winehq.org/show_bug.cgi?id=37272))
* Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849))
* Emulate write to CR4 register ([Wine Bug #30220](https://bugs.winehq.org/show_bug.cgi?id=30220))
* Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](https://bugs.winehq.org/show_bug.cgi?id=33162))
* Exception during start of fr-043 caused by missing DXTn support ([Wine Bug #37391](https://bugs.winehq.org/show_bug.cgi?id=37391))
* FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](https://bugs.winehq.org/show_bug.cgi?id=37358))
* FairplayKD.sys needs KeSetSystemAffinityThread ([Wine Bug #36822](https://bugs.winehq.org/show_bug.cgi?id=36822))
* Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](https://bugs.winehq.org/show_bug.cgi?id=35950))
* Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](https://bugs.winehq.org/show_bug.cgi?id=10767))
* Fix crash of Trine Demo on start ([Wine Bug #19231](https://bugs.winehq.org/show_bug.cgi?id=19231))
* Fix crash of winedevice when relocation entry crosses page boundary ([Wine Bug #28254](https://bugs.winehq.org/show_bug.cgi?id=28254))
* Fix flickering introduced by pixelformat changes. ([Wine Bug #35718](https://bugs.winehq.org/show_bug.cgi?id=35718))
* Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](https://bugs.winehq.org/show_bug.cgi?id=16550))
* Fix for programs leaking wndproc slots ([Wine Bug #32451](https://bugs.winehq.org/show_bug.cgi?id=32451))
* Fix gray screen on startup introduced by pixelformat changes. ([Wine Bug #35975](https://bugs.winehq.org/show_bug.cgi?id=35975))
* Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109))
* Fix issues when driver dispatch routine returns different status codes ([Wine Bug #30155](https://bugs.winehq.org/show_bug.cgi?id=30155))
* Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](https://bugs.winehq.org/show_bug.cgi?id=36900))
* Fix texture corruption in CSI: Fatal Conspiracy ([Wine Bug #33768](https://bugs.winehq.org/show_bug.cgi?id=33768))
* Fix unintentional leaks with ntdll internals
* Fix wined3d performance drop introduced by pixelformat changes. ([Wine Bug #35655](http://bugs.winehq.org/show_bug.cgi?id=35655))
* Games For Windows Live 1.x expects a valid linker version in the PE header ([Wine Bug #28768](http://bugs.winehq.org/show_bug.cgi?id=28768))
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](http://bugs.winehq.org/show_bug.cgi?id=15980))
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](http://bugs.winehq.org/show_bug.cgi?id=13829))
* Implement an Arial replacement font ([Wine Bug #32323](http://bugs.winehq.org/show_bug.cgi?id=32323))
* Fix wined3d performance drop introduced by pixelformat changes. ([Wine Bug #35655](https://bugs.winehq.org/show_bug.cgi?id=35655))
* Games For Windows Live 1.x expects a valid linker version in the PE header ([Wine Bug #28768](https://bugs.winehq.org/show_bug.cgi?id=28768))
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](https://bugs.winehq.org/show_bug.cgi?id=15980))
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](https://bugs.winehq.org/show_bug.cgi?id=13829))
* Implement an Arial replacement font ([Wine Bug #32323](https://bugs.winehq.org/show_bug.cgi?id=32323))
* Improvement for heap allocation performance
* Lego Stunt Rally requires DXTn software de/encoding support ([Wine Bug #25486](http://bugs.winehq.org/show_bug.cgi?id=25486))
* Limit cross thread access to ImmSet* functions ([Wine Bug #35361](http://bugs.winehq.org/show_bug.cgi?id=35361))
* Initialize irp.Tail.Overlay.OriginalFileObject with stub file object ([Wine Bug #37537](https://bugs.winehq.org/show_bug.cgi?id=37537))
* Lego Stunt Rally requires DXTn software de/encoding support ([Wine Bug #25486](https://bugs.winehq.org/show_bug.cgi?id=25486))
* Limit cross thread access to ImmSet* functions ([Wine Bug #35361](https://bugs.winehq.org/show_bug.cgi?id=35361))
* Lockfree algorithm for filedescriptor cache (improves file access speed)
* Make it possible to change media center / tablet pc status ([Wine Bug #18732](http://bugs.winehq.org/show_bug.cgi?id=18732))
* Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](http://bugs.winehq.org/show_bug.cgi?id=34978))
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](http://bugs.winehq.org/show_bug.cgi?id=7115))
* MSVCRT crashes when NULL is passed as string to atof or strtod ([Wine Bug #32550](https://bugs.winehq.org/show_bug.cgi?id=32550))
* Make it possible to change media center / tablet pc status ([Wine Bug #18732](https://bugs.winehq.org/show_bug.cgi?id=18732))
* Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](https://bugs.winehq.org/show_bug.cgi?id=34978))
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](https://bugs.winehq.org/show_bug.cgi?id=7115))
* Other Pipelight-specific enhancements
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](http://bugs.winehq.org/show_bug.cgi?id=32699))
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699))
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
* Return an error when trying to open a terminated process ([Wine Bug #37087](http://bugs.winehq.org/show_bug.cgi?id=37087))
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](http://bugs.winehq.org/show_bug.cgi?id=23174))
* Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087))
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174))
* Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230))
* Return more context attributes in schan_InitializeSecurityContextW ([Wine Bug #37527](https://bugs.winehq.org/show_bug.cgi?id=37527))
* SO_CONNECT_TIME returns the appropriate time
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](http://bugs.winehq.org/show_bug.cgi?id=35652))
* Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](http://bugs.winehq.org/show_bug.cgi?id=34372))
* Support for BindImageEx ([Wine Bug #3591](http://bugs.winehq.org/show_bug.cgi?id=3591))
* Support for D3DXGetShaderInputSemantics ([Wine Bug #22682](http://bugs.winehq.org/show_bug.cgi?id=22682))
* Support for DOS hidden/system file attributes ([Wine Bug #9158](http://bugs.winehq.org/show_bug.cgi?id=9158))
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
* Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](https://bugs.winehq.org/show_bug.cgi?id=34372))
* Support for BindImageEx ([Wine Bug #3591](https://bugs.winehq.org/show_bug.cgi?id=3591))
* Support for D3DXGetShaderInputSemantics ([Wine Bug #22682](https://bugs.winehq.org/show_bug.cgi?id=22682))
* Support for DOS hidden/system file attributes ([Wine Bug #9158](https://bugs.winehq.org/show_bug.cgi?id=9158))
* Support for Dynamic DST (daylight saving time) information in registry
* Support for FindFirstFileExW level FindExInfoBasic ([Wine Bug #37354](http://bugs.winehq.org/show_bug.cgi?id=37354))
* Support for GetFinalPathNameByHandle ([Wine Bug #36073](http://bugs.winehq.org/show_bug.cgi?id=36073))
* Support for GetSystemTimes ([Wine Bug #19813](http://bugs.winehq.org/show_bug.cgi?id=19813))
* Support for GdipCreateRegionRgnData ([Wine Bug #34843](https://bugs.winehq.org/show_bug.cgi?id=34843))
* Support for GetFinalPathNameByHandle ([Wine Bug #36073](https://bugs.winehq.org/show_bug.cgi?id=36073))
* Support for GetSystemTimes ([Wine Bug #19813](https://bugs.winehq.org/show_bug.cgi?id=19813))
* Support for GetVolumePathName
* Support for ID3DXSkinInfoImpl_UpdateSkinnedMesh ([Wine Bug #32572](http://bugs.winehq.org/show_bug.cgi?id=32572))
* Support for IRichEditOle and ITextDocument support for ITextServices. ([Wine Bug #17042](http://bugs.winehq.org/show_bug.cgi?id=17042))
* Support for ITextDocument_fnRange function ([Wine Bug #12458](http://bugs.winehq.org/show_bug.cgi?id=12458))
* Support for ITextRange, ITextFont and ITextPara ([Wine Bug #18303](http://bugs.winehq.org/show_bug.cgi?id=18303))
* Support for Junction Points ([Wine Bug #12401](http://bugs.winehq.org/show_bug.cgi?id=12401))
* Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath ([Wine Bug #30385](http://bugs.winehq.org/show_bug.cgi?id=30385))
* Support for LoadIconMetric ([Wine Bug #35375](http://bugs.winehq.org/show_bug.cgi?id=35375))
* Support for NtQuerySection ([Wine Bug #37338](http://bugs.winehq.org/show_bug.cgi?id=37338))
* Support for NtSetInformationFile class FileDispositionInformation ([Wine Bug #30397](http://bugs.winehq.org/show_bug.cgi?id=30397))
* Support for PulseAudio backend for audio ([Wine Bug #10495](http://bugs.winehq.org/show_bug.cgi?id=10495))
* Support for SHCreateSessionKey ([Wine Bug #35630](http://bugs.winehq.org/show_bug.cgi?id=35630))
* Support for TOOLTIPS_GetTipText edge cases ([Wine Bug #30648](http://bugs.winehq.org/show_bug.cgi?id=30648))
* Support for TransmitFile ([Wine Bug #5048](http://bugs.winehq.org/show_bug.cgi?id=5048))
* Support for UTF7 encoding/decoding ([Wine Bug #27388](http://bugs.winehq.org/show_bug.cgi?id=27388))
* Support for WTSEnumerateProcessesW ([Wine Bug #29903](http://bugs.winehq.org/show_bug.cgi?id=29903))
* Support for extra large and jumbo icon lists in shell32 ([Wine Bug #24721](http://bugs.winehq.org/show_bug.cgi?id=24721))
* Support for inherited file ACLs ([Wine Bug #34406](http://bugs.winehq.org/show_bug.cgi?id=34406))
* Support for interface change notifications ([Wine Bug #32328](http://bugs.winehq.org/show_bug.cgi?id=32328))
* Support for process ACLs ([Wine Bug #22006](http://bugs.winehq.org/show_bug.cgi?id=22006))
* Support for setcap on wine-preloader ([Wine Bug #26256](http://bugs.winehq.org/show_bug.cgi?id=26256))
* Support for stored file ACLs ([Wine Bug #31858](http://bugs.winehq.org/show_bug.cgi?id=31858))
* Support for wine64 on FreeBSD/PC-BSD ([Wine Bug #34330](http://bugs.winehq.org/show_bug.cgi?id=34330))
* Support for ws2_32.inet_pton ([Wine Bug #36713](http://bugs.winehq.org/show_bug.cgi?id=36713))
* Unity3D Editor requires ProductId registry value ([Wine Bug #36964](http://bugs.winehq.org/show_bug.cgi?id=36964))
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](http://bugs.winehq.org/show_bug.cgi?id=30938))
* Use manual relay for RunDLL_CallEntry16 in shell32 ([Wine Bug #23033](http://bugs.winehq.org/show_bug.cgi?id=23033))
* Voobly expects correct handling of WRITECOPY memory protection ([Wine Bug #29384](http://bugs.winehq.org/show_bug.cgi?id=29384))
* Wine ignores IDF_CHECKFIRST flag in SetupPromptForDisk ([Wine Bug #20465](http://bugs.winehq.org/show_bug.cgi?id=20465))
* Support for ID3DXSkinInfoImpl_UpdateSkinnedMesh ([Wine Bug #32572](https://bugs.winehq.org/show_bug.cgi?id=32572))
* Support for ITextDocument_fnRange function ([Wine Bug #12458](https://bugs.winehq.org/show_bug.cgi?id=12458))
* Support for ITextRange, ITextFont and ITextPara ([Wine Bug #18303](https://bugs.winehq.org/show_bug.cgi?id=18303))
* Support for Junction Points ([Wine Bug #12401](https://bugs.winehq.org/show_bug.cgi?id=12401))
* Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath ([Wine Bug #30385](https://bugs.winehq.org/show_bug.cgi?id=30385))
* Support for LoadIconMetric ([Wine Bug #35375](https://bugs.winehq.org/show_bug.cgi?id=35375))
* Support for NtQuerySection ([Wine Bug #37338](https://bugs.winehq.org/show_bug.cgi?id=37338))
* Support for NtSetInformationFile class FileDispositionInformation ([Wine Bug #30397](https://bugs.winehq.org/show_bug.cgi?id=30397))
* Support for PulseAudio backend for audio ([Wine Bug #10495](https://bugs.winehq.org/show_bug.cgi?id=10495))
* Support for RtlDecompressBuffer ([Wine Bug #37449](https://bugs.winehq.org/show_bug.cgi?id=37449))
* Support for SHCreateSessionKey ([Wine Bug #35630](https://bugs.winehq.org/show_bug.cgi?id=35630))
* Support for TOOLTIPS_GetTipText edge cases ([Wine Bug #30648](https://bugs.winehq.org/show_bug.cgi?id=30648))
* Support for TransmitFile ([Wine Bug #5048](https://bugs.winehq.org/show_bug.cgi?id=5048))
* Support for UTF7 encoding/decoding ([Wine Bug #27388](https://bugs.winehq.org/show_bug.cgi?id=27388))
* Support for WTSEnumerateProcessesW ([Wine Bug #29903](https://bugs.winehq.org/show_bug.cgi?id=29903))
* Support for extra large and jumbo icon lists in shell32 ([Wine Bug #24721](https://bugs.winehq.org/show_bug.cgi?id=24721))
* Support for inherited file ACLs ([Wine Bug #34406](https://bugs.winehq.org/show_bug.cgi?id=34406))
* Support for interface change notifications ([Wine Bug #32328](https://bugs.winehq.org/show_bug.cgi?id=32328))
* Support for pasting HTML from Unix applications ([Wine Bug #7372](https://bugs.winehq.org/show_bug.cgi?id=7372))
* Support for process ACLs ([Wine Bug #22006](https://bugs.winehq.org/show_bug.cgi?id=22006))
* Support for setcap on wine-preloader ([Wine Bug #26256](https://bugs.winehq.org/show_bug.cgi?id=26256))
* Support for stored file ACLs ([Wine Bug #31858](https://bugs.winehq.org/show_bug.cgi?id=31858))
* Support for wine64 on FreeBSD/PC-BSD ([Wine Bug #34330](https://bugs.winehq.org/show_bug.cgi?id=34330))
* Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586))
* Unity3D Editor requires ProductId registry value ([Wine Bug #36964](https://bugs.winehq.org/show_bug.cgi?id=36964))
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](https://bugs.winehq.org/show_bug.cgi?id=30938))
* Use manual relay for RunDLL_CallEntry16 in shell32 ([Wine Bug #23033](https://bugs.winehq.org/show_bug.cgi?id=23033))
* Voobly expects correct handling of WRITECOPY memory protection ([Wine Bug #29384](https://bugs.winehq.org/show_bug.cgi?id=29384))
* Wine ignores IDF_CHECKFIRST flag in SetupPromptForDisk ([Wine Bug #20465](https://bugs.winehq.org/show_bug.cgi?id=20465))
* Workaround for shlwapi URLs with relative paths
* XEMBED support for embedding Wine windows inside Linux applications
* nVidia driver for high-end laptop cards does not list all supported resolutions
* vSphere needs IoCsqInitialize ([Wine Bug #36777](https://bugs.winehq.org/show_bug.cgi?id=36777))
* wglDescribePixelFormat should return max index for NULL descriptor ([Wine Bug #6176](https://bugs.winehq.org/show_bug.cgi?id=6176))

63
debian/changelog vendored
View File

@@ -1,3 +1,66 @@
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.

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

@@ -2,16 +2,16 @@ 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,
either want to build/package Wine Staging for their distribution, but also
for developers who would like to contribute their patches to Wine Staging,
to get them included in future releases.
Compiling Wine-Compholio
========================
Compiling Wine Staging
======================
**Warning:** Please note that starting with Wine-Compholio 1.7.23 it is
**Warning:** Please note that starting with Staging 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
@@ -26,14 +26,14 @@ 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
will give a short overview how to compile Wine Staging, 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
wget https://github.com/wine-compholio/wine-staging/archive/v{version}.tar.gz
```
Extract the archives:
@@ -49,7 +49,7 @@ 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):
Wine Staging system-wide):
```bash
./configure --with-xattr
```
@@ -93,11 +93,11 @@ make -C ./patches DESTDIR=$(pwd) PATCHLIST="DIRNAME1.ok DIRNAME2.ok" install
```
Contributing to Wine-Compholio
==============================
Contributing to Wine Staging
============================
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
Please note that Wine Staging is not just an arbitrary collection of Wine
patches. We see Wine Staging 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
@@ -126,7 +126,7 @@ for upstream Wine.
Attribution guidelines
----------------------
The Wine "Compholio" Edition repository expects all patches to conform to
The Wine Staging 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:

View File

@@ -1,39 +1,43 @@
What is Wine-Compholio?
=======================
What is Wine Staging?
=====================
**Warning: Do not report bugs at bugs.winehq.org when using this version!
Please take a look at our
[Wiki](https://github.com/compholio/wine-compholio/wiki/Reporting-bugs)
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Reporting-bugs)
for more information about how to report bugs.**
The **Wine "Compholio" Edition** is a special build of the popular Wine
software that includes both patches written by our team and selected 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!
**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-Compholio
=====================================
How to install and use Wine Staging
===================================
Ready-to-use packages for Wine-Compholio are available for a variety
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
[Wiki](https://github.com/compholio/wine-compholio/wiki/Installation).
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Installation).
When using Wine-Compholio there are a few differences compared to regular
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/compholio/wine-compholio/wiki/Usage).
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Usage).
Included bugfixes and improvements
==================================
Included bug fixes and improvements
===================================
{fixes}

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 *name;
+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

View File

@@ -19,19 +19,15 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
#
from xml.dom import minidom
import contextlib
import hashlib
import itertools
import multiprocessing
import operator
import os
import patchutils
import pickle
import re
import subprocess
import sys
import textwrap
import urllib
# Cached information to speed up patch dependency checks
latest_wine_commit = None
@@ -59,18 +55,12 @@ class PatchUpdaterError(RuntimeError):
"""Failed to update patches."""
pass
class AuthorInfo(object):
def __init__(self):
self.author = ""
self.subject = ""
self.revision = ""
class PatchSet(object):
def __init__(self, name):
self.name = name
self.authors = []
self.fixes = []
self.changes = []
self.disabled = False
self.files = []
self.patches = []
@@ -86,6 +76,16 @@ def _pairs(a):
for k in a[i+1:]:
yield (j, k)
def _unique(iterable, key=None):
"List unique elements, preserving order. Remember only the element just seen."
# unique_justseen('AAAABBBCCDAABBB') --> A B C D A B
# unique_justseen('ABBCcAD', str.lower) --> A B C A D
return itertools.imap(next, itertools.imap(operator.itemgetter(1), itertools.groupby(iterable, key)))
def _escape(s):
"""Escape string inside of '...' quotes."""
return s.replace("\\", "\\\\").replace("\"", "\\\"").replace("'", "'\\''")
def _load_dict(filename):
"""Load a Python dictionary object from a file."""
try:
@@ -99,24 +99,15 @@ def _save_dict(filename, value):
with open(filename, "wb") as fp:
pickle.dump(value, fp, pickle.HIGHEST_PROTOCOL)
def _winebugs_query_short_desc(bugids):
"""Query short_desc from multiple wine bugzilla bugs at the same time."""
bugids = list(set(bugids)) # Remove duplicates and convert to fixed order
if len(bugids) == 0: return {}
# Query bugzilla
url = "http://bugs.winehq.org/show_bug.cgi?%s&ctype=xml&field=short_desc" % \
"&".join(["id=%d" % bugid for bugid in bugids])
with contextlib.closing(urllib.urlopen(url)) as fp:
data = minidom.parseString(fp.read())
# convert xml in a dictionary containing all bugs we found
result = {}
for element in data.getElementsByTagName('bug_id'):
bugids.remove(int(element.firstChild.data))
for bugid, element in zip(bugids, data.getElementsByTagName('short_desc')):
result[bugid] = element.firstChild.data
return result
def parse_int(val, default=0):
"""Parse an integer or boolean value."""
r = re.match("^[0-9]+$", val)
if r:
return int(val)
try:
return {'true': 1, 'yes': 1, 'false': 0, 'no': 0}[val.lower()]
except AttributeError:
return default
# Read information from changelog
def _read_changelog():
@@ -174,7 +165,7 @@ def enum_directories(revision, path):
return dirs
def read_definition(revision, filename, name_to_id):
"""Read a definition file and return information as tuple (authors, depends, fixes)."""
"""Read a definition file and return information as tuple (depends, fixes)."""
filename = os.path.join(filename, "definition")
if revision is None:
@@ -188,10 +179,9 @@ def read_definition(revision, filename, name_to_id):
except CalledProcessError:
raise IOError("Failed to load %s" % filename)
authors = []
depends = set()
fixes = []
info = AuthorInfo()
depends = set()
fixes = []
disabled = False
for line in content.split("\n"):
if line.startswith("#"):
@@ -199,25 +189,10 @@ def read_definition(revision, filename, name_to_id):
tmp = line.split(":", 1)
if len(tmp) != 2:
if len(info.author) and len(info.subject):
authors.append(info)
info = AuthorInfo()
continue
key, val = tmp[0].lower(), tmp[1].strip()
if key == "author":
if len(info.author): info.author += ", "
info.author += val
elif key == "subject" or key == "title":
if len(info.subject): info.subject += " "
info.subject += val
elif key == "revision":
if len(info.revision): info.revision += ", "
info.revision += val
elif key == "depends":
if key == "depends":
if name_to_id is not None:
if not name_to_id.has_key(val):
raise PatchUpdaterError("Definition file %s references unknown dependency %s" % (filename, val))
@@ -234,12 +209,13 @@ def read_definition(revision, filename, name_to_id):
continue
fixes.append((None, val))
else:
print "WARNING: Ignoring unknown command in definition file %s: %s" % (deffile, line)
elif key == "disabled":
disabled = parse_int(val)
if len(info.author) and len(info.subject):
authors.append(info)
return authors, depends, fixes
elif revision is None:
print "WARNING: Ignoring unknown command in definition file %s: %s" % (filename, line)
return depends, fixes, disabled
def read_patchset(revision = None):
"""Read information about all patchsets for a specific revision."""
@@ -279,10 +255,10 @@ def read_patchset(revision = None):
# Now read the definition files in a second step
for i, patch in all_patches.iteritems():
try:
patch.authors, patch.depends, patch.fixes = \
patch.depends, patch.fixes, patch.disabled = \
read_definition(revision, os.path.join(config.path_patches, patch.name), name_to_id)
except IOError:
raise PatchUpdaterError("Missing definition file for %s" % patch.name)
patch.depends, patch.fixes, patch.disabled = set(), [], False
return all_patches
@@ -436,14 +412,15 @@ def verify_dependencies(all_patches):
_save_dict(config.path_depcache, cached_patch_result)
_save_dict(config.path_srccache, cached_original_src)
max_patches = max(all_patches.keys()) + 1
enabled_patches = dict([(i, patch) for i, patch in all_patches.iteritems() if not patch.disabled])
max_patches = max(enabled_patches.keys()) + 1
for i, patch in all_patches.iteritems():
for i, patch in enabled_patches.iteritems():
patch.verify_depends = set(patch.depends)
patch.verify_time = [0]*max_patches
# Check for circular dependencies and perform modified vector clock algorithm
patches = dict(all_patches)
patches = dict(enabled_patches)
while len(patches):
to_delete = []
@@ -453,7 +430,7 @@ def verify_dependencies(all_patches):
to_delete.append(i)
if len(to_delete) == 0:
raise PatchUpdaterError("Circular dependency in set of patches: %s" %
raise PatchUpdaterError("Circular dependency (or disabled dependency) in set of patches: %s" %
", ".join([patch.name for i, patch in patches.iteritems()]))
for j in to_delete:
@@ -465,7 +442,7 @@ def verify_dependencies(all_patches):
# Find out which files are modified by multiple patches
modified_files = {}
for i, patch in all_patches.iteritems():
for i, patch in enabled_patches.iteritems():
for f in patch.modified_files:
if f not in modified_files:
modified_files[f] = []
@@ -475,7 +452,7 @@ def verify_dependencies(all_patches):
_load_patch_cache()
try:
for f, indices in modified_files.iteritems():
verify_patch_order(all_patches, indices, f)
verify_patch_order(enabled_patches, indices, f)
finally:
_save_patch_cache()
@@ -486,22 +463,12 @@ def generate_makefile(all_patches):
template = template_fp.read()
with open(config.path_Makefile, "w") as fp:
fp.write(template.format(patchlist="\t" + " \\\n\t".join(["%s.ok" % patch.name for i, patch in all_patches.iteritems()])))
fp.write(template.format(patchlist="\t" + " \\\n\t".join(
["%s.ok" % patch.name for i, patch in all_patches.iteritems() if not patch.disabled])))
for i, patch in all_patches.iteritems():
fp.write("# Patchset %s\n" % patch.name)
fp.write("# |\n")
fp.write("# | Included patches:\n")
# List all patches and their corresponding authors
for info in patch.authors:
if not info.subject: continue
s = []
if info.revision and info.revision != "1": s.append("rev %s" % info.revision)
if info.author: s.append("by %s" % info.author)
if len(s): s = " [%s]" % ", ".join(s)
fp.write("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap(info.subject + s, 120)))
fp.write("# |\n")
# List all bugs fixed by this patchset
if any([bugid is not None for bugid, bugname in patch.fixes]):
@@ -524,13 +491,11 @@ def generate_makefile(all_patches):
fp.write("\t$(call APPLY_FILE,%s)\n" % os.path.join(patch.name, f))
# Create *.ok file (used to generate patchlist)
if len(patch.authors):
if len(patch.patches):
fp.write("\t@( \\\n")
for info in patch.authors:
if not info.subject: continue
s = info.subject.replace("\\", "\\\\\\\\").replace("\"", "\\\\\"").replace("'", "'\\''")
if info.revision and info.revision != "1": s += " [rev %s]" % info.revision
fp.write("\t\techo '+ { \"%s\", \"%s\", \"%s\" },'; \\\n" % (patch.name, info.author, s))
for p in _unique(patch.patches, key=lambda p: (p.patch_author, p.patch_subject, p.patch_revision)):
fp.write("\t\techo '+ { \"%s\", \"%s\", %d },'; \\\n" % \
(_escape(p.patch_author), _escape(p.patch_subject), p.patch_revision))
fp.write("\t) > %s.ok\n" % patch.name)
else:
fp.write("\ttouch %s.ok\n" % patch.name)
@@ -540,28 +505,22 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
"""Generate README.md and DEVELOPER.md including information about specific patches and bugfixes."""
def _format_bug(mode, bugid, bugname):
# if bugid is not None:
# short_desc = bug_short_desc[bugid]
# if bugname is None: bugname = short_desc
if mode < 0: bugname = "~~%s~~" % bugname
if bugid is None: return "* %s" % bugname
return "* %s ([Wine Bug #%d](http://bugs.winehq.org/show_bug.cgi?id=%d))" % \
return "* %s ([Wine Bug #%d](https://bugs.winehq.org/show_bug.cgi?id=%d))" % \
(bugname, bugid, bugid) #, short_desc.replace("\\", "\\\\").replace("\"", "\\\""))
all_bugids = set()
all_fixes = {}
# Get fixes for current version
for i, patch in all_patches.iteritems():
for bugid, bugname in patch.fixes:
if bugid is not None: all_bugids.add(bugid)
key = bugid if bugid is not None else bugname
all_fixes[key] = [1, bugid, bugname]
# Compare with fixes for latest stable version
for i, patch in stable_patches.iteritems():
for bugid, bugname in patch.fixes:
if bugid is not None: all_bugids.add(bugid)
key = bugid if bugid is not None else bugname
if all_fixes.has_key(key):
all_fixes[key][0] = 0
@@ -579,9 +538,6 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
old_fixes = new_fixes
new_fixes = []
# Query information from bugzilla
# bug_short_desc = _winebugs_query_short_desc(all_bugids)
# Generate information for current version
lines = []
if len(new_fixes):
@@ -591,7 +547,7 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
lines.append(_format_bug(mode, bugid, bugname))
lines.append("")
lines.append("")
lines.append("**Bugs fixed in Wine-Compholio %s [%d]:**" % (stable_compholio_version, len(old_fixes)))
lines.append("**Bugs fixed in Wine Staging %s [%d]:**" % (stable_compholio_version, len(old_fixes)))
lines.append("")
for mode, bugid, bugname in sorted(old_fixes, key=lambda x: x[2]):
lines.append(_format_bug(mode, bugid, bugname))

View File

@@ -19,6 +19,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
#
import email.header
import collections
import difflib
import hashlib
@@ -37,22 +38,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
@@ -134,10 +140,10 @@ def read_patch(filename):
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 +158,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 +235,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,19 +288,66 @@ 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

View File

@@ -1,15 +0,0 @@
Author: Sebastian Lackner
Subject: Add winediag message to show warning, that this isn't vanilla wine.
Revision: 1
Author: Sebastian Lackner
Subject: Append '(Compholio)' at the end of the version string.
Revision: 1
Author: Sebastian Lackner
Subject: Add commandline option --patches to show the patch list.
Revision: 1
Author: Michael MĂĽller
Subject: Add commandline option --check-libs to test if shared libraries are installed.
Revision: 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

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
From 018b5f5d6211aa706e5aef762acb98d39240d9f1 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Sun, 20 Jul 2014 22:29:02 +0200
Subject: wined3d: Silence repeated resource_check_usage FIXME.
Subject: wined3d: Silence repeated resource_check_usage FIXME. (try 2)
---
dlls/wined3d/resource.c | 5 ++++-

View File

@@ -1,54 +0,0 @@
From 4acb49f0e0be827be0252c4b3f896c11cf4a9d94 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 18 Sep 2014 00:38:15 +0200
Subject: usp10: Silence repeated GSUB_apply_ChainContext[Subst|Pos] FIXMEs.
---
dlls/usp10/opentype.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/usp10/opentype.c b/dlls/usp10/opentype.c
index 166d823..e2142a5 100644
--- a/dlls/usp10/opentype.c
+++ b/dlls/usp10/opentype.c
@@ -938,12 +938,16 @@ static INT GSUB_apply_ChainContextSubst(const OT_LookupList* lookup, const OT_Lo
ccsf1 = (const GSUB_ChainContextSubstFormat1*)((const BYTE*)look+offset);
if (GET_BE_WORD(ccsf1->SubstFormat) == 1)
{
- FIXME(" TODO: subtype 1 (Simple context glyph substitution)\n");
+ static int once;
+ if (!once++)
+ FIXME(" TODO: subtype 1 (Simple context glyph substitution)\n");
continue;
}
else if (GET_BE_WORD(ccsf1->SubstFormat) == 2)
{
- FIXME(" TODO: subtype 2 (Class-based Chaining Context Glyph Substitution)\n");
+ static int once;
+ if (!once++)
+ FIXME(" TODO: subtype 2 (Class-based Chaining Context Glyph Substitution)\n");
continue;
}
else if (GET_BE_WORD(ccsf1->SubstFormat) == 3)
@@ -1649,12 +1653,16 @@ static INT GPOS_apply_ChainContextPos(ScriptCache *psc, LPOUTLINETEXTMETRICW lpo
if (GET_BE_WORD(ccpf3->PosFormat) == 1)
{
- FIXME(" TODO: subtype 1 (Simple Chaining Context Glyph Positioning)\n");
+ static int once;
+ if (!once++)
+ FIXME(" TODO: subtype 1 (Simple Chaining Context Glyph Positioning)\n");
continue;
}
else if (GET_BE_WORD(ccpf3->PosFormat) == 2)
{
- FIXME(" TODO: subtype 2 (Class-based Chaining Context Glyph Positioning)\n");
+ static int once;
+ if (!once++)
+ FIXME(" TODO: subtype 2 (Class-based Chaining Context Glyph Positioning)\n");
continue;
}
else if (GET_BE_WORD(ccpf3->PosFormat) == 3)
--
2.1.0

View File

@@ -1,125 +0,0 @@
From 068be01861e22ddd9360fbee4135937782ac77c8 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 6 Sep 2014 04:59:20 +0200
Subject: Appease the Archlinux version of gcc (4.9.1) when -Werror is enabled.
---
dlls/msvcp90/ios.c | 4 ++--
dlls/msvcp90/locale.c | 6 +++---
dlls/msvcp90/string.c | 12 ++++++------
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c
index fbba957..e099f27 100644
--- a/dlls/msvcp90/ios.c
+++ b/dlls/msvcp90/ios.c
@@ -1215,7 +1215,7 @@ streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this,
chunk = count-copied;
if(chunk > 0) {
- memcpy_s(ptr+copied, size, *this->prpos, chunk);
+ (void)memcpy_s(ptr+copied, size, *this->prpos, chunk);
*this->prpos += chunk;
*this->prsize -= chunk;
copied += chunk;
@@ -2083,7 +2083,7 @@ streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *thi
chunk = count-copied;
if(chunk > 0) {
- memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
+ (void)memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
*this->prpos += chunk;
*this->prsize -= chunk;
copied += chunk;
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index b15f1b8..015511d 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -1595,7 +1595,7 @@ const char* __thiscall ctype_char__Do_narrow_s(const ctype_char *this, const cha
const char *last, char unused, char *dest, MSVCP_size_t size)
{
TRACE("(%p %p %p %p %lu)\n", this, first, last, dest, size);
- memcpy_s(dest, size, first, last-first);
+ (void)memcpy_s(dest, size, first, last-first);
return last;
}
@@ -1674,7 +1674,7 @@ const char* __thiscall ctype_char__Do_widen_s(const ctype_char *this,
const char *first, const char *last, char *dest, MSVCP_size_t size)
{
TRACE("(%p %p %p %p %lu)\n", this, first, last, dest, size);
- memcpy_s(dest, size, first, last-first);
+ (void)memcpy_s(dest, size, first, last-first);
return last;
}
@@ -3674,7 +3674,7 @@ int __thiscall codecvt_wchar_do_out(const codecvt_wchar *this, int *state,
}
(*from_next)++;
- memcpy_s(*to_next, to_end-*to_next, buf, size);
+ (void)memcpy_s(*to_next, to_end-*to_next, buf, size);
(*to_next) += size;
}
}
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index ce05613..c8dfce9 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -82,7 +82,7 @@ MSVCP_size_t CDECL MSVCP_char_traits_char_length(const char *str)
char* CDECL MSVCP_char_traits_char__Copy_s(char *dest,
MSVCP_size_t size, const char *src, MSVCP_size_t count)
{
- memcpy_s(dest, size, src, count);
+ (void)memcpy_s(dest, size, src, count);
return dest;
}
@@ -107,7 +107,7 @@ const char * CDECL MSVCP_char_traits_char_find(
char* CDECL MSVCP_char_traits_char__Move_s(char *dest,
MSVCP_size_t size, const char *src, MSVCP_size_t count)
{
- memmove_s(dest, size, src, count);
+ (void)memmove_s(dest, size, src, count);
return dest;
}
@@ -206,7 +206,7 @@ MSVCP_size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str)
wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest,
MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
{
- memcpy_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
+ (void)memcpy_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
return dest;
}
@@ -237,7 +237,7 @@ const wchar_t* CDECL MSVCP_char_traits_wchar_find(
wchar_t* CDECL MSVCP_char_traits_wchar__Move_s(wchar_t *dest,
MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
{
- memmove_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
+ (void)memmove_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
return dest;
}
@@ -353,7 +353,7 @@ MSVCP_size_t CDECL MSVCP_char_traits_short_length(const unsigned short *str)
unsigned short * CDECL MSVCP_char_traits_short__Copy_s(unsigned short *dest,
MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
{
- memcpy_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
+ (void)memcpy_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
return dest;
}
@@ -384,7 +384,7 @@ const unsigned short* CDECL MSVCP_char_traits_short_find(
unsigned short* CDECL MSVCP_char_traits_short__Move_s(unsigned short *dest,
MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
{
- memmove_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
+ (void)memmove_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
return dest;
}
--
2.1.0

View File

@@ -1,49 +0,0 @@
From 53611893c65e0470cf8d81b7900a02f9640c6dcc Mon Sep 17 00:00:00 2001
From: Amine Khaldi <amine.khaldi@reactos.org>
Date: Sat, 18 Oct 2014 19:53:56 +0100
Subject: [PATCH] strmbase: Remove unused TransformFilter_Vtbl (Clang).
---
dlls/strmbase/transform.c | 20 --------------------
1 file changed, 20 deletions(-)
diff --git a/dlls/strmbase/transform.c b/dlls/strmbase/transform.c
index 0fc7515..4d872be 100644
--- a/dlls/strmbase/transform.c
+++ b/dlls/strmbase/transform.c
@@ -42,7 +42,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(strmbase);
static const WCHAR wcsInputPinName[] = {'i','n','p','u','t',' ','p','i','n',0};
static const WCHAR wcsOutputPinName[] = {'o','u','t','p','u','t',' ','p','i','n',0};
-static const IBaseFilterVtbl TransformFilter_Vtbl;
static const IPinVtbl TransformFilter_InputPin_Vtbl;
static const IPinVtbl TransformFilter_OutputPin_Vtbl;
static const IQualityControlVtbl TransformFilter_QualityControl_Vtbl;
@@ -439,25 +438,6 @@ HRESULT WINAPI TransformFilterImpl_FindPin(IBaseFilter * iface, LPCWSTR Id, IPin
return E_NOTIMPL;
}
-static const IBaseFilterVtbl TransformFilter_Vtbl =
-{
- TransformFilterImpl_QueryInterface,
- BaseFilterImpl_AddRef,
- TransformFilterImpl_Release,
- BaseFilterImpl_GetClassID,
- TransformFilterImpl_Stop,
- TransformFilterImpl_Pause,
- TransformFilterImpl_Run,
- BaseFilterImpl_GetState,
- BaseFilterImpl_SetSyncSource,
- BaseFilterImpl_GetSyncSource,
- BaseFilterImpl_EnumPins,
- TransformFilterImpl_FindPin,
- BaseFilterImpl_QueryFilterInfo,
- BaseFilterImpl_JoinFilterGraph,
- BaseFilterImpl_QueryVendorInfo
-};
-
static HRESULT WINAPI TransformFilter_InputPin_EndOfStream(IPin * iface)
{
BaseInputPin* This = impl_BaseInputPin_from_IPin(iface);
--
2.1.2

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