[Pkg-fonts-devel] Bug#943022: fonts-noto-color-emoji: Python2 removal in sid/bullseye
peter green
plugwash at p10link.net
Wed Dec 11 03:53:39 GMT 2019
Severity 943022 serious
Tags 943022 +patch
Thanks
fonts-noto-color-emoji build-depends on python-nototools, which depends on python-fonttools which is no longer built by the fonttools source package.
Fortunately upstream has fixes that allow this package to be built with python3, I applied them as quilt patches, changed the build-dependency and was able to succesfully build the package.
Note that this patch depends on python3-nototools, which is currently only in experimental, and the current version of which cannot be successfully installed. The patch was tested with a locally built python3-nototools that was fixed as described in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=943761 , that patch needs to be applied and the nototools source package uploaded to unstable before this can be fixed in unstable.
Debdiff attatched, no immediate intent to NMU.
-------------- next part --------------
diff -Nru fonts-noto-color-emoji-0~20180810/debian/changelog fonts-noto-color-emoji-0~20180810/debian/changelog
--- fonts-noto-color-emoji-0~20180810/debian/changelog 2018-08-21 19:26:49.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/changelog 2019-12-11 02:56:18.000000000 +0000
@@ -1,3 +1,11 @@
+fonts-noto-color-emoji (0~20180810-1.1) UNRELEASED; urgency=medium
+
+ * Change build-dependencies from python-nototools to python3-nototools
+ * Apply upstream patches for python 3 support.
+ * Clean up __pycache__ in clean target.
+
+ -- Peter Michael Green <plugwash at debian.org> Wed, 11 Dec 2019 02:56:18 +0000
+
fonts-noto-color-emoji (0~20180810-1) unstable; urgency=medium
* New upstream release (LP: #1788256)
diff -Nru fonts-noto-color-emoji-0~20180810/debian/control fonts-noto-color-emoji-0~20180810/debian/control
--- fonts-noto-color-emoji-0~20180810/debian/control 2018-08-21 19:26:49.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/control 2019-12-11 02:56:18.000000000 +0000
@@ -10,7 +10,7 @@
libpng-dev,
pkg-config,
pngquant,
- python-nototools,
+ python3-nototools,
zopfli,
Standards-Version: 4.1.3
Homepage: https://www.google.com/get/noto/help/emoji/
diff -Nru fonts-noto-color-emoji-0~20180810/debian/patches/py3-01-a9ca546689d384b0ca73ad2a476891c3caaedc20.patch fonts-noto-color-emoji-0~20180810/debian/patches/py3-01-a9ca546689d384b0ca73ad2a476891c3caaedc20.patch
--- fonts-noto-color-emoji-0~20180810/debian/patches/py3-01-a9ca546689d384b0ca73ad2a476891c3caaedc20.patch 1970-01-01 00:00:00.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/patches/py3-01-a9ca546689d384b0ca73ad2a476891c3caaedc20.patch 2019-12-11 02:50:37.000000000 +0000
@@ -0,0 +1,303 @@
+commit a9ca546689d384b0ca73ad2a476891c3caaedc20
+Author: Mike FABIAN <maiku.fabian at gmail.com>
+Date: Wed Jul 17 10:33:21 2019 +0200
+
+ Make it work both with Python2 and Python3
+
+diff --git a/add_glyphs.py b/add_glyphs.py
+index 5c71b61b..36d40e67 100644
+--- a/add_glyphs.py
++++ b/add_glyphs.py
+@@ -66,7 +66,7 @@ def collect_seq_to_file(image_dirs, prefix, suffix):
+
+
+ def remap_values(seq_to_file, map_fn):
+- return {k: map_fn(v) for k, v in seq_to_file.iteritems()}
++ return {k: map_fn(v) for k, v in seq_to_file.items()}
+
+
+ def get_png_file_to_advance_mapper(lineheight):
+@@ -228,7 +228,7 @@ def get_rtl_seq(seq):
+
+ rev_seq = list(seq)
+ rev_seq.reverse()
+- for i in xrange(1, len(rev_seq)):
++ for i in range(1, len(rev_seq)):
+ if is_fitzpatrick(rev_seq[i-1]):
+ tmp = rev_seq[i]
+ rev_seq[i] = rev_seq[i-1]
+@@ -282,7 +282,7 @@ def add_ligature_sequences(font, seqs, aliases):
+ return
+
+ rtl_seq_to_target_name = {
+- get_rtl_seq(seq): name for seq, name in seq_to_target_name.iteritems()}
++ get_rtl_seq(seq): name for seq, name in seq_to_target_name.items()}
+ seq_to_target_name.update(rtl_seq_to_target_name)
+ # sequences that don't have rtl variants get mapped to the empty sequence,
+ # delete it.
+@@ -291,7 +291,7 @@ def add_ligature_sequences(font, seqs, aliases):
+
+ # organize by first codepoint in sequence
+ keyed_ligatures = collections.defaultdict(list)
+- for t in seq_to_target_name.iteritems():
++ for t in seq_to_target_name.items():
+ first_cp = t[0][0]
+ keyed_ligatures[first_cp].append(t)
+
+@@ -341,7 +341,7 @@ def apply_aliases(seq_dict, aliases):
+ source is a key in the dictionary, we can delete it. This updates the
+ dictionary and returns the usable aliases."""
+ usable_aliases = {}
+- for k, v in aliases.iteritems():
++ for k, v in aliases.items():
+ if v in seq_dict:
+ usable_aliases[k] = v
+ if k in seq_dict:
+diff --git a/map_pua_emoji.py b/map_pua_emoji.py
+index aac031c5..ff8d6a9b 100644
+--- a/map_pua_emoji.py
++++ b/map_pua_emoji.py
+@@ -53,8 +53,8 @@ def add_pua_cmap(source_file, target_file):
+ """Add PUA characters to the cmap of the first font and save as second."""
+ font = ttLib.TTFont(source_file)
+ cmap = font_data.get_cmap(font)
+- for pua, (ch1, ch2) in (add_emoji_gsub.EMOJI_KEYCAPS.items()
+- + add_emoji_gsub.EMOJI_FLAGS.items()):
++ for pua, (ch1, ch2) in (list(add_emoji_gsub.EMOJI_KEYCAPS.items())
++ + list(add_emoji_gsub.EMOJI_FLAGS.items())):
+ if pua not in cmap:
+ glyph_name = get_glyph_name_from_gsub([ch1, ch2], font)
+ if glyph_name is not None:
+diff --git a/third_party/color_emoji/emoji_builder.py b/third_party/color_emoji/emoji_builder.py
+index 4157807e..7f17c62f 100644
+--- a/third_party/color_emoji/emoji_builder.py
++++ b/third_party/color_emoji/emoji_builder.py
+@@ -19,7 +19,7 @@
+
+
+ from __future__ import print_function
+-import sys, struct, StringIO
++import sys, struct
+ from png import PNG
+ import os
+ from os import path
+@@ -112,9 +112,9 @@ class CBDT:
+ line_height = (ascent + descent) * y_ppem / float (upem)
+ line_ascent = ascent * y_ppem / float (upem)
+ y_bearing = int (round (line_ascent - .5 * (line_height - height)))
+- # fudge y_bearing if calculations are a bit off
+- if y_bearing == 128:
+- y_bearing = 127
++ # fudge y_bearing if calculations are a bit off
++ if y_bearing == 128:
++ y_bearing = 127
+ advance = width
+
+ vert_x_bearing = - width / 2
+@@ -133,22 +133,22 @@ class CBDT:
+ # CHAR vertBearingX
+ # CHAR vertBearingY
+ # BYTE vertAdvance
+- try:
+- if big_metrics:
+- self.write (struct.pack ("BBbbBbbB",
++ try:
++ if big_metrics:
++ self.write (struct.pack ("BBbbBbbB",
+ height, width,
+ x_bearing, y_bearing,
+ advance,
+ vert_x_bearing, vert_y_bearing,
+ vert_advance))
+- else:
+- self.write (struct.pack ("BBbbB",
++ else:
++ self.write (struct.pack ("BBbbB",
+ height, width,
+ x_bearing, y_bearing,
+ advance))
+- except Exception as e:
+- raise ValueError("%s, h: %d w: %d x: %d y: %d %d a:" % (
+- e, height, width, x_bearing, y_bearing, advance))
++ except Exception as e:
++ raise ValueError("%s, h: %d w: %d x: %d y: %d %d a:" % (
++ e, height, width, x_bearing, y_bearing, advance))
+
+ def write_format1 (self, png):
+
+@@ -179,12 +179,15 @@ class CBDT:
+ self.write (pixel)
+ offset += stride
+
+- png_allowed_chunks = ["IHDR", "PLTE", "tRNS", "sRGB", "IDAT", "IEND"]
++ png_allowed_chunks = [
++ "IHDR", "PLTE", "tRNS", "sRGB", "IDAT", "IEND", # Python2
++ b"IHDR", b"PLTE", b"tRNS", b"sRGB", b"IDAT", b"IEND", # Python3
++ ]
+
+ def write_format17 (self, png):
+ self.write_format17or18(png, False)
+
+- def write_format18 (self, png):
++ def write_format18 (self, png):
+ self.write_format17or18(png, True)
+
+ def write_format17or18 (self, png, big_metrics):
+@@ -202,7 +205,7 @@ class CBDT:
+
+ def image_write_func (self, image_format):
+ if image_format == 1: return self.write_format1
+- if image_format == 17: return self.write_format17
++ if image_format == 17: return self.write_format17
+ if image_format == 18: return self.write_format18
+ return None
+
+@@ -441,7 +444,10 @@ By default they are dropped.
+
+ def add_font_table (font, tag, data):
+ tab = ttLib.tables.DefaultTable.DefaultTable (tag)
+- tab.data = str(data)
++ if sys.version_info >= (3, 0, 0):
++ tab.data = data
++ else:
++ tab.data = str(data)
+ font[tag] = tab
+
+ def drop_outline_tables (font):
+@@ -478,7 +484,7 @@ By default they are dropped.
+ eblc.write_header ()
+ eblc.start_strikes (len (img_prefixes))
+
+- def is_vs(cp):
++ def is_vs(cp):
+ return cp >= 0xfe00 and cp <= 0xfe0f
+
+ for img_prefix in img_prefixes:
+@@ -491,14 +497,20 @@ By default they are dropped.
+ codes = img_file[len (img_prefix):-4]
+ if "_" in codes:
+ pieces = codes.split ("_")
+- cps = [int(code, 16) for code in pieces]
+- uchars = "".join ([unichr(cp) for cp in cps if not is_vs(cp)])
++ cps = [int(code, 16) for code in pieces]
++ if sys.version_info >= (3, 0, 0):
++ uchars = "".join ([chr(cp) for cp in cps if not is_vs(cp)])
++ else:
++ uchars = "".join ([unichr(cp) for cp in cps if not is_vs(cp)])
+ else:
+- cp = int(codes, 16)
+- if is_vs(cp):
+- print("ignoring unexpected vs input %04x" % cp)
+- continue
+- uchars = unichr(cp)
++ cp = int(codes, 16)
++ if is_vs(cp):
++ print("ignoring unexpected vs input %04x" % cp)
++ continue
++ if sys.version_info >= (3, 0, 0):
++ uchars = chr(cp)
++ else:
++ uchars = unichr(cp)
+ img_files[uchars] = img_file
+ if not img_files:
+ raise Exception ("No image files found in '%s'." % glb)
+@@ -561,8 +573,7 @@ By default they are dropped.
+ # hack removal of cmap pua entry for unknown flag glyph. If we try to
+ # remove it earlier, getGlyphID dies. Need to restructure all of this
+ # code.
+- font_data.delete_from_cmap(font, [0xfe82b])
+-
++ font_data.delete_from_cmap(font, [0xfe82b])
+ font.save (out_file)
+ print("Output font '%s' generated." % out_file)
+
+diff --git a/third_party/color_emoji/png.py b/third_party/color_emoji/png.py
+index 20f849ae..f5d4c2d5 100644
+--- a/third_party/color_emoji/png.py
++++ b/third_party/color_emoji/png.py
+@@ -17,7 +17,12 @@
+ # Google Author(s): Behdad Esfahbod
+ #
+
+-import struct, StringIO
++import struct
++import sys
++if sys.version_info >= (3,0,0): # Python3
++ from io import StringIO
++else:
++ from StringIO import StringIO
+
+
+ class PNG:
+@@ -26,7 +31,7 @@ class PNG:
+
+ def __init__ (self, f):
+
+- if isinstance(f, basestring):
++ if (isinstance(f, str) or isinstance(f, type(u''))):
+ f = open (f, 'rb')
+
+ self.f = f
+@@ -43,7 +48,10 @@ class PNG:
+
+ def data (self):
+ self.seek (0)
+- return bytearray (self.f.read ())
++ if sys.version_info >= (3,0,0): # Python3
++ return bytearray (self.f.read (), 'iso-8859-1')
++ else:
++ return bytearray (self.f.read ())
+
+ class BadSignature (Exception): pass
+ class BadChunk (Exception): pass
+@@ -55,7 +63,8 @@ class PNG:
+ return PNG.signature
+
+ def read_chunk (self):
+- length = struct.unpack (">I", self.f.read (4))[0]
++ buf = self.f.read (4)
++ length = struct.unpack (">I", buf)[0]
+ chunk_type = self.f.read (4)
+ chunk_data = self.f.read (length)
+ if len (chunk_data) != length:
+@@ -67,7 +76,7 @@ class PNG:
+
+ def read_IHDR (self):
+ (chunk_type, chunk_data, crc) = self.read_chunk ()
+- if chunk_type != "IHDR":
++ if chunk_type not in ("IHDR", b"IHDR"):
+ raise PNG.BadChunk
+ # Width: 4 bytes
+ # Height: 4 bytes
+@@ -93,15 +102,24 @@ class PNG:
+
+ def filter_chunks (self, chunks):
+ self.seek (0);
+- out = StringIO.StringIO ()
+- out.write (self.read_signature ())
++ out = StringIO ()
++ if sys.version_info >= (3,0,0): # Python3
++ out.write (self.read_signature ().decode('iso-8859-1'))
++ else:
++ out.write (self.read_signature ())
+ while True:
+ chunk_type, chunk_data, crc = self.read_chunk ()
+ if chunk_type in chunks:
+- out.write (struct.pack (">I", len (chunk_data)))
+- out.write (chunk_type)
+- out.write (chunk_data)
+- out.write (crc)
+- if chunk_type == "IEND":
++ if sys.version_info >= (3,0,0): # Python3
++ out.write (struct.pack (">I", len (chunk_data)).decode('iso-8859-1'))
++ out.write (chunk_type.decode('iso-8859-1'))
++ out.write (chunk_data.decode('iso-8859-1'))
++ out.write (crc.decode('iso-8859-1'))
++ else:
++ out.write (struct.pack (">I", len (chunk_data)))
++ out.write (chunk_type)
++ out.write (chunk_data)
++ out.write (crc)
++ if chunk_type in ("IEND", b"IEND"):
+ break
+ return PNG (out)
diff -Nru fonts-noto-color-emoji-0~20180810/debian/patches/py3-02-188ffcf08cfa6cabdfcf5dc2723154574d2c66cf.patch fonts-noto-color-emoji-0~20180810/debian/patches/py3-02-188ffcf08cfa6cabdfcf5dc2723154574d2c66cf.patch
--- fonts-noto-color-emoji-0~20180810/debian/patches/py3-02-188ffcf08cfa6cabdfcf5dc2723154574d2c66cf.patch 1970-01-01 00:00:00.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/patches/py3-02-188ffcf08cfa6cabdfcf5dc2723154574d2c66cf.patch 2019-12-11 02:38:19.000000000 +0000
@@ -0,0 +1,200 @@
+commit 188ffcf08cfa6cabdfcf5dc2723154574d2c66cf
+Author: Mike FABIAN <maiku.fabian at gmail.com>
+Date: Wed Jul 17 10:35:02 2019 +0200
+
+ Use Python3 explicitly
+
+diff --git a/Makefile b/Makefile
+index e8d53b5a..ec75d98e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -207,7 +207,7 @@ endif
+ # Run make without -j if this happens.
+
+ %.ttx: %.ttx.tmpl $(ADD_GLYPHS) $(ALL_COMPRESSED_FILES)
+- @python $(ADD_GLYPHS) -f "$<" -o "$@" -d "$(COMPRESSED_DIR)" $(ADD_GLYPHS_FLAGS)
++ @python3 $(ADD_GLYPHS) -f "$<" -o "$@" -d "$(COMPRESSED_DIR)" $(ADD_GLYPHS_FLAGS)
+
+ %.ttf: %.ttx
+ @rm -f "$@"
+@@ -215,8 +215,8 @@ endif
+
+ $(EMOJI).ttf: $(EMOJI).tmpl.ttf $(EMOJI_BUILDER) $(PUA_ADDER) \
+ $(ALL_COMPRESSED_FILES) | check_vs_adder
+- @python $(EMOJI_BUILDER) $(SMALL_METRICS) -V $< "$@" "$(COMPRESSED_DIR)/emoji_u"
+- @python $(PUA_ADDER) "$@" "$@-with-pua"
++ @python3 $(EMOJI_BUILDER) $(SMALL_METRICS) -V $< "$@" "$(COMPRESSED_DIR)/emoji_u"
++ @python3 $(PUA_ADDER) "$@" "$@-with-pua"
+ @$(VS_ADDER) -vs 2640 2642 2695 --dstdir '.' -o "$@-with-pua-varsel" "$@-with-pua"
+ @mv "$@-with-pua-varsel" "$@"
+ @rm "$@-with-pua"
+diff --git a/add_aliases.py b/add_aliases.py
+index 90aed7d9..b943f5db 100755
+--- a/add_aliases.py
++++ b/add_aliases.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2017 Google Inc. All rights reserved.
+ #
+diff --git a/add_emoji_gsub.py b/add_emoji_gsub.py
+index bae73cbb..9f578a30 100755
+--- a/add_emoji_gsub.py
++++ b/add_emoji_gsub.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2014 Google Inc. All rights reserved.
+ #
+diff --git a/add_glyphs.py b/add_glyphs.py
+index 36d40e67..4d4430f4 100644
+--- a/add_glyphs.py
++++ b/add_glyphs.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """Extend a ttx file with additional data.
+
+diff --git a/add_svg_glyphs.py b/add_svg_glyphs.py
+index 0f7a6b3b..63091578 100755
+--- a/add_svg_glyphs.py
++++ b/add_svg_glyphs.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright 2015 Google, Inc. All Rights Reserved.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+diff --git a/check_emoji_sequences.py b/check_emoji_sequences.py
+index f29bbe90..dff1b865 100755
+--- a/check_emoji_sequences.py
++++ b/check_emoji_sequences.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2016 Google Inc. All rights reserved.
+ #
+diff --git a/collect_emoji_svg.py b/collect_emoji_svg.py
+index ea39cbde..9d2ba640 100755
+--- a/collect_emoji_svg.py
++++ b/collect_emoji_svg.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright 2015 Google, Inc. All Rights Reserved.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+diff --git a/flag_glyph_name.py b/flag_glyph_name.py
+index 50c266b8..e5ce40c2 100755
+--- a/flag_glyph_name.py
++++ b/flag_glyph_name.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2014 Google Inc. All rights reserved.
+ #
+diff --git a/flag_info.py b/flag_info.py
+index 233243f7..3dbd63f2 100755
+--- a/flag_info.py
++++ b/flag_info.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ #
+ # Copyright 2016 Google Inc. All rights reserved.
+ #
+diff --git a/gen_version.py b/gen_version.py
+index 749f12ed..48581a82 100755
+--- a/gen_version.py
++++ b/gen_version.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2015 Google Inc. All rights reserved.
+ #
+diff --git a/generate_emoji_html.py b/generate_emoji_html.py
+index 8e0d56ca..09fa8ed0 100755
+--- a/generate_emoji_html.py
++++ b/generate_emoji_html.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2016 Google Inc. All rights reserved.
+ #
+diff --git a/generate_emoji_name_data.py b/generate_emoji_name_data.py
+index b2280580..9a726216 100755
+--- a/generate_emoji_name_data.py
++++ b/generate_emoji_name_data.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-#
+ #
+ # Copyright 2015 Google Inc. All rights reserved.
+diff --git a/generate_emoji_thumbnails.py b/generate_emoji_thumbnails.py
+index e67da533..5f70351e 100755
+--- a/generate_emoji_thumbnails.py
++++ b/generate_emoji_thumbnails.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright 2017 Google Inc. All rights reserved.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+diff --git a/generate_test_html.py b/generate_test_html.py
+index 21ab1c64..e45108cb 100755
+--- a/generate_test_html.py
++++ b/generate_test_html.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright 2015 Google, Inc. All Rights Reserved.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+diff --git a/map_pua_emoji.py b/map_pua_emoji.py
+index ff8d6a9b..912ddac5 100644
+--- a/map_pua_emoji.py
++++ b/map_pua_emoji.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2014 Google Inc. All rights reserved.
+ #
+diff --git a/materialize_emoji_images.py b/materialize_emoji_images.py
+index d8a8b0e8..83e3fdd2 100755
+--- a/materialize_emoji_images.py
++++ b/materialize_emoji_images.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2016 Google Inc. All rights reserved.
+ #
+diff --git a/strip_vs_from_filenames.py b/strip_vs_from_filenames.py
+index f27cb3c2..f0f7422f 100755
+--- a/strip_vs_from_filenames.py
++++ b/strip_vs_from_filenames.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright 2017 Google Inc. All rights reserved.
+ #
+diff --git a/svg_cleaner.py b/svg_cleaner.py
+index e968d2fc..40d3827e 100755
+--- a/svg_cleaner.py
++++ b/svg_cleaner.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright 2015 Google, Inc. All Rights Reserved.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
diff -Nru fonts-noto-color-emoji-0~20180810/debian/patches/py3-04-3d5ac2aea9d6acfa084048db6937a873676378b3.patch fonts-noto-color-emoji-0~20180810/debian/patches/py3-04-3d5ac2aea9d6acfa084048db6937a873676378b3.patch
--- fonts-noto-color-emoji-0~20180810/debian/patches/py3-04-3d5ac2aea9d6acfa084048db6937a873676378b3.patch 1970-01-01 00:00:00.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/patches/py3-04-3d5ac2aea9d6acfa084048db6937a873676378b3.patch 2019-12-11 02:55:48.000000000 +0000
@@ -0,0 +1,48 @@
+Adjusted by Peter Michael Green to apply to the Debian fonts-noto-color-emoji package.
+commit 3d5ac2aea9d6acfa084048db6937a873676378b3
+Author: Cosimo Lupo <clupo at google.com>
+Date: Mon Oct 21 15:58:06 2019 +0100
+
+ Makefile: define PYTHON=python3 make variable
+
+Index: fonts-noto-color-emoji-0~20180810/Makefile
+===================================================================
+--- fonts-noto-color-emoji-0~20180810.orig/Makefile
++++ fonts-noto-color-emoji-0~20180810/Makefile
+@@ -19,6 +19,7 @@ CFLAGS = -std=c99 -Wall -Wextra `pkg-con
+ LDFLAGS = -lm `pkg-config --libs cairo`
+ PNGQUANTDIR := third_party/pngquant
+ PNGQUANT := $(PNGQUANTDIR)/pngquant
++PYTHON = python3
+ PNGQUANTFLAGS = --speed 1 --skip-if-larger --quality 85-95 --force
+ BODY_DIMENSIONS = 136x128
+ IMOPS := -size $(BODY_DIMENSIONS) canvas:none -compose copy -gravity center
+@@ -88,7 +89,7 @@ FLAG_NAMES = $(FLAGS:%=%.png)
+ FLAG_FILES = $(addprefix $(FLAGS_DIR)/, $(FLAG_NAMES))
+ RESIZED_FLAG_FILES = $(addprefix $(RESIZED_FLAGS_DIR)/, $(FLAG_NAMES))
+
+-FLAG_GLYPH_NAMES = $(shell ./flag_glyph_name.py $(FLAGS))
++FLAG_GLYPH_NAMES = $(shell $(PYTHON) flag_glyph_name.py $(FLAGS))
+ RENAMED_FLAG_NAMES = $(FLAG_GLYPH_NAMES:%=emoji_%.png)
+ RENAMED_FLAG_FILES = $(addprefix $(RENAMED_FLAGS_DIR)/, $(RENAMED_FLAG_NAMES))
+
+@@ -209,7 +210,7 @@ endif
+ # Run make without -j if this happens.
+
+ %.ttx: %.ttx.tmpl $(ADD_GLYPHS) $(ALL_COMPRESSED_FILES)
+- @python3 $(ADD_GLYPHS) -f "$<" -o "$@" -d "$(COMPRESSED_DIR)" $(ADD_GLYPHS_FLAGS)
++ @$(PYTHON) $(ADD_GLYPHS) -f "$<" -o "$@" -d "$(COMPRESSED_DIR)" $(ADD_GLYPHS_FLAGS)
+
+ %.ttf: %.ttx
+ @rm -f "$@"
+@@ -217,8 +218,8 @@ endif
+
+ $(EMOJI).ttf: $(EMOJI).tmpl.ttf $(EMOJI_BUILDER) $(PUA_ADDER) \
+ $(ALL_COMPRESSED_FILES) | check_vs_adder
+- @python3 $(EMOJI_BUILDER) $(SMALL_METRICS) -V $< "$@" "$(COMPRESSED_DIR)/emoji_u"
+- @python3 $(PUA_ADDER) "$@" "$@-with-pua"
++ @$(PYTHON) $(EMOJI_BUILDER) $(SMALL_METRICS) -V $< "$@" "$(COMPRESSED_DIR)/emoji_u"
++ @$(PYTHON) $(PUA_ADDER) "$@" "$@-with-pua"
+ @$(VS_ADDER) -vs 2640 2642 2695 --dstdir '.' -o "$@-with-pua-varsel" "$@-with-pua"
+ @mv "$@-with-pua-varsel" "$@"
+ @rm "$@-with-pua"
diff -Nru fonts-noto-color-emoji-0~20180810/debian/patches/py3-05-03e6d6e39cc3694a4157b48e3afe76cfa8c85dd2.patch fonts-noto-color-emoji-0~20180810/debian/patches/py3-05-03e6d6e39cc3694a4157b48e3afe76cfa8c85dd2.patch
--- fonts-noto-color-emoji-0~20180810/debian/patches/py3-05-03e6d6e39cc3694a4157b48e3afe76cfa8c85dd2.patch 1970-01-01 00:00:00.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/patches/py3-05-03e6d6e39cc3694a4157b48e3afe76cfa8c85dd2.patch 2019-12-11 02:36:38.000000000 +0000
@@ -0,0 +1,30 @@
+commit 03e6d6e39cc3694a4157b48e3afe76cfa8c85dd2
+Author: Cosimo Lupo <clupo at google.com>
+Date: Mon Oct 21 16:03:06 2019 +0100
+
+ map_pua_emoji: use itertools.chain() to concatenate dict.items()
+
+diff --git a/map_pua_emoji.py b/map_pua_emoji.py
+index 912ddac5..bd8e1027 100644
+--- a/map_pua_emoji.py
++++ b/map_pua_emoji.py
+@@ -19,6 +19,7 @@
+ __author__ = 'roozbeh at google.com (Roozbeh Pournader)'
+
+ import sys
++import itertools
+
+ from fontTools import ttLib
+
+@@ -53,8 +54,9 @@ def add_pua_cmap(source_file, target_file):
+ """Add PUA characters to the cmap of the first font and save as second."""
+ font = ttLib.TTFont(source_file)
+ cmap = font_data.get_cmap(font)
+- for pua, (ch1, ch2) in (list(add_emoji_gsub.EMOJI_KEYCAPS.items())
+- + list(add_emoji_gsub.EMOJI_FLAGS.items())):
++ for pua, (ch1, ch2) in itertools.chain(
++ add_emoji_gsub.EMOJI_KEYCAPS.items(), add_emoji_gsub.EMOJI_FLAGS.items()
++ ):
+ if pua not in cmap:
+ glyph_name = get_glyph_name_from_gsub([ch1, ch2], font)
+ if glyph_name is not None:
diff -Nru fonts-noto-color-emoji-0~20180810/debian/patches/py3-06-60161a370b9943af45628663abf552f93ed256d6.patch fonts-noto-color-emoji-0~20180810/debian/patches/py3-06-60161a370b9943af45628663abf552f93ed256d6.patch
--- fonts-noto-color-emoji-0~20180810/debian/patches/py3-06-60161a370b9943af45628663abf552f93ed256d6.patch 1970-01-01 00:00:00.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/patches/py3-06-60161a370b9943af45628663abf552f93ed256d6.patch 2019-12-11 02:35:59.000000000 +0000
@@ -0,0 +1,153 @@
+commit 60161a370b9943af45628663abf552f93ed256d6
+Author: Cosimo Lupo <clupo at google.com>
+Date: Mon Oct 21 16:17:16 2019 +0100
+
+ [emoji_builder|png] fix bytes vs str issues in py2.py3
+
+diff --git a/third_party/color_emoji/emoji_builder.py b/third_party/color_emoji/emoji_builder.py
+index 7f17c62f..61a3a392 100644
+--- a/third_party/color_emoji/emoji_builder.py
++++ b/third_party/color_emoji/emoji_builder.py
+@@ -26,6 +26,12 @@ from os import path
+
+ from nototools import font_data
+
++
++try:
++ unichr # py2
++except NameError:
++ unichr = chr # py3
++
+ def get_glyph_name_from_gsub (string, font, cmap_dict):
+ ligatures = font['GSUB'].table.LookupList.Lookup[0].SubTable[0].ligatures
+ first_glyph = cmap_dict[ord (string[0])]
+@@ -179,10 +185,7 @@ class CBDT:
+ self.write (pixel)
+ offset += stride
+
+- png_allowed_chunks = [
+- "IHDR", "PLTE", "tRNS", "sRGB", "IDAT", "IEND", # Python2
+- b"IHDR", b"PLTE", b"tRNS", b"sRGB", b"IDAT", b"IEND", # Python3
+- ]
++ png_allowed_chunks = [b"IHDR", b"PLTE", b"tRNS", b"sRGB", b"IDAT", b"IEND"]
+
+ def write_format17 (self, png):
+ self.write_format17or18(png, False)
+@@ -444,10 +447,7 @@ By default they are dropped.
+
+ def add_font_table (font, tag, data):
+ tab = ttLib.tables.DefaultTable.DefaultTable (tag)
+- if sys.version_info >= (3, 0, 0):
+- tab.data = data
+- else:
+- tab.data = str(data)
++ tab.data = data
+ font[tag] = tab
+
+ def drop_outline_tables (font):
+@@ -498,19 +498,13 @@ By default they are dropped.
+ if "_" in codes:
+ pieces = codes.split ("_")
+ cps = [int(code, 16) for code in pieces]
+- if sys.version_info >= (3, 0, 0):
+- uchars = "".join ([chr(cp) for cp in cps if not is_vs(cp)])
+- else:
+- uchars = "".join ([unichr(cp) for cp in cps if not is_vs(cp)])
++ uchars = "".join (unichr(cp) for cp in cps if not is_vs(cp))
+ else:
+ cp = int(codes, 16)
+ if is_vs(cp):
+ print("ignoring unexpected vs input %04x" % cp)
+ continue
+- if sys.version_info >= (3, 0, 0):
+- uchars = chr(cp)
+- else:
+- uchars = unichr(cp)
++ uchars = unichr(cp)
+ img_files[uchars] = img_file
+ if not img_files:
+ raise Exception ("No image files found in '%s'." % glb)
+diff --git a/third_party/color_emoji/png.py b/third_party/color_emoji/png.py
+index f5d4c2d5..6e74500f 100644
+--- a/third_party/color_emoji/png.py
++++ b/third_party/color_emoji/png.py
+@@ -19,10 +19,13 @@
+
+ import struct
+ import sys
+-if sys.version_info >= (3,0,0): # Python3
+- from io import StringIO
+-else:
+- from StringIO import StringIO
++from io import BytesIO
++
++
++try:
++ basestring # py2
++except NameError:
++ basestring = str # py3
+
+
+ class PNG:
+@@ -31,7 +34,7 @@ class PNG:
+
+ def __init__ (self, f):
+
+- if (isinstance(f, str) or isinstance(f, type(u''))):
++ if isinstance(f, basestring):
+ f = open (f, 'rb')
+
+ self.f = f
+@@ -48,10 +51,7 @@ class PNG:
+
+ def data (self):
+ self.seek (0)
+- if sys.version_info >= (3,0,0): # Python3
+- return bytearray (self.f.read (), 'iso-8859-1')
+- else:
+- return bytearray (self.f.read ())
++ return bytearray (self.f.read ())
+
+ class BadSignature (Exception): pass
+ class BadChunk (Exception): pass
+@@ -76,7 +76,7 @@ class PNG:
+
+ def read_IHDR (self):
+ (chunk_type, chunk_data, crc) = self.read_chunk ()
+- if chunk_type not in ("IHDR", b"IHDR"):
++ if chunk_type != b"IHDR":
+ raise PNG.BadChunk
+ # Width: 4 bytes
+ # Height: 4 bytes
+@@ -102,24 +102,15 @@ class PNG:
+
+ def filter_chunks (self, chunks):
+ self.seek (0);
+- out = StringIO ()
+- if sys.version_info >= (3,0,0): # Python3
+- out.write (self.read_signature ().decode('iso-8859-1'))
+- else:
+- out.write (self.read_signature ())
++ out = BytesIO ()
++ out.write (self.read_signature ())
+ while True:
+ chunk_type, chunk_data, crc = self.read_chunk ()
+ if chunk_type in chunks:
+- if sys.version_info >= (3,0,0): # Python3
+- out.write (struct.pack (">I", len (chunk_data)).decode('iso-8859-1'))
+- out.write (chunk_type.decode('iso-8859-1'))
+- out.write (chunk_data.decode('iso-8859-1'))
+- out.write (crc.decode('iso-8859-1'))
+- else:
+- out.write (struct.pack (">I", len (chunk_data)))
+- out.write (chunk_type)
+- out.write (chunk_data)
+- out.write (crc)
+- if chunk_type in ("IEND", b"IEND"):
++ out.write (struct.pack (">I", len (chunk_data)))
++ out.write (chunk_type)
++ out.write (chunk_data)
++ out.write (crc)
++ if chunk_type == b"IEND":
+ break
+ return PNG (out)
diff -Nru fonts-noto-color-emoji-0~20180810/debian/patches/series fonts-noto-color-emoji-0~20180810/debian/patches/series
--- fonts-noto-color-emoji-0~20180810/debian/patches/series 2018-08-21 19:26:49.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/patches/series 2019-12-11 02:52:54.000000000 +0000
@@ -1,2 +1,7 @@
add_vs_cmap.patch
build-all-flags.patch
+py3-01-a9ca546689d384b0ca73ad2a476891c3caaedc20.patch
+py3-02-188ffcf08cfa6cabdfcf5dc2723154574d2c66cf.patch
+py3-04-3d5ac2aea9d6acfa084048db6937a873676378b3.patch
+py3-05-03e6d6e39cc3694a4157b48e3afe76cfa8c85dd2.patch
+py3-06-60161a370b9943af45628663abf552f93ed256d6.patch
diff -Nru fonts-noto-color-emoji-0~20180810/debian/.pc/.quilt_patches fonts-noto-color-emoji-0~20180810/debian/.pc/.quilt_patches
--- fonts-noto-color-emoji-0~20180810/debian/.pc/.quilt_patches 1970-01-01 00:00:00.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/.pc/.quilt_patches 2019-12-11 02:48:19.000000000 +0000
@@ -0,0 +1 @@
+patches
diff -Nru fonts-noto-color-emoji-0~20180810/debian/.pc/.quilt_series fonts-noto-color-emoji-0~20180810/debian/.pc/.quilt_series
--- fonts-noto-color-emoji-0~20180810/debian/.pc/.quilt_series 1970-01-01 00:00:00.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/.pc/.quilt_series 2019-12-11 02:48:19.000000000 +0000
@@ -0,0 +1 @@
+series
diff -Nru fonts-noto-color-emoji-0~20180810/debian/.pc/.version fonts-noto-color-emoji-0~20180810/debian/.pc/.version
--- fonts-noto-color-emoji-0~20180810/debian/.pc/.version 1970-01-01 00:00:00.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/.pc/.version 2019-12-11 02:48:19.000000000 +0000
@@ -0,0 +1 @@
+2
diff -Nru fonts-noto-color-emoji-0~20180810/debian/rules fonts-noto-color-emoji-0~20180810/debian/rules
--- fonts-noto-color-emoji-0~20180810/debian/rules 2018-08-21 19:26:49.000000000 +0000
+++ fonts-noto-color-emoji-0~20180810/debian/rules 2019-12-11 02:56:18.000000000 +0000
@@ -12,3 +12,4 @@
override_dh_clean:
dh_clean
rm -f *pyc
+ rm -rf __pycache__
More information about the Pkg-fonts-devel
mailing list