From 157722e2e30affba44c78a2eee884e3cac406ea1 Mon Sep 17 00:00:00 2001 From: Mike FABIAN Date: Mon, 15 Jul 2019 16:13:12 +0200 Subject: [PATCH] Port to Python3 and build it using Python3 --- google-noto-emoji-fonts.spec | 17 +- noto-emoji-port-to-python3.patch | 300 ++++++++++++++++++ ...-python2.patch => noto-emoji-python3.patch | 40 +-- 3 files changed, 332 insertions(+), 25 deletions(-) create mode 100644 noto-emoji-port-to-python3.patch rename noto-emoji-python2.patch => noto-emoji-python3.patch (94%) diff --git a/google-noto-emoji-fonts.spec b/google-noto-emoji-fonts.spec index 62bf7ca..456c76f 100644 --- a/google-noto-emoji-fonts.spec +++ b/google-noto-emoji-fonts.spec @@ -32,17 +32,18 @@ Source3: %{fontname}-color.metainfo.xml Patch0: noto-emoji-use-system-pngquant.patch Patch1: noto-emoji-build-all-flags.patch Patch2: noto-emoji-use-gm.patch -Patch3: noto-emoji-python2.patch +Patch3: noto-emoji-python3.patch +Patch4: noto-emoji-port-to-python3.patch BuildArch: noarch BuildRequires: gcc BuildRequires: fontpackages-devel %if %buildfont BuildRequires: fonttools -BuildRequires: python2-fonttools +BuildRequires: python3-fonttools BuildRequires: nototools -BuildRequires: python2-nototools -BuildRequires: python2-devel +BuildRequires: python3-nototools +BuildRequires: python3-devel BuildRequires: GraphicsMagick BuildRequires: pngquant BuildRequires: zopfli @@ -67,7 +68,12 @@ Provides: google-noto-color-emoji-fonts = 20150617 This package provides the Google “Noto Color Emoji” colored emoji font. %prep -%autosetup -n noto-emoji-%{commit0} +%setup -n noto-emoji-%{commit0} +%patch0 -p1 -b .noto-emoji-use-system-pngquant +%patch1 -p1 -b .noto-emoji-build-all-flags +%patch2 -p1 -b .noto-emoji-use-gm.patch +%patch3 -p1 -b .noto-emoji-python3.patch +%patch4 -p1 -b .noto-emoji-port-to-python3.patch rm -rf third_party/pngquant @@ -112,6 +118,7 @@ install -m 0644 -p %{SOURCE3} %{buildroot}%{_datadir}/appdata * Tue Jul 09 2019 Mike FABIAN - 20190709-1 - Update to upstream snapshot tarball (Contains the new emoji added in Unicode 12.0.0, also fixes the "people holding hands" sequence. +- Port to Python3 and build using Python3 * Fri Feb 01 2019 Fedora Release Engineering - 20180814-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild diff --git a/noto-emoji-port-to-python3.patch b/noto-emoji-port-to-python3.patch new file mode 100644 index 0000000..2b0a68f --- /dev/null +++ b/noto-emoji-port-to-python3.patch @@ -0,0 +1,300 @@ +diff --git a/add_glyphs.py b/add_glyphs.py +index 7ff47c9..c4883a3 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 f2b9be9..866670a 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 4157807..7f17c62 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 20f849a..f5d4c2d 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) +-- +2.21.0 + diff --git a/noto-emoji-python2.patch b/noto-emoji-python3.patch similarity index 94% rename from noto-emoji-python2.patch rename to noto-emoji-python3.patch index 4ebb847..3872b40 100644 --- a/noto-emoji-python2.patch +++ b/noto-emoji-python3.patch @@ -6,7 +6,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/Makefile noto- %.ttx: %.ttx.tmpl $(ADD_GLYPHS) $(ALL_COMPRESSED_FILES) - @python $(ADD_GLYPHS) -f "$<" -o "$@" -d "$(COMPRESSED_DIR)" $(ADD_GLYPHS_FLAGS) -+ @python2 $(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 "$@" @@ -16,8 +16,8 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/Makefile noto- $(ALL_COMPRESSED_FILES) | check_vs_adder - @python $(EMOJI_BUILDER) $(SMALL_METRICS) -V $< "$@" "$(COMPRESSED_DIR)/emoji_u" - @python $(PUA_ADDER) "$@" "$@-with-pua" -+ @python2 $(EMOJI_BUILDER) $(SMALL_METRICS) -V $< "$@" "$(COMPRESSED_DIR)/emoji_u" -+ @python2 $(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" @@ -26,7 +26,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/add_aliases.py +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/add_aliases.py 2018-08-14 14:15:28.586483050 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2017 Google Inc. All rights reserved. # @@ -35,7 +35,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/add_emoji_gsub +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/add_emoji_gsub.py 2018-08-14 14:15:28.586483050 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2014 Google Inc. All rights reserved. # @@ -44,7 +44,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/add_glyphs.py +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/add_glyphs.py 2018-08-14 14:15:28.587483040 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 """Extend a ttx file with additional data. @@ -53,7 +53,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/add_svg_glyphs +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/add_svg_glyphs.py 2018-08-14 14:15:28.588483029 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # Copyright 2015 Google, Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -62,7 +62,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/check_emoji_se +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/check_emoji_sequences.py 2018-08-14 14:15:28.588483029 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2016 Google Inc. All rights reserved. # @@ -71,7 +71,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/collect_emoji_ +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/collect_emoji_svg.py 2018-08-14 14:15:28.589483019 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # Copyright 2015 Google, Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -80,7 +80,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/flag_glyph_nam +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/flag_glyph_name.py 2018-08-14 14:15:28.589483019 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2014 Google Inc. All rights reserved. # @@ -89,7 +89,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/flag_info.py n +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/flag_info.py 2018-08-14 14:15:28.590483009 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/python -+#!/usr/bin/python2 ++#!/usr/bin/python3 # # Copyright 2016 Google Inc. All rights reserved. # @@ -98,7 +98,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/gen_version.py +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/gen_version.py 2018-08-14 14:15:28.590483009 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2015 Google Inc. All rights reserved. # @@ -107,7 +107,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/generate_emoji +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/generate_emoji_html.py 2018-08-14 14:15:28.591482998 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2016 Google Inc. All rights reserved. # @@ -116,7 +116,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/generate_emoji +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/generate_emoji_name_data.py 2018-08-14 14:15:28.591482998 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # -*- coding: utf-8 -*-# # # Copyright 2015 Google Inc. All rights reserved. @@ -125,7 +125,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/generate_emoji +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/generate_emoji_thumbnails.py 2018-08-14 14:15:28.592482988 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # Copyright 2017 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -134,7 +134,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/generate_test_ +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/generate_test_html.py 2018-08-14 14:15:28.592482988 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # Copyright 2015 Google, Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -143,7 +143,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/map_pua_emoji. +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/map_pua_emoji.py 2018-08-14 14:15:28.593482978 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2014 Google Inc. All rights reserved. # @@ -152,7 +152,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/materialize_em +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/materialize_emoji_images.py 2018-08-14 14:15:28.593482978 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2016 Google Inc. All rights reserved. # @@ -161,7 +161,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/strip_vs_from_ +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/strip_vs_from_filenames.py 2018-08-14 14:15:28.594482968 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # # Copyright 2017 Google Inc. All rights reserved. # @@ -170,7 +170,7 @@ diff -ru noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362.orig/svg_cleaner.py +++ noto-emoji-3ffd20ec7504657aa17c84f9aa475ad09b20c362/svg_cleaner.py 2018-08-14 14:15:28.594482968 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/env python2 ++#!/usr/bin/env python3 # Copyright 2015 Google, Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License");