Hello community,

here is the log from the commit of package telegram-desktop for 
openSUSE:Factory checked in at 2019-11-26 16:52:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/telegram-desktop (Old)
 and      /work/SRC/openSUSE:Factory/.telegram-desktop.new.26869 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "telegram-desktop"

Tue Nov 26 16:52:06 2019 rev:24 rq:746365 version:1.8.15

Changes:
--------
--- /work/SRC/openSUSE:Factory/telegram-desktop/telegram-desktop.changes        
2019-09-30 15:59:55.393132911 +0200
+++ 
/work/SRC/openSUSE:Factory/.telegram-desktop.new.26869/telegram-desktop.changes 
    2019-11-26 16:52:41.572242179 +0100
@@ -1,0 +2,15 @@
+Tue Nov  5 20:51:58 UTC 2019 - Xu Zhao <[email protected]>
+
+- Remove the TDESKTOP_DISABLE_GTK_INTEGRATION macro in patch.py
+  * Enable the native notification on all platforms.
+- Add default-gtk2.patch: Use GTK 2 theme by default to harmonize
+  the libqt5-prioritise-gtk2-platformtheme.patch (boo#1149986)
+  in libqt5-qtbase.
+
+-------------------------------------------------------------------
+Sat Nov  2 11:54:41 UTC 2019 - Xu Zhao <[email protected]>
+
+- Update to 1.8.15
+  * Bug fixes and other minor improvements.
+
+-------------------------------------------------------------------

Old:
----
  catch.hpp
  v1.8.9.tar.gz

New:
----
  Catch2-master.zip
  default-gtk2.patch
  qt_functions.cpp
  v1.8.15.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ telegram-desktop.spec ++++++
--- /var/tmp/diff_new_pack.TWFsFF/_old  2019-11-26 16:52:49.664239253 +0100
+++ /var/tmp/diff_new_pack.TWFsFF/_new  2019-11-26 16:52:49.668239251 +0100
@@ -29,7 +29,7 @@
 %endif
 
 Name:           telegram-desktop
-Version:        1.8.9
+Version:        1.8.15
 Release:        0
 Summary:        Messaging application with a focus on speed and security
 License:        GPL-3.0-only
@@ -49,8 +49,8 @@
 Source6:        variant-master.zip
 # curl https://codeload.github.com/grishka/libtgvoip/zip/public -o 
libtgvoip.zip
 Source7:        libtgvoip.zip
-# curl 
https://raw.githubusercontent.com/philsquared/Catch/master/single_include/catch.hpp
 -o catch.hpp
-Source8:        catch.hpp
+# curl https://codeload.github.com/catchorg/Catch2/master -o Catch2-master.zip
+Source8:        Catch2-master.zip
 # curl https://codeload.github.com/ericniebler/range-v3/zip/master -o 
range-v3-master.zip
 Source9:        range-v3-master.zip
 # curl https://codeload.github.com/telegramdesktop/crl/zip/master -o 
crl-master.zip
@@ -61,8 +61,10 @@
 Source12:       lz4-dev.zip
 # curl https://codeload.github.com/john-preston/rlottie/zip/master -o 
rlottie-master.zip
 Source13:       rlottie-master.zip
+Source14:       qt_functions.cpp 
 
 Patch0:         tdesktop.patch
+Patch1:         default-gtk2.patch
 BuildRequires:  chrpath
 BuildRequires:  cmake
 BuildRequires:  desktop-file-utils
@@ -91,6 +93,7 @@
 BuildRequires:  pkgconfig(Qt5Widgets)
 BuildRequires:  pkgconfig(alsa)
 BuildRequires:  pkgconfig(ayatana-appindicator3-0.1)
+BuildRequires:  pkgconfig(dee-1.0)
 BuildRequires:  pkgconfig(expat)
 BuildRequires:  pkgconfig(fontconfig)
 BuildRequires:  pkgconfig(freetype2)
@@ -128,6 +131,7 @@
 BuildRequires:  pkgconfig(portaudio-2.0)
 BuildRequires:  pkgconfig(portaudiocpp)
 BuildRequires:  pkgconfig(tslib)
+BuildRequires:  pkgconfig(vdpau)
 BuildRequires:  pkgconfig(xcb-ewmh)
 BuildRequires:  pkgconfig(xcb-icccm)
 BuildRequires:  pkgconfig(xcb-image)
@@ -142,6 +146,7 @@
 Requires:       ffmpeg
 Requires:       hicolor-icon-theme
 Requires:       icu
+Requires:       libappindicator1
 Requires:       openssl
 ExclusiveArch:  x86_64
 
@@ -156,9 +161,6 @@
 %setup -q -n tdesktop-%{version}
 cp %{SOURCE8} Telegram/SourceFiles/base
 
-# Already included in %{S:8}
-sed -i "/catch_reporter_compact.hpp/d" Telegram/SourceFiles/base/tests_main.cpp
-
 cp %{_sourcedir}/GSL-master.zip . && unzip GSL-master.zip
 mv GSL-master GSL
 mv GSL %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/
@@ -192,13 +194,18 @@
 mv xxHash-master xxHash
 mv xxHash %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/
 
+cp %{_sourcedir}/Catch2-master.zip . && unzip Catch2-master.zip
+mv Catch2-master Catch
+mv Catch %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/
+
 cp %{_sourcedir}/tdesktop.patch %{_builddir}/tdesktop-%{version}
 cd %{_builddir}/tdesktop-%{version}
 
 %patch0 -p1
-
+%patch1 -p1
 cp %{_sourcedir}/patch.py . && python3 ./patch.py
-cp %{_sourcedir}/catch.hpp ./Telegram/SourceFiles/
+cp %{_sourcedir}/qt_functions.cpp Telegram/SourceFiles/
+sed -i '1i<(src_loc)/qt_functions.cpp' Telegram/gyp/telegram/sources.txt
 
 %setup -q -T -c -n breakpad -a 1
 %setup -q -T -c -n breakpad-lss -a 2

++++++ GSL-master.zip ++++++
Binary files /var/tmp/diff_new_pack.TWFsFF/_old and 
/var/tmp/diff_new_pack.TWFsFF/_new differ


++++++ default-gtk2.patch ++++++
diff --git a/Telegram/SourceFiles/platform/linux/linux_libs.cpp 
b/Telegram/SourceFiles/platform/linux/linux_libs.cpp
index 5071d63..f8c0f20 100644
--- a/Telegram/SourceFiles/platform/linux/linux_libs.cpp
+++ b/Telegram/SourceFiles/platform/linux/linux_libs.cpp
@@ -237,15 +237,15 @@ void start() {
        bool indicatorLoaded = false;
        bool isWayland = 
QGuiApplication::platformName().startsWith(qsl("wayland"), Qt::CaseInsensitive);
        QLibrary lib_gtk, lib_indicator;
-       if (loadLibrary(lib_indicator, "ayatana-appindicator3", 1) || 
loadLibrary(lib_indicator, "appindicator3", 1)) {
-               if (loadLibrary(lib_gtk, "gtk-3", 0)) {
+       if (loadLibrary(lib_indicator, "ayatana-appindicator", 1) || 
loadLibrary(lib_indicator, "appindicator", 1)) {
+               if (loadLibrary(lib_gtk, "gtk-x11-2.0", 0)) {
                        gtkLoaded = setupGtkBase(lib_gtk);
                        indicatorLoaded = setupAppIndicator(lib_indicator);
                }
        }
        if ((!gtkLoaded || !indicatorLoaded) && !isWayland) {
-               if (loadLibrary(lib_indicator, "ayatana-appindicator", 1) || 
loadLibrary(lib_indicator, "appindicator", 1)) {
-                       if (loadLibrary(lib_gtk, "gtk-x11-2.0", 0)) {
+               if (loadLibrary(lib_indicator, "ayatana-appindicator3", 1) || 
loadLibrary(lib_indicator, "appindicator3", 1)) {
+                       if (loadLibrary(lib_gtk, "gtk-3", 0)) {
                                gtkLoaded = indicatorLoaded = false;
                                gtkLoaded = setupGtkBase(lib_gtk);
                                indicatorLoaded = 
setupAppIndicator(lib_indicator);
@@ -255,10 +255,10 @@ void start() {
 
        // If no appindicator, try at least load gtk.
        if (!gtkLoaded && !indicatorLoaded) {
-               if (loadLibrary(lib_gtk, "gtk-3", 0)) {
+               if (loadLibrary(lib_gtk, "gtk-x11-2.0", 0)) {
                        gtkLoaded = setupGtkBase(lib_gtk);
                }
-               if (!gtkLoaded && !isWayland && loadLibrary(lib_gtk, 
"gtk-x11-2.0", 0)) {
+               if (!gtkLoaded && !isWayland && loadLibrary(lib_gtk, "gtk-3", 
0)) {
                        gtkLoaded = setupGtkBase(lib_gtk);
                }
        }
++++++ gyp-master.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/AUTHORS new/AUTHORS
--- old/AUTHORS 2019-05-30 09:52:31.000000000 +0200
+++ new/AUTHORS 2019-10-31 18:54:02.000000000 +0100
@@ -14,3 +14,4 @@
 Julien Brianceau <[email protected]>
 Refael Ackermann <[email protected]>
 Jiajie Hu <[email protected]>
+Philip Nery <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylib/gyp/generator/make.py 
new/pylib/gyp/generator/make.py
--- old/pylib/gyp/generator/make.py     2019-05-30 09:52:31.000000000 +0200
+++ new/pylib/gyp/generator/make.py     2019-10-31 18:54:02.000000000 +0100
@@ -1773,7 +1773,8 @@
       # - The multi-output rule will have an do-nothing recipe.
 
       # Hash the target name to avoid generating overlong filenames.
-      cmddigest = hashlib.sha1(command if command else self.target).hexdigest()
+      cmdstring = (command if command else self.target).encode('utf-8')
+      cmddigest = hashlib.sha1(cmdstring).hexdigest()
       intermediate = "%s.intermediate" % (cmddigest)
       self.WriteLn('%s: %s' % (' '.join(outputs), intermediate))
       self.WriteLn('\t%s' % '@:');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylib/gyp/input.py new/pylib/gyp/input.py
--- old/pylib/gyp/input.py      2019-05-30 09:52:31.000000000 +0200
+++ new/pylib/gyp/input.py      2019-10-31 18:54:02.000000000 +0100
@@ -54,6 +54,23 @@
 per_process_data = {}
 per_process_aux_data = {}
 
+try:
+  _str_types = (basestring,)
+# There's no basestring in python3.
+except NameError:
+  _str_types = (str,)
+
+try:
+  _int_types = (int, long)
+# There's no long in python3.
+except NameError:
+  _int_types = (int,)
+
+# Shortcuts as we use these combos a lot.
+_str_int_types = _str_types + _int_types
+_str_int_list_types = _str_int_types + (list,)
+
+
 def IsPathSection(section):
   # If section ends in one of the '=+?!' characters, it's applied to a section
   # without the trailing characters.  '/' is notably absent from this list,
@@ -221,7 +238,7 @@
     return data[build_file_path]
 
   if os.path.exists(build_file_path):
-    build_file_contents = open(build_file_path).read()
+    build_file_contents = open(build_file_path, 'rb').read().decode('utf-8')
   else:
     raise GypError("%s not found (cwd: %s)" % (build_file_path, os.getcwd()))
 
@@ -638,7 +655,7 @@
 
   The canonical form is such that str(int(string)) == string.
   """
-  if type(string) is str:
+  if isinstance(string, _str_types):
     # This function is called a lot so for maximum performance, avoid
     # involving regexps which would otherwise make the code much
     # shorter. Regexps would need twice the time of this function.
@@ -902,12 +919,13 @@
           p_stdout, p_stderr = p.communicate('')
 
           if p.wait() != 0 or p_stderr:
-            sys.stderr.write(p_stderr)
+            p_stderr_decoded = p_stderr.decode('utf-8')
+            sys.stderr.write(p_stderr_decoded)
             # Simulate check_call behavior, since check_call only exists
             # in python 2.5 and later.
             raise GypError("Call to '%s' returned exit status %d while in %s." 
%
                            (contents, p.returncode, build_file))
-          replacement = p_stdout.rstrip()
+          replacement = p_stdout.decode('utf-8').rstrip()
 
         cached_command_results[cache_key] = replacement
       else:
@@ -937,7 +955,7 @@
 
     if type(replacement) is list:
       for item in replacement:
-        if not contents[-1] == '/' and type(item) not in (str, int):
+        if not contents[-1] == '/' and not isinstance(item, _str_int_types):
           raise GypError('Variable ' + contents +
                          ' must expand to a string or list of strings; ' +
                          'list contains a ' +
@@ -947,8 +965,8 @@
       # with conditions sections.
       ProcessVariablesAndConditionsInList(replacement, phase, variables,
                                           build_file)
-    elif type(replacement) not in (str, int):
-          raise GypError('Variable ' + contents +
+    elif not isinstance(replacement, _str_int_types):
+          raise GypError('Variable ' + str(contents) +
                          ' must expand to a string or list of strings; ' +
                          'found a ' + replacement.__class__.__name__)
 
@@ -1066,7 +1084,7 @@
   # use a command expansion directly inside a condition.
   cond_expr_expanded = ExpandVariables(cond_expr, phase, variables,
                                        build_file)
-  if type(cond_expr_expanded) not in (str, int):
+  if not isinstance(cond_expr_expanded, _str_int_types):
     raise ValueError(
           'Variable expansion in this context permits str and int ' + \
             'only, found ' + cond_expr_expanded.__class__.__name__)
@@ -1142,7 +1160,7 @@
   # Any keys with plain string values in the_dict become automatic variables.
   # The variable name is the key name with a "_" character prepended.
   for key, value in the_dict.items():
-    if type(value) in (str, int, list):
+    if isinstance(value, _str_int_list_types):
       variables['_' + key] = value
 
 
@@ -1155,7 +1173,7 @@
   # (it could be a list or it could be parentless because it is a root dict),
   # the_dict_key will be None.
   for key, value in the_dict.get('variables', {}).items():
-    if type(value) not in (str, int, list):
+    if not isinstance(value, _str_int_list_types):
       continue
 
     if key.endswith('%'):
@@ -1208,9 +1226,9 @@
 
   for key, value in the_dict.items():
     # Skip "variables", which was already processed if present.
-    if key != 'variables' and type(value) is str:
+    if key != 'variables' and isinstance(value, _str_types):
       expanded = ExpandVariables(value, phase, variables, build_file)
-      if type(expanded) not in (str, int):
+      if not isinstance(expanded, _str_int_types):
         raise ValueError(
               'Variable expansion in this context permits str and int ' + \
               'only, found ' + expanded.__class__.__name__ + ' for ' + key)
@@ -1267,7 +1285,7 @@
   for key, value in the_dict.items():
     # Skip "variables" and string values, which were already processed if
     # present.
-    if key == 'variables' or type(value) is str:
+    if key == 'variables' or isinstance(value, _str_types):
       continue
     if type(value) is dict:
       # Pass a copy of the variables dict so that subdicts can't influence
@@ -1281,7 +1299,7 @@
       # copy is necessary here.
       ProcessVariablesAndConditionsInList(value, phase, variables,
                                           build_file)
-    elif type(value) is not int:
+    elif not isinstance(value, _int_types):
       raise TypeError('Unknown type ' + value.__class__.__name__ + \
                       ' for ' + key)
 
@@ -1298,9 +1316,9 @@
       ProcessVariablesAndConditionsInDict(item, phase, variables, build_file)
     elif type(item) is list:
       ProcessVariablesAndConditionsInList(item, phase, variables, build_file)
-    elif type(item) is str:
+    elif isinstance(item, _str_types):
       expanded = ExpandVariables(item, phase, variables, build_file)
-      if type(expanded) in (str, int):
+      if isinstance(expanded, _str_int_types):
         the_list[index] = expanded
       elif type(expanded) is list:
         the_list[index:index+1] = expanded
@@ -1314,7 +1332,7 @@
               'Variable expansion in this context permits strings and ' + \
               'lists only, found ' + expanded.__class__.__name__ + ' at ' + \
               index)
-    elif type(item) is not int:
+    elif not isinstance(item, _int_types):
       raise TypeError('Unknown type ' + item.__class__.__name__ + \
                       ' at index ' + index)
     index = index + 1
@@ -2049,14 +2067,14 @@
   hashable_to_set = set(x for x in to if is_hashable(x))
   for item in fro:
     singleton = False
-    if type(item) in (str, int):
+    if isinstance(item, _str_int_types):
       # The cheap and easy case.
       if is_paths:
         to_item = MakePathRelative(to_file, fro_file, item)
       else:
         to_item = item
 
-      if not (type(item) is str and item.startswith('-')):
+      if not (isinstance(item, _str_types) and item.startswith('-')):
         # Any string that doesn't begin with a "-" is a singleton - it can
         # only appear once in a list, to be enforced by the list merge append
         # or prepend.
@@ -2113,8 +2131,8 @@
     # modified.
     if k in to:
       bad_merge = False
-      if type(v) in (str, int):
-        if type(to[k]) not in (str, int):
+      if isinstance(v, _str_int_types):
+        if not isinstance(to[k], _str_int_types):
           bad_merge = True
       elif type(v) is not type(to[k]):
         bad_merge = True
@@ -2124,7 +2142,7 @@
             'Attempt to merge dict value of type ' + v.__class__.__name__ + \
             ' into incompatible type ' + to[k].__class__.__name__ + \
             ' for key ' + k)
-    if type(v) in (str, int):
+    if isinstance(v, _str_int_types):
       # Overwrite the existing value, if any.  Cheap and easy.
       is_path = IsPathSection(k)
       if is_path:
@@ -2599,7 +2617,7 @@
                    "must be a list." %
                    (target_name, build_file))
   working_directory = run_as.get('working_directory')
-  if working_directory and type(working_directory) is not str:
+  if working_directory and not isinstance(working_directory, _str_types):
     raise GypError("The 'working_directory' for 'run_as' in target %s "
                    "in file %s should be a string." %
                    (target_name, build_file))
@@ -2634,7 +2652,7 @@
   # Use items instead of iteritems because there's no need to try to look at
   # reinserted keys and their associated values.
   for k, v in the_dict.items():
-    if type(v) is int:
+    if isinstance(v, _int_types):
       v = str(v)
       the_dict[k] = v
     elif type(v) is dict:
@@ -2642,7 +2660,7 @@
     elif type(v) is list:
       TurnIntIntoStrInList(v)
 
-    if type(k) is int:
+    if isinstance(k, _int_types):
       del the_dict[k]
       the_dict[str(k)] = v
 
@@ -2651,7 +2669,7 @@
   """Given list the_list, recursively converts all integers into strings.
   """
   for index, item in enumerate(the_list):
-    if type(item) is int:
+    if isinstance(item, _int_types):
       the_list[index] = str(item)
     elif type(item) is dict:
       TurnIntIntoStrInDict(item)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylib/gyp/mac_tool.py new/pylib/gyp/mac_tool.py
--- old/pylib/gyp/mac_tool.py   2019-05-30 09:52:31.000000000 +0200
+++ new/pylib/gyp/mac_tool.py   2019-10-31 18:54:02.000000000 +0100
@@ -113,13 +113,14 @@
       raise
     current_section_header = None
     for line in stdout.splitlines():
-      if ibtool_section_re.match(line):
-        current_section_header = line
-      elif not ibtool_re.match(line):
+      line_decoded = line.decode('utf-8')
+      if ibtool_section_re.match(line_decoded):
+        current_section_header = line_decoded
+      elif not ibtool_re.match(line_decoded):
         if current_section_header:
           print(current_section_header)
           current_section_header = None
-        print(line)
+        print(line_decoded)
     return 0
 
   def _ConvertToBinary(self, dest):
@@ -270,8 +271,9 @@
     libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE, env=env)
     _, err = libtoolout.communicate()
     for line in err.splitlines():
-      if not libtool_re.match(line) and not libtool_re5.match(line):
-        print(line, file=sys.stderr)
+      line_decoded = line.decode('utf-8')
+      if not libtool_re.match(line_decoded) and not 
libtool_re5.match(line_decoded):
+        print(line_decoded, file=sys.stderr)
     # Unconditionally touch the output .a file on the command line if present
     # and the command succeeded. A bit hacky.
     if not libtoolout.returncode:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylib/gyp/ninja_syntax.py 
new/pylib/gyp/ninja_syntax.py
--- old/pylib/gyp/ninja_syntax.py       2019-05-30 09:52:31.000000000 +0200
+++ new/pylib/gyp/ninja_syntax.py       2019-10-31 18:54:02.000000000 +0100
@@ -149,6 +149,14 @@
             return []
         if isinstance(input, list):
             return input
+
+        # map is not a class in Python 2
+        try:
+            if isinstance(input, map):
+                return list(input)
+        except TypeError:
+            pass
+
         return [input]
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylib/gyp/xcode_emulation.py 
new/pylib/gyp/xcode_emulation.py
--- old/pylib/gyp/xcode_emulation.py    2019-05-30 09:52:31.000000000 +0200
+++ new/pylib/gyp/xcode_emulation.py    2019-10-31 18:54:02.000000000 +0100
@@ -526,7 +526,7 @@
       XcodeSettings._sdk_path_cache[sdk_root] = sdk_path
       if sdk_root:
         XcodeSettings._sdk_root_cache[sdk_path] = sdk_root
-    return XcodeSettings._sdk_path_cache[sdk_root].decode()
+    return XcodeSettings._sdk_path_cache[sdk_root]
 
   def _AppendPlatformVersionMinFlags(self, lst):
     self._Appendf(lst, 'MACOSX_DEPLOYMENT_TARGET', '-mmacosx-version-min=%s')
@@ -926,7 +926,7 @@
       # extensions and provide loader and main function.
       # These flags reflect the compilation options used by xcode to compile
       # extensions.
-      if XcodeVersion() < '0900':
+      if XcodeVersion()[0] < '0900':
         ldflags.append('-lpkstart')
         ldflags.append(sdk_root +
             '/System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit')
@@ -1133,8 +1133,9 @@
       output = subprocess.check_output(
           ['security', 'find-identity', '-p', 'codesigning', '-v'])
       for line in output.splitlines():
-        if identity in line:
-          fingerprint = line.split()[1]
+        line_decoded = line.decode('utf-8')
+        if identity in line_decoded:
+          fingerprint = line_decoded.split()[1]
           cache = XcodeSettings._codesigning_key_cache
           assert identity not in cache or fingerprint == cache[identity], (
               "Multiple codesigning fingerprints for identity: %s" % identity)
@@ -1413,7 +1414,7 @@
   version = version_list[0]
   build = version_list[-1]
   # Be careful to convert "4.2" to "0420":
-  version = version.split()[-1].decode().replace('.', '')
+  version = version.split()[-1].replace('.', '')
   version = (version + '0' * (3 - len(version))).zfill(4)
   if build:
     build = build.split()[-1]
@@ -1452,7 +1453,7 @@
   if job.returncode != 0:
     sys.stderr.write(out + b'\n')
     raise GypError('Error %d running %s' % (job.returncode, cmdlist[0]))
-  return out.rstrip(b'\n')
+  return out.rstrip(b'\n').decode('utf-8')
 
 
 def MergeGlobalXcodeSettingsToSpec(global_dict, spec):
@@ -1660,7 +1661,7 @@
   install_name_base = xcode_settings.GetInstallNameBase()
   if install_name_base:
     env['DYLIB_INSTALL_NAME_BASE'] = install_name_base
-  if XcodeVersion() >= '0500' and not env.get('SDKROOT'):
+  if XcodeVersion()[0] >= '0500' and not env.get('SDKROOT'):
     sdk_root = xcode_settings._SdkRoot(configuration)
     if not sdk_root:
       sdk_root = xcode_settings._XcodeSdkPath('')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylib/gyp/xcodeproj_file.py 
new/pylib/gyp/xcodeproj_file.py
--- old/pylib/gyp/xcodeproj_file.py     2019-05-30 09:52:31.000000000 +0200
+++ new/pylib/gyp/xcodeproj_file.py     2019-10-31 18:54:02.000000000 +0100
@@ -137,6 +137,7 @@
 a project file is output.
 """
 
+import functools
 import gyp.common
 import posixpath
 import re
@@ -430,7 +431,7 @@
       """
 
       hash.update(struct.pack('>i', len(data)))
-      hash.update(data)
+      hash.update(data.encode('utf-8'))
 
     if seed_hash is None:
       seed_hash = _new_sha1()
@@ -1417,7 +1418,8 @@
 
   def SortGroup(self):
     self._properties['children'] = \
-        sorted(self._properties['children'], cmp=lambda x,y: x.Compare(y))
+        sorted(self._properties['children'],
+               key=functools.cmp_to_key(XCHierarchicalElement.Compare))
 
     # Recurse.
     for child in self._properties['children']:
@@ -1531,6 +1533,7 @@
         'xcdatamodeld':'wrapper.xcdatamodeld',
         'xib':         'file.xib',
         'y':           'sourcecode.yacc',
+        'tbd':         'sourcecode.text-based-dylib-definition',
       }
 
       prop_map = {
@@ -2721,7 +2724,7 @@
     # according to their defined order.
     self._properties['mainGroup']._properties['children'] = \
         sorted(self._properties['mainGroup']._properties['children'],
-               cmp=lambda x,y: x.CompareRootGroup(y))
+               
key=functools.cmp_to_key(XCHierarchicalElement.CompareRootGroup))
 
     # Sort everything else by putting group before files, and going
     # alphabetically by name within sections of groups and files.  SortGroup
@@ -2812,9 +2815,8 @@
 
       # Xcode seems to sort this list case-insensitively
       self._properties['projectReferences'] = \
-          sorted(self._properties['projectReferences'], cmp=lambda x,y:
-                 cmp(x['ProjectRef'].Name().lower(),
-                     y['ProjectRef'].Name().lower()))
+          sorted(self._properties['projectReferences'],
+                 key=lambda x: x['ProjectRef'].Name().lower())
     else:
       # The link already exists.  Pull out the relevnt data.
       project_ref_dict = self._other_pbxprojects[other_pbxproject]
@@ -2911,19 +2913,6 @@
     # same order that the targets are sorted in the remote project file.  This
     # is the sort order used by Xcode.
 
-    def CompareProducts(x, y, remote_products):
-      # x and y are PBXReferenceProxy objects.  Go through their associated
-      # PBXContainerItem to get the remote PBXFileReference, which will be
-      # present in the remote_products list.
-      x_remote = x._properties['remoteRef']._properties['remoteGlobalIDString']
-      y_remote = y._properties['remoteRef']._properties['remoteGlobalIDString']
-      x_index = remote_products.index(x_remote)
-      y_index = remote_products.index(y_remote)
-
-      # Use the order of each remote PBXFileReference in remote_products to
-      # determine the sort order.
-      return cmp(x_index, y_index)
-
     for other_pbxproject, ref_dict in self._other_pbxprojects.items():
       # Build up a list of products in the remote project file, ordered the
       # same as the targets that produce them.
@@ -2938,7 +2927,7 @@
       product_group = ref_dict['ProductGroup']
       product_group._properties['children'] = sorted(
           product_group._properties['children'],
-          cmp=lambda x, y, rp=remote_products: CompareProducts(x, y, rp))
+          key=lambda x: 
remote_products.index(x._properties['remoteRef']._properties['remoteGlobalIDString']))
 
 
 class XCProjectFile(XCObject):
@@ -2969,8 +2958,7 @@
       self._XCPrint(file, 0, '{ ')
     else:
       self._XCPrint(file, 0, '{\n')
-    for property, value in sorted(self._properties.iteritems(),
-                                  cmp=lambda x, y: cmp(x, y)):
+    for property, value in sorted(self._properties.items()):
       if property == 'objects':
         self._PrintObjects(file)
       else:
@@ -2997,7 +2985,7 @@
       self._XCPrint(file, 0, '\n')
       self._XCPrint(file, 0, '/* Begin ' + class_name + ' section */\n')
       for object in sorted(objects_by_class[class_name],
-                           cmp=lambda x, y: cmp(x.id, y.id)):
+                           key=lambda x: x.id):
         object.Print(file)
       self._XCPrint(file, 0, '/* End ' + class_name + ' section */\n')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/lib/TestGyp.py new/test/lib/TestGyp.py
--- old/test/lib/TestGyp.py     2019-05-30 09:52:31.000000000 +0200
+++ new/test/lib/TestGyp.py     2019-10-31 18:54:02.000000000 +0100
@@ -573,7 +573,7 @@
       message_target = 'all'
     else:
       message_target = target
-    kw['stdout'] = "make: Nothing to be done for `%s'.\n" % message_target
+    kw['stdout'] = "make: Nothing to be done for '%s'.\n" % message_target
     return self.build(gyp_file, target, **kw)
   def run_built_executable(self, name, *args, **kw):
     """
@@ -1067,7 +1067,7 @@
                             "PhaseScriptExecution 
/\\S+/Script-[0-9A-F]+\\.sh\n"
                             "    cd /\\S+\n"
                             "    /bin/sh -c /\\S+/Script-[0-9A-F]+\\.sh\n"
-                            "(make: Nothing to be done for `all'\\.\n)?")
+                            "(make: Nothing to be done for .all.\\.\n)?")
 
   strip_up_to_date_expressions = [
     # Various actions or rules can run even when the overall build target

++++++ libtgvoip.zip ++++++
Binary files /var/tmp/diff_new_pack.TWFsFF/_old and 
/var/tmp/diff_new_pack.TWFsFF/_new differ

++++++ linux-syscall-support-refs-heads-master.tar.gz ++++++

++++++ lz4-dev.zip ++++++
Binary files /var/tmp/diff_new_pack.TWFsFF/_old and 
/var/tmp/diff_new_pack.TWFsFF/_new differ

++++++ patch.py ++++++
--- /var/tmp/diff_new_pack.TWFsFF/_old  2019-11-26 16:52:50.144239079 +0100
+++ /var/tmp/diff_new_pack.TWFsFF/_new  2019-11-26 16:52:50.144239079 +0100
@@ -93,7 +93,6 @@
     return json.loads(read_file_to_proper_json(open(filename)))
 
 def save_json(jsonobj, filename):
-    # pass
     j = transform_back(jsonobj)
     # backup = filename + ".orig"
     # copyfile(filename, backup)
@@ -118,51 +117,20 @@
     child.append("'zlib'")
     child.append("'minizip'")
     child.append("'openssl'")
-    child = 
jsonobj["'conditions'"][0][1]["'variables'"]["'linux_path_opus_include%'"]
-    child = "'/usr/include/opus'"
-    child = 
jsonobj["'conditions'"][0][1]["'variables'"]["'linux_path_breakpad%'"]
-    child = "'<(libs_loc)/breakpad'"
-    child = jsonobj["'conditions'"][0][1]["'include_dirs'"]
-    child.remove("'/usr/local/include'")
-    child.remove("'<(linux_path_ffmpeg)/include'")
-    child.remove("'<(linux_path_openal)/include'")
-    child.append("'/usr/include/openssl'")
-    child.append("'/usr/include'")
-    child = jsonobj["'conditions'"][0][1]["'library_dirs'"]
-    child.remove("'/usr/local/lib'")
-    child.remove("'<(linux_path_ffmpeg)/lib'")
-    child.remove("'<(linux_path_openal)/lib'")
-    child.remove("'<(linux_path_va)/lib'")
-    child.remove("'<(linux_path_vdpau)/lib'")
-    child.append("'/usr/lib64/'")
 
     child = jsonobj["'conditions'"][0][1]["'libraries'"]
-    child.remove("'breakpad_client'")
-    child.remove("'composeplatforminputcontextplugin'")
-    child.remove("'ibusplatforminputcontextplugin'")
-    child.remove("'fcitxplatforminputcontextplugin'")
-    child.remove("'himeplatforminputcontextplugin'")
-    child.remove("'nimfplatforminputcontextplugin'")
-    child.remove("'liblzma.a'")
-    child.remove("'libopenal.a'")
-    child.remove("'libavformat.a'")
-    child.remove("'libavcodec.a'")
-    child.remove("'libswresample.a'")
-    child.remove("'libswscale.a'")
-    child.remove("'libavutil.a'")
-    child.remove("'libopus.a'")
-    child.remove("'libva-x11.a'")
-    child.remove("'libva-drm.a'")
-    child.remove("'libva.a'")
-    child.remove("'libvdpau.a'")
-    child.remove("'libdrm.a'")
-    child.remove("'libz.a'")
-    child.append("'libbreakpad_client.a'")
-    child.append("'<!(pkg-config 2> /dev/null --libs <@(pkgconfig_libs))'")
+    child.remove("'-lcomposeplatforminputcontextplugin'")
+    child.remove("'-lfcitxplatforminputcontextplugin'")
+    child.remove("'-lhimeplatforminputcontextplugin'")
+    child.remove("'-libusplatforminputcontextplugin'")
+    child.remove("'-lnimfplatforminputcontextplugin'")
+
     child = jsonobj["'conditions'"][0][1]["'cflags_cc'"]
     child.append("'<!(pkg-config --cflags <@(pkgconfig_libs))'")
-    child = jsonobj["'conditions'"][0][1]["'conditions'"][1][1]["'cflags_cc'"]
-    child.remove("'<!(pkg-config 2> /dev/null --cflags dee-1.0)'")
+    
+    child = jsonobj["'conditions'"][0][1]["'ldflags'"]
+    child.remove("'-Wl,-Bstatic'")
+    
     return json.dumps(jsonobj)
 
 def process_qt(jsonobj):
@@ -214,6 +182,7 @@
 
     child = jsonobj["'include_dirs'"]
     del child[:]
+    child.append("'/usr/include/ffmpeg'")
     child.append("'/usr/include/qt5'")
     child.append("'/usr/include/qt5/QtCore'")
     child.append("'/usr/include/qt5/QtGui'")
@@ -269,7 +238,7 @@
     child.append("'TDESKTOP_DISABLE_AUTOUPDATE'")
     child.append("'TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME'")
     child.append("'TDESKTOP_DISABLE_UNITY_INTEGRATION'")
-    child.append("'TDESKTOP_DISABLE_GTK_INTEGRATION'")
+    # child.append("'TDESKTOP_DISABLE_GTK_INTEGRATION'")
     child.append("'TDESKTOP_DISABLE_OPENAL_EFFECTS'")
     child.remove("'AL_LIBTYPE_STATIC'")
     child = jsonobj["'targets'"][0]["'include_dirs'"]
@@ -284,14 +253,13 @@
     child.remove("'<(sp_media_key_tap_loc)'")
     child.append("'<(libs_loc)/breakpad/include/breakpad'")
     child.append("'/usr/include/minizip'")
+    child.append("'/usr/include/ffmpeg'")
     return json.dumps(jsonobj)
 
-def process_moc(jsonobj):
-    jsonobj["'rules'"][0]["'action'"][0] = "'/usr/bin/moc-qt5'"
-    return json.dumps(jsonobj)
-
-def process_rcc(jsonobj):
-    jsonobj["'rules'"][0]["'action'"][0] = "'/usr/bin/rcc-qt5'"
+def process_libffmpeg(jsonobj):
+    include_dirs = jsonobj["'targets'"][0]["'include_dirs'"]
+    include_dirs.remove("'<(libs_loc)/ffmpeg'")
+    include_dirs.append("'/usr/include/ffmpeg'")
     return json.dumps(jsonobj)
 
 def process(filename, op):
@@ -299,13 +267,14 @@
     json = op(json)
     save_json(json, filename)
 
-tl_path = './Telegram/gyp/telegram_linux.gypi'
-settings_path = './Telegram/gyp/settings_linux.gypi'
-qt_path = './Telegram/gyp/qt.gypi'
-tg_path = './Telegram/gyp/Telegram.gyp'
-moc_path = './Telegram/gyp/qt_moc.gypi'
-rcc_path = './Telegram/gyp/qt_rcc.gypi'
-tg_srcs = './Telegram/gyp/telegram_sources.txt'
+tl_path = './Telegram/gyp/telegram/linux.gypi'
+tg_srcs = './Telegram/gyp/telegram/sources.txt'
+settings_path = './Telegram/gyp/common/linux.gypi'
+tg_path = './Telegram/gyp/telegram/telegram.gypi'
+qt_path = './Telegram/gyp/modules/qt.gypi'
+moc_path = './Telegram/gyp/modules/qt_moc.gypi'
+rcc_path = './Telegram/gyp/modules/qt_rcc.gypi'
+libffmpeg_path="./Telegram/gyp/lib_ffmpeg.gyp"
 
 print("Patching %s ..." % tl_path)
 process(tl_path, process_telegram_linux)
@@ -313,11 +282,9 @@
 process(settings_path, process_settings_linux)
 print("Patching %s ..." % qt_path)
 process(qt_path, process_qt)
-print("Patching %s ..." % moc_path)
-process(moc_path, process_moc)
-print("Patching %s ..." % rcc_path)
-process(rcc_path, process_rcc)
 print("Patching %s ..." % tg_path)
 process(tg_path, process_telegram)
+print("Patching %s ..." % libffmpeg_path)
+process(libffmpeg_path, process_libffmpeg)
 
 print("Patching complete!")

++++++ qt_functions.cpp ++++++
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file contains some parts of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/

#include <private/qtextengine_p.h>
#include <QStringList>
#include <QString>
#include <QFont>
#include <QTextCharFormat>
#include <QChar>

/* Debian maintainer: this function is taken from qfiledialog.cpp */
/*
    Makes a list of filters from ;;-separated text.
    Used by the mac and windows implementations
*/
QStringList qt_make_filter_list(const QString &filter)
{
    QString f(filter);

    if (f.isEmpty())
        return QStringList();

    QString sep(QLatin1String(";;"));
    int i = f.indexOf(sep, 0);
    if (i == -1) {
        if (f.indexOf(QLatin1Char('\n'), 0) != -1) {
            sep = QLatin1Char('\n');
            i = f.indexOf(sep, 0);
        }
    }

    return f.split(sep);
}

/* Debian maintainer: this constructor is taken from qtextengine.cpp for 
TextPainter::drawLine */
QTextItemInt::QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar 
*chars_, int numChars, QFontEngine *fe, const QTextCharFormat &format)
    : flags(0), justified(false), underlineStyle(QTextCharFormat::NoUnderline), 
charFormat(format),
      num_chars(numChars), chars(chars_), logClusters(0), f(font),  glyphs(g), 
fontEngine(fe)
{
}

/* Debian maintainer: this method is also taken from qtextengine.cpp */
// Fix up flags and underlineStyle with given info
void QTextItemInt::initWithScriptItem(const QScriptItem &si)
{
    // explicitly initialize flags so that initFontAttributes can be called
    // multiple times on the same TextItem
    flags = 0;
    if (si.analysis.bidiLevel %2)
        flags |= QTextItem::RightToLeft;
    ascent = si.ascent;
    descent = si.descent;

    if (charFormat.hasProperty(QTextFormat::TextUnderlineStyle)) {
        underlineStyle = charFormat.underlineStyle();
    } else if (charFormat.boolProperty(QTextFormat::FontUnderline)
               || f->d->underline) {
        underlineStyle = QTextCharFormat::SingleUnderline;
    }

    // compat
    if (underlineStyle == QTextCharFormat::SingleUnderline)
        flags |= QTextItem::Underline;

    if (f->d->overline || charFormat.fontOverline())
        flags |= QTextItem::Overline;
    if (f->d->strikeOut || charFormat.fontStrikeOut())
        flags |= QTextItem::StrikeOut;
}
++++++ range-v3-master.zip ++++++
Binary files /var/tmp/diff_new_pack.TWFsFF/_old and 
/var/tmp/diff_new_pack.TWFsFF/_new differ


++++++ tdesktop.patch ++++++
--- /var/tmp/diff_new_pack.TWFsFF/_old  2019-11-26 16:52:50.184239065 +0100
+++ /var/tmp/diff_new_pack.TWFsFF/_new  2019-11-26 16:52:50.188239063 +0100
@@ -1,120 +1,43 @@
-Index: tdesktop-1.2.6/Telegram/Resources/qrc/telegram_linux.qrc
-===================================================================
---- tdesktop-1.2.6.orig/Telegram/Resources/qrc/telegram_linux.qrc
-+++ tdesktop-1.2.6/Telegram/Resources/qrc/telegram_linux.qrc
-@@ -1,5 +1,4 @@
+diff --git a/Telegram/Resources/qrc/linux.qrc 
b/Telegram/Resources/qrc/linux.qrc
+index 164e8d4f2..12319be14 100644
+--- a/Telegram/Resources/qrc/linux.qrc
++++ b/Telegram/Resources/qrc/linux.qrc
+@@ -1,6 +1,5 @@
  <RCC>
    <qresource prefix="/qt">
 -    <file alias="etc/qt.conf">../etc/qt_linux.conf</file>
    </qresource>
    <qresource prefix="/fc">
-Index: tdesktop-1.2.6/Telegram/SourceFiles/qt_functions.cpp
-===================================================================
---- /dev/null
-+++ tdesktop-1.2.6/Telegram/SourceFiles/qt_functions.cpp
-@@ -0,0 +1,97 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2015 The Qt Company Ltd.
-+** Contact: http://www.qt.io/licensing/
-+**
-+** This file contains some parts of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL21$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and The Qt Company. For licensing terms
-+** and conditions see http://www.qt.io/terms-conditions. For further
-+** information use the contact form at http://www.qt.io/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 or version 3 as published by the Free
-+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-+** following information to ensure the GNU Lesser General Public License
-+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** As a special exception, The Qt Company gives you certain additional
-+** rights. These rights are described in The Qt Company LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+/* TODO: find a dynamic library with these symbols. */
-+
-+/* Debian maintainer: this function is taken from qfiledialog.cpp */
-+/*
-+    Makes a list of filters from ;;-separated text.
-+    Used by the mac and windows implementations
-+*/
-+
-+#include <private/qfontengine_p.h>
-+
-+QStringList qt_make_filter_list(const QString &filter)
-+{
-+    QString f(filter);
-+
-+    if (f.isEmpty())
-+        return QStringList();
-+
-+    QString sep(QLatin1String(";;"));
-+    int i = f.indexOf(sep, 0);
-+    if (i == -1) {
-+        if (f.indexOf(QLatin1Char('\n'), 0) != -1) {
-+            sep = QLatin1Char('\n');
-+            i = f.indexOf(sep, 0);
-+        }
-+    }
-+
-+    return f.split(sep);
-+}
-+
-+/* Debian maintainer: this constructor is taken from qtextengine.cpp for 
TextPainter::drawLine */
-+QTextItemInt::QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar 
*chars_, int numChars, QFontEngine *fe, const QTextCharFormat &format)
-+    : flags(0), justified(false), 
underlineStyle(QTextCharFormat::NoUnderline), charFormat(format),
-+      num_chars(numChars), chars(chars_), logClusters(0), f(font),  
glyphs(g), fontEngine(fe)
-+{
-+}
-+
-+/* Debian maintainer: this method is also taken from qtextengine.cpp */
-+// Fix up flags and underlineStyle with given info
-+void QTextItemInt::initWithScriptItem(const QScriptItem &si)
-+{
-+    // explicitly initialize flags so that initFontAttributes can be called
-+    // multiple times on the same TextItem
-+    flags = 0;
-+    if (si.analysis.bidiLevel %2)
-+        flags |= QTextItem::RightToLeft;
-+    ascent = si.ascent;
-+    descent = si.descent;
-+
-+    if (charFormat.hasProperty(QTextFormat::TextUnderlineStyle)) {
-+        underlineStyle = charFormat.underlineStyle();
-+    } else if (charFormat.boolProperty(QTextFormat::FontUnderline)
-+               || f->d->underline) {
-+        underlineStyle = QTextCharFormat::SingleUnderline;
-+    }
-+
-+    // compat
-+    if (underlineStyle == QTextCharFormat::SingleUnderline)
-+        flags |= QTextItem::Underline;
+     <file alias="fc-custom.conf">../fc-custom.conf</file>
+diff --git a/Telegram/SourceFiles/core/launcher.cpp 
b/Telegram/SourceFiles/core/launcher.cpp
+index 3ba28309b..e280c44fa 100644
+--- a/Telegram/SourceFiles/core/launcher.cpp
++++ b/Telegram/SourceFiles/core/launcher.cpp
+@@ -272,6 +272,19 @@ int Launcher::exec() {
+       Logs::start(this); // must be started before Platform is started
+       Platform::start(); // must be started before Sandbox is created
+ 
++      // I don't know why path is not in QT_PLUGIN_PATH by default
++      QCoreApplication::addLibraryPath("/usr/lib64/qt5/plugins");
++      // without this Telegram doesn't start on Ubuntu 17.04 due to GTK errors
++      setenv("QT_STYLE_OVERRIDE", "qwerty", false);
++      // Telegram doesn't start when extraordinary theme is set, see 
launchpad.net/bugs/1680943
++      unsetenv("QT_QPA_PLATFORMTHEME");
++
++   // unset QT screen scale related envvars
++      unsetenv("QT_SCREEN_SCALE_FACTORS");
++      unsetenv("QT_AUTO_SCREEN_SCALE_FACTOR");
++      unsetenv("QT_SCALE_FACTOR");
++      unsetenv("QT_DEVICE_PIXEL_RATIO");
 +
-+    if (f->d->overline || charFormat.fontOverline())
-+        flags |= QTextItem::Overline;
-+    if (f->d->strikeOut || charFormat.fontStrikeOut())
-+        flags |= QTextItem::StrikeOut;
-+}
-Index: tdesktop-1.2.6/Telegram/SourceFiles/qt_static_plugins.cpp
-===================================================================
---- tdesktop-1.2.6.orig/Telegram/SourceFiles/qt_static_plugins.cpp
-+++ tdesktop-1.2.6/Telegram/SourceFiles/qt_static_plugins.cpp
-@@ -28,14 +28,4 @@ Q_IMPORT_PLUGIN(QWebpPlugin)
+       auto result = executeApplication();
+ 
+       DEBUG_LOG(("Telegram finished, result: %1").arg(result));
+diff --git a/Telegram/SourceFiles/qt_static_plugins.cpp 
b/Telegram/SourceFiles/qt_static_plugins.cpp
+index a757d085f..122ff0f5d 100644
+--- a/Telegram/SourceFiles/qt_static_plugins.cpp
++++ b/Telegram/SourceFiles/qt_static_plugins.cpp
+@@ -15,14 +15,4 @@ Q_IMPORT_PLUGIN(QWebpPlugin)
  Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)
  Q_IMPORT_PLUGIN(QGenericEnginePlugin)
  #elif defined Q_OS_LINUX // Q_OS_WIN | Q_OS_MAC
@@ -129,45 +52,58 @@
 -Q_IMPORT_PLUGIN(QHimePlatformInputContextPlugin)
 -Q_IMPORT_PLUGIN(NimfInputContextPlugin)
  #endif // Q_OS_WIN | Q_OS_MAC | Q_OS_LINUX
-Index: tdesktop-1.2.6/Telegram/gyp/PrecompiledHeader.cmake
-===================================================================
---- tdesktop-1.2.6.orig/Telegram/gyp/PrecompiledHeader.cmake
-+++ tdesktop-1.2.6/Telegram/gyp/PrecompiledHeader.cmake
-@@ -112,7 +112,7 @@ function(add_precompiled_header _target _input)
+diff --git a/Telegram/SourceFiles/ui/text/text.cpp 
b/Telegram/SourceFiles/ui/text/text.cpp
+index 7891995be..eaeb52b35 100644
+--- a/Telegram/SourceFiles/ui/text/text.cpp
++++ b/Telegram/SourceFiles/ui/text/text.cpp
+@@ -1968,11 +1968,11 @@ private:
+               if (item == -1)
+                       return;
+ 
+-#ifdef OS_MAC_OLD
++#if defined(OS_MAC_OLD) || QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
+               auto end = _e->findItem(line.from + line.length - 1);
+-#else // OS_MAC_OLD
++#else
+               auto end = _e->findItem(line.from + line.length - 1, item);
+-#endif // OS_MAC_OLD
++#endif
+ 
+               auto blockIndex = _lineStartBlock;
+               auto currentBlock = _t->_blocks[blockIndex].get();
+diff --git a/Telegram/SourceFiles/ui/text/text_block.cpp 
b/Telegram/SourceFiles/ui/text/text_block.cpp
+index 29173c5c2..b47a53d76 100644
+--- a/Telegram/SourceFiles/ui/text/text_block.cpp
++++ b/Telegram/SourceFiles/ui/text/text_block.cpp
+@@ -334,6 +334,9 @@ TextBlock::TextBlock(const style::font &font, const 
QString &str, QFixed minResi
+ 
+               QStackTextEngine engine(part, blockFont->f);
+               BlockParser parser(&engine, this, minResizeWidth, _from, part);
++              QTextLayout layout(part, blockFont->f);
++              layout.beginLayout();
++              layout.createLine();
+       }
+ }
+ 
+diff --git a/Telegram/gyp/PrecompiledHeader.cmake 
b/Telegram/gyp/PrecompiledHeader.cmake
+index dfe1193be..0b13fc098 100644
+--- a/Telegram/gyp/PrecompiledHeader.cmake
++++ b/Telegram/gyp/PrecompiledHeader.cmake
+@@ -114,7 +114,7 @@ function(add_precompiled_header _target _input)
        set(_compiler_FLAGS "@${_pch_c_flags_file}")
        add_custom_command(
          OUTPUT "${_output_c}"
 -        COMMAND "${CMAKE_C_COMPILER}" ${_compiler_FLAGS} -x c-header -o 
"${_output_c}" -c "${_pchfile}"
-+        COMMAND "${CMAKE_C_COMPILER}" "$(C_DEFINES)" "$(C_INCLUDES)" 
"$(C_FLAGS)" -x c-header -o "${_output_c}" -c "${_pchfile}"
++        COMMAND "${CMAKE_C_COMPILER}" ${_compiler_FLAGS} "$(C_DEFINES)" 
"$(C_INCLUDES)" "$(C_FLAGS)" -x c-header -o "${_output_c}" -c "${_pchfile}"
          DEPENDS "${_pchfile}" "${_pch_c_flags_file}"
          IMPLICIT_DEPENDS C "${_pch_header}"
          COMMENT "Precompiling ${_name} for ${_target} (C)")
-@@ -123,7 +123,7 @@ function(add_precompiled_header _target _input)
+@@ -125,7 +125,7 @@ function(add_precompiled_header _target _input)
        set(_compiler_FLAGS "@${_pch_cpp_flags_file}")
        add_custom_command(
          OUTPUT "${_output_cxx}"
 -        COMMAND "${CMAKE_CXX_COMPILER}" ${_compiler_FLAGS} -x c++-header -o 
"${_output_cxx}" -c "${_pchfile}"
-+        COMMAND "${CMAKE_CXX_COMPILER}" "$(CXX_DEFINES)" "$(CXX_INCLUDES)" 
"$(CXX_FLAGS)" -x c++-header -o "${_output_cxx}" -c "${_pchfile}"
++        COMMAND "${CMAKE_CXX_COMPILER}" ${_compiler_FLAGS} "$(CXX_DEFINES)" 
"$(CXX_INCLUDES)" "$(CXX_FLAGS)" -x c++-header -o "${_output_cxx}" -c 
"${_pchfile}"
          DEPENDS "${_pchfile}" "${_pch_cpp_flags_file}"
          IMPLICIT_DEPENDS CXX "${_pch_header}"
          COMMENT "Precompiling header ${_name} for ${_target} (C++)")
-Index: tdesktop-1.2.6/Telegram/gyp/telegram_sources.txt
-===================================================================
---- tdesktop-1.2.6.orig/Telegram/gyp/telegram_sources.txt
-+++ tdesktop-1.2.6/Telegram/gyp/telegram_sources.txt
-@@ -713,14 +713,7 @@
- <(emoji_suggestions_loc)/emoji_suggestions.cpp
- <(emoji_suggestions_loc)/emoji_suggestions.h
- 
--platforms: !win
--<(minizip_loc)/crypt.h
--<(minizip_loc)/ioapi.c
--<(minizip_loc)/ioapi.h
--<(minizip_loc)/zip.c
--<(minizip_loc)/zip.h
--<(minizip_loc)/unzip.c
--<(minizip_loc)/unzip.h
-+<(src_loc)/qt_functions.cpp
-
- platforms: win
- <(res_loc)/winrc/Telegram.rc

++++++ v1.8.9.tar.gz -> v1.8.15.tar.gz ++++++
/work/SRC/openSUSE:Factory/telegram-desktop/v1.8.9.tar.gz 
/work/SRC/openSUSE:Factory/.telegram-desktop.new.26869/v1.8.15.tar.gz differ: 
char 30, line 1

++++++ variant-master.zip ++++++
Binary files /var/tmp/diff_new_pack.TWFsFF/_old and 
/var/tmp/diff_new_pack.TWFsFF/_new differ

++++++ xxHash-master.zip ++++++
Binary files /var/tmp/diff_new_pack.TWFsFF/_old and 
/var/tmp/diff_new_pack.TWFsFF/_new differ


Reply via email to