[pkg-wine-party] [wine] 01/01: Backport upstream changes for building with Unicode 9.0.

Jens Reyer jreyer-guest at moszumanska.debian.org
Thu Jun 30 20:46:03 UTC 2016


This is an automated email from the git hooks/post-receive script.

jreyer-guest pushed a commit to branch stretch
in repository wine.

commit 47d2bed59bccc8b22488acd2a6d429eaa0fc4bc3
Author: Jens Reyer <jre.winesim at gmail.com>
Date:   Thu Jun 30 22:11:14 2016 +0200

    Backport upstream changes for building with Unicode 9.0.
    
    Closes: #829003
    
    Add unicode-9.patch based on 2 upstream commits, but ignore
    changes to files that are regenerated.
    Refresh generate/unicode.patch.
---
 debian/changelog                      |   8 +-
 debian/control.in                     |   2 +-
 debian/patches/generate/unicode.patch |   8 +-
 debian/patches/series                 |   1 +
 debian/patches/unicode-9.patch        | 219 ++++++++++++++++++++++++++++++++++
 5 files changed, 232 insertions(+), 6 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 8f79c9b..f3748ef 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,10 @@
-wine (1.8.3-1) UNRELEASED; urgency=medium
+wine (1.8.3-2) UNRELEASED; urgency=medium
+
+  * Backport upstream changes for building with Unicode 9.0 (closes: #829003).
+
+ -- Jens Reyer <jre.winesim at gmail.com>  Thu, 30 Jun 2016 21:17:56 +0200
+
+wine (1.8.3-1) unstable; urgency=medium
 
   * New upstream release 1.8.3, released Jun 16, 2016.
     - Various bug fixes.
diff --git a/debian/control.in b/debian/control.in
index 2c3cae8..f0678f4 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -34,7 +34,7 @@ Build-Depends:
  sharutils,
  dctrl-tools,
  khronos-api,
- unicode-data (>= 8.0-1~),
+ unicode-data (>= 9.0),
  libpng-dev,
  libssl-dev,
  libxml2-dev,
diff --git a/debian/patches/generate/unicode.patch b/debian/patches/generate/unicode.patch
index 700bd2a..05044bf 100644
--- a/debian/patches/generate/unicode.patch
+++ b/debian/patches/generate/unicode.patch
@@ -10,7 +10,7 @@ author: Michael Gilbert <mgilbert at debian.org>
 -# base URLs for www.unicode.org files
 +# Locations of unicode files
  my $MAPPINGS = "http://www.unicode.org/Public/MAPPINGS";
--my $UNIDATA = "http://www.unicode.org/Public/8.0.0/ucd";
+-my $UNIDATA = "http://www.unicode.org/Public/9.0.0/ucd";
 +my $UNIDATA = "/usr/share/unicode";
  my $REPORTS = "http://www.unicode.org/reports";
 -my $RFCS = "http://www.rfc-editor.org/rfc";
@@ -18,7 +18,7 @@ author: Michael Gilbert <mgilbert at debian.org>
  my $VERTICALDATA = "http://www.unicode.org/Public/vertical/revision-11";
  
  # Sort keys file
-@@ -372,15 +372,8 @@ my %joining_forms =
+@@ -375,15 +375,8 @@ my %joining_forms =
  sub open_data_file($$)
  {
      my ($base, $name) = @_;
@@ -35,7 +35,7 @@ author: Michael Gilbert <mgilbert at debian.org>
      return *FILE;
  }
  
-@@ -2383,7 +2376,10 @@ sub REPLACE_IN_FILE($@)
+@@ -2403,7 +2396,10 @@ sub REPLACE_IN_FILE($@)
  chdir ".." if -f "./make_unicode";
  READ_DEFAULTS( $DEFAULTS );
  DUMP_CASE_MAPPINGS( "libs/wine/casemap.c" );
@@ -47,7 +47,7 @@ author: Michael Gilbert <mgilbert at debian.org>
  DUMP_COMPOSE_TABLES( "libs/wine/compose.c" );
  DUMP_CTYPE_TABLES( "libs/wine/wctype.c" );
  dump_mirroring( "dlls/usp10/mirror.c" );
-@@ -2396,13 +2392,17 @@ dump_linebreak( "dlls/dwrite/linebreak.c
+@@ -2416,13 +2412,17 @@ dump_linebreak( "dlls/dwrite/linebreak.c
  dump_scripts( "dlls/dwrite/scripts" );
  dump_indic( "dlls/usp10/indicsyllable.c" );
  dump_intl_nls("loader/l_intl.nls");
diff --git a/debian/patches/series b/debian/patches/series
index a60c34b..21b58c4 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,6 +3,7 @@ makefile.patch
 kfreebsd.patch
 sfnt2fon.patch
 manpages.patch
+unicode-9.patch
 version-string.patch
 
 disable/addons-download.patch
diff --git a/debian/patches/unicode-9.patch b/debian/patches/unicode-9.patch
new file mode 100644
index 0000000..acdfd75
--- /dev/null
+++ b/debian/patches/unicode-9.patch
@@ -0,0 +1,219 @@
+Description: Backport upstream changes for building with Unicode 9.0.
+Origin: backport, http://source.winehq.org/git/wine.git/commit/58e0972c5ca8c82f65860733aaf3aeb41a7725bb
+Origin: upstream, http://source.winehq.org/git/wine.git/commit/bbb9bbdbdb330aca21c363503274e21d558db1bc
+Bug-Debian: https://bugs.debian.org/829003
+
+--- a/dlls/dwrite/analyzer.c
++++ b/dlls/dwrite/analyzer.c
+@@ -45,6 +45,7 @@ struct dwritescript_properties {
+ static const struct dwritescript_properties dwritescripts_properties[Script_LastId+1] = {
+     { /* Zzzz */ { 0x7a7a7a5a, 999, 15, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Zyyy */ { 0x7979795a, 998,  1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } },
++    { /* Adlm */ { 0x6d6c6441, 166,  1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } },
+     { /* Ahom */ { 0x6d6f6841, 338,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Hluw */ { 0x77756c48,  80,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Arab */ { 0x62617241, 160,  8, 0x0640, 0, 1, 0, 0, 0, 1, 1 }, _OT('a','r','a','b'), 0, TRUE },
+@@ -55,6 +56,7 @@ static const struct dwritescript_propert
+     { /* Bass */ { 0x73736142, 259,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Batk */ { 0x6b746142, 365,  8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('b','a','t','k') },
+     { /* Beng */ { 0x676e6542, 325, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, _OT('b','e','n','g'), _OT('b','n','g','2'), TRUE },
++    { /* Bhks */ { 0x736b6842, 334,  1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } },
+     { /* Bopo */ { 0x6f706f42, 285,  1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('b','o','p','o') },
+     { /* Brah */ { 0x68617242, 300,  8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('b','r','a','h') },
+     { /* Brai */ { 0x69617242, 570,  1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('b','r','a','i'), 0, TRUE },
+@@ -114,6 +116,7 @@ static const struct dwritescript_propert
+     { /* Mlym */ { 0x6d796c4d, 347, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('m','l','y','m'), _OT('m','l','m','2'), TRUE },
+     { /* Mand */ { 0x646e614d, 140,  8, 0x0640, 0, 1, 0, 0, 0, 1, 1 }, _OT('m','a','n','d') },
+     { /* Mani */ { 0x696e614d, 139,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
++    { /* Marc */ { 0x6372614d, 332,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Mtei */ { 0x6965744d, 337,  8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('m','t','e','i') },
+     { /* Mend */ { 0x646e654d, 438,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Merc */ { 0x6372654d, 101,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 }, _OT('m','e','r','c') },
+@@ -126,6 +129,7 @@ static const struct dwritescript_propert
+     { /* Mymr */ { 0x726d794d, 350, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('m','y','m','r'), 0, TRUE },
+     { /* Nbat */ { 0x7461624e, 159,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Talu */ { 0x756c6154, 354,  8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','a','l','u'), 0, TRUE },
++    { /* Newa */ { 0x6177654e, 333,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Nkoo */ { 0x6f6f6b4e, 165,  8, 0x0020, 0, 1, 0, 0, 0, 1, 1 }, _OT('n','k','o',' '), 0, TRUE },
+     { /* Ogam */ { 0x6d61674f, 212,  1, 0x1680, 0, 1, 0, 0, 0, 1, 0 }, _OT('o','g','a','m'), 0, TRUE },
+     { /* Olck */ { 0x6b636c4f, 261,  1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('o','l','c','k') },
+@@ -137,6 +141,7 @@ static const struct dwritescript_propert
+     { /* Sarb */ { 0x62726153, 105,  1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('s','a','r','b') },
+     { /* Orkh */ { 0x686b724f, 175,  1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('o','r','k','h') },
+     { /* Orya */ { 0x6179724f, 327, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('o','r','y','a'), _OT('o','r','y','2'), TRUE },
++    { /* Osge */ { 0x6567734f, 219,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Osma */ { 0x616d734f, 260,  8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('o','s','m','a'), 0, TRUE },
+     { /* Hmng */ { 0x676e6d48, 450,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Palm */ { 0x6d6c6150, 126,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+@@ -164,6 +169,7 @@ static const struct dwritescript_propert
+     { /* Tavt */ { 0x74766154, 359,  8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, _OT('t','a','v','t') },
+     { /* Takr */ { 0x726b6154, 321,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 }, _OT('t','a','k','r') },
+     { /* Taml */ { 0x6c6d6154, 346, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','a','m','l'), _OT('t','m','l','2'), TRUE },
++    { /* Tang */ { 0x676e6154, 520,  1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } },
+     { /* Telu */ { 0x756c6554, 340, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','e','l','u'), _OT('t','e','l','2'), TRUE },
+     { /* Thaa */ { 0x61616854, 170,  8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','h','a','a'), 0, TRUE },
+     { /* Thai */ { 0x69616854, 352,  8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, _OT('t','h','a','i'), 0, TRUE },
+@@ -302,7 +308,10 @@ enum linebreaking_classes {
+     b_B2,
+     b_HL,
+     b_CJ,
+-    b_RI
++    b_RI,
++    b_EB,
++    b_EM,
++    b_ZWJ,
+ };
+ 
+ /* "Can break" is a weak condition, stronger "may not break" and "must break" override it. Initially all conditions are
+@@ -402,13 +411,18 @@ static HRESULT analyze_linebreaks(const
+                     i++;
+                 set_break_condition(i, BreakConditionBefore, DWRITE_BREAK_CONDITION_CAN_BREAK, &state);
+                 break;
++            /* LB8a - do not break between ZWJ and an ideograph, emoji base or emoji modifier */
++            case b_ZWJ:
++                if (i < count-1 && (break_class[i+1] == b_ID || break_class[i+1] == b_EB || break_class[i+1] == b_EM))
++                    set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
++                break;
+         }
+     }
+ 
+     /* LB9 - LB10 */
+     for (i = 0; i < count; i++)
+     {
+-        if (break_class[i] == b_CM)
++        if (break_class[i] == b_CM || break_class[i] == b_ZWJ)
+         {
+             if (i > 0)
+             {
+@@ -541,6 +555,8 @@ static HRESULT analyze_linebreaks(const
+                         case b_AL:
+                         case b_HL:
+                         case b_ID:
++                        case b_EB:
++                        case b_EM:
+                         case b_IN:
+                         case b_NU:
+                             set_break_condition(i, BreakConditionBefore, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
+@@ -551,19 +567,31 @@ static HRESULT analyze_linebreaks(const
+ 
+         if (i < count-1)
+         {
+-            /* LB23 */
+-            if ((break_class[i] == b_ID && break_class[i+1] == b_PO) ||
+-                (break_class[i] == b_AL && break_class[i+1] == b_NU) ||
++            /* LB23 - do not break between digits and letters */
++            if ((break_class[i] == b_AL && break_class[i+1] == b_NU) ||
+                 (break_class[i] == b_HL && break_class[i+1] == b_NU) ||
+                 (break_class[i] == b_NU && break_class[i+1] == b_AL) ||
+                 (break_class[i] == b_NU && break_class[i+1] == b_HL))
+                     set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
+-            /* LB24 */
++
++            /* LB23a - do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes */
+             if ((break_class[i] == b_PR && break_class[i+1] == b_ID) ||
+-                (break_class[i] == b_PR && break_class[i+1] == b_AL) ||
++                (break_class[i] == b_PR && break_class[i+1] == b_EB) ||
++                (break_class[i] == b_PR && break_class[i+1] == b_EM) ||
++                (break_class[i] == b_ID && break_class[i+1] == b_PO) ||
++                (break_class[i] == b_EM && break_class[i+1] == b_PO) ||
++                (break_class[i] == b_EB && break_class[i+1] == b_PO))
++                    set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
++
++            /* LB24 - do not break between numeric prefix/postfix and letters, or letters and prefix/postfix */
++            if ((break_class[i] == b_PR && break_class[i+1] == b_AL) ||
+                 (break_class[i] == b_PR && break_class[i+1] == b_HL) ||
+                 (break_class[i] == b_PO && break_class[i+1] == b_AL) ||
+-                (break_class[i] == b_PO && break_class[i+1] == b_HL))
++                (break_class[i] == b_PO && break_class[i+1] == b_HL) ||
++                (break_class[i] == b_AL && break_class[i+1] == b_PR) ||
++                (break_class[i] == b_HL && break_class[i+1] == b_PR) ||
++                (break_class[i] == b_AL && break_class[i+1] == b_PO) ||
++                (break_class[i] == b_HL && break_class[i+1] == b_PO))
+                     set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
+ 
+             /* LB25 */
+@@ -646,8 +674,20 @@ static HRESULT analyze_linebreaks(const
+                (break_class[i+1] == b_AL || break_class[i] == b_HL || break_class[i] == b_NU))
+                 set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
+ 
+-            /* LB30a */
+-            if (break_class[i] == b_RI && break_class[i+1] == b_RI)
++            /* LB30a - break between two RIs if and only if there are an even number of RIs preceding position of the break */
++            if (break_class[i] == b_RI && break_class[i+1] == b_RI) {
++                unsigned int c = 0;
++
++                j = i + 1;
++                while (j > 0 && break_class[--j] == b_RI)
++                    c++;
++
++                if ((c & 1) == 0)
++                    set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
++            }
++
++            /* LB30b - do not break between an emoji base and an emoji modifier */
++            if (break_class[i] == b_EB && break_class[i+1] == b_EM)
+                 set_break_condition(i, BreakConditionAfter, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state);
+         }
+     }
+--- a/dlls/usp10/breaking.c
++++ b/dlls/usp10/breaking.c
+@@ -38,7 +38,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(uniscribe);
+ 
+ extern const unsigned short wine_linebreak_table[];
+ 
+-enum breaking_types { b_BK=1, b_CR, b_LF, b_CM, b_SG, b_GL, b_CB, b_SP, b_ZW, b_NL, b_WJ, b_JL, b_JV, b_JT, b_H2, b_H3, b_XX, b_OP, b_CL, b_CP, b_QU, b_NS, b_EX, b_SY, b_IS, b_PR, b_PO, b_NU, b_AL, b_ID, b_IN, b_HY, b_BB, b_BA, b_SA, b_AI, b_B2, b_HL, b_CJ, b_RI};
++enum breaking_types {
++    b_BK=1, b_CR, b_LF, b_CM, b_SG, b_GL, b_CB, b_SP, b_ZW, b_NL, b_WJ, b_JL, b_JV, b_JT, b_H2, b_H3, b_XX, b_OP, b_CL,
++    b_CP, b_QU, b_NS, b_EX, b_SY, b_IS, b_PR, b_PO, b_NU, b_AL, b_ID, b_IN, b_HY, b_BB, b_BA, b_SA, b_AI, b_B2, b_HL,
++    b_CJ, b_RI, b_EB, b_EM, b_ZWJ
++};
+ 
+ enum breaking_class {b_r=1, b_s, b_x};
+ 
+--- a/tools/make_unicode
++++ b/tools/make_unicode
+@@ -23,7 +23,7 @@ use strict;
+ 
+ # base URLs for www.unicode.org files
+ my $MAPPINGS = "http://www.unicode.org/Public/MAPPINGS";
+-my $UNIDATA = "http://www.unicode.org/Public/8.0.0/ucd";
++my $UNIDATA = "http://www.unicode.org/Public/9.0.0/ucd";
+ my $REPORTS = "http://www.unicode.org/reports";
+ my $RFCS = "http://www.rfc-editor.org/rfc";
+ my $VERTICALDATA = "http://www.unicode.org/Public/vertical/revision-11";
+@@ -244,6 +244,9 @@ my %break_types =
+     "HL"  => 0x0026,
+     "CJ"  => 0x0027,
+     "RI"  => 0x0028,
++    "EB"  => 0x0029,
++    "EM"  => 0x002a,
++    "ZWJ" => 0x002b,
+ );
+ 
+ my %vertical_types =
+@@ -1265,7 +1268,24 @@ sub dump_linebreak($)
+         next if /^\#/;  # skip comments
+         next if /^\s*$/;  # skip empty lines
+         next if /\x1a/;  # skip ^Z
+-        if (/^\s*([0-9a-fA-F]+)\s*;\s*([0-9A-Z][0-9A-Z])+\s*/)
++        if (/^\s*([0-9a-fA-F]+)\s*;\s*([0-9A-Z][0-9A-Z][0-9A-Z])+\s*/)
++        {
++            my $type = $2;
++            die "unknown breaktype $type" unless defined $break_types{$type};
++            $break_table[hex $1] = $break_types{$type};
++            next;
++        }
++        elsif (/^\s*([0-9a-fA-F]+)..\s*([0-9a-fA-F]+)\s*;\s*([0-9A-Z][0-9A-Z][0-9A-Z])+\s*/)
++        {
++            my $type = $3;
++            die "unknown breaktype $type" unless defined $break_types{$type};
++            foreach my $i (hex $1 .. hex $2)
++            {
++                $break_table[$i] = $break_types{$type};
++            }
++            next;
++        }
++        elsif (/^\s*([0-9a-fA-F]+)\s*;\s*([0-9A-Z][0-9A-Z])+\s*/)
+         {
+             my $type = $2;
+             die "unknown breaktype $type" unless defined $break_types{$type};

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wine/wine.git



More information about the pkg-wine-party mailing list