Compare commits

..

147 Commits

Author SHA1 Message Date
Erich E. Hoover
7efae8dc63 Remove unused variable in IMediaSeeking patches. 2014-07-25 21:23:43 -06:00
Erich E. Hoover
59a227fea5 Release 1.7.23. 2014-07-25 21:15:11 -06:00
Sebastian Lackner
7b41f47a27 patchupdate.py: Ensure that patchlist data is properly escaped. 2014-07-26 04:39:21 +02:00
Erich E. Hoover
2f48baf75b Add additional author on font patch definition file. 2014-07-25 20:03:43 -06:00
Sebastian Lackner
cdaf968aa6 Add LICENSE.GPLv3 to debian/wine-compholio.docs (and sort alphabetically). 2014-07-26 04:02:11 +02:00
Sebastian Lackner
f91056bdc2 Merge branch 'master' of github.com:compholio/wine-compholio 2014-07-26 03:56:22 +02:00
Sebastian Lackner
ee4b0b868e Merge branch 'master' of github.com:compholio/wine-compholio 2014-07-26 03:53:36 +02:00
Erich E. Hoover
46d3dece11 Have git ignore pre-compiled python files. 2014-07-25 19:53:27 -06:00
Sebastian Lackner
6e017c65e2 Pull in latest version of winepulse patches (rebase only). 2014-07-26 03:53:13 +02:00
Erich E. Hoover
d018c5bad9 Added WenQuanYi Micro Hei (GPLv3) as a Microsoft Yahei replacement. 2014-07-25 19:49:49 -06:00
Sebastian Lackner
6431b62348 Update changelog for HKEY_DYN_DATA patches. 2014-07-26 03:45:02 +02:00
Sebastian Lackner
600d6d0b87 Attempt to escape quotation marks in generated README.md. 2014-07-26 03:41:47 +02:00
Sebastian Lackner
145e5212b3 Merge branch 'master' of github.com:compholio/wine-compholio 2014-07-26 03:31:30 +02:00
Sebastian Lackner
799eed7336 patchupdate.py: Move README.md template to separate file. 2014-07-26 03:31:08 +02:00
Michael MĂĽller
b04636aa97 Add patch to populate HKEY_DYN_DATA. 2014-07-26 03:22:25 +02:00
Sebastian Lackner
d270fde97f Update path to Missing_Fonts patch. 2014-07-26 03:19:27 +02:00
Sebastian Lackner
f609f42eed Merge branch 'master' of github.com:compholio/wine-compholio 2014-07-26 03:14:57 +02:00
Sebastian Lackner
d39a62b810 Add debian/tools/wine to .gitignore. 2014-07-26 03:14:21 +02:00
Erich E. Hoover
8486f8265b Update README entry for default folder ACLs. 2014-07-25 19:01:05 -06:00
Erich E. Hoover
f03602bcfd Move 98-Miscellaneous to Miscellaneous. 2014-07-25 18:58:53 -06:00
Erich E. Hoover
20d1c91c29 Move 97-Pipelight to Pipelight. 2014-07-25 18:58:38 -06:00
Erich E. Hoover
e6cf192b7b Move 13-Misc_ACL to server-Misc_ACL. 2014-07-25 18:58:12 -06:00
Erich E. Hoover
9d339630bb Move 16-server-CreateProcess_ACLs to server-CreateProcess_ACLs. 2014-07-25 18:51:15 -06:00
Erich E. Hoover
a8de052a24 Move 15-wtsapi32 to wtsapi32-EnumerateProcesses. 2014-07-25 18:50:48 -06:00
Erich E. Hoover
846b29671f Move 19-ntdll-Dynamic_DST to ntdll-Dynamic_DST. 2014-07-25 18:50:14 -06:00
Erich E. Hoover
55e0e0ed4e Move 18-quartz-MediaSeeking_Positions to quartz-MediaSeeking_Positions. 2014-07-25 18:49:52 -06:00
Erich E. Hoover
020dc88b37 Move 17-strmbase-Lock_Race_Conditions to strmbase-Lock_Race_Conditions. 2014-07-25 18:49:34 -06:00
Erich E. Hoover
eb1e664c31 Move 14-UrlCombineW to shlwapi-UrlCombine. 2014-07-25 18:46:04 -06:00
Erich E. Hoover
77a19f836f Move 12-FD_Cache to ntdll-FD_Cache. 2014-07-25 18:40:38 -06:00
Erich E. Hoover
3a74d5cccc Move 10-Missing_Fonts to fonts-Missing_Fonts. 2014-07-25 18:40:06 -06:00
Erich E. Hoover
10354d4cb5 Move 09-TransmitFile to ws2_32-TransmitFile. 2014-07-25 18:39:43 -06:00
Erich E. Hoover
fe7b83a384 Move 08-Junction_Points to ntdll-Junction_Points. 2014-07-25 18:39:20 -06:00
Erich E. Hoover
ad021f5462 Move 07-GetVolumePathName to kernel32-GetVolumePathName. 2014-07-25 18:38:39 -06:00
Erich E. Hoover
e800cac340 Move 06-winepulse to winepulse-PulseAudio_Support. 2014-07-25 18:38:06 -06:00
Erich E. Hoover
91cd19237f Move 04-XEMBED to winex11-XEMBED. 2014-07-25 18:37:27 -06:00
Erich E. Hoover
1e0e9de2b0 Move 05-Named_Pipe to kernel32-Named_Pipe. 2014-07-25 18:36:21 -06:00
Erich E. Hoover
802ebcbb91 Move 00-Commandline to loader-Cmdline_Diagnostics. 2014-07-25 18:34:36 -06:00
Erich E. Hoover
2c3efe2faa Split 02-ACL_Extended_Attributes into server-Stored_ACLs, server-Inherited_ACLs, shell32-Default_Folder_ACLs, and server-ACL_Compat. 2014-07-25 18:33:58 -06:00
Erich E. Hoover
2a3d9afece Move 01-Address_Change_Notification to server-Address_Change_Notification. 2014-07-25 18:33:48 -06:00
Sebastian Lackner
1c6691895b Updated changelog for Dynamic DST patch. 2014-07-26 00:57:56 +02:00
Sebastian Lackner
4dea282c90 Add Dynamic DST patches to fix issues with Israel timezone. 2014-07-26 00:55:23 +02:00
Erich E. Hoover
845a4dd675 Update README to indicate that Wine's SetTimer value is now 10 ms. 2014-07-25 15:46:12 -06:00
Sebastian Lackner
5bfc96a6a5 README.md: Add instructions how to specify a list of patches when calling the Makefile. 2014-07-25 22:52:11 +02:00
Sebastian Lackner
b8ab34f8d6 Update README.md with recent changes to the patch system. 2014-07-25 22:37:29 +02:00
Sebastian Lackner
eccde841d5 Fix typo in README.md. 2014-07-25 22:17:51 +02:00
Sebastian Lackner
22f1f858b1 Fix typo in debian/changelog. 2014-07-25 22:09:08 +02:00
Sebastian Lackner
ef427399da Rewrite of patch system to simplify mainting large patchsets. 2014-07-25 22:08:08 +02:00
Sebastian Lackner
208b3c1d25 patchupdate.py: Small code style improvement. 2014-07-25 21:59:34 +02:00
Sebastian Lackner
60632bb522 patchutils.py: Silence output of patch commandline utility. 2014-07-25 21:57:46 +02:00
Sebastian Lackner
707a96d35a patchupdate.py: Improve output in case of errors. 2014-07-25 21:54:58 +02:00
Sebastian Lackner
aa54f206eb gitupdate.py: Add license header and some code cleanup. 2014-07-25 21:34:03 +02:00
Sebastian Lackner
6db9cf0e65 patchutils.py: Add license header, remove unnecessary variables. 2014-07-25 20:50:16 +02:00
Sebastian Lackner
8727d25f6f gitapply.sh: Move gitsha1 algorithm into separate function. 2014-07-25 20:19:35 +02:00
Sebastian Lackner
02f52948f5 gitapply.sh: More regular expression replacements. 2014-07-25 20:14:48 +02:00
Sebastian Lackner
3f9af9fb49 gitapply.sh: Replace regular expression with with bash substring at some places. 2014-07-25 20:00:24 +02:00
Sebastian Lackner
e99ff32949 gitapply.sh: Add license, check for dependencies before proceeding, several smaller improvements. 2014-07-25 19:49:56 +02:00
Sebastian Lackner
1f95d8181d patchupdate.py: Improve generated Makefile and delete *.ok files on error. 2014-07-25 17:52:08 +02:00
Sebastian Lackner
e827cc078f patchupdate.py: Improve patch system and remove dependencies, when the order of patches doesn't matter. 2014-07-25 16:39:08 +02:00
Sebastian Lackner
80e51dcad6 patchutils.py: Remove unused functions min_{source,dest}_size. 2014-07-25 04:03:28 +02:00
Sebastian Lackner
10d9fda5f9 Merged with master. 2014-07-25 03:45:20 +02:00
Sebastian Lackner
f69c6a545c Use patchutils.py to parse patch files and split them into individual changes. 2014-07-25 03:32:01 +02:00
Erich E. Hoover
a4d6e77557 Remove relative Junction Point linking for now (breaks tests). 2014-07-22 21:30:16 -06:00
Erich E. Hoover
5b691be2cc Fix failing Junction Point test. 2014-07-22 21:28:01 -06:00
Erich E. Hoover
02eae9d5a0 Add missing definition file for Arial replacement. 2014-07-22 19:22:20 -06:00
Erich E. Hoover
a4dbc11aff Add missing license file for Arial replacement. 2014-07-22 19:21:23 -06:00
Erich E. Hoover
f1121e3a1a Merge branch 'tkurbad-fontsmoothing' 2014-07-22 18:36:31 -06:00
Torsten Kurbad
ac83718ba8 Downgraded Arial replacement font to Liberation Sans v1.07.3. 2014-07-22 18:24:15 -06:00
Erich E. Hoover
603d7ca80e Make sure LICENSE files are included in the Debian packages. 2014-07-22 17:51:37 -06:00
Erich E. Hoover
6b2cc4c58f Return correct IMediaSeeking stream positions in quartz. 2014-07-22 08:38:10 -06:00
Michael MĂĽller
a3d2b4b9e0 Fix fuzz in patches. 2014-07-20 22:36:08 +02:00
Erich E. Hoover
95bee0aa1e Fix race condition between EndOfStream and Pause. 2014-07-18 10:58:54 -06:00
Erich E. Hoover
bc6f854478 Fix possible race conditions in strmbase/quartz. 2014-07-17 10:54:33 -06:00
Sebastian Lackner
0b33c39275 patchupdate.py: Use abort() function instead of hardcoded call to exit. 2014-07-13 04:53:20 +02:00
Sebastian Lackner
fce29b88da Improve patchupdate.py to detect changes even when regular diff files without git header are used. 2014-07-13 04:46:11 +02:00
Sebastian Lackner
f6dd1f3d0d Add instructions how to exclude patches in README.md. 2014-07-13 03:29:56 +02:00
Sebastian Lackner
49bbdc5bf2 Add .NOTPARALLEL to generated Makefile.
We don't want to add unnatural dependencies for patches, if for example both
patch A and B modify the same file, but the order of applying the patches doesn't
matter. Adding a dependency would cause trouble when excluding patches.
2014-07-13 02:47:34 +02:00
Sebastian Lackner
df034abacb Strip configure changes from winepulse patches.
These changes will be done automatically by autoreconf, keeping them in increases
chances to get conflicts.
2014-07-13 02:17:09 +02:00
Sebastian Lackner
d49ca49848 Update wine-pulse patches (extracted from version 1.7.21). 2014-07-13 02:07:52 +02:00
Sebastian Lackner
79843648fb Include list of affected files for each set of patches. 2014-07-13 01:51:15 +02:00
Sebastian Lackner
63e82e5cd2 Replace custom templating system with Python format() in patchupdate.py. 2014-07-13 01:46:08 +02:00
Sebastian Lackner
7e3381c7a3 Fix formatting issues for README.md. 2014-07-13 01:33:28 +02:00
Sebastian Lackner
cffa29b1ae Precommit script should trigger even if just the changelog was updated. 2014-07-13 01:32:09 +02:00
Sebastian Lackner
dc95c57c20 Automatically generate installation instructions based on template whenever updating patches / version. 2014-07-13 01:30:44 +02:00
Sebastian Lackner
a0a5084f55 Minor code cleanup in patchupdate.py. 2014-07-12 01:33:04 +02:00
Sebastian Lackner
386a2ce3ba Pulled changes from master. 2014-07-11 23:18:27 +02:00
Sebastian Lackner
86e6d52971 Add a missing short name for 13-Misc_ACL patches. 2014-07-11 21:29:45 +02:00
Sebastian Lackner
f7014738a8 Display short name instead of full bug report title in README.md. 2014-07-11 21:25:18 +02:00
Erich E. Hoover
4b95841bdb Release 1.7.22. 2014-07-11 13:00:13 -06:00
Erich E. Hoover
180fa60a17 Implement passing ACLs to CreateProcess. 2014-07-11 12:57:10 -06:00
Sebastian Lackner
32a0e9cc9e Use Python multiprocessing to speed up querying bug information from Wine bugzilla. 2014-07-11 20:35:39 +02:00
Sebastian Lackner
79861c20f1 Show bug numbers in README.md after the description. 2014-07-11 19:44:07 +02:00
Sebastian Lackner
bb0cece9a9 Sort entries for autogenerated README.md file. 2014-07-11 19:38:38 +02:00
Sebastian Lackner
32148424bd Fix generation of URLs in README.md. 2014-07-11 19:36:31 +02:00
Sebastian Lackner
5c72aff53e Add fixed bug numbers to each patchset, autogenerate README.md with patch information. 2014-07-11 19:34:33 +02:00
Sebastian Lackner
42afbafa33 Initial version of new dependency based patch system. 2014-07-11 18:51:03 +02:00
Sebastian Lackner
9d3369d7a6 gitapply.sh: Make sure that all error output is redirected to stderr, sort commandline options. 2014-07-11 00:31:33 +02:00
Sebastian Lackner
2bb1b96f06 Removed several patches (accepted upstream). 2014-07-09 21:47:48 +02:00
Erich E. Hoover
2bfe73c2b7 Updated main extended attributes patch to include BSD support. 2014-07-08 14:32:58 -06:00
Erich E. Hoover
8e2ab550d8 Updated main extended attributes patch to include additional data checks. 2014-07-08 14:32:06 -06:00
Erich E. Hoover
7f5e6044ee Reformat the display of the Wine bug number in the README. 2014-07-08 13:19:19 -06:00
Erich E. Hoover
db0464c6f2 Update repository name and description in README. 2014-07-08 12:39:31 -06:00
Sebastian Lackner
80455f2b22 Rebase patch to silence resource_check_usage FIXME. 2014-07-08 01:03:49 +02:00
Sebastian Lackner
ce40587ef4 Return NULL-terminated list of arguments in CommandLineToArgvW. 2014-07-07 23:43:30 +02:00
Sebastian Lackner
4ad4f948c3 Fix incorrect scaling for DECIMAL values in VarDecAdd. 2014-07-07 22:19:53 +02:00
Sebastian Lackner
1fbebd0a1a Add patch for implementation of wtsapi32.WTSEnumerateProcessesW. 2014-07-06 23:55:09 +02:00
Sebastian Lackner
1761c9534e Move UrlCombineW patches in a separate directory. 2014-07-06 23:47:00 +02:00
Sebastian Lackner
b500367ff7 Remove patch '0001-quartz-tests-Add-tests-for-IVMRMonitorConfig-and-IVMRM.patch'. 2014-07-06 23:40:17 +02:00
Erich E. Hoover
5721ee15c9 Removed RegSetKeySecurity patch (accepted upstream). 2014-07-04 13:18:59 -06:00
Erich E. Hoover
56264645ad Updated RegSetKeySecurity patch to work with special root keys. 2014-07-04 10:14:57 -06:00
Erich E. Hoover
113b554090 Retitle RegSetKeySecurity component (advapi -> advapi32). 2014-07-01 20:34:44 -06:00
Erich E. Hoover
24c6b554c9 Implement RegSetKeySecurity on top of NtSetSecurityObject. 2014-07-01 19:26:01 -06:00
Erich E. Hoover
b861c5731d Added NT4 support to the process ACL tests. 2014-07-01 18:32:31 -06:00
Erich E. Hoover
5d354c9b2a Release 1.7.21 2014-06-27 23:09:39 -06:00
Sebastian Lackner
e8fee88c50 Remove several patches (accepted upstream). 2014-06-22 20:40:51 +02:00
Sebastian Lackner
c2e8167d6d Release 1.7.20. 2014-06-14 19:46:09 +02:00
Sebastian Lackner
907d56238e Fix warning during compilation for unused variable. 2014-06-14 10:37:54 +02:00
Sebastian Lackner
674b998176 Add patch to fix issues with Obsidium copy protection (add missing exception in OutputDebugStringA). 2014-06-14 09:45:49 +02:00
Erich E. Hoover
882b560d0d Added patches for default security descriptor ownership and DACLs for processes. 2014-06-13 15:29:17 -06:00
Erich E. Hoover
8df335170a Updated changelog with recent changes. 2014-06-13 15:29:16 -06:00
Sebastian Lackner
2241ffdf4b Disable gstreamer (broken with glib >= 2.32.0).
See http://bugs.winehq.org/show_bug.cgi?id=30557 for more details.
2014-06-13 23:22:54 +02:00
Sebastian Lackner
dff7b6b562 Update winepulse patches to latest revision (extracted from 1.7.19). 2014-06-13 22:47:13 +02:00
Sebastian Lackner
cdb00a9e7a Update README.md. 2014-06-13 22:02:13 +02:00
Sebastian Lackner
f7541123b5 Add patch to avoid race-condition when unloading modules while hook is active. 2014-06-13 21:49:49 +02:00
Sebastian Lackner
6578707ac2 Remove several patches (accepted upstream). 2014-06-13 20:07:34 +02:00
Michael MĂĽller
719c65ebb0 Fix recommendation for odbc and add libgsm1. 2014-06-07 14:55:29 +02:00
Erich E. Hoover
ddefcb372a Force autoreconf even when timestamp seems to indicate that it is not necessary. 2014-06-05 15:38:43 -06:00
Michael MĂĽller
c594bca17a Error out in git apply script on *BSD. 2014-06-05 21:20:54 +02:00
Sebastian Lackner
3c33a592f6 Make generate-patchlist.sh compatible with FreeBSD. 2014-06-05 22:17:55 +02:00
Sebastian Lackner
4476d8af38 Update changelog for release 1.7.19-1. 2014-06-02 23:55:55 +02:00
Sebastian Lackner
b216cdce2c Update FD cache patch to allow complication with -DNDEBUG. 2014-06-02 20:57:19 +02:00
Sebastian Lackner
fc086bb2bc Add additional check to ensure wineserver doesn't crash if mem_alloc fails. 2014-06-02 01:42:23 +02:00
Sebastian Lackner
772dfd9f5a Work around compiler signed <-> unsigned casting issues. 2014-06-02 01:38:40 +02:00
Michael MĂĽller
b4d53a7344 Add support for xattr/ACLs on FreeBSD 2014-06-01 22:10:22 +02:00
Sebastian Lackner
e5c7fe8c18 Merge branch 'master' of github.com:compholio/wine-compholio-daily 2014-06-01 23:48:40 +02:00
Sebastian Lackner
fdc24226bf 02-ACL_Extended_Attributes: Add additional patch to prevent crashes in case of invalid extended attributes. 2014-06-01 23:47:53 +02:00
Michael MĂĽller
3886ee9fae Add patch to detect direct rendering in Wine applications. 2014-06-01 22:55:11 +02:00
Sebastian Lackner
229eb9bba5 Update fd cache patches (use slightly slower interlocked commands, which should also work well on less usual processor architectures). 2014-05-31 22:10:09 +02:00
Sebastian Lackner
1800d1f853 Fixed possible race-condition in FD cache patches. 2014-05-31 18:38:40 +02:00
Sebastian Lackner
24d682fd91 Add patch to fix exception test failures on x86_64. 2014-05-31 14:12:22 +02:00
Sebastian Lackner
979900f060 Add lockfree implementation for get_cached_fd to ntdll. 2014-05-31 04:02:40 +02:00
Michael MĂĽller
d094743650 Fix patchlist. 2014-05-31 03:46:10 +02:00
Michael MĂĽller
2c9d2d8f64 Merge branch 'master' of https://github.com/compholio/wine-compholio-daily 2014-05-31 03:42:29 +02:00
Michael MĂĽller
457c0bf7e1 Add patches to fix current Unity3D webplayer. 2014-05-31 03:42:21 +02:00
Sebastian Lackner
d2209c6ee0 Add additional patch for --check-libs commandline option. 2014-05-30 01:26:10 +02:00
Sebastian Lackner
84997e39ab Separate patchlist into patch-list.patch (containing the autogenerated list) and 00-Commandline for the commandline option changes. 2014-05-30 01:04:27 +02:00
Torsten Kurbad
ec9af72c77 Replaced Liberation Sans 2.01 bei 1.07.3 2014-05-27 11:56:11 +02:00
Michael MĂĽller
01be545e92 Replace strict draw ordering patch with a different approach. 2014-05-27 03:03:03 +02:00
161 changed files with 1472696 additions and 223066 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
debian/tools/wine
.depcache
*.ok
*.pyc

677
LICENSE.GPLv3 Normal file

File diff suppressed because it is too large Load Diff

502
LICENSE.LGPLv2.1 Normal file

File diff suppressed because it is too large Load Diff

59
LICENSE.Liberation Normal file
View File

@@ -0,0 +1,59 @@
The following files are under this license:
* ./patches/fonts-Missing_Fonts/0001-fonts-Add-Liberation-Sans-as-an-Arial-replacement.patch
LICENSE AGREEMENT AND LIMITED PRODUCT WARRANTY
LIBERATION FONT SOFTWARE
This agreement governs the use of the Software and any updates to the Software,
regardless of the delivery mechanism. Subject to the following terms, Red Hat,
Inc. ("Red Hat") grants to the user ("Client") a license to this work pursuant
to the GNU General Public License v.2 with the exceptions set forth below and
such other terms as our set forth in this End User License Agreement.
1.The Software and License Exception. LIBERATION font software (the "Software")
consists of TrueType-OpenType formatted font software for rendering LIBERATION
typefaces in sans serif, serif, and monospaced character styles. You are licensed
to use, modify, copy, and distribute the Software pursuant to the GNU General
Public License v.2 with the following exceptions:
(a)As a special exception, if you create a document which uses this font, and
embed this font or unaltered portions of this font into the document, this font
does not by itself cause the resulting document to be covered by the GNU General
Public License. This exception does not however invalidate any other reasons why
the document might be covered by the GNU General Public License. If you modify
this font, you may extend this exception to your version of the font, but you
are not obligated to do so. If you do not wish to do so, delete this exception
statement from your version.
(b)As a further exception, any distribution of the object code of the Software
in a physical product must provide you the right to access and modify the source
code for the Software and to reinstall that modified version of the Software in
object code form on the same physical product on which you received it.
2.Intellectual Property Rights. The Software and each of its components,
including the source code, documentation, appearance, structure and organization
are owned by Red Hat and others and are protected under copyright and other laws.
Title to the Software and any component, or to any copy, modification, or merged
portion shall remain with the aforementioned, subject to the applicable license.
The "LIBERATION" trademark is a trademark of Red Hat, Inc. in the U.S. and other
countries. This agreement does not permit Client to distribute modified versions
of the Software using Red Hat's trademarks. If Client makes a redistribution of
a modified version of the Software, then Client must modify the files names to
remove any reference to the Red Hat trademarks and must not use the Red Hat
trademarks in any way to reference or promote the modified Software.
3.Limited Warranty. To the maximum extent permitted under applicable law, the
Software is provided and licensed "as is" without warranty of any kind,
expressed or implied, including the implied warranties of merchantability,
non-infringement or fitness for a particular purpose. Red Hat does not warrant
that the functions contained in the Software will meet Client's requirements or
that the operation of the Software will be entirely error free or appear
precisely as described in the accompanying documentation.
4.Limitation of Remedies and Liability. To the maximum extent permitted by
applicable law, Red Hat or any Red Hat authorized dealer will not be liable to
Client for any incidental or consequential damages, including lost profits or
lost savings arising out of the use or inability to use the Software, even if
Red Hat or such dealer has been advised of the possibility of such damages.
5.General. If any provision of this agreement is held to be unenforceable, that
shall not affect the enforceability of the remaining provisions. This agreement
shall be governed by the laws of the State of North Carolina and of the United
States, without regard to any conflict of laws provisions, except that the
United Nations Convention on the International Sale of Goods shall not apply.
Copyright © 2007 Red Hat, Inc. All rights reserved. LIBERATION is a trademark
of Red Hat, Inc.

File diff suppressed because it is too large Load Diff

116
README.md
View File

@@ -1,18 +1,106 @@
wine-compholio-daily
====================
wine-compholio
==============
Daily updates for the Wine "Compholio" Edition.
The Wine "Compholio" Edition repository includes a variety of patches for
Wine to run common Windows applications under Linux.
Current patches include:
* Support for interface change notifications (http://bugs.winehq.org/show_bug.cgi?id=32328)
* Support for stored file ACLs (http://bugs.winehq.org/show_bug.cgi?id=31858)
* Support for inherited file ACLs (http://bugs.winehq.org/show_bug.cgi?id=34406)
* Support for Junction Points (http://bugs.winehq.org/show_bug.cgi?id=12401)
* Support for TransmitFile (http://bugs.winehq.org/show_bug.cgi?id=5048)
These patches fix the following Wine bugs:
* Support for TransmitFile ([Wine Bug #5048](http://bugs.winehq.org/show_bug.cgi?id=5048 "Multiple applications and games need support for ws2_32 SIO_GET_EXTENSION_FUNCTION_POINTER TransmitFile (WSAID_TRANSMITFILE)"))
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](http://bugs.winehq.org/show_bug.cgi?id=7115 "Need for Speed III installer fails in Win9X mode, reporting \"Could not get 'HardWareKey' value\" (active PnP device keys in 'HKEY_DYN_DATA\\\\Config Manager\\\\Enum' missing)"))
* Support for Junction Points ([Wine Bug #12401](http://bugs.winehq.org/show_bug.cgi?id=12401 "Support junction points, i.e. DeviceIoCtl(FSCTL_SET_REPARSE_POINT/FSCTL_GET_REPARSE_POINT)"))
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](http://bugs.winehq.org/show_bug.cgi?id=13829 "Wine does not have CJK fonts"))
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](http://bugs.winehq.org/show_bug.cgi?id=15980 "Rhapsody 2 crashes on startup (GetSecurityInfo returns NULL DACL for process object)"))
* Workaround for TransactNamedPipe not being supported ([Wine Bug #17273](http://bugs.winehq.org/show_bug.cgi?id=17273 "Many apps and games need SetNamedPipeHandleState implementation (support for named pipe message mode)(FireFox+Flash, Win8/NET 4.x SDK/vcrun2012, WiX installers)"))
* Support for process ACLs ([Wine Bug #22006](http://bugs.winehq.org/show_bug.cgi?id=22006 "OpenProcess does not enforce ACL"))
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](http://bugs.winehq.org/show_bug.cgi?id=23174 "Fallout 3: Diologue and Video/sound issues"))
* Add implementation of WTSEnumerateProcessesW ([Wine Bug #29903](http://bugs.winehq.org/show_bug.cgi?id=29903 "Some Microsoft debuggers fail to enumerate processes due to wtsapi32.WTSEnumerateProcessesW() being a stub (Microsoft Visual Studio 2005, DbgCLR from .NET 2.0 SDK)"))
* Fix race conditions and deadlocks in strmbase/quartz ([Wine Bug #31566](http://bugs.winehq.org/show_bug.cgi?id=31566 "Fallout 3: regression causes block at critical section when radio is enabled"))
* Support for stored file ACLs ([Wine Bug #31858](http://bugs.winehq.org/show_bug.cgi?id=31858 "Netflix on Firefox fails with Internet Connection Problem when loading bar is at 99%"))
* Implement an Arial replacement font ([Wine Bug #32323](http://bugs.winehq.org/show_bug.cgi?id=32323 "Netflix (Silverlight 4.x) and several .NET Framework 3.x/4.0 WPF apps require either Arial or Verdana to be installed"))
* Support for interface change notifications ([Wine Bug #32328](http://bugs.winehq.org/show_bug.cgi?id=32328 "Many .NET and Silverlight applications require SIO_ADDRESS_LIST_CHANGE for interface change notifications"))
* Support for inherited file ACLs ([Wine Bug #34406](http://bugs.winehq.org/show_bug.cgi?id=34406 "Finale Notepad 2012 doesn't copy/create user files on program start"))
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](http://bugs.winehq.org/show_bug.cgi?id=36374 "Israel timezone handled incorrectly"))
Besides that the following additional changes are included:
* Add default ACLs for user shell folders
* Add support for Dynamic DST (daylight saving time) information in registry
* Lockfree algorithm for filedescriptor cache (improves file access speed)
* Other Pipelight specific enhancements
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
* Support for GetVolumePathName
* Implement an Arial replacement font (http://bugs.winehq.org/show_bug.cgi?id=32323)
* Workaround for TransactNamedPipe not being supported (http://bugs.winehq.org/show_bug.cgi?id=17273)
* XEMBED support for embedding Wine windows inside Linux applications
* Reduced SetTimer minimum value from 15 ms to 5 ms (improves Silverlight framerates)
* Workaround for shlwapi URLs with relative paths
* Support for PulseAudio backend for audio
* Workaround for shlwapi URLs with relative paths
* XEMBED support for embedding Wine windows inside Linux applications
### Compiling wine-compholio
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.
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.23.tar.bz2
wget https://github.com/compholio/wine-compholio-daily/archive/v1.7.23.tar.gz
```
Extract the archives:
```bash
tar xvjf wine-1*.tar.bz2
cd wine-1*
tar xvzf ../v1.7.23.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
```

56
debian/changelog vendored
View File

@@ -1,3 +1,59 @@
wine-compholio (1.7.23) unstable; urgency=low
* Rewrite of patch system to simplify maintaining large patchsets.
* Fix failing Junction Point test.
* Fix possible race conditions in strmbase/quartz.
* Fix race condition between EndOfStream and Pause.
* Fix issues with Israel Standard Time timezone.
* Add support for Dynamic DST (daylight saving time) information.
* Add some generic hardware in HKEY_DYN_DATA\Config Manager\Enum.
* Return correct IMediaSeeking stream positions in quartz.
* Make sure LICENSE files are included in the Debian packages.
* Downgraded Arial replacement font to Liberation Sans v1.07.3.
* Remove relative Junction Point linking for now (breaks tests).
* Added WenQuanYi Micro Hei (GPLv3) as a Microsoft Yahei replacement.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 25 Jul 2014 21:12:42 -0600
wine-compholio (1.7.22) unstable; urgency=low
* Implement passing ACLs to CreateProcess.
* Removed several patches (accepted upstream).
* Added NT4 support to the process ACL tests.
* Implement RegSetKeySecurity on top of NtSetSecurityObject.
* Updated RegSetKeySecurity patch to work with special root keys.
* Add patch for wtsapi32.WTSEnumerateProcessesW function.
* Fix incorrect scaling for DECIMAL values in VarDecAdd.
* Updated main extended attributes patch to include BSD support.
* Return NULL-terminated list of arguments in CommandLineToArgvW.
* Updated main extended attributes patch to include additional data checks.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Fri, 11 Jul 2014 13:00:03 -0600
wine-compholio (1.7.21) unstable; urgency=low
* Remove several patches (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Fri, 27 Jun 2014 23:08:48 -0600
wine-compholio (1.7.20) unstable; urgency=low
* Remove several patches (accepted upstream).
* Fix recommendation for odbc and add libgsm1.
* Disabled gstreamer (broken with glib >= 2.32.0).
* Updated scripts to be compatible with BSD systems.
* Update winepulse patches to latest revision (extracted from 1.7.19).
* Force autoreconf even when timestamp seems to indicate that it is not necessary.
* Added patches for default security descriptor ownership and DACLs for processes.
* Added a patch to avoid a race-condition when unloading modules while a hook is active.
* Add patch to fix issues with Obsidium copy protection.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Sat, 14 Jun 2014 18:15:12 +0200
wine-compholio (1.7.19-1) unstable; urgency=low
* Added a patch to fix return value for FSCTL_PIPE_WAIT (required for Unity3D).
* Added a patch to stub TokenAppContainerSid in NtQueryInformationToken (required for Unity3D).
* Added a patch to optimize the file descriptor cache by using lockfree algorithms.
* Add additional checks in XATTR patch to ensure wineserver doesn't crash if data is corrupted.
* Add support for extended attributes on FreeBSD systems.
* Added a patch to fix ntdll/exception test failures on x86_64.
* Allow to change 'strict draw ordering' at runtime.
* Add ability to test if all dynamic libraries are installed with "wine --check-libs".
* Added a patch to query if direct rendering is enabled via GLX extension.
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 02 Jun 2014 23:50:23 +0200
wine-compholio (1.7.19) unstable; urgency=low
* Updated SIO_ADDRESS_LIST_CHANGE patches.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Tue, 06 May 2014 15:42:32 -0600

8
debian/control vendored
View File

@@ -32,8 +32,6 @@ Build-Depends: autotools-dev,
libgnutls-dev,
libgphoto2-dev | libgphoto2-6-dev | libgphoto2-2-dev (>= 2.4.6),
libgsm1-dev,
libgstreamer-plugins-base0.10-dev,
libgstreamer0.10-dev,
libice-dev,
libjpeg-dev,
liblcms2-dev | ubuntu-desktop (<< 1.267),
@@ -102,7 +100,8 @@ Recommends: libcapi20-3,
libxslt1.1,
libxt6,
libxxf86vm1,
unixodbc
libodbc1,
libgsm1
Section: otherosfs
Priority: optional
Replaces: wine-compholio (<< 1.7.15-1~)
@@ -159,7 +158,8 @@ Recommends: libcapi20-3,
libxslt1.1,
libxt6,
libxxf86vm1,
unixodbc
libodbc1,
libgsm1
Section: otherosfs
Priority: optional
Replaces: wine-compholio (<< 1.7.15-1~)

4
debian/rules vendored
View File

@@ -16,9 +16,9 @@ override_dh_auto_configure:
make -C "$(CURDIR)/patches/" DESTDIR="$(CURDIR)" install
ifeq ($(DEB_BUILD_ARCH), amd64)
./configure --prefix=/opt/wine-compholio --libdir=\$${prefix}/lib64 --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --enable-win64 --with-xattr $(CONFFLAGS)
./configure --prefix=/opt/wine-compholio --libdir=\$${prefix}/lib64 --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --enable-win64 --without-gstreamer --with-xattr $(CONFFLAGS)
else
./configure --prefix=/opt/wine-compholio --libdir=\$${prefix}/lib --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --with-xattr $(CONFFLAGS)
./configure --prefix=/opt/wine-compholio --libdir=\$${prefix}/lib --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --without-gstreamer --with-xattr $(CONFFLAGS)
endif
override_dh_auto_test:

84
debian/tools/README.md.in vendored Normal file
View File

@@ -0,0 +1,84 @@
wine-compholio
==============
The Wine "Compholio" Edition repository includes a variety of patches for
Wine to run common Windows applications under Linux.
These patches fix the following Wine bugs:
{bugs}
Besides that the following additional changes are included:
{fixes}
### Compiling wine-compholio
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.
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
```

View File

@@ -1,166 +0,0 @@
#!/bin/sh
PATCH_DATA="";
for FILE in patches/*/*.def; do
UUID=$(echo "${FILE}" | sed -e 's|^.*/||g' -e 's|\.def$||g');
REVISION=$(cat "${FILE}" | sed -n 's|Revision: \(.*\)|\1|p');
AUTHOR=$(cat "${FILE}" | sed -n 's|Author: \(.*\)|\1|p');
TITLE=$(cat "${FILE}" | sed -n 's|Title: \(.*\)|\1|p');
if [ "${AUTHOR}" = "" ] && [ "${TITLE}" = "" ]; then
continue;
fi
if [ "${PATCH_DATA}" != "" ]; then
PATCH_DATA="${PATCH_DATA}
";
fi
PATCH_DATA="${PATCH_DATA}+ { \"${UUID}:${REVISION}\", \"${AUTHOR}\", \"${TITLE}\" },";
done
PATCH_LINES=$(echo "${PATCH_DATA}" | wc -l);
PATCH_LINES=$((${PATCH_LINES}+20));
PATCH_DATA=$(echo "${PATCH_DATA}" | sed ':a;N;$!ba;s/\n/\\n/g');
cat <<EOF | sed -e "s|##PATCH_LINES##|${PATCH_LINES}|" \
-e "s|##PATCH_DATA##|${PATCH_DATA}|"
From: "FDS-Team" <webmaster@fds-team.de>
Subject: Autogenerated patch list.
---
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
index 8bd4eb7..4b4c318 100644
--- a/dlls/ntdll/misc.c
+++ b/dlls/ntdll/misc.c
@@ -60,6 +60,14 @@ const char * CDECL NTDLL_wine_get_version(void)
}
/*********************************************************************
+ * wine_get_patches (NTDLL.@)
+ */
+const void * CDECL NTDLL_wine_get_patches(void)
+{
+ return wine_get_patches();
+}
+
+/*********************************************************************
* wine_get_build_id (NTDLL.@)
*/
const char * CDECL NTDLL_wine_get_build_id(void)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 70bf94f..42eddcf 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1410,6 +1410,7 @@
# Version
@ cdecl wine_get_version() NTDLL_wine_get_version
+@ cdecl wine_get_patches() NTDLL_wine_get_patches
@ cdecl wine_get_build_id() NTDLL_wine_get_build_id
@ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version
diff --git a/libs/wine/config.c b/libs/wine/config.c
index a273502..5fa0cd5 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;
+ const char *author;
+ const char *title;
+} wine_patch_data[] = {
##PATCH_DATA##
+ { NULL, NULL, NULL }
+};
+
+/* return the applied non-standard patches */
+const void * wine_get_patches(void)
+{
+ return &wine_patch_data[0];
+}
+
/* return the build id string */
const char *wine_get_build_id(void)
{
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
index ed315bd..5b42029 100644
--- a/libs/wine/wine.def
+++ b/libs/wine/wine.def
@@ -83,6 +83,7 @@ EXPORTS
wine_get_sortkey
wine_get_user_name
wine_get_version
+ wine_get_patches
wine_init
wine_init_argv0_path
wine_is_dbcs_leadbyte
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 2159fac..7cb2918 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -90,6 +90,7 @@ WINE_1.0
wine_get_ss;
wine_get_user_name;
wine_get_version;
+ wine_get_patches;
wine_init;
wine_init_argv0_path;
wine_is_dbcs_leadbyte;
diff --git a/loader/main.c b/loader/main.c
index ac67290..516fd82 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -79,6 +79,12 @@ static inline void reserve_area( void *addr, size_t size )
#endif /* __APPLE__ */
+struct wine_patch {
+ const char *hash;
+ const char *author;
+ const char *title;
+};
+
/***********************************************************************
* check_command_line
*
@@ -89,7 +96,8 @@ static void check_command_line( int argc, char *argv[] )
static const char usage[] =
"Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n"
" wine --help Display this help and exit\n"
- " wine --version Output version information and exit";
+ " wine --version Output version information and exit\n"
+ " wine --patches Output patch information and exit";
if (argc <= 1)
{
@@ -106,6 +114,16 @@ static void check_command_line( int argc, char *argv[] )
printf( "%s\n", wine_get_build_id() );
exit(0);
}
+ if (!strcmp( argv[1], "--patches" ))
+ {
+ const struct wine_patch *wine_patch_data = wine_get_patches();
+ for(; wine_patch_data->hash != NULL; wine_patch_data++)
+ {
+ printf( "%s :: %s :: %s\n", wine_patch_data->hash, wine_patch_data->author,
+ wine_patch_data->title );
+ }
+ exit(0);
+ }
}
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

@@ -1,4 +1,23 @@
#!/usr/bin/env bash
#
# Wrapper to apply binary patches without git.
#
# 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
#
# Setup parser variables
nogit=0
@@ -31,7 +50,7 @@ warning()
usage()
{
echo ""
echo "Usage: ./gitapply [-v] [-d DIRECTORY]"
echo "Usage: ./gitapply [--nogit] [-v] [-d DIRECTORY]"
echo ""
echo "Reads patch data from stdin and applies the patch to the current"
echo "directory or the directory given via commandline."
@@ -41,11 +60,25 @@ usage()
echo ""
}
gitsha1()
{
echo -en "blob $(du -b "$1" | cut -f1)\x00" | cat - "$1" | sha1sum | cut -d' ' -f1
}
# Parse environment variables
while [[ $# > 0 ]]; do
cmd="$1"; shift
case "$cmd" in
--nogit)
nogit=1
;;
-v)
verbose=1
;;
--directory=*)
cd "${cmd#*=}"
;;
@@ -54,15 +87,8 @@ while [[ $# > 0 ]]; do
;;
-R)
abort "Reverse applying patches not supported yet with this patch tool."
;;
-v)
verbose=1
;;
--nogit)
nogit=1
echo "Reverse applying patches not supported yet with this tool." >&2
exit 1
;;
--help)
@@ -82,6 +108,21 @@ if [ "$nogit" -eq 0 ] && command -v git >/dev/null 2>&1; then
exit 1
fi
# Check for missing depdencies
for dependency in awk chmod cut dd du gzip hexdump patch sha1sum; do
if ! command -v "$dependency" >/dev/null 2>&1; then
echo "Missing dependency: $dependency - please install this program and try again." >&2
exit 1
fi
done
# Detect BSD
if gzip -V 2>&1 | grep "BSD" &> /dev/null; then
echo "This script is not compatible with *BSD utilities. Please install git," >&2
echo "which provides the same functionality and will be used instead." >&2
exit 1
fi
# Decode base85 git data, prepend with a gzip header
awk_b85='
BEGIN{
@@ -188,7 +229,7 @@ while IFS= read -r line; do
echo "$line" >> "$patch_tmpfile"
continue
elif [[ "$line" =~ ^old\ mode ]] || [[ "$line" =~ ^deleted\ file\ mode ]]; then
elif [ "${line:0:8}" == "old mode" ] || [ "${line:0:17}" == "deleted file mode" ]; then
# ignore
echo "$line" >> "$patch_tmpfile"
continue
@@ -198,31 +239,25 @@ while IFS= read -r line; do
echo "$line" >> "$patch_tmpfile"
continue
elif [[ "$line" =~ ^new\ mode ]] || [[ "$line" =~ ^new\ file\ mode ]]; then
patch_errors+=("$lineno: unable to parse header line '$line'")
elif [ "${line:0:8}" == "new mode" ] || [ "${line:0:13}" == "new file mode" ]; then
patch_errors+=("$lineno: Unable to parse header line '$line'.")
patch_invalid=1
echo "$line" >> "$patch_tmpfile"
continue
elif [[ "$line" =~ ^copy\ from ]] || [[ "$line" =~ ^copy\ to ]]; then
patch_errors+=("$lineno: copy header not implemented yet")
elif [ "${line:0:9}" == "copy from" ] || [ "${line:0:7}" == "copy to" ]; then
patch_errors+=("$lineno: Copy header not implemented yet.")
patch_invalid=1
echo "$line" >> "$patch_tmpfile"
continue
elif [[ "$line" =~ ^rename\ old ]] || [[ "$line" =~ ^rename\ from ]]; then
patch_errors+=("$lineno: rename header not implemented yet")
elif [ "${line:0:7}" == "rename " ]; then
patch_errors+=("$lineno: Patch rename header not implemented yet.")
patch_invalid=1
echo "$line" >> "$patch_tmpfile"
continue
elif [[ "$line" =~ ^rename\ new ]] || [[ "$line" =~ ^rename\ to ]]; then
patch_errors+=("$lineno: rename header not implemented yet")
patch_invalid=1
echo "$line" >> "$patch_tmpfile"
continue
elif [[ "$line" =~ ^similarity\ index ]] || [[ "$line" =~ ^dissimilarity\ index ]]; then
elif [ "${line:0:16}" == "similarity index" ] || [ "${line:0:19}" == "dissimilarity index" ]; then
# ignore
echo "$line" >> "$patch_tmpfile"
continue
@@ -233,8 +268,8 @@ while IFS= read -r line; do
echo "$line" >> "$patch_tmpfile"
continue
elif [[ "$line" =~ ^index\ ]]; then
patch_errors+=("$lineno: unable to parse header line '$line'")
elif [ "${line:0:6}" == "index " ]; then
patch_errors+=("$lineno: Unable to parse header line '$line'.")
patch_invalid=1
echo "$line" >> "$patch_tmpfile"
continue
@@ -244,12 +279,12 @@ while IFS= read -r line; do
if [[ "$patch_oldname" =~ ^a/(.*)$ ]]; then
patch_oldname="${BASH_REMATCH[1]}"
elif [ "$patch_oldname" != "/dev/null" ]; then
abort "old name doesn't start with a/."
abort "Old name doesn't start with a/."
fi
if [[ "$patch_newname" =~ ^b/(.*)$ ]]; then
patch_newname="${BASH_REMATCH[1]}"
elif [ "$patch_newname" != "/dev/null" ]; then
abort "new name doesn't start with b/."
abort "New name doesn't start with b/."
fi
patch_mode=2
@@ -263,12 +298,12 @@ while IFS= read -r line; do
if [[ "$line" == "GIT binary patch" ]]; then
if [ -z "$patch_oldsha1" ] || [ -z "$patch_newsha1" ]; then
patch_errors+=("$lineno: missing index header, sha1 sums required for binary patch")
patch_errors+=("$lineno: Missing index header, sha1 sums required for binary patch.")
patch_invalid=1
fi
if [ "$patch_oldname" != "$patch_newname" ]; then
patch_errors+=("$lineno: stripped old- and new name doesn't match")
patch_errors+=("$lineno: Stripped old- and new name doesn't match for binary patch.")
patch_invalid=1
fi
@@ -280,7 +315,7 @@ while IFS= read -r line; do
patch_mode=100
continue
elif [[ "$line" =~ ^@@\ - ]]; then
elif [ "${line:0:4}" == "@@ -" ]; then
# We count the number of lines added/removed for informational purposes
patch_total_add=0
patch_total_rem=0
@@ -288,10 +323,10 @@ while IFS= read -r line; do
patch_mode=200
# fall-through
elif [[ "$line" =~ ^diff\ --git\ ]]; then
elif [ "${line:0:11}" == "diff --git " ]; then
if [ "$patch_oldname" != "$patch_newname" ]; then
patch_errors+=("$lineno: stripped old- and new name doesn't match")
patch_errors+=("$lineno: Stripped old- and new name doesn't match.")
patch_invalid=1
fi
@@ -322,13 +357,13 @@ while IFS= read -r line; do
# Check shasum if its not a patch creating a new file
if [ "$patch_oldsha1" != "0000000000000000000000000000000000000000" ] || [ "$binary_patch_type" == "delta" ] || [ -f "$patch_oldname" ]; then
if [ -f "$patch_oldname" ]; then
sha=$(echo -en "blob $(du -b "$patch_oldname" | cut -f1)\x00" | cat - "$patch_oldname" | sha1sum | cut -d' ' -f1)
sha=$(gitsha1 "$patch_oldname")
else
sha="0000000000000000000000000000000000000000"
fi
if [ "$patch_oldsha1" != "$sha" ]; then
echo "$lineno: Expected $patch_oldsha1"
echo "$lineno: Got $sha"
echo "$lineno: Expected $patch_oldsha1" >&2
echo "$lineno: Got $sha" >&2
abort "Unable to continue because of sha1 mismatch of original file."
fi
fi
@@ -397,13 +432,13 @@ while IFS= read -r line; do
while read cmd arg1 arg2; do
if [ "$cmd" == "S" ]; then
binary_patch_destsize="$arg2"
if [ "$arg1" -ne "$(du -b "$patch_oldname" | cut -f 1)" ]; then break; fi
[ "$arg1" -eq "$(du -b "$patch_oldname" | cut -f 1)" ] || break
elif [ "$cmd" == "1" ]; then
if ! dd if="$patch_oldname" bs=1 skip="$arg1" count="$arg2" >> "$decoded_tmpfile" 2>/dev/null; then break; fi
dd if="$patch_oldname" bs=1 skip="$arg1" count="$arg2" >> "$decoded_tmpfile" 2>/dev/null || break
elif [ "$cmd" == "2" ]; then
if ! dd if="$patch_tmpfile" bs=1 skip="$arg1" count="$arg2" >> "$decoded_tmpfile" 2>/dev/null; then break; fi
dd if="$patch_tmpfile" bs=1 skip="$arg1" count="$arg2" >> "$decoded_tmpfile" 2>/dev/null || break
elif [ "$cmd" == "E" ]; then
binary_patch_complete=1
@@ -426,15 +461,15 @@ while IFS= read -r line; do
fi
# Check shasum if its not a patch creating a new file
sha=$(echo -en "blob $(du -b "$patch_tmpfile" | cut -f1)\x00" | cat - "$patch_tmpfile" | sha1sum | cut -d' ' -f1)
sha=$(gitsha1 "$patch_tmpfile")
if [ "$patch_newsha1" != "$sha" ]; then
echo "$lineno: Expected $patch_newsha1"
echo "$lineno: Got $sha"
echo "$lineno: Expected $patch_newsha1" >&2
echo "$lineno: Got $sha" >&2
abort "Unable to continue because of sha1 mismatch after applying the patch."
fi
if ! cp "$patch_tmpfile" "$patch_oldname"; then
abort "Unable to replace original file"
abort "Unable to replace original file."
fi
if [ ! -z "$patch_filemode" ]; then
chmod "${patch_filemode: -3}" "$patch_oldname" # we ignore failures for now
@@ -465,6 +500,11 @@ while IFS= read -r line; do
patch_mode=201
continue
elif [ "${line:0:2}" == "\\ " ]; then
# ignore
echo "$line" >> "$patch_tmpfile"
continue
else
echo "patching $patch_newname"
@@ -483,23 +523,23 @@ while IFS= read -r line; do
# These lines are part of a hunk, append it
echo "$line" >> "$patch_tmpfile"
if [ "$hunk_src_lines" -gt 0 ] && [ "$hunk_dst_lines" -gt 0 ] && [[ "$line" =~ ^\ ]]; then
if [ "${line:0:1}" == " " ] && [ "$hunk_src_lines" -gt 0 ] && [ "$hunk_dst_lines" -gt 0 ]; then
(( hunk_src_lines-- ))
(( hunk_dst_lines-- ))
elif [ "$hunk_src_lines" -gt 0 ] && [[ "$line" =~ ^- ]]; then
elif [ "${line:0:1}" == "-" ] && [ "$hunk_src_lines" -gt 0 ]; then
(( hunk_src_lines-- ))
(( patch_total_rem++ ))
elif [ "$hunk_dst_lines" -gt 0 ] && [[ "$line" =~ ^\+ ]]; then
elif [ "${line:0:1}" == "+" ] && [ "$hunk_dst_lines" -gt 0 ]; then
(( hunk_dst_lines-- ))
(( patch_total_add++ ))
elif [[ "$line" =~ ^\\\ ]]; then
elif [ "${line:0:2}" == "\\ " ]; then
continue # ignore "\\ No newline ..."
else
abort "Unexpected line in hunk"
abort "Unexpected line in hunk."
fi
# If it was the last line of this hunk then go back to mode 200
@@ -538,7 +578,7 @@ while IFS= read -r line; do
patch_mode=1
continue
elif [[ "$line" =~ ^@@\ - ]] || [[ "$line" =~ ^---\ ]] || [[ "$line" =~ ^\+\+\+\ ]]; then
elif [ "${line:0:4}" == "@@ -" ] || [ "${line:0:4}" == "--- " ] || [ "${line:0:4}" == "+++ " ]; then
abort "Patch corrupted or not created with git."
fi
fi

73
debian/tools/patchlist.sh vendored Executable file
View File

@@ -0,0 +1,73 @@
#!/bin/sh
PATCH_DATA=$(cat);
PATCH_LINES=$(echo "${PATCH_DATA}" | wc -l);
PATCH_LINES=$((${PATCH_LINES}+20));
cat <<EOF
From: "FDS-Team" <webmaster@fds-team.de>
Subject: Autogenerated patch list.
---
diff --git a/libs/wine/config.c b/libs/wine/config.c
index a273502..5fa0cd5 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;
+ const char *author;
+ const char *title;
+} wine_patch_data[] = {
${PATCH_DATA}
+ { NULL, NULL, NULL }
+};
+
+/* return the applied non-standard patches */
+const void * wine_get_patches(void)
+{
+ return &wine_patch_data[0];
+}
+
/* return the build id string */
const char *wine_get_build_id(void)
{
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
index ed315bd..5b42029 100644
--- a/libs/wine/wine.def
+++ b/libs/wine/wine.def
@@ -83,6 +83,7 @@ EXPORTS
wine_get_sortkey
wine_get_user_name
wine_get_version
+ wine_get_patches
wine_init
wine_init_argv0_path
wine_is_dbcs_leadbyte
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 2159fac..7cb2918 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -90,6 +90,7 @@ WINE_1.0
wine_get_ss;
wine_get_user_name;
wine_get_version;
+ wine_get_patches;
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

503
debian/tools/patchupdate.py vendored Executable file

File diff suppressed because it is too large Load Diff

320
debian/tools/patchutils.py vendored Normal file
View File

@@ -0,0 +1,320 @@
#!/usr/bin/python
#
# Python functions to read, split and apply patches.
#
# 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 collections
import difflib
import hashlib
import itertools
import os
import re
import subprocess
import tempfile
class PatchParserError(RuntimeError):
"""Unable to parse patch file - either an unimplemented feature, or corrupted patch."""
pass
class PatchApplyError(RuntimeError):
"""Failed to apply/merge patch."""
pass
class PatchObject(object):
def __init__(self, filename):
self.extracted_patch = None
self.unique_hash = None
self.filename = filename
self.offset_begin = None
self.offset_end = None
self.isbinary = False
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
def read_chunks(self):
"""Iterates over arbitrary sized chunks of this patch."""
assert self.offset_end >= self.offset_begin
with open(self.filename) as fp:
fp.seek(self.offset_begin)
i = self.offset_end - self.offset_begin
while i > 0:
buf = fp.read(4096 if i > 4096 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
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 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):
"""Internal function to read a single patch from a file."""
patch = PatchObject(fp.filename)
patch.offset_begin = fp.tell()
patch.oldname = oldname
patch.newname = newname
# Skip over initial diff --git header
line = fp.peek()
if line.startswith("diff --git "):
assert fp.read() == line
# Read header
while True:
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
if patch.oldname is None or patch.newname is None:
raise PatchParserError("Missing old or new name.")
elif patch.oldname == "/dev/null" and patch.newname == "/dev/null":
raise PatchParserError("Old and new name is /dev/null?")
if patch.oldname.startswith("a/"):
patch.oldname = patch.oldname[2:]
elif patch.oldname != "/dev/null":
raise PatchParserError("Old name in patch doesn't start with a/.")
if patch.newname.startswith("b/"):
patch.newname = patch.newname[2:]
elif patch.newname != "/dev/null":
raise PatchParserError("New name in patch doesn't start with b/.")
if patch.newname != "/dev/null":
patch.modified_file = patch.newname
else:
patch.modified_file = patch.oldname
# Decide between binary and textual patch
if line is None or line.startswith("diff --git ") or line.startswith("--- "):
if oldname != newname:
raise PatchParserError("Stripped old- and new name doesn't match.")
elif line.startswith("@@ -"):
while True:
line = fp.peek()
if line is None or not line.startswith("@@ -"):
break
r = re.match("^@@ -(([0-9]+),)?([0-9]+) \+(([0-9]+),)?([0-9]+) @@", line)
if not r: raise PatchParserError("Unable to parse hunk header '%s'." % line)
srcpos = max(int(r.group(2)) - 1, 0) if r.group(2) else 0
dstpos = max(int(r.group(5)) - 1, 0) if r.group(5) else 0
srclines, dstlines = int(r.group(3)), int(r.group(6))
if srclines <= 0 and dstlines <= 0:
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.")
while True:
line = fp.peek()
if line is None or not line.startswith("\\ "): break
assert fp.read() == line
elif line.rstrip() == "GIT binary patch":
if patch.oldsha1 is None or patch.newsha1 is None:
raise PatchParserError("Missing index header, sha1 sums required for binary patch.")
elif patch.oldname != patch.newname:
raise PatchParserError("Stripped old- and new name doesn't match for binary patch.")
assert fp.read() == line
line = fp.read()
if line is None: raise PatchParserError("Unexpected end of file.")
r = re.match("^(literal|delta) ([0-9]+)", line)
if not r: raise NotImplementedError("Only literal/delta patches are supported.")
patch.isbinary = True
# Skip over patch data
while True:
line = fp.read()
if line is None or line.strip() == "":
break
else:
raise PatchParserError("Unknown patch format.")
patch.offset_end = fp.tell()
return patch
with _FileReader(filename) as fp:
while True:
line = fp.peek()
if line is None:
break
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())
elif line.startswith("--- "):
yield _read_single_patch(fp)
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):
"""Apply a patch with optional fuzz - uses the commandline 'patch' utility."""
if not isinstance(patches, collections.Sequence):
patches = [patches]
contentfile = tempfile.NamedTemporaryFile(delete=False)
try:
contentfile.write(content)
contentfile.close()
for patch in patches:
patchfile = patch.extract()
cmdline = ["patch", "--batch", "--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

View File

@@ -1,4 +1,9 @@
documentation/README.*
ANNOUNCE
AUTHORS
README
LICENSE
LICENSE.GPLv3
LICENSE.LGPLv2.1
LICENSE.Liberation
LICENSE.wine-compholio
README

View File

@@ -1,3 +0,0 @@
Revision: 2
Author: Erich E. Hoover
Title: Implement SIO_ADDRESS_LIST_CHANGE.

View File

@@ -1,3 +0,0 @@
Revision: 4
Author: Erich E. Hoover
Title: Store and return security attributes with extended file attributes.

View File

@@ -1,3 +0,0 @@
Revision: 1
Author: Sebastian Lackner
Title: Enable/disable windows when they are (un)mapped by foreign applications.

View File

@@ -1,3 +0,0 @@
Revision: 1
Author: Sebastian Lackner
Title: Update gl_drawable for embedded windows.

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