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