diff --git a/README.md b/README.md index 4ac1d712..ba991c89 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,15 @@ The Wine "Compholio" Edition repository includes a variety of patches for Wine t These patches fix the following Wine bugs: -* Multiple applications and games need support for ws2_32 SIO_GET_EXTENSION_FUNCTION_POINTER TransmitFile (WSAID_TRANSMITFILE) ([Wine Bug #5048](http://bugs.winehq.org/show_bug.cgi?id=5048)) -* Support junction points, i.e. DeviceIoCtl(FSCTL_SET_REPARSE_POINT/FSCTL_GET_REPARSE_POINT) ([Wine Bug #12401](http://bugs.winehq.org/show_bug.cgi?id=12401)) -* Rhapsody 2 crashes on startup (GetSecurityInfo returns NULL DACL for process object) ([Wine Bug #15980](http://bugs.winehq.org/show_bug.cgi?id=15980)) -* Many apps and games need SetNamedPipeHandleState implementation (support for named pipe message mode)(FireFox+Flash, Win8/NET 4.x SDK/vcrun2012, WiX installers) ([Wine Bug #17273](http://bugs.winehq.org/show_bug.cgi?id=17273)) -* Some Microsoft debuggers fail to enumerate processes due to wtsapi32.WTSEnumerateProcessesW() being a stub (Microsoft Visual Studio 2005, DbgCLR from .NET 2.0 SDK) ([Wine Bug #29903](http://bugs.winehq.org/show_bug.cgi?id=29903)) -* Netflix on Firefox fails with Internet Connection Problem when loading bar is at 99% ([Wine Bug #31858](http://bugs.winehq.org/show_bug.cgi?id=31858)) -* Netflix (Silverlight 4.x) and several .NET Framework 3.x/4.0 WPF apps require either Arial or Verdana to be installed ([Wine Bug #32323](http://bugs.winehq.org/show_bug.cgi?id=32323)) -* Many .NET and Silverlight applications require SIO_ADDRESS_LIST_CHANGE for interface change notifications ([Wine Bug #32328](http://bugs.winehq.org/show_bug.cgi?id=32328)) -* Finale Notepad 2012 doesn't copy/create user files on program start ([Wine Bug #34406](http://bugs.winehq.org/show_bug.cgi?id=34406)) +* 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)")) +* 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)")) +* Rhapsody 2 crashes on startup (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)")) +* 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)")) +* 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")) Besides that the following additional changes are included: diff --git a/debian/tools/patchupdate.py b/debian/tools/patchupdate.py index 1bbffaea..70c0dba7 100755 --- a/debian/tools/patchupdate.py +++ b/debian/tools/patchupdate.py @@ -1,11 +1,12 @@ #!/usr/bin/python -import sys -import os +from multiprocessing import Pool +from xml.dom import minidom +import contextlib import textwrap import urllib -import contextlib -from xml.dom import minidom -from multiprocessing import Pool +import sys +import os +import re class AuthorInfo(object): def __init__(self): @@ -102,7 +103,7 @@ def read_patchsets(directory): next_patch = 0 patches = {} name_to_id = {} - all_fixes = [] + all_bugs = [] for name in sorted(os.listdir(directory)): # Read in sorted order to ensure created Makefile doesn't change too much if name in [".", ".."]: continue @@ -163,14 +164,19 @@ def read_patchsets(directory): if len(info.revision): info.revision += ", " info.revision += val elif cmd == "fixes": - try: - val = int(val) - except ValueError: - continue # Ignore invalid entry - patch.fixes.append(val) - all_fixes.append(val) - elif cmd == "changes": - patch.changes.append(val) + r = re.match("^[0-9]+$", val) + if r: + bugid = int(val) + patch.fixes.append((bugid, None, None)) + all_bugs.append(bugid) + continue + r = re.match("^\\[ *([0-9]+) *\\](.*)$", val) + if r: + bugid, description = int(r.group(1)), r.group(2).strip() + patch.fixes.append((bugid, None, description)) + all_bugs.append(bugid) + continue + patch.fixes.append((None, None, val)) elif cmd == "depends": if not name_to_id.has_key(val): print "** Definition file %s references unknown dependency %s" % (deffile, val) @@ -184,12 +190,12 @@ def read_patchsets(directory): # In a third step query information for the patches from Wine bugzilla pool = Pool(8) - bug_short_desc = {} - for bugid, data in zip(all_fixes, pool.map(download, ["http://bugs.winehq.org/show_bug.cgi?id=%d&ctype=xml&field=short_desc" % bugid for bugid in all_fixes])): + bug_short_desc = {None:None} + for bugid, data in zip(all_bugs, pool.map(download, ["http://bugs.winehq.org/show_bug.cgi?id=%d&ctype=xml&field=short_desc" % bugid for bugid in all_bugs])): bug_short_desc[bugid] = minidom.parseString(data).getElementsByTagName('short_desc')[0].firstChild.data pool.close() for i, patch in patches.iteritems(): - patch.fixes = [(bugid, bug_short_desc[bugid]) for bugid in patch.fixes] + patch.fixes = [(bugid, bug_short_desc[bugid], description) for bugid, dummy, description in patch.fixes] return patches @@ -228,10 +234,11 @@ def generate_makefile(patches, fp): fp.write("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap(info.subject + s, 120))) fp.write("# |\n") - if len(patch.fixes): + if any([bugid is not None for bugid, bugname, description in patch.fixes]): fp.write("# | This patchset fixes the following Wine bugs:\n") - for (bugid, bugname) in patch.fixes: - fp.write("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap("[#%d] %s" % (bugid, bugname), 120))) + for bugid, bugname, description in patch.fixes: + if bugid is not None: + fp.write("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap("[#%d] %s" % (bugid, bugname), 120))) fp.write("# |\n") depends = " ".join([""] + ["%s.ok" % patches[d].name for d in patch.depends]) if len(patch.depends) else "" @@ -260,22 +267,27 @@ def generate_readme(patches, fp): fp.write("\n") fp.write("These patches fix the following Wine bugs:\n") fp.write("\n") - all_fixes = [] + + all_bugs = [] for i, patch in patches.iteritems(): - for (bugid, bugname) in patch.fixes: - all_fixes.append((bugid, bugname)) - for (bugid, bugname) in sorted(all_fixes): - fp.write("* %s ([Wine Bug #%d](http://bugs.winehq.org/show_bug.cgi?id=%d))\n" % (bugname, bugid, bugid)) + for (bugid, bugname, description) in patch.fixes: + if bugid is not None: all_bugs.append((bugid, bugname, description)) + for (bugid, bugname, description) in sorted(all_bugs): + if description is None: description = bugname + fp.write("* %s ([Wine Bug #%d](http://bugs.winehq.org/show_bug.cgi?id=%d \"%s\"))\n" % (description, bugid, bugid, bugname)) + fp.write("\n") fp.write("\n") fp.write("Besides that the following additional changes are included:\n") fp.write("\n") - all_changes = [] + + all_fixes = [] for i, patch in patches.iteritems(): - for change in patch.changes: - all_changes.append(change) - for change in sorted(all_changes): - fp.write("* %s\n" % change) + for (bugid, bugname, description) in patch.fixes: + if bugid is None: all_fixes.append(description) + for description in sorted(all_fixes): + fp.write("* %s\n" % description) + fp.write("\n") if __name__ == "__main__": diff --git a/patches/01-Address_Change_Notification/definition b/patches/01-Address_Change_Notification/definition index b1c5b67d..6e00438b 100644 --- a/patches/01-Address_Change_Notification/definition +++ b/patches/01-Address_Change_Notification/definition @@ -1,4 +1,4 @@ Author: Erich E. Hoover Subject: Implement SIO_ADDRESS_LIST_CHANGE. Revision: 2 -Fixes: 32328 +Fixes: [32328] Support for interface change notifications diff --git a/patches/02-ACL_Extended_Attributes/definition b/patches/02-ACL_Extended_Attributes/definition index a1fdb9c0..830a7c12 100644 --- a/patches/02-ACL_Extended_Attributes/definition +++ b/patches/02-ACL_Extended_Attributes/definition @@ -1,5 +1,5 @@ Author: Erich E. Hoover Subject: Store and return security attributes with extended file attributes. Revision: 6 -Fixes: 31858 -Fixes: 34406 +Fixes: [31858] Support for stored file ACLs +Fixes: [34406] Support for inherited file ACLs diff --git a/patches/04-XEMBED/definition b/patches/04-XEMBED/definition index a43eca92..dff78594 100644 --- a/patches/04-XEMBED/definition +++ b/patches/04-XEMBED/definition @@ -5,4 +5,5 @@ Revision: 1 Author: Sebastian Lackner Subject: Update gl_drawable for embedded windows. Revision: 1 -Changes: XEMBED support for embedding Wine windows inside Linux applications + +Fixes: XEMBED support for embedding Wine windows inside Linux applications diff --git a/patches/05-Named_Pipe/definition b/patches/05-Named_Pipe/definition index 3f9fea41..c9fb1ee0 100644 --- a/patches/05-Named_Pipe/definition +++ b/patches/05-Named_Pipe/definition @@ -1,4 +1,5 @@ Author: Sebastian Lackner Subject: Change return value of stub SetNamedPipeHandleState to TRUE. Revision: 1 -Fixes: 17273 + +Fixes: [17273] Workaround for TransactNamedPipe not being supported diff --git a/patches/06-winepulse/definition b/patches/06-winepulse/definition index c1574c26..b3a28d16 100644 --- a/patches/06-winepulse/definition +++ b/patches/06-winepulse/definition @@ -1,7 +1,7 @@ Author: Maarten Lankhorst Subject: Winepulse patches extracted from https://launchpad.net/~ubuntu-wine/+archive/ppa/+files/wine1.7_1.7.19-0ubuntu2~trusty2.debian.tar.gz. Revision: 3 -Changes: Support for PulseAudio backend for audio +Fixes: Support for PulseAudio backend for audio # Both patches modify configure.ac Depends: 02-ACL_Extended_Attributes diff --git a/patches/07-GetVolumePathName/definition b/patches/07-GetVolumePathName/definition index ea72789c..8d51caa7 100644 --- a/patches/07-GetVolumePathName/definition +++ b/patches/07-GetVolumePathName/definition @@ -1,4 +1,4 @@ Author: Erich E. Hoover Subject: Implement GetVolumePathName. Revision: 1 -Changes: Support for GetVolumePathName +Fixes: Support for GetVolumePathName diff --git a/patches/08-Junction_Points/definition b/patches/08-Junction_Points/definition index 19c04592..82c8ca28 100644 --- a/patches/08-Junction_Points/definition +++ b/patches/08-Junction_Points/definition @@ -1,7 +1,7 @@ Author: Erich E. Hoover Subject: Support for junction points/reparse points. Revision: 1 -Fixes: 12401 +Fixes: [12401] Support for Junction Points # Both patches modify dlls/kernel32/volume.c Depends: 07-GetVolumePathName diff --git a/patches/09-TransmitFile/definition b/patches/09-TransmitFile/definition index 634836e3..76a694e8 100644 --- a/patches/09-TransmitFile/definition +++ b/patches/09-TransmitFile/definition @@ -1,7 +1,7 @@ Author: Erich E. Hoover Subject: Implement TransmitFile. Revision: 1 -Fixes: 5048 +Fixes: [5048] Support for TransmitFile # both patches modify server/sock.c Depends: 01-Address_Change_Notification diff --git a/patches/10-Missing_Fonts/definition b/patches/10-Missing_Fonts/definition index 60a07d0e..134902e6 100644 --- a/patches/10-Missing_Fonts/definition +++ b/patches/10-Missing_Fonts/definition @@ -1,4 +1,4 @@ Author: Erich E. Hoover Subject: Implement missing fonts expected by Silverlight. Revision: 1 -Fixes: 32323 +Fixes: [32323] Implement an Arial replacement font diff --git a/patches/12-FD_Cache/definition b/patches/12-FD_Cache/definition index e5527d06..4c899742 100644 --- a/patches/12-FD_Cache/definition +++ b/patches/12-FD_Cache/definition @@ -1,4 +1,4 @@ Author: Sebastian Lackner Subject: Use lockfree implementation for get_cached_fd. Revision: 4 -Changes: Lockfree algorithm for filedescriptor cache (improves file access speed) +Fixes: Lockfree algorithm for filedescriptor cache (improves file access speed) diff --git a/patches/14-UrlCombineW/definition b/patches/14-UrlCombineW/definition index 2a9f948b..c5416f13 100644 --- a/patches/14-UrlCombineW/definition +++ b/patches/14-UrlCombineW/definition @@ -1,4 +1,4 @@ Author: Sebastian Lackner Subject: Workaround for broken implementation of shlwapi url functions. Revision: 1 -Changes: Workaround for shlwapi URLs with relative paths +Fixes: Workaround for shlwapi URLs with relative paths diff --git a/patches/15-wtsapi32/definition b/patches/15-wtsapi32/definition index e8225883..8480c52d 100644 --- a/patches/15-wtsapi32/definition +++ b/patches/15-wtsapi32/definition @@ -1,4 +1,4 @@ Author: Sebastian Lackner Subject: Partial implementation of WTSEnumerateProcessesW. Revision: 1 -Fixes: 29903 +Fixes: [29903] Add implementation of WTSEnumerateProcessesW diff --git a/patches/97-Pipelight/definition b/patches/97-Pipelight/definition index 6a8a4807..052ef0bc 100644 --- a/patches/97-Pipelight/definition +++ b/patches/97-Pipelight/definition @@ -14,5 +14,5 @@ Author: Sebastian Lackner Subject: Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command. Revision: 1 -Changes: Reduced SetTimer minimum value from 15 ms to 5 ms (improves Silverlight framerates) -Changes: Other Pipelight specific enhancements \ No newline at end of file +Fixes: Reduced SetTimer minimum value from 15 ms to 5 ms (improves Silverlight framerates) +Fixes: Other Pipelight specific enhancements \ No newline at end of file