diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..32eed133 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.ok \ No newline at end of file diff --git a/debian/tools/generate-patchlist.sh b/debian/tools/patchlist.sh similarity index 79% rename from debian/tools/generate-patchlist.sh rename to debian/tools/patchlist.sh index a4e5777e..f8b96197 100755 --- a/debian/tools/generate-patchlist.sh +++ b/debian/tools/patchlist.sh @@ -1,21 +1,5 @@ #!/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_DATA=$(cat); PATCH_LINES=$(echo "${PATCH_DATA}" | wc -l); PATCH_LINES=$((${PATCH_LINES}+20)); diff --git a/debian/tools/patchupdate.py b/debian/tools/patchupdate.py new file mode 100755 index 00000000..00bcb779 --- /dev/null +++ b/debian/tools/patchupdate.py @@ -0,0 +1,247 @@ +#!/usr/bin/python +import sys +import os +import textwrap +import urllib +import contextlib +from xml.dom import minidom + +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.patches = [] + self.files = set() + self.depends = set() + + self.verify_depends = set() + self.verify_time = None + +def pairs(a): + for i, j in enumerate(a): + for k in a[i+1:]: + yield (j, k) + +def causal_time_combine(a, b): + return [(a if a > b else b) for a, b in zip(a, b)] + +def causal_time_smaller(a, b): + return all([i <= j for i, j in zip(a,b)]) and any([i < j for i, j in zip(a,b)]) + +def causal_time_relation(a, b): + return causal_time_smaller(a, b) or causal_time_smaller(b, a) + +def verify_dependencies(all_patches): + max_patches = max(all_patches.keys()) + 1 + + for i, patch in all_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) + while len(patches): + + to_delete = [] + for i, patch in patches.iteritems(): + if len(patch.verify_depends) == 0: + patch.verify_time[i] += 1 + to_delete.append(i) + + if len(to_delete) == 0: + print "** Found circular dependencies, unable to apply remaining patches:" + print "** %s" % ", ".join([patch.name for dummy, patch in patches.iteritems()]) + exit(1) + + for j in to_delete: + for i, patch in patches.iteritems(): + if i != j and j in patch.verify_depends: + patch.verify_time = causal_time_combine(patch.verify_time, patches[j].verify_time) + patch.verify_depends.remove(j) + del patches[j] + + # Find out which files are modified by multiple patches + modified_files = {} + for i, patch in all_patches.iteritems(): + for f in patch.files: + if f not in modified_files: + modified_files[f] = [] + modified_files[f].append(i) + + # Iterate over pairs of patches, check for existing causal relationship + for f, indices in modified_files.iteritems(): + for i, j in pairs(indices): + if not causal_time_relation(all_patches[i].verify_time, all_patches[j].verify_time): + print "** Missing dependency between %s and %s" % (all_patches[i].name, all_patches[j].name) + print "** Both patches modify the same file %s" % f + exit(1) + +def lsdiff(f): + with open(f) as fp: + for line in fp: + if line.startswith("diff --git "): + tmp = line.strip().split(" ") + if len(tmp) == 4 and tmp[3].startswith("b/"): + yield tmp[3][2:] + +def read_patchsets(directory): + next_patch = 0 + patches = {} + name_to_id = {} + + for name in sorted(os.listdir(directory)): # Read in sorted order to ensure created Makefile doesn't change too much + if name in [".", ".."]: continue + subdirectory = os.path.join(directory, name) + if not os.path.isdir(subdirectory): continue + + patch = PatchSet(name) + + for f in sorted(os.listdir(subdirectory)): + if not f.endswith(".patch") or not os.path.isfile(os.path.join(subdirectory, f)): + continue + + # Append to the list of patches within this set + patch.patches.append(f) + + # Determine which files are affected + for modified_file in lsdiff(os.path.join(subdirectory, f)): + patch.files.add(modified_file) + + # No single patch within this directory, ignore it + if len(patch.patches) == 0: + del patch + continue + + patches[next_patch] = patch + name_to_id[name] = next_patch + next_patch += 1 + + # Now read the definition files in a second step + for i, patch in patches.iteritems(): + deffile = os.path.join(os.path.join(directory, patch.name), "definition") + + if not os.path.isfile(deffile): + print "** Missing definition file: %s" % deffile + exit(1) + + info = AuthorInfo() + + with open(deffile) as fp: + for line in fp: + if line.startswith("#"): continue + tmp = line.split(":", 1) + if len(tmp) < 2: + if len(info.author) and len(info.subject) and len(info.revision): + patch.authors.append(info) + info = AuthorInfo() + continue + cmd = tmp[0].lower() + val = tmp[1].strip() + + if cmd == "author": + if len(info.author): info.author += ", " + info.author += val + elif cmd == "subject" or cmd == "title": + if len(info.subject): info.subject += " " + info.subject += val + elif cmd == "revision": + if len(info.revision): info.revision += ", " + info.revision += val + elif cmd == "fixes": + try: + val = int(val) + except ValueError: + continue # Ignore invalid entry + with contextlib.closing(urllib.urlopen("http://bugs.winehq.org/show_bug.cgi?id=%d&ctype=xml&field=short_desc" % val)) as wr: + xmldoc = minidom.parseString(wr.read()) + short_desc = xmldoc.getElementsByTagName('short_desc')[0].firstChild.data + patch.fixes.append((val, short_desc)) + elif cmd == "depends": + if not name_to_id.has_key(val): + print "** Definition file %s references unknown dependency %s" % (deffile, val) + exit(1) + patch.depends.add(name_to_id[val]) + else: + print "** Ignoring unknown command in definition file %s: %s" % (deffile, line) + + if len(info.author) and len(info.subject) and len(info.revision): + patch.authors.append(info) + + return patches + +def generate_makefile(patches): + fp = sys.stdout + + fp.write("#\n") + fp.write("# This file is automatically generated, DO NOT EDIT!\n") + fp.write("#\n") + fp.write("\n") + fp.write("CURDIR ?= ${.CURDIR}\n") + fp.write("PATCH := $(CURDIR)/../debian/tools/gitapply.sh -d $(DESTDIR)\n") + fp.write("\n") + fp.write("PATCHLIST :=\t%s\n" % " \\\n\t\t".join(["%s.ok" % patch.name for i, patch in patches.iteritems()])) + fp.write("\n") + fp.write(".PHONY: install\n") + fp.write("install: $(PATCHLIST)\n") + fp.write("\tcat *.ok | sort | $(CURDIR)/../debian/tools/patchlist.sh | $(PATCH)\n") + fp.write("\tcd $(DESTDIR); autoreconf -f\n") + fp.write("\tcd $(DESTDIR); ./tools/make_requests\n") + fp.write("\trm -f *.ok\n") + fp.write("\n") + fp.write(".PHONY: abort\n") + fp.write("abort:\n") + fp.write("\trm -f *.ok\n") + fp.write("\n") + + for i, patch in patches.iteritems(): + fp.write("# Patchset %s\n" % patch.name) + fp.write("# |\n") + fp.write("# | Included patches:\n") + 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") + + if len(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))) + fp.write("# |\n") + + depends = " ".join([""] + ["%s.ok" % patches[d].name for d in patch.depends]) if len(patch.depends) else "" + fp.write("%s.ok:%s\n" % (patch.name, depends)) + for f in patch.patches: + fp.write("\t$(PATCH) < %s\n" % os.path.join(patch.name, f)) + + if len(patch.authors): + fp.write("\t( \\\n") + for info in patch.authors: + if not info.subject: continue + s = info.subject + 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)) + fp.write("\t) > %s.ok\n" % patch.name) + else: + fp.write("\ttouch %s.ok\n" % patch.name) + fp.write("\n"); + +def generate_readme(patches): + pass + + +if __name__ == "__main__": + patches = read_patchsets("./patches") + verify_dependencies(patches) + generate_makefile(patches) diff --git a/patches/00-Commandline/1b7ac850-5040-4d9e-8fde-9c483c3baf33.def b/patches/00-Commandline/1b7ac850-5040-4d9e-8fde-9c483c3baf33.def deleted file mode 100644 index 4797552d..00000000 --- a/patches/00-Commandline/1b7ac850-5040-4d9e-8fde-9c483c3baf33.def +++ /dev/null @@ -1,3 +0,0 @@ -Revision: 1 -Author: Sebastian Lackner -Title: Add commandline option --patches to show the patch list. diff --git a/patches/00-Commandline/9e9a58e1-b226-4d4d-943b-be9a4c1dc525.def b/patches/00-Commandline/definition similarity index 54% rename from patches/00-Commandline/9e9a58e1-b226-4d4d-943b-be9a4c1dc525.def rename to patches/00-Commandline/definition index d00a4385..81d21314 100644 --- a/patches/00-Commandline/9e9a58e1-b226-4d4d-943b-be9a4c1dc525.def +++ b/patches/00-Commandline/definition @@ -1,3 +1,7 @@ +Revision: 1 +Author: Sebastian Lackner +Title: Add commandline option --patches to show the patch list. + Revision: 1 Author: Michael Müller Title: Add commandline option --check-libs to test if shared libraries are installed. diff --git a/patches/01-Address_Change_Notification/8a366b6d-8ad6-4581-8aa9-66a03590a57b.def b/patches/01-Address_Change_Notification/definition similarity index 85% rename from patches/01-Address_Change_Notification/8a366b6d-8ad6-4581-8aa9-66a03590a57b.def rename to patches/01-Address_Change_Notification/definition index 92589fd7..3ee65ac5 100644 --- a/patches/01-Address_Change_Notification/8a366b6d-8ad6-4581-8aa9-66a03590a57b.def +++ b/patches/01-Address_Change_Notification/definition @@ -1,3 +1,4 @@ Revision: 2 Author: Erich E. Hoover Title: Implement SIO_ADDRESS_LIST_CHANGE. +Fixes: 32328 diff --git a/patches/02-ACL_Extended_Attributes/92938b89-506b-430a-ba50-32de8b286e56.def b/patches/02-ACL_Extended_Attributes/definition similarity index 100% rename from patches/02-ACL_Extended_Attributes/92938b89-506b-430a-ba50-32de8b286e56.def rename to patches/02-ACL_Extended_Attributes/definition diff --git a/patches/04-XEMBED/94186fff-6dbf-44d0-8eb1-2463d1608a0f.def b/patches/04-XEMBED/94186fff-6dbf-44d0-8eb1-2463d1608a0f.def deleted file mode 100644 index 52cb397c..00000000 --- a/patches/04-XEMBED/94186fff-6dbf-44d0-8eb1-2463d1608a0f.def +++ /dev/null @@ -1,3 +0,0 @@ -Revision: 1 -Author: Sebastian Lackner -Title: Update gl_drawable for embedded windows. diff --git a/patches/04-XEMBED/5d6bb7b5-ec88-4ed3-907d-9ad2173a2f88.def b/patches/04-XEMBED/definition similarity index 57% rename from patches/04-XEMBED/5d6bb7b5-ec88-4ed3-907d-9ad2173a2f88.def rename to patches/04-XEMBED/definition index 14aa2eed..f5796b2f 100644 --- a/patches/04-XEMBED/5d6bb7b5-ec88-4ed3-907d-9ad2173a2f88.def +++ b/patches/04-XEMBED/definition @@ -1,3 +1,7 @@ Revision: 1 Author: Sebastian Lackner Title: Enable/disable windows when they are (un)mapped by foreign applications. + +Revision: 1 +Author: Sebastian Lackner +Title: Update gl_drawable for embedded windows. diff --git a/patches/05-Named_Pipe/cbe240e8-2c58-430a-b61c-7fbb9d0e1e11.def b/patches/05-Named_Pipe/definition similarity index 100% rename from patches/05-Named_Pipe/cbe240e8-2c58-430a-b61c-7fbb9d0e1e11.def rename to patches/05-Named_Pipe/definition diff --git a/patches/06-winepulse/00273da7-72f8-4025-9e96-0c2bc95dacdb.def b/patches/06-winepulse/definition similarity index 71% rename from patches/06-winepulse/00273da7-72f8-4025-9e96-0c2bc95dacdb.def rename to patches/06-winepulse/definition index bc5a2bc5..7a879e34 100644 --- a/patches/06-winepulse/00273da7-72f8-4025-9e96-0c2bc95dacdb.def +++ b/patches/06-winepulse/definition @@ -1,3 +1,6 @@ Revision: 3 Author: Maarten Lankhorst Title: Winepulse patches extracted from https://launchpad.net/~ubuntu-wine/+archive/ppa/+files/wine1.7_1.7.19-0ubuntu2~trusty2.debian.tar.gz. + +# Both patches modify configure.ac +Depends: 02-ACL_Extended_Attributes diff --git a/patches/07-GetVolumePathName/fbea4ef6-85ac-4524-b32d-fc9882b73e5a.def b/patches/07-GetVolumePathName/definition similarity index 100% rename from patches/07-GetVolumePathName/fbea4ef6-85ac-4524-b32d-fc9882b73e5a.def rename to patches/07-GetVolumePathName/definition diff --git a/patches/08-Junction_Points/4cd13e94-7f2d-11e3-b5eb-0090f5c75ad5.def b/patches/08-Junction_Points/definition similarity index 53% rename from patches/08-Junction_Points/4cd13e94-7f2d-11e3-b5eb-0090f5c75ad5.def rename to patches/08-Junction_Points/definition index 58021752..5c432f2f 100644 --- a/patches/08-Junction_Points/4cd13e94-7f2d-11e3-b5eb-0090f5c75ad5.def +++ b/patches/08-Junction_Points/definition @@ -2,3 +2,5 @@ Revision: 1 Author: Erich E. Hoover Title: Support for junction points/reparse points. +# Both patches modify dlls/kernel32/volume.c +Depends: 07-GetVolumePathName diff --git a/patches/09-TransmitFile/5fb1f5c8-7f17-11e3-9b62-0090f5c75ad5.def b/patches/09-TransmitFile/5fb1f5c8-7f17-11e3-9b62-0090f5c75ad5.def deleted file mode 100644 index f829af11..00000000 --- a/patches/09-TransmitFile/5fb1f5c8-7f17-11e3-9b62-0090f5c75ad5.def +++ /dev/null @@ -1,3 +0,0 @@ -Revision: 1 -Author: Erich E. Hoover -Title: Implement TransmitFile. diff --git a/patches/09-TransmitFile/definition b/patches/09-TransmitFile/definition new file mode 100644 index 00000000..a2b959db --- /dev/null +++ b/patches/09-TransmitFile/definition @@ -0,0 +1,6 @@ +Revision: 1 +Author: Erich E. Hoover +Title: Implement TransmitFile. + +# both patches modify server/sock.c +Depends: 01-Address_Change_Notification diff --git a/patches/10-Missing_Fonts/3d7c4774-9e7f-11e3-9cfc-0090f5c75ad5.def b/patches/10-Missing_Fonts/definition similarity index 100% rename from patches/10-Missing_Fonts/3d7c4774-9e7f-11e3-9cfc-0090f5c75ad5.def rename to patches/10-Missing_Fonts/definition diff --git a/patches/12-FD_Cache/e7581ed7-12b3-4ed3-835b-5a62afbf9c85.def b/patches/12-FD_Cache/definition similarity index 100% rename from patches/12-FD_Cache/e7581ed7-12b3-4ed3-835b-5a62afbf9c85.def rename to patches/12-FD_Cache/definition diff --git a/patches/13-Misc_ACL/3405aa34-f341-11e3-83ce-0090f5c75ad5.def b/patches/13-Misc_ACL/definition similarity index 55% rename from patches/13-Misc_ACL/3405aa34-f341-11e3-83ce-0090f5c75ad5.def rename to patches/13-Misc_ACL/definition index 72e4aa43..ca019e19 100644 --- a/patches/13-Misc_ACL/3405aa34-f341-11e3-83ce-0090f5c75ad5.def +++ b/patches/13-Misc_ACL/definition @@ -1,3 +1,6 @@ Revision: 1 Author: Erich E. Hoover Title: Add default security descriptor ownership and DACLs for processes. + +# Both patches modify dlls/advapi32/tests/security.c +Depends: 02-ACL_Extended_Attributes diff --git a/patches/14-UrlCombineW/e46b26df-3c1b-419c-9579-f0d1e1c50bea.def b/patches/14-UrlCombineW/definition similarity index 100% rename from patches/14-UrlCombineW/e46b26df-3c1b-419c-9579-f0d1e1c50bea.def rename to patches/14-UrlCombineW/definition diff --git a/patches/15-wtsapi32/3790a2d5-f930-423e-9c03-f7fc1c1e0811.def b/patches/15-wtsapi32/definition similarity index 100% rename from patches/15-wtsapi32/3790a2d5-f930-423e-9c03-f7fc1c1e0811.def rename to patches/15-wtsapi32/definition diff --git a/patches/97-Pipelight/0b21d7ac-0387-4493-aa38-fbafe3e749f5.def b/patches/97-Pipelight/0b21d7ac-0387-4493-aa38-fbafe3e749f5.def deleted file mode 100644 index 7032f931..00000000 --- a/patches/97-Pipelight/0b21d7ac-0387-4493-aa38-fbafe3e749f5.def +++ /dev/null @@ -1,3 +0,0 @@ -Revision: 2 -Author: Michael Müller -Title: Decrease minimum SetTimer interval to 5 ms. diff --git a/patches/97-Pipelight/2394843e-2bc4-4fa4-8368-1ef32093b89e.def b/patches/97-Pipelight/2394843e-2bc4-4fa4-8368-1ef32093b89e.def deleted file mode 100644 index 5d72cf9e..00000000 --- a/patches/97-Pipelight/2394843e-2bc4-4fa4-8368-1ef32093b89e.def +++ /dev/null @@ -1,3 +0,0 @@ -Revision: 1 -Author: Michael Müller -Title: Allow changing strict draw ordering through an exported function. diff --git a/patches/97-Pipelight/255473fa-4e0a-4f51-952b-4deecc1a2181.def b/patches/97-Pipelight/255473fa-4e0a-4f51-952b-4deecc1a2181.def deleted file mode 100644 index 6c7c0b74..00000000 --- a/patches/97-Pipelight/255473fa-4e0a-4f51-952b-4deecc1a2181.def +++ /dev/null @@ -1,4 +0,0 @@ -Revision: 1 -Author: Michael Müller -Title: Indicate direct rendering through OpenGL extension. - diff --git a/patches/97-Pipelight/59bd38b7-bbdc-4cfd-9ccd-1c72c4ed84c0.def b/patches/97-Pipelight/59bd38b7-bbdc-4cfd-9ccd-1c72c4ed84c0.def deleted file mode 100644 index a6535d70..00000000 --- a/patches/97-Pipelight/59bd38b7-bbdc-4cfd-9ccd-1c72c4ed84c0.def +++ /dev/null @@ -1,3 +0,0 @@ -Revision: 1 -Author: Sebastian Lackner -Title: Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command. diff --git a/patches/97-Pipelight/definition b/patches/97-Pipelight/definition new file mode 100644 index 00000000..c3fddf11 --- /dev/null +++ b/patches/97-Pipelight/definition @@ -0,0 +1,15 @@ +Revision: 2 +Author: Michael Müller +Title: Decrease minimum SetTimer interval to 5 ms. + +Revision: 1 +Author: Michael Müller +Title: Allow changing strict draw ordering through an exported function. + +Revision: 1 +Author: Michael Müller +Title: Indicate direct rendering through OpenGL extension. + +Revision: 1 +Author: Sebastian Lackner +Title: Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command. diff --git a/patches/98-Miscellaneous/325645ba-d39d-4de4-9c94-3fe694eedaab.def b/patches/98-Miscellaneous/325645ba-d39d-4de4-9c94-3fe694eedaab.def deleted file mode 100644 index ccca1abd..00000000 --- a/patches/98-Miscellaneous/325645ba-d39d-4de4-9c94-3fe694eedaab.def +++ /dev/null @@ -1,3 +0,0 @@ -Revision: 1 -Author: Sebastian Lackner -Title: kernel32: Silence repeated CompareStringEx FIXME. diff --git a/patches/98-Miscellaneous/acff3012-0f75-4710-9941-08b5ce4c61f3.def b/patches/98-Miscellaneous/acff3012-0f75-4710-9941-08b5ce4c61f3.def deleted file mode 100644 index c4d322b8..00000000 --- a/patches/98-Miscellaneous/acff3012-0f75-4710-9941-08b5ce4c61f3.def +++ /dev/null @@ -1,4 +0,0 @@ -Revision: 2 -Author: Erich E. Hoover -Title: wined3d: Silence repeated resource_check_usage FIXME. - diff --git a/patches/98-Miscellaneous/c7263660-be78-439b-979f-e745a8d87120.def b/patches/98-Miscellaneous/c7263660-be78-439b-979f-e745a8d87120.def deleted file mode 100644 index 835e4832..00000000 --- a/patches/98-Miscellaneous/c7263660-be78-439b-979f-e745a8d87120.def +++ /dev/null @@ -1,3 +0,0 @@ -Revision: 1 -Author: Sebastian Lackner -Title: wined3d: Silence repeated wined3d_swapchain_present FIXME. diff --git a/patches/98-Miscellaneous/definition b/patches/98-Miscellaneous/definition new file mode 100644 index 00000000..acdfaa1a --- /dev/null +++ b/patches/98-Miscellaneous/definition @@ -0,0 +1,11 @@ +Revision: 1 +Author: Sebastian Lackner +Title: kernel32: Silence repeated CompareStringEx FIXME. + +Revision: 2 +Author: Erich E. Hoover +Title: wined3d: Silence repeated resource_check_usage FIXME. + +Revision: 1 +Author: Sebastian Lackner +Title: wined3d: Silence repeated wined3d_swapchain_present FIXME. diff --git a/patches/Makefile b/patches/Makefile index 92489d79..45bb8161 100644 --- a/patches/Makefile +++ b/patches/Makefile @@ -1,44 +1,290 @@ -SUBDIRS=10-Missing_Fonts +# +# This file is automatically generated, DO NOT EDIT! +# -#PATCH:=patch -N -p0 --strip=1 -#PATCH:=git apply CURDIR ?= ${.CURDIR} -PATCH:=$(CURDIR)/../debian/tools/gitapply.sh +PATCH := $(CURDIR)/../debian/tools/gitapply.sh -d $(DESTDIR) -install: - # Update the list of patches - cd $(CURDIR)/..; ./debian/tools/generate-patchlist.sh > $(CURDIR)/patch-list.patch; +PATCHLIST := 00-Commandline.ok \ + 01-Address_Change_Notification.ok \ + 02-ACL_Extended_Attributes.ok \ + 04-XEMBED.ok \ + 05-Named_Pipe.ok \ + 06-winepulse.ok \ + 07-GetVolumePathName.ok \ + 08-Junction_Points.ok \ + 09-TransmitFile.ok \ + 10-Missing_Fonts.ok \ + 12-FD_Cache.ok \ + 13-Misc_ACL.ok \ + 14-UrlCombineW.ok \ + 15-wtsapi32.ok \ + 97-Pipelight.ok \ + 98-Miscellaneous.ok - # Apply our patches to Wine - cd $(DESTDIR); \ - for DIR in $$(find $(CURDIR) -type d | sort); do \ - for FILE in $$(ls $$DIR | sort | grep '\.patch$$'); do \ - SHORTNAME=$$(echo "$$DIR/$$FILE" | sed 's|$(CURDIR)|\.|g' ); \ - printf "Applying patch '$$SHORTNAME'...\n"; \ - $(PATCH) < $$DIR/$$FILE || exit 1; \ - done \ - done +.PHONY: install +install: $(PATCHLIST) + cat *.ok | sort | $(CURDIR)/../debian/tools/patchlist.sh | $(PATCH) + cd $(DESTDIR); autoreconf -f + cd $(DESTDIR); ./tools/make_requests + rm -f *.ok - # Update the configure script - cd $(DESTDIR); autoreconf -f; +.PHONY: abort +abort: + rm -f *.ok - # Update the wineserver protocol request data - cd $(DESTDIR); ./tools/make_requests; +# Patchset 00-Commandline +# | +# | Included patches: +# | * Add commandline option --patches to show the patch list. [by Sebastian Lackner] +# | * Add commandline option --check-libs to test if shared libraries are installed. [by Michael Müller] +# | +00-Commandline.ok: + $(PATCH) < 00-Commandline/0001-loader-Add-commandline-option-patches-to-show-the-pa.patch + $(PATCH) < 00-Commandline/0002-loader-Add-commandline-option-check-libs.patch + ( \ + echo "+ { \"00-Commandline\", \"Sebastian Lackner\", \"Add commandline option --patches to show the patch list.\" },"; \ + echo "+ { \"00-Commandline\", \"Michael Müller\", \"Add commandline option --check-libs to test if shared libraries are installed.\" },"; \ + ) > 00-Commandline.ok -uninstall: - # Remove our patches from Wine - cd $(DESTDIR); \ - for DIR in $$(find $(CURDIR) -type d | sort -r); do \ - for FILE in $$(ls $$DIR | sort -r | grep '\.patch$$'); do \ - SHORTNAME=$$(echo "$$DIR/$$FILE" | sed 's|$(CURDIR)|\.|g' ); \ - printf "Reversing patch '$$SHORTNAME'...\n"; \ - $(PATCH) -R < $$DIR/$$FILE || exit 1; \ - done \ - done +# Patchset 01-Address_Change_Notification +# | +# | Included patches: +# | * Implement SIO_ADDRESS_LIST_CHANGE. [rev 2, by Erich E. Hoover] +# | +# | This patchset fixes the following Wine bugs: +# | * [#32328] Many .NET and Silverlight applications require SIO_ADDRESS_LIST_CHANGE for interface change notifications +# | +01-Address_Change_Notification.ok: + $(PATCH) < 01-Address_Change_Notification/0001-server-Implement-socket-specific-ioctl-routine.patch + $(PATCH) < 01-Address_Change_Notification/0002-server-Add-socket-side-support-for-the-interface-cha.patch + $(PATCH) < 01-Address_Change_Notification/0003-server-Add-blocked-support-for-SIO_ADDRESS_LIST_CHAN.patch + $(PATCH) < 01-Address_Change_Notification/0004-server-Implement-the-interface-change-notification-o.patch + $(PATCH) < 01-Address_Change_Notification/0005-ws2_32-Add-an-interactive-test-for-interface-change-.patch + ( \ + echo "+ { \"01-Address_Change_Notification\", \"Erich E. Hoover\", \"Implement SIO_ADDRESS_LIST_CHANGE. [rev 2]\" },"; \ + ) > 01-Address_Change_Notification.ok - # Update the configure script - cd $(DESTDIR); autoreconf; +# Patchset 02-ACL_Extended_Attributes +# | +# | Included patches: +# | * Store and return security attributes with extended file attributes. [rev 6, by Erich E. Hoover] +# | +02-ACL_Extended_Attributes.ok: + $(PATCH) < 02-ACL_Extended_Attributes/0001-server-Unify-the-storage-of-security-attributes-for-.patch + $(PATCH) < 02-ACL_Extended_Attributes/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch + $(PATCH) < 02-ACL_Extended_Attributes/0003-server-Store-file-security-attributes-with-extended-.patch + $(PATCH) < 02-ACL_Extended_Attributes/0004-server-Store-user-and-group-inside-stored-extended-f.patch + $(PATCH) < 02-ACL_Extended_Attributes/0005-server-Retrieve-file-security-attributes-with-extend.patch + $(PATCH) < 02-ACL_Extended_Attributes/0006-server-Convert-return-of-file-security-masks-with-ge.patch + $(PATCH) < 02-ACL_Extended_Attributes/0007-server-Inherit-security-attributes-from-parent-direc.patch + $(PATCH) < 02-ACL_Extended_Attributes/0008-server-Inherit-security-attributes-from-parent-direc.patch + $(PATCH) < 02-ACL_Extended_Attributes/0009-shell32-Set-the-default-security-attributes-for-user.patch + $(PATCH) < 02-ACL_Extended_Attributes/0010-server-Add-compatibility-code-for-handling-the-old-m.patch + ( \ + echo "+ { \"02-ACL_Extended_Attributes\", \"Erich E. Hoover\", \"Store and return security attributes with extended file attributes. [rev 6]\" },"; \ + ) > 02-ACL_Extended_Attributes.ok - # Update the wineserver protocol request data - cd $(DESTDIR); ./tools/make_requests; +# Patchset 04-XEMBED +# | +# | Included patches: +# | * Enable/disable windows when they are (un)mapped by foreign applications. [by Sebastian Lackner] +# | * Update gl_drawable for embedded windows. [by Sebastian Lackner] +# | +04-XEMBED.ok: + $(PATCH) < 04-XEMBED/0001-winex11-Update-gl_drawable-for-embedded-windows.patch + $(PATCH) < 04-XEMBED/0002-winex11-Enable-disable-windows-when-they-are-un-mapped.patch + ( \ + echo "+ { \"04-XEMBED\", \"Sebastian Lackner\", \"Enable/disable windows when they are (un)mapped by foreign applications.\" },"; \ + echo "+ { \"04-XEMBED\", \"Sebastian Lackner\", \"Update gl_drawable for embedded windows.\" },"; \ + ) > 04-XEMBED.ok + +# Patchset 05-Named_Pipe +# | +# | Included patches: +# | * Change return value of stub SetNamedPipeHandleState to TRUE. [by Sebastian Lackner] +# | +05-Named_Pipe.ok: + $(PATCH) < 05-Named_Pipe/0001-kernel32-Change-return-value-of-stub-SetNamedPipeHandl.patch + ( \ + echo "+ { \"05-Named_Pipe\", \"Sebastian Lackner\", \"Change return value of stub SetNamedPipeHandleState to TRUE.\" },"; \ + ) > 05-Named_Pipe.ok + +# Patchset 06-winepulse +# | +# | Included patches: +# | * Winepulse patches extracted from https://launchpad.net/~ubuntu- +# | wine/+archive/ppa/+files/wine1.7_1.7.19-0ubuntu2~trusty2.debian.tar.gz. [rev 3, by Maarten Lankhorst] +# | +06-winepulse.ok: 02-ACL_Extended_Attributes.ok + $(PATCH) < 06-winepulse/0001-winmm-Load-winealsa-if-winepulse-is-found.patch + $(PATCH) < 06-winepulse/0002-winepulse-Add-initial-stub-for-pulseaudio-support.patch + $(PATCH) < 06-winepulse/0003-winepulse-Add-format-and-period-probing.patch + $(PATCH) < 06-winepulse/0004-winepulse-Add-audioclient.patch + $(PATCH) < 06-winepulse/0005-winepulse-Add-IAudioRenderClient-and-IAudioCaptureCl.patch + $(PATCH) < 06-winepulse/0006-winepulse-Add-IAudioClock-and-IAudioClock2.patch + $(PATCH) < 06-winepulse/0007-winepulse-Add-audiostreamvolume.patch + $(PATCH) < 06-winepulse/0008-winepulse-Add-session-support.patch + $(PATCH) < 06-winepulse/0009-fix-fdels-trailing-whitespaces.patch + $(PATCH) < 06-winepulse/0010-winepulse-v12.patch + $(PATCH) < 06-winepulse/0011-winepulse-v15-Add-support-for-missing-formats-and-si.patch + $(PATCH) < 06-winepulse/0012-winepulse-v16-Add-official-warning-wine-doesn-t-want.patch + $(PATCH) < 06-winepulse/0013-winepulse-v17-Fix-winmm-tests.patch + $(PATCH) < 06-winepulse/0014-winepulse-v18-Latency-and-compilation-improvements.patch + $(PATCH) < 06-winepulse/0015-winepulse-API-Compatibility-with-1.5.2-onward-v2.patch + $(PATCH) < 06-winepulse/0016-winepulse-Fix-low-latency-support.patch + $(PATCH) < 06-winepulse/0017-winepulse-drop-realtime-priority-before-thread-destr.patch + $(PATCH) < 06-winepulse/0018-winepulse-remove-bogus-SetEvent-from-pulse_started_c.patch + $(PATCH) < 06-winepulse/0019-winepulse-disable-the-setevent-part-of-the-latency-h.patch + $(PATCH) < 06-winepulse/0020-winepulse-v20-fix-the-checks-in-IsFormatSupported.patch + $(PATCH) < 06-winepulse/0021-winepulse-fixup-IsFormatSupported-calls.patch + $(PATCH) < 06-winepulse/0022-winepulse-v21-return-early-if-padding-didn-t-update.patch + $(PATCH) < 06-winepulse/0023-winepulse-fix-unneeded-free-in-write.patch + $(PATCH) < 06-winepulse/0024-winepulse-v23-fixup-a-invalid-free-in-mmdevapi.patch + $(PATCH) < 06-winepulse/0025-winepulse-use-a-pi-mutex-for-serialization.patch + $(PATCH) < 06-winepulse/0026-winepulse-add-support-for-IMarshal.patch + ( \ + echo "+ { \"06-winepulse\", \"Maarten Lankhorst\", \"Winepulse patches extracted from https://launchpad.net/~ubuntu-wine/+archive/ppa/+files/wine1.7_1.7.19-0ubuntu2~trusty2.debian.tar.gz. [rev 3]\" },"; \ + ) > 06-winepulse.ok + +# Patchset 07-GetVolumePathName +# | +# | Included patches: +# | * Implement GetVolumePathName. [by Erich E. Hoover] +# | +07-GetVolumePathName.ok: + $(PATCH) < 07-GetVolumePathName/0001-kernel32-Implement-GetVolumePathName.patch + $(PATCH) < 07-GetVolumePathName/0002-kernel32-Convert-GetVolumePathName-tests-into-a-list.patch + $(PATCH) < 07-GetVolumePathName/0003-kernel32-Add-a-bunch-more-GetVolumePathName-tests.patch + ( \ + echo "+ { \"07-GetVolumePathName\", \"Erich E. Hoover\", \"Implement GetVolumePathName.\" },"; \ + ) > 07-GetVolumePathName.ok + +# Patchset 08-Junction_Points +# | +# | Included patches: +# | * Support for junction points/reparse points. [by Erich E. Hoover] +# | +08-Junction_Points.ok: 07-GetVolumePathName.ok + $(PATCH) < 08-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch + $(PATCH) < 08-Junction_Points/0002-ntdll-Add-support-for-reading-junction-points.patch + $(PATCH) < 08-Junction_Points/0003-ntdll-Add-support-for-deleting-junction-points.patch + $(PATCH) < 08-Junction_Points/0004-ntdll-Advertise-that-a-file-is-a-junction-point.patch + $(PATCH) < 08-Junction_Points/0005-kernel32-ntdll-Add-support-for-deleting-junction-poi.patch + $(PATCH) < 08-Junction_Points/0006-kernel32-Advertise-junction-point-support.patch + $(PATCH) < 08-Junction_Points/0007-ntdll-tests-Add-test-for-deleting-junction-point-tar.patch + $(PATCH) < 08-Junction_Points/0008-ntdll-Use-relative-paths-for-creating-links.patch + ( \ + echo "+ { \"08-Junction_Points\", \"Erich E. Hoover\", \"Support for junction points/reparse points.\" },"; \ + ) > 08-Junction_Points.ok + +# Patchset 09-TransmitFile +# | +# | Included patches: +# | * Implement TransmitFile. [by Erich E. Hoover] +# | +09-TransmitFile.ok: 01-Address_Change_Notification.ok + $(PATCH) < 09-TransmitFile/0001-ws2_32-Add-stub-for-TransmitFile.patch + $(PATCH) < 09-TransmitFile/0002-ws2_32-Check-for-invalid-parameters-in-TransmitFile.patch + $(PATCH) < 09-TransmitFile/0003-ws2_32-Implement-a-basic-synchronous-TransmitFile.patch + $(PATCH) < 09-TransmitFile/0004-ws2_32-Add-asynchronous-support-for-TransmitFile.patch + $(PATCH) < 09-TransmitFile/0005-ws2_32-Add-support-for-TF_DISCONNECT-and-TF_REUSE_SO.patch + ( \ + echo "+ { \"09-TransmitFile\", \"Erich E. Hoover\", \"Implement TransmitFile.\" },"; \ + ) > 09-TransmitFile.ok + +# Patchset 10-Missing_Fonts +# | +# | Included patches: +# | * Implement missing fonts expected by Silverlight. [by Erich E. Hoover] +# | +10-Missing_Fonts.ok: + $(PATCH) < 10-Missing_Fonts/0001-fonts-Add-a-subset-of-Liberation-Sans-as-an-Arial-re.patch + $(PATCH) < 10-Missing_Fonts/0002-fonts-Implement-the-rest-of-Liberation-Sans-Arial-re.patch + ( \ + echo "+ { \"10-Missing_Fonts\", \"Erich E. Hoover\", \"Implement missing fonts expected by Silverlight.\" },"; \ + ) > 10-Missing_Fonts.ok + +# Patchset 12-FD_Cache +# | +# | Included patches: +# | * Use lockfree implementation for get_cached_fd. [rev 4, by Sebastian Lackner] +# | +12-FD_Cache.ok: + $(PATCH) < 12-FD_Cache/0001-ntdll-Use-lockfree-implementation-for-get_cached_fd.patch + ( \ + echo "+ { \"12-FD_Cache\", \"Sebastian Lackner\", \"Use lockfree implementation for get_cached_fd. [rev 4]\" },"; \ + ) > 12-FD_Cache.ok + +# Patchset 13-Misc_ACL +# | +# | Included patches: +# | * Add default security descriptor ownership and DACLs for processes. [by Erich E. Hoover] +# | +13-Misc_ACL.ok: 02-ACL_Extended_Attributes.ok + $(PATCH) < 13-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch + $(PATCH) < 13-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch + ( \ + echo "+ { \"13-Misc_ACL\", \"Erich E. Hoover\", \"Add default security descriptor ownership and DACLs for processes.\" },"; \ + ) > 13-Misc_ACL.ok + +# Patchset 14-UrlCombineW +# | +# | Included patches: +# | * Workaround for broken implementation of shlwapi url functions. [by Sebastian Lackner] +# | +14-UrlCombineW.ok: + $(PATCH) < 14-UrlCombineW/0001-shlwapi-tests-Add-additional-tests-for-UrlCombine-and-.patch + $(PATCH) < 14-UrlCombineW/0002-shlwapi-UrlCombineW-workaround-for-relative-paths.patch + ( \ + echo "+ { \"14-UrlCombineW\", \"Sebastian Lackner\", \"Workaround for broken implementation of shlwapi url functions.\" },"; \ + ) > 14-UrlCombineW.ok + +# Patchset 15-wtsapi32 +# | +# | Included patches: +# | * Partial implementation of WTSEnumerateProcessesW. [by Sebastian Lackner] +# | +15-wtsapi32.ok: + $(PATCH) < 15-wtsapi32/0001-wtsapi32-Partial-implementation-of-WTSEnumerateProce.patch + ( \ + echo "+ { \"15-wtsapi32\", \"Sebastian Lackner\", \"Partial implementation of WTSEnumerateProcessesW.\" },"; \ + ) > 15-wtsapi32.ok + +# Patchset 97-Pipelight +# | +# | Included patches: +# | * Decrease minimum SetTimer interval to 5 ms. [rev 2, by Michael Müller] +# | * Allow changing strict draw ordering through an exported function. [by Michael Müller] +# | * Indicate direct rendering through OpenGL extension. [by Michael Müller] +# | * Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command. [by Sebastian Lackner] +# | +97-Pipelight.ok: + $(PATCH) < 97-Pipelight/0001-winex11-Implement-X11DRV_FLUSH_GDI_DISPLAY-ExtEscape-c.patch + $(PATCH) < 97-Pipelight/0002-user32-Decrease-minimum-SetTimer-interval-to-5-ms.patch + $(PATCH) < 97-Pipelight/0003-wined3d-allow-changing-strict-drawing-through-an-exp.patch + $(PATCH) < 97-Pipelight/0004-winex11.drv-Indicate-direct-rendering-through-OpenGL.patch + ( \ + echo "+ { \"97-Pipelight\", \"Michael Müller\", \"Decrease minimum SetTimer interval to 5 ms. [rev 2]\" },"; \ + echo "+ { \"97-Pipelight\", \"Michael Müller\", \"Allow changing strict draw ordering through an exported function.\" },"; \ + echo "+ { \"97-Pipelight\", \"Michael Müller\", \"Indicate direct rendering through OpenGL extension.\" },"; \ + echo "+ { \"97-Pipelight\", \"Sebastian Lackner\", \"Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command.\" },"; \ + ) > 97-Pipelight.ok + +# Patchset 98-Miscellaneous +# | +# | Included patches: +# | * kernel32: Silence repeated CompareStringEx FIXME. [by Sebastian Lackner] +# | * wined3d: Silence repeated resource_check_usage FIXME. [rev 2, by Erich E. Hoover] +# | * wined3d: Silence repeated wined3d_swapchain_present FIXME. [by Sebastian Lackner] +# | +98-Miscellaneous.ok: + $(PATCH) < 98-Miscellaneous/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch + $(PATCH) < 98-Miscellaneous/0002-kernel32-Silence-repeated-CompareStringEx-FIXME.patch + $(PATCH) < 98-Miscellaneous/0003-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch + ( \ + echo "+ { \"98-Miscellaneous\", \"Sebastian Lackner\", \"kernel32: Silence repeated CompareStringEx FIXME.\" },"; \ + echo "+ { \"98-Miscellaneous\", \"Erich E. Hoover\", \"wined3d: Silence repeated resource_check_usage FIXME. [rev 2]\" },"; \ + echo "+ { \"98-Miscellaneous\", \"Sebastian Lackner\", \"wined3d: Silence repeated wined3d_swapchain_present FIXME.\" },"; \ + ) > 98-Miscellaneous.ok diff --git a/patches/patch-list.patch b/patches/patch-list.patch deleted file mode 100644 index 231b7780..00000000 --- a/patches/patch-list.patch +++ /dev/null @@ -1,88 +0,0 @@ -From: "FDS-Team" -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,43 @@ const char *wine_get_version(void) - return PACKAGE_VERSION; - } - -+struct wine_patch { -+ const char *hash; -+ const char *author; -+ const char *title; -+} wine_patch_data[] = { -+ { "1b7ac850-5040-4d9e-8fde-9c483c3baf33:1", "Sebastian Lackner", "Add commandline option --patches to show the patch list." }, -+ { "9e9a58e1-b226-4d4d-943b-be9a4c1dc525:1", "Michael Müller", "Add commandline option --check-libs to test if shared libraries are installed." }, -+ { "8a366b6d-8ad6-4581-8aa9-66a03590a57b:2", "Erich E. Hoover", "Implement SIO_ADDRESS_LIST_CHANGE." }, -+ { "92938b89-506b-430a-ba50-32de8b286e56:6", "Erich E. Hoover", "Store and return security attributes with extended file attributes." }, -+ { "5d6bb7b5-ec88-4ed3-907d-9ad2173a2f88:1", "Sebastian Lackner", "Enable/disable windows when they are (un)mapped by foreign applications." }, -+ { "94186fff-6dbf-44d0-8eb1-2463d1608a0f:1", "Sebastian Lackner", "Update gl_drawable for embedded windows." }, -+ { "cbe240e8-2c58-430a-b61c-7fbb9d0e1e11:1", "Sebastian Lackner", "Change return value of stub SetNamedPipeHandleState to TRUE." }, -+ { "00273da7-72f8-4025-9e96-0c2bc95dacdb:3", "Maarten Lankhorst", "Winepulse patches extracted from https://launchpad.net/~ubuntu-wine/+archive/ppa/+files/wine1.7_1.7.19-0ubuntu2~trusty2.debian.tar.gz." }, -+ { "fbea4ef6-85ac-4524-b32d-fc9882b73e5a:1", "Erich E. Hoover", "Implement GetVolumePathName." }, -+ { "4cd13e94-7f2d-11e3-b5eb-0090f5c75ad5:1", "Erich E. Hoover", "Support for junction points/reparse points." }, -+ { "5fb1f5c8-7f17-11e3-9b62-0090f5c75ad5:1", "Erich E. Hoover", "Implement TransmitFile." }, -+ { "3d7c4774-9e7f-11e3-9cfc-0090f5c75ad5:1", "Erich E. Hoover", "Implement missing fonts expected by Silverlight." }, -+ { "e7581ed7-12b3-4ed3-835b-5a62afbf9c85:4", "Sebastian Lackner", "Use lockfree implementation for get_cached_fd." }, -+ { "3405aa34-f341-11e3-83ce-0090f5c75ad5:1", "Erich E. Hoover", "Add default security descriptor ownership and DACLs for processes." }, -+ { "e46b26df-3c1b-419c-9579-f0d1e1c50bea:1", "Sebastian Lackner", "Workaround for broken implementation of shlwapi url functions." }, -+ { "3790a2d5-f930-423e-9c03-f7fc1c1e0811:1", "Sebastian Lackner", "Partial implementation of WTSEnumerateProcessesW." }, -+ { "0b21d7ac-0387-4493-aa38-fbafe3e749f5:2", "Michael Müller", "Decrease minimum SetTimer interval to 5 ms." }, -+ { "2394843e-2bc4-4fa4-8368-1ef32093b89e:1", "Michael Müller", "Allow changing strict draw ordering through an exported function." }, -+ { "255473fa-4e0a-4f51-952b-4deecc1a2181:1", "Michael Müller", "Indicate direct rendering through OpenGL extension." }, -+ { "59bd38b7-bbdc-4cfd-9ccd-1c72c4ed84c0:1", "Sebastian Lackner", "Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command." }, -+ { "325645ba-d39d-4de4-9c94-3fe694eedaab:1", "Sebastian Lackner", "kernel32: Silence repeated CompareStringEx FIXME." }, -+ { "acff3012-0f75-4710-9941-08b5ce4c61f3:2", "Erich E. Hoover", "wined3d: Silence repeated resource_check_usage FIXME." }, -+ { "c7263660-be78-439b-979f-e745a8d87120:1", "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME." }, -+ { 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 ); diff --git a/precommit-hook.sh b/precommit-hook.sh index eb1b8f32..53497973 100755 --- a/precommit-hook.sh +++ b/precommit-hook.sh @@ -2,12 +2,12 @@ # Installation: ln -s ../../precommit-hook.sh .git/hooks/pre-commit git diff --cached --name-status | while read status file; do - if [[ "$file" =~ ^patches/ ]] || [[ "$file" =~ ^debian/tools/generate-patchlist.sh$ ]]; then + if [[ "$file" =~ ^patches/ ]] || [[ "$file" =~ ^debian/tools/ ]]; then echo "" - echo "*** GENERATING patch-list.patch ***" + echo "*** UPDATING AUTOGENERATED FILES ***" echo "" - debian/tools/generate-patchlist.sh > patches/patch-list.patch || exit 1 - git add patches/patch-list.patch || exit 1 + debian/tools/patchupdate.py > patches/Makefile || exit 1 + git add patches/Makefile || exit 1 break; fi done