From 3e6e4c093d1384ab3d22a29bcec26f9e27b3b9da60dcfe7f3fa43ffe0a2dacfc Mon Sep 17 00:00:00 2001 From: Marcel Kuehlhorn Date: Thu, 16 Jan 2020 10:02:40 +0000 Subject: [PATCH 1/3] Accepting request 764829 from home:nuklly - Upgrade to 1.9.3 * Videos in chats start playing automatically. * Resume playback from where you left off when watching long videos and listening to long audio tracks. * Control automatic playback for videos, GIFs and round video messages in Settings > Advanced > Automatic media download. * Enjoy system spell checker support on all modern systems. OBS-URL: https://build.opensuse.org/request/show/764829 OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=115 --- default-gtk2.patch => 0000-gtk2-default.patch | 0 0001-Dynamic-linking-system-libs.patch | 322 ++++++++++++++++++ 0002-Dynamic-linking-system-qt.patch | 165 +++++++++ 0004-gtk3.patch | 22 ++ 0005-Use-system-wide-fonts.patch | 64 ++++ ...sable-DemiBold-fallback-for-Semibold.patch | 25 ++ Catch2-master.zip | 3 - GSL-master.zip | 3 - breakpad-master.tar.gz | 3 - crl-master.zip | 3 - gyp-master.tar.gz | 3 - libtgvoip.zip | 3 - ...x-syscall-support-refs-heads-master.tar.gz | 3 - lz4-dev.zip | 3 - patch.py | 290 ---------------- qt_functions.cpp | 99 ------ range-v3-master.zip | 4 +- rlottie-master.zip | 3 - tdesktop-1.9.3-full.tar.gz | 3 + tdesktop.patch | 109 ------ telegram-desktop.changes | 11 + telegram-desktop.spec | 162 +++------ v1.8.15.tar.gz | 3 - variant-master.zip | 3 - xxHash-master.zip | 3 - 25 files changed, 654 insertions(+), 658 deletions(-) rename default-gtk2.patch => 0000-gtk2-default.patch (100%) create mode 100644 0001-Dynamic-linking-system-libs.patch create mode 100644 0002-Dynamic-linking-system-qt.patch create mode 100644 0004-gtk3.patch create mode 100644 0005-Use-system-wide-fonts.patch create mode 100644 0006-Revert-Disable-DemiBold-fallback-for-Semibold.patch delete mode 100644 Catch2-master.zip delete mode 100644 GSL-master.zip delete mode 100644 breakpad-master.tar.gz delete mode 100644 crl-master.zip delete mode 100644 gyp-master.tar.gz delete mode 100644 libtgvoip.zip delete mode 100644 linux-syscall-support-refs-heads-master.tar.gz delete mode 100644 lz4-dev.zip delete mode 100644 patch.py delete mode 100644 qt_functions.cpp delete mode 100644 rlottie-master.zip create mode 100644 tdesktop-1.9.3-full.tar.gz delete mode 100644 tdesktop.patch delete mode 100644 v1.8.15.tar.gz delete mode 100644 variant-master.zip delete mode 100644 xxHash-master.zip diff --git a/default-gtk2.patch b/0000-gtk2-default.patch similarity index 100% rename from default-gtk2.patch rename to 0000-gtk2-default.patch diff --git a/0001-Dynamic-linking-system-libs.patch b/0001-Dynamic-linking-system-libs.patch new file mode 100644 index 0000000..38f31ac --- /dev/null +++ b/0001-Dynamic-linking-system-libs.patch @@ -0,0 +1,322 @@ +From: John Zimmermann +--- a/cmake/external/crash_reports/CMakeLists.txt ++++ b/cmake/external/crash_reports/CMakeLists.txt +@@ -7,6 +7,7 @@ + add_library(external_crash_reports INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_crash_reports ALIAS external_crash_reports) + ++if(NOT DESKTOP_APP_DISABLE_CRASH_REPORTS) + if (WIN32 OR LINUX OR build_macstore) + add_subdirectory(breakpad) + target_link_libraries(external_crash_reports +@@ -20,3 +21,4 @@ + desktop-app::external_crashpad + ) + endif() ++endif() +--- a/cmake/external/ffmpeg/CMakeLists.txt ++++ b/cmake/external/ffmpeg/CMakeLists.txt +@@ -7,6 +7,18 @@ + add_library(external_ffmpeg INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_ffmpeg ALIAS external_ffmpeg) + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ find_package(PkgConfig REQUIRED) ++ pkg_check_modules(FFMPEG REQUIRED libavcodec libavformat libavutil libswresample libswscale) ++ target_link_libraries(external_ffmpeg ++ INTERFACE ++ ${FFMPEG_LIBRARIES} ++ ) ++ target_include_directories(external_ffmpeg SYSTEM ++ INTERFACE ++ ${FFMPEG_INCLUDE_DIRS} ++ ) ++else() + target_include_directories(external_ffmpeg SYSTEM + INTERFACE + ${libs_loc}/ffmpeg +@@ -36,3 +48,4 @@ + Xrender + ) + endif() ++endif() +--- a/cmake/external/openal/CMakeLists.txt ++++ b/cmake/external/openal/CMakeLists.txt +@@ -7,6 +7,21 @@ + add_library(external_openal INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_openal ALIAS external_openal) + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ find_package(OpenAL REQUIRED) ++ target_include_directories(external_openal SYSTEM ++ INTERFACE ++ ${OPENAL_INCLUDE_DIR} ++ ) ++ target_link_libraries(external_openal ++ INTERFACE ++ ${OPENAL_LIBRARY} ++ ) ++ target_compile_definitions(external_openal ++ INTERFACE ++ AL_ALEXT_PROTOTYPES ++ ) ++else() + if (WIN32) + target_include_directories(external_openal SYSTEM + INTERFACE +@@ -41,3 +56,4 @@ + AL_LIBTYPE_STATIC + AL_ALEXT_PROTOTYPES + ) ++endif() +--- a/cmake/external/openssl/CMakeLists.txt ++++ b/cmake/external/openssl/CMakeLists.txt +@@ -7,7 +7,13 @@ + add_library(external_openssl INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_openssl ALIAS external_openssl) + +-if (LINUX) ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ find_package(OpenSSL REQUIRED) ++ target_include_directories(external_openssl SYSTEM ++ INTERFACE ++ ${OPENSSL_INCLUDE_DIR} ++ ) ++elseif (LINUX) + target_include_directories(external_openssl SYSTEM + INTERFACE + /usr/local/desktop-app/openssl-1.1.1/include +@@ -24,6 +30,13 @@ + ) + endif() + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ target_link_libraries(external_openssl ++ INTERFACE ++ OpenSSL::Crypto ++ OpenSSL::SSL ++ ) ++else() + if (WIN32) + set(openssl_lib_ext lib) + set(openssl_lib_loc ${libs_loc}/openssl_1_1_1/out32$<$:.dbg>) +@@ -45,6 +58,7 @@ + ${openssl_lib_loc}/libssl.${openssl_lib_ext} + ${openssl_lib_loc}/libcrypto.${openssl_lib_ext} + ) ++endif() + + if (LINUX) + if (DESKTOP_APP_USE_GLIBC_WRAPS) +--- a/cmake/external/opus/CMakeLists.txt ++++ b/cmake/external/opus/CMakeLists.txt +@@ -7,6 +7,18 @@ + add_library(external_opus INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_opus ALIAS external_opus) + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ find_package(PkgConfig REQUIRED) ++ pkg_check_modules(OPUS REQUIRED opus) ++ target_include_directories(external_opus SYSTEM ++ INTERFACE ++ ${OPUS_INCLUDE_DIRS} ++ ) ++ target_link_libraries(external_opus ++ INTERFACE ++ ${OPUS_LIBRARIES} ++ ) ++else() + target_include_directories(external_opus SYSTEM + INTERFACE + ${libs_loc}/opus/include +@@ -43,3 +55,4 @@ + opus + ) + endif() ++endif() +--- a/cmake/external/qt/CMakeLists.txt ++++ b/cmake/external/qt/CMakeLists.txt +@@ -15,6 +15,36 @@ + endif() + endif() + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ get_target_property(QTCORE_INCLUDE_DIRS Qt5::Core INTERFACE_INCLUDE_DIRECTORIES) ++ list(GET QTCORE_INCLUDE_DIRS 0 QT_INCLUDE_DIR) ++ ++ foreach(__qt_module IN ITEMS QtCore QtGui) ++ list(APPEND QT_PRIVATE_INCLUDE_DIRS ++ ${QT_INCLUDE_DIR}/${__qt_module}/${Qt5_VERSION} ++ ${QT_INCLUDE_DIR}/${__qt_module}/${Qt5_VERSION}/${__qt_module} ++ ) ++ endforeach() ++ message(STATUS "Using Qt private include directories: ${QT_PRIVATE_INCLUDE_DIRS}") ++ target_include_directories(external_qt SYSTEM ++ INTERFACE ++ ${QT_PRIVATE_INCLUDE_DIRS} ++ ) ++ target_link_libraries(external_qt ++ INTERFACE ++ Qt5::DBus ++ Qt5::Network ++ Qt5::Widgets ++ desktop-app::external_zlib ++ xcb ++ X11 ++ X11-xcb ++ dbus-1 ++ dl ++ glib-2.0 ++ pthread ++ ) ++else() + target_include_directories(external_qt SYSTEM + INTERFACE + ${qt_loc}/include +@@ -215,3 +245,4 @@ + pthread + ) + endif() ++endif() +--- a/cmake/external/qt/package.cmake ++++ b/cmake/external/qt/package.cmake +@@ -4,6 +4,9 @@ + # For license and copyright information please follow this link: + # https://github.com/desktop-app/legal/blob/master/LEGAL + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ ++else() + if (NOT APPLE OR NOT build_osx) + set(qt_version 5.12.5) + else() +@@ -17,6 +20,7 @@ + endif() + + set(Qt5_DIR ${qt_loc}/lib/cmake/Qt5) ++endif() + + find_package(Qt5 COMPONENTS Core Gui Widgets Network REQUIRED) + +--- a/cmake/external/zlib/CMakeLists.txt ++++ b/cmake/external/zlib/CMakeLists.txt +@@ -7,6 +7,18 @@ + add_library(external_zlib INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_zlib ALIAS external_zlib) + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ find_package(ZLIB REQUIRED) ++ find_package(PkgConfig REQUIRED) ++ pkg_check_modules(MINIZIP REQUIRED minizip) ++ find_library(minizip_LIBRARY minizip) ++ target_link_libraries(external_zlib INTERFACE ZLIB::ZLIB ${minizip_LIBRARY}) ++ target_include_directories(external_zlib SYSTEM ++ INTERFACE ++ ${ZLIB_INCLUDE_DIR} ++ ${MINIZIP_INCLUDE_DIRS} ++ ) ++else() + if (NOT WIN32) + add_library(external_minizip STATIC) + init_target(external_minizip "(external)") +@@ -49,3 +61,4 @@ + else() + target_link_static_libraries(external_zlib INTERFACE z) + endif() ++endif() +--- a/cmake/init_target.cmake ++++ b/cmake/init_target.cmake +@@ -27,7 +27,7 @@ + endif() + target_link_libraries(${target_name} PUBLIC desktop-app::common_options) + set_target_properties(${target_name} PROPERTIES +- LINK_SEARCH_START_STATIC 1 ++ LINK_SEARCH_START_STATIC 0 + XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_WEAK YES + XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN YES + XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES +--- a/cmake/options_linux.cmake ++++ b/cmake/options_linux.cmake +@@ -25,6 +25,9 @@ + -Wno-stringop-overflow + -Wno-maybe-uninitialized + -Wno-error=class-memaccess ++ -Wno-error=deprecated-copy ++ -Wno-error=deprecated-declarations ++ -Wno-error=redundant-move + ) + target_link_options(common_options + INTERFACE +@@ -33,8 +36,5 @@ + if (build_linux32) + target_compile_options(common_options INTERFACE -g0) + target_link_options(common_options INTERFACE -g0) +-else() +- target_compile_options(common_options INTERFACE $,,-g -flto>) +- target_link_options(common_options INTERFACE $,,-g -flto -fuse-linker-plugin>) + endif() + +--- a/cmake/variables.cmake ++++ b/cmake/variables.cmake +@@ -10,6 +10,7 @@ + option(DESKTOP_APP_LOTTIE_USE_CACHE "Use caching in lottie animations." ON) + option(DESKTOP_APP_USE_GLIBC_WRAPS "Use wraps for new GLIBC features." OFF) + option(DESKTOP_APP_USE_PACKAGED "Find libraries using CMake instead of exact paths." ON) ++option(DESKTOP_APP_USE_SYSTEM_LIBS "Use system libs where possible." OFF) + + function(report_bad_special_target) + message(FATAL_ERROR "Bad special target '${DESKTOP_APP_SPECIAL_TARGET}'") +@@ -59,8 +60,7 @@ + set(DESKTOP_APP_USE_GLIBC_WRAPS OFF) + else() + set(LINUX 1) +- execute_process(COMMAND uname -m OUTPUT_VARIABLE machine_uname) +- if (NOT ${machine_uname} MATCHES "x86_64" AND NOT ${machine_uname} MATCHES "aarch64") ++ if (CMAKE_SIZEOF_VOID_P EQUAL 4) + set(build_linux32 1) + endif() + if (DESKTOP_APP_SPECIAL_TARGET STREQUAL "linux") +--- a/cmake/external/lz4/CMakeLists.txt ++++ b/cmake/external/lz4/CMakeLists.txt +@@ -4,8 +4,18 @@ + # For license and copyright information please follow this link: + # https://github.com/desktop-app/legal/blob/master/LEGAL + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ add_library(external_lz4 INTERFACE IMPORTED GLOBAL) ++ add_library(desktop-app::external_lz4 ALIAS external_lz4) ++ ++ find_package(PkgConfig REQUIRED) ++ pkg_check_modules(LZ4 REQUIRED liblz4) ++ target_link_libraries(external_lz4 INTERFACE ${LZ4_LIBRARIES}) ++ target_include_directories(external_lz4 SYSTEM INTERFACE ${LZ4_INCLUDE_DIRS}) ++else() + add_library(external_lz4 OBJECT) + add_library(desktop-app::external_lz4 ALIAS external_lz4) ++ + init_target(external_lz4 "(external)") + + set(lz4_loc ${third_party_loc}/lz4/lib) +@@ -27,3 +37,4 @@ + PUBLIC + ${lz4_loc} + ) ++endif() +--- a/cmake/external/xxhash/CMakeLists.txt ++++ b/cmake/external/xxhash/CMakeLists.txt +@@ -7,6 +7,10 @@ + add_library(external_xxhash INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_xxhash ALIAS external_xxhash) + ++if(DESKTOP_APP_USE_SYSTEM_LIBS) ++ find_library(xxhash_LIBRARIES xxhash) ++ target_link_libraries(external_xxhash INTERFACE ${xxhash_LIBRARIES}) ++else() + target_include_directories(external_xxhash SYSTEM + INTERFACE + ${third_party_loc}/xxHash +@@ -16,3 +20,4 @@ + INTERFACE + XXH_INLINE_ALL + ) ++endif() diff --git a/0002-Dynamic-linking-system-qt.patch b/0002-Dynamic-linking-system-qt.patch new file mode 100644 index 0000000..238180c --- /dev/null +++ b/0002-Dynamic-linking-system-qt.patch @@ -0,0 +1,165 @@ +From 85ae791a9ebf5a2603f12d2a6e2d75549a01d701 Mon Sep 17 00:00:00 2001 +From: John Zimmermann +Date: Thu, 2 Jan 2020 12:38:39 +0100 +Subject: [PATCH] Dynamic linking + +--- + Telegram/CMakeLists.txt | 7 +- + Telegram/SourceFiles/core/launcher.cpp | 8 +++ + Telegram/SourceFiles/qt_functions.cpp | 96 ++++++++++++++++++++++++++ + 3 files changed, 107 insertions(+), 4 deletions(-) + create mode 100644 Telegram/SourceFiles/qt_functions.cpp + +--- a/Telegram/CMakeLists.txt ++++ b/Telegram/CMakeLists.txt +@@ -934,9 +934,9 @@ + mainwidget.h + mainwindow.cpp + mainwindow.h ++ qt_functions.cpp + observer_peer.cpp + observer_peer.h +- qt_static_plugins.cpp + settings.cpp + settings.h + ) +@@ -1104,13 +1104,12 @@ + PRIVATE + TDESKTOP_API_ID=${TDESKTOP_API_ID} + TDESKTOP_API_HASH=${TDESKTOP_API_HASH} +- AL_LIBTYPE_STATIC + AL_ALEXT_PROTOTYPES + ) + +-if (${CMAKE_GENERATOR} MATCHES "(Visual Studio|Xcode|Ninja)") ++if ((${CMAKE_GENERATOR} MATCHES "(Visual Studio|Xcode)") OR ((${CMAKE_GENERATOR} MATCHES "(Ninja)") AND (NOT ${DESKTOP_APP_SPECIAL_TARGET} STREQUAL ""))) + set(output_folder ${CMAKE_BINARY_DIR}) +-elseif((${CMAKE_GENERATOR} MATCHES "(Unix Makefiles)") AND DESKTOP_APP_SPECIAL_TARGET STREQUAL "") ++elseif((${CMAKE_GENERATOR} MATCHES "(Unix Makefiles|Ninja)") AND DESKTOP_APP_SPECIAL_TARGET STREQUAL "") + set(output_folder ${CMAKE_BINARY_DIR}/bin) + else() + set(output_folder ${CMAKE_BINARY_DIR}/$,Debug,Release>) +--- /dev/null ++++ b/Telegram/SourceFiles/qt_functions.cpp +@@ -0,0 +1,96 @@ ++/**************************************************************************** ++** ++** 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 ++ ++/* 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 ++*/ ++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; ++} +--- a/Telegram/SourceFiles/main.cpp ++++ b/Telegram/SourceFiles/main.cpp +@@ -8,6 +8,13 @@ + #include "core/launcher.h" + + int main(int argc, char *argv[]) { ++ // Telegram doesn't start when platform theme is set, see launchpad.net/bugs/1680943 ++ unsetenv("QT_QPA_PLATFORMTHEME"); ++ // unset QT screen scale related envvars, see bugs.archlinux.org/task/62594 ++ unsetenv("QT_SCREEN_SCALE_FACTORS"); ++ unsetenv("QT_AUTO_SCREEN_SCALE_FACTOR"); ++ unsetenv("QT_SCALE_FACTOR"); ++ unsetenv("QT_DEVICE_PIXEL_RATIO"); + const auto launcher = Core::Launcher::Create(argc, argv); + return launcher ? launcher->exec() : 1; + } +--- a/Telegram/lib_ui/qt_conf/linux.qrc ++++ b/Telegram/lib_ui/qt_conf/linux.qrc +@@ -1,6 +1,5 @@ + + +- qt_linux.conf + + + fc-custom.conf diff --git a/0004-gtk3.patch b/0004-gtk3.patch new file mode 100644 index 0000000..7f278bc --- /dev/null +++ b/0004-gtk3.patch @@ -0,0 +1,22 @@ +From ef30081973681f4f8d261917fa763b00adfbe6e9 Mon Sep 17 00:00:00 2001 +From: John Zimmermann +Date: Thu, 2 Jan 2020 13:10:31 +0100 +Subject: [PATCH] gtk3 + +--- + Telegram/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/Telegram/CMakeLists.txt ++++ b/Telegram/CMakeLists.txt +@@ -1018,8 +1018,8 @@ + if (NOT TDESKTOP_DISABLE_GTK_INTEGRATION) + find_package(PkgConfig REQUIRED) + +- pkg_check_modules(GTK2 REQUIRED gtk+-2.0) +- target_include_directories(Telegram PRIVATE ${GTK2_INCLUDE_DIRS}) ++ pkg_check_modules(GTK3 REQUIRED gtk+-3.0) ++ target_include_directories(Telegram PRIVATE ${GTK3_INCLUDE_DIRS}) + target_compile_options(Telegram PRIVATE -Wno-register) + + set(appindicator_packages diff --git a/0005-Use-system-wide-fonts.patch b/0005-Use-system-wide-fonts.patch new file mode 100644 index 0000000..2e29d08 --- /dev/null +++ b/0005-Use-system-wide-fonts.patch @@ -0,0 +1,64 @@ +Do not force custom fontconfig configuration. +--- a/Telegram/lib_ui/fonts/fonts.qrc ++++ b/Telegram/lib_ui/fonts/fonts.qrc +@@ -1,10 +1,4 @@ + + +- DAOpenSansRegular.ttf +- DAOpenSansRegularItalic.ttf +- DAOpenSansBold.ttf +- DAOpenSansBoldItalic.ttf +- DAOpenSansSemibold.ttf +- DAOpenSansSemiboldItalic.ttf + + +--- a/Telegram/lib_ui/ui/style/style_core_font.cpp ++++ b/Telegram/lib_ui/ui/style/style_core_font.cpp +@@ -94,12 +94,12 @@ + FontTypesCount, + }; + QString FontTypeNames[FontTypesCount] = { +- "DAOpenSansRegular", +- "DAOpenSansRegularItalic", +- "DAOpenSansBold", +- "DAOpenSansBoldItalic", +- "DAOpenSansSemibold", +- "DAOpenSansSemiboldItalic", ++ "Open Sans", ++ "Open Sans", ++ "Open Sans", ++ "Open Sans", ++ "Open Sans Semibold", ++ "Open Sans Semibold", + }; + int32 FontTypeFlags[FontTypesCount] = { + 0, +@@ -135,7 +135,7 @@ + for (auto i = 0; i != FontTypesCount; ++i) { + const auto name = FontTypeNames[i]; + const auto flags = FontTypeFlags[i]; +- areGood[i] = LoadCustomFont(":/gui/fonts/" + name + ".ttf", name, flags); ++ areGood[i] = ValidateFont(name, flags); + Overrides[i] = name; + #ifdef Q_OS_WIN + // Attempt to workaround a strange font bug with Open Sans Semibold not loading. +--- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp ++++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp +@@ -82,8 +82,6 @@ + return; + } + } +- +- QFile(":/fc/fc-custom.conf").copy(custom); + #endif // TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION + } + +--- a/Telegram/lib_ui/qt_conf/linux.qrc ++++ b/Telegram/lib_ui/qt_conf/linux.qrc +@@ -2,6 +2,5 @@ + + + +- fc-custom.conf + + diff --git a/0006-Revert-Disable-DemiBold-fallback-for-Semibold.patch b/0006-Revert-Disable-DemiBold-fallback-for-Semibold.patch new file mode 100644 index 0000000..3a40df9 --- /dev/null +++ b/0006-Revert-Disable-DemiBold-fallback-for-Semibold.patch @@ -0,0 +1,25 @@ +From b7effa2fd838afc049ec5cc00df3bd0810a95da4 Mon Sep 17 00:00:00 2001 +From: Jiachen YANG +Date: Fri, 4 Oct 2019 16:59:26 +0900 +Subject: [PATCH 3/6] Revert "Disable DemiBold fallback for Semibold." + +This reverts commit 310c68a744ae8163c96b88944d96a6f6b14b3cdf. +--- + Telegram/lib_ui/ui/style/style_core_font.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/Telegram/lib_ui/ui/style/style_core_font.cpp ++++ b/Telegram/lib_ui/ui/style/style_core_font.cpp +@@ -225,9 +225,9 @@ + + f.setPixelSize(size); + if (_flags & FontBold) { +- f.setBold(true); +- //} else if (fontFamilies[family] == "Open Sans Semibold") { +- // f.setWeight(QFont::DemiBold); ++ f.setBold(_flags & FontBold); ++ } else if (fontFamilies[family] == "Open Sans Semibold") { ++ f.setWeight(QFont::DemiBold); + } + f.setItalic(_flags & FontItalic); + f.setUnderline(_flags & FontUnderline); diff --git a/Catch2-master.zip b/Catch2-master.zip deleted file mode 100644 index 10156aa..0000000 --- a/Catch2-master.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6e0b36fa3f2b9f84a6304c614cae80a12e90e3c2e06a844c6d073d7921620512 -size 475613 diff --git a/GSL-master.zip b/GSL-master.zip deleted file mode 100644 index 360e92d..0000000 --- a/GSL-master.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4c93c502b7309fec8a9fb02455a3d9fffe1b8c30032e9d5961360074507e78a1 -size 89821 diff --git a/breakpad-master.tar.gz b/breakpad-master.tar.gz deleted file mode 100644 index 5590aca..0000000 --- a/breakpad-master.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:80f261579f2d8500a6e9da8bb811c1218e656e99ee8783b9d8d4bd7a7902a454 -size 5213846 diff --git a/crl-master.zip b/crl-master.zip deleted file mode 100644 index 2b7795c..0000000 --- a/crl-master.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0d499bec7ab8b85676771e12cc645c12da9aaf2f4b0fafeff16b4232a78f5c6e -size 44789 diff --git a/gyp-master.tar.gz b/gyp-master.tar.gz deleted file mode 100644 index 798ce27..0000000 --- a/gyp-master.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:52ede0aefd66b3fb7f436de71ece3bc8f7c5bef3724dbede7ef5705548689b59 -size 627211 diff --git a/libtgvoip.zip b/libtgvoip.zip deleted file mode 100644 index a2d834c..0000000 --- a/libtgvoip.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c5bd3f278ab58bfbb3128277ace5f297559c1f401fc9b24739c2802f4bf154a3 -size 2031848 diff --git a/linux-syscall-support-refs-heads-master.tar.gz b/linux-syscall-support-refs-heads-master.tar.gz deleted file mode 100644 index 9009790..0000000 --- a/linux-syscall-support-refs-heads-master.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:12f822a811b97fdafc3b3c0709da3c5b6384b73bd5fa6b2d39c1be2684753b30 -size 34554 diff --git a/lz4-dev.zip b/lz4-dev.zip deleted file mode 100644 index 3ff8882..0000000 --- a/lz4-dev.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c0a39cf34f25e35b3f850ea790a3df22fb8a57ff7b56d41752365522abd5e73b -size 396034 diff --git a/patch.py b/patch.py deleted file mode 100644 index 247632f..0000000 --- a/patch.py +++ /dev/null @@ -1,290 +0,0 @@ -#!/usr/bin/env python3 - -import json -import re -from shutil import copyfile - -def remove_trailing_commas(json_like): - """ - Removes trailing commas from *json_like* and returns the result. Example:: - >>> remove_trailing_commas('{"foo":"bar","baz":["blah",],}') - '{"foo":"bar","baz":["blah"]}' - """ - trailing_object_commas_re = re.compile( - r'(,)\s*}(?=([^"\\]*(\\.|"([^"\\]*\\.)*[^"\\]*"))*[^"]*$)') - trailing_array_commas_re = re.compile( - r'(,)\s*\](?=([^"\\]*(\\.|"([^"\\]*\\.)*[^"\\]*"))*[^"]*$)') - # Fix objects {} first - objects_fixed = trailing_object_commas_re.sub("}", json_like) - # Now fix arrays/lists [] and return the result - return trailing_array_commas_re.sub("]", objects_fixed) - -def find_first_prime(str, ch): - for i,c in enumerate(str): - if c == ch: - return i - -def find_last_prime(str, ch): - for i,c in enumerate(str[::-1]): - if c == ch: - return len(str)-1-i - -def is_inserted_doublequote(line, i): - if i >= len(line): - return False - if line[i] == "\"": - if i == 0: - return True - elif (not line[i-1] == "\\"): - return True - return False - return False - -def transform_back(proper_json): - gyp_str = "" - for line in proper_json.splitlines(): - temp = '%s' % line - # remove double quotes in the middle - temp = temp.replace("'\": [[ \"'", "': [[ '") - temp = temp.replace("'\": [ \"'", "': [ '") - temp = temp.replace("'\": \"'", "': '") - # remove all other double quotes - for i,s in enumerate(temp): - if is_inserted_doublequote(temp, i): - if i == 0: - temp = temp[1:] - else: - temp = temp[:i] + temp[i+1:] - # replace \" to " - temp = temp.replace("\\\"", "\"") - # replace all double backslashes with single backslash - temp = temp.replace("\\\\", "\\") - gyp_str += temp + "\n" - return gyp_str - -def read_file_to_proper_json(f): - json_like = "" - for line in f: # read it all in - stripped_line = line.strip() - if not stripped_line.startswith("#"): - if stripped_line.find("'") != -1: - # step 1: replace all " with \" - stripped_line = stripped_line.replace("\\'", "\\\\'") - stripped_line = stripped_line.replace("\"", "\\\"") - first = find_first_prime(stripped_line, "'") - last = find_last_prime(stripped_line, "'") - # step 2: insert " before the first ' and after the last ' - first_str = stripped_line[0:first] - mid_str = stripped_line[first:last+1] - last_str = stripped_line[last+1:] - final_str = first_str + "\"" + mid_str + "\"" + last_str - line = final_str - # add double quotes for single quotes in the middle - line = line.replace("': '", "'\": \"'") - line = line.replace("': [ '", "'\": [ \"'") - line = line.replace("': [[ '", "'\": [[ \"'") - json_like += line - else: - json_like += line - proper_json = remove_trailing_commas(json_like) - return proper_json - -def load_json(filename): - return json.loads(read_file_to_proper_json(open(filename))) - -def save_json(jsonobj, filename): - j = transform_back(jsonobj) - # backup = filename + ".orig" - # copyfile(filename, backup) - f = open(filename, 'w') - f.write(j) - return - -def process_telegram_linux(jsonobj): - child = jsonobj["'conditions'"][0][1]["'variables'"]["'pkgconfig_libs'"] - child.append("'liblzma'") - child.append("'openal'") - child.append("'libavformat'") - child.append("'libavcodec'") - child.append("'libswresample'") - child.append("'libswscale'") - child.append("'libavutil'") - child.append("'opus'") - child.append("'libva-x11'") - child.append("'libva-drm'") - child.append("'libva'") - child.append("'libdrm'") - child.append("'zlib'") - child.append("'minizip'") - child.append("'openssl'") - - child = jsonobj["'conditions'"][0][1]["'libraries'"] - child.remove("'-lcomposeplatforminputcontextplugin'") - child.remove("'-lfcitxplatforminputcontextplugin'") - child.remove("'-lhimeplatforminputcontextplugin'") - child.remove("'-libusplatforminputcontextplugin'") - child.remove("'-lnimfplatforminputcontextplugin'") - - child = jsonobj["'conditions'"][0][1]["'cflags_cc'"] - child.append("' /dev/null --libs xkbcommon xkbcommon-x11)'") - child.append("' /dev/null --libs libpcre16)'") - child.append("' /dev/null --libs zlib)'") - child.append("' /dev/null --libs libpng16)'") - child.append("' /dev/null --libs libwebp)'") - child.append("' /dev/null --libs harfbuzz)'") - child.append("' /dev/null --libs xcb-shm xcb-xfixes xcb-render xcb-renderutil xcb-sync xcb-randr xcb-xinerama xcb-xkb xcb-icccm xcb-image xcb-shape xcb-keysyms xcb-util)'") - child = jsonobj["'conditions'"][0][1]["'ldflags'"] - child.remove("'-static-libstdc++'") - return json.dumps(jsonobj) - -def process_settings_linux(jsonobj): - child = jsonobj["'conditions'"][0][1]["'variables'"]["'linux_common_flags'"] - child.append("'-Wno-implicit-fallthrough'") - child.remove("'-Werror'") - child = jsonobj["'conditions'"][0][1]["'defines'"] - child.remove("'QT_STATICPLUGIN'") - return json.dumps(jsonobj) - -def process_telegram(jsonobj): - child = jsonobj["'targets'"][0] - child["'dependencies'"].remove("'utils.gyp:Updater'") - child = jsonobj["'targets'"][0]["'defines'"] - child.append("'__STDC_FORMAT_MACROS'") - 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_OPENAL_EFFECTS'") - child.remove("'AL_LIBTYPE_STATIC'") - child = jsonobj["'targets'"][0]["'include_dirs'"] - child.remove("'<(libs_loc)/breakpad/src'") - child.remove("'<(libs_loc)/lzma/C'") - child.remove("'<(libs_loc)/zlib'") - child.remove("'<(libs_loc)/ffmpeg'") - child.remove("'<(libs_loc)/openal-soft/include'") - child.remove("'<(libs_loc)/opus/include'") - # child.remove("'<(libs_loc)/range-v3/include'") - child.remove("'<(minizip_loc)'") - 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_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): - json = load_json(filename) - json = op(json) - save_json(json, filename) - -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) -print("Patching %s ..." % settings_path) -process(settings_path, process_settings_linux) -print("Patching %s ..." % qt_path) -process(qt_path, process_qt) -print("Patching %s ..." % tg_path) -process(tg_path, process_telegram) -print("Patching %s ..." % libffmpeg_path) -process(libffmpeg_path, process_libffmpeg) - -print("Patching complete!") diff --git a/qt_functions.cpp b/qt_functions.cpp deleted file mode 100644 index 402dd91..0000000 --- a/qt_functions.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** 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 -#include -#include -#include -#include -#include - -/* 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; -} diff --git a/range-v3-master.zip b/range-v3-master.zip index 4b73fcd..b9750a3 100644 --- a/range-v3-master.zip +++ b/range-v3-master.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:617d0ef9f9f03fb07ab2136ce41c20a431f81c7db55d049fcc7e21d8f1f13175 -size 959772 +oid sha256:c0a9ef4377c52d161cc33fa0225f862d5fabea673e0f1eb207a4fee743d6225a +size 964663 diff --git a/rlottie-master.zip b/rlottie-master.zip deleted file mode 100644 index f2ac18e..0000000 --- a/rlottie-master.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20d5a2d86669177066a1eaa332b8c2400f4716923d35990176b6ce0b9312d763 -size 8033766 diff --git a/tdesktop-1.9.3-full.tar.gz b/tdesktop-1.9.3-full.tar.gz new file mode 100644 index 0000000..ab1e3c6 --- /dev/null +++ b/tdesktop-1.9.3-full.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca9c67369140952d5ffe404ca082517193e3832b2c21ba1af791f078e4d9a7bb +size 25256433 diff --git a/tdesktop.patch b/tdesktop.patch deleted file mode 100644 index 3395b91..0000000 --- a/tdesktop.patch +++ /dev/null @@ -1,109 +0,0 @@ -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 @@ - - -- ../etc/qt_linux.conf - - - ../fc-custom.conf -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"); -+ - 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 --Q_IMPORT_PLUGIN(QWebpPlugin) --Q_IMPORT_PLUGIN(QXcbIntegrationPlugin) --Q_IMPORT_PLUGIN(QConnmanEnginePlugin) --Q_IMPORT_PLUGIN(QGenericEnginePlugin) --Q_IMPORT_PLUGIN(QNetworkManagerEnginePlugin) --Q_IMPORT_PLUGIN(QComposePlatformInputContextPlugin) --Q_IMPORT_PLUGIN(QIbusPlatformInputContextPlugin) --Q_IMPORT_PLUGIN(QFcitxPlatformInputContextPlugin) --Q_IMPORT_PLUGIN(QHimePlatformInputContextPlugin) --Q_IMPORT_PLUGIN(NimfInputContextPlugin) - #endif // Q_OS_WIN | Q_OS_MAC | Q_OS_LINUX -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}" ${_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)") -@@ -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}" ${_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++)") diff --git a/telegram-desktop.changes b/telegram-desktop.changes index 070f41b..64df416 100644 --- a/telegram-desktop.changes +++ b/telegram-desktop.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Thu Jan 16 01:47:32 UTC 2020 - Xu Zhao + +- Upgrade to 1.9.3 + * Videos in chats start playing automatically. + * Resume playback from where you left off when watching long + videos and listening to long audio tracks. + * Control automatic playback for videos, GIFs and round video + messages in Settings > Advanced > Automatic media download. + * Enjoy system spell checker support on all modern systems. + ------------------------------------------------------------------- Tue Nov 5 20:51:58 UTC 2019 - Xu Zhao diff --git a/telegram-desktop.spec b/telegram-desktop.spec index 56bd000..897f3bf 100644 --- a/telegram-desktop.spec +++ b/telegram-desktop.spec @@ -1,7 +1,7 @@ # # spec file for package telegram-desktop # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -29,42 +29,21 @@ %endif Name: telegram-desktop -Version: 1.8.15 +Version: 1.9.3 Release: 0 Summary: Messaging application with a focus on speed and security License: GPL-3.0-only Group: Productivity/Networking/Instant Messenger URL: https://github.com/telegramdesktop/tdesktop -Source0: https://github.com/telegramdesktop/tdesktop/archive/v%{version}.tar.gz -# curl https://chromium.googlesource.com/breakpad/breakpad/+archive/refs/heads/master.tar.gz -o breakpad-master.tar.gz -Source1: breakpad-master.tar.gz -# curl https://chromium.googlesource.com/linux-syscall-support/+archive/master.tar.gz -o linux-syscall-support-refs-heads-master.tar.gz -Source2: linux-syscall-support-refs-heads-master.tar.gz -# curl https://chromium.googlesource.com/external/gyp/+archive/master.tar.gz -o gyp-master.tar.gz -Source3: gyp-master.tar.gz -Source4: patch.py -# curl https://codeload.github.com/Microsoft/GSL/zip/master -o GSL-master.zip -Source5: GSL-master.zip -# curl https://codeload.github.com/mapbox/variant/zip/master -o variant-master.zip -Source6: variant-master.zip -# curl https://codeload.github.com/grishka/libtgvoip/zip/public -o libtgvoip.zip -Source7: libtgvoip.zip -# curl https://codeload.github.com/catchorg/Catch2/master -o Catch2-master.zip -Source8: Catch2-master.zip +Source0: https://github.com/telegramdesktop/tdesktop/releases/download/v%{version}/tdesktop-%{version}-full.tar.gz # 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 -Source10: crl-master.zip -# curl https://codeload.github.com/Cyan4973/xxHash/zip/master -o xxHash-master.zip -Source11: xxHash-master.zip -# curl https://codeload.github.com/lz4/lz4/zip/dev -o lz4-dev.zip -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 +Source1: range-v3-master.zip +Patch0: 0000-gtk2-default.patch +Patch1: 0001-Dynamic-linking-system-libs.patch +Patch2: 0002-Dynamic-linking-system-qt.patch +Patch3: 0004-gtk3.patch +Patch4: 0005-Use-system-wide-fonts.patch +Patch5: 0006-Revert-Disable-DemiBold-fallback-for-Semibold.patch BuildRequires: chrpath BuildRequires: cmake BuildRequires: desktop-file-utils @@ -75,18 +54,19 @@ BuildRequires: gcc8-c++ %else BuildRequires: gcc-c++ %endif +BuildRequires: enchant-devel BuildRequires: glibc-devel BuildRequires: libQt5Core-private-headers-devel BuildRequires: libQt5Gui-private-headers-devel BuildRequires: libjpeg-devel +BuildRequires: liblz4-devel BuildRequires: libqt5-qtbase-common-devel BuildRequires: libqt5-qtimageformats-devel +BuildRequires: ninja BuildRequires: pkgconfig -# python2-base is required for gyp, Auto pulled in for Tumbleweed, but need for Leap 15. -BuildRequires: python2-base -BuildRequires: python3 BuildRequires: unzip BuildRequires: xorg-x11-devel +BuildRequires: xxhash-devel BuildRequires: xz BuildRequires: pkgconfig(Qt5DBus) BuildRequires: pkgconfig(Qt5Network) @@ -158,58 +138,17 @@ always immediately published, whereas its server-side code is closed-source and The service also provides APIs to independent developers. %prep -%setup -q -n tdesktop-%{version} -cp %{SOURCE8} Telegram/SourceFiles/base +%setup -q -n tdesktop-%{version}-full -cp %{_sourcedir}/GSL-master.zip . && unzip GSL-master.zip -mv GSL-master GSL -mv GSL %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/ - -cp %{_sourcedir}/variant-master.zip . && unzip variant-master.zip -mv variant-master variant -mv variant %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/ - -cp %{_sourcedir}/libtgvoip.zip . && unzip libtgvoip.zip -mv libtgvoip-public libtgvoip -mv libtgvoip %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/ - -cp %{_sourcedir}/range-v3-master.zip . && unzip range-v3-master.zip -mv range-v3-master range-v3 -mkdir -p %{_builddir}/Libraries -mv range-v3 %{_builddir}/Libraries/ - -cp %{_sourcedir}/crl-master.zip . && unzip crl-master.zip -mv crl-master crl -mv crl %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/ - -cp %{_sourcedir}/rlottie-master.zip . && unzip rlottie-master.zip -mv rlottie-master rlottie -mv rlottie %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/ - -cp %{_sourcedir}/lz4-dev.zip . && unzip lz4-dev.zip -mv lz4-dev lz4 -mv lz4 %{_builddir}/tdesktop-%{version}/Telegram/ThirdParty/ - -cp %{_sourcedir}/xxHash-master.zip . && unzip xxHash-master.zip -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} +unzip %{_sourcedir}/range-v3-master.zip -d %{_builddir}/Libraries/ +mv %{_builddir}/Libraries/range-v3-master %{_builddir}/Libraries/range-v3 %patch0 -p1 %patch1 -p1 -cp %{_sourcedir}/patch.py . && python3 ./patch.py -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 -%setup -q -T -c -n gyp -a 3 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 %build %if %{with gcc8} @@ -217,65 +156,44 @@ export CC=/usr/bin/gcc-8 export CXX=/usr/bin/g++-8 %endif -mv %{_builddir}/tdesktop-%{version} %{_builddir}/tdesktop +cmake -B build -G Ninja . \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DTDESKTOP_API_ID=340630 \ + -DTDESKTOP_API_HASH=98a22f733eac40f1bd187a30d19271de \ + -DDESKTOP_APP_USE_GLIBC_WRAPS=OFF \ + -DDESKTOP_APP_USE_SYSTEM_LIBS=ON \ + -DDESKTOP_APP_DISABLE_CRASH_REPORTS=ON \ + -DTDESKTOP_DISABLE_AUTOUPDATE=ON \ + -DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME=ON \ + -DTDESKTOP_DISABLE_DESKTOP_FILE_GENERATION=ON \ + -DDESKTOP_APP_SPECIAL_TARGET="" -# patch gyp -cd %{_builddir}/Libraries -ln -s %{_builddir}/gyp -cp %{_builddir}/tdesktop/Telegram/Patches/gyp.diff gyp -cd gyp -patch -p1 < gyp.diff - -# Build breakpad -cd %{_builddir}/breakpad -ln -s %{_builddir}/breakpad-lss src/third_party/lss -%configure -%make_build -make %{?_smp_mflags} install DESTDIR=%{_builddir}/Libraries/breakpad - -cd %{_builddir}/tdesktop/Telegram/gyp -# patch qt.gypi to change libxkbcommon path -%{_builddir}/Libraries/gyp/gyp \ - -Dapi_id=340630 \ - -Dapi_hash=98a22f733eac40f1bd187a30d19271de \ - -Dlinux_lib_ssl=-lssl \ - -Dlinux_lib_crypto=-lcrypto \ - -Dlinux_lib_icu="-licuuc -licutu -licui18n" \ - -Dlinux_path_opus_include="%{_includedir}/opus" \ - -Dlinux_path_breakpad="%{_builddir}/Libraries/breakpad%{_prefix}" \ - -Gconfig=Release \ - --depth=. --generator-output="%{_builddir}/tdesktop" -Goutput_dir=out Telegram.gyp --format=cmake - -# build Telegram -cd %{_builddir}/tdesktop/out/Release -%cmake .. -sed -i 's,breakpad/usr/lib,breakpad%{_libdir},' ./CMakeFiles/Telegram.dir/link.txt -%make_build -chrpath --delete Telegram +ninja -C build %install # Install binary install -dm755 %{buildroot}%{_bindir} -install -m755 %{_builddir}/tdesktop/out/Release/build/Telegram %{buildroot}%{_bindir}/%{name} +install -m755 build/bin/Telegram %{buildroot}%{_bindir}/%{name} # Install desktop file install -d %{buildroot}%{_datadir}/applications desktop-file-install \ --dir %{buildroot}%{_datadir}/applications \ --add-category InstantMessaging \ - %{_builddir}/tdesktop/lib/xdg/telegramdesktop.desktop + lib/xdg/telegramdesktop.desktop # Install protocol install -d %{buildroot}%{_datadir}/kservices5 -install -m644 %{_builddir}/tdesktop/lib/xdg/tg.protocol \ - %{buildroot}%{_datadir}/kservices5/tg.protocol +install -m644 lib/xdg/tg.protocol \ + %{buildroot}%{_datadir}/kservices5/tg.protocol # Install icons for icon_size in 16 32 48 64 128 256 512; do icon_dir="%{buildroot}%{_datadir}/icons/hicolor/${icon_size}x${icon_size}/apps" install -d "${icon_dir}" - install -m644 "%{_builddir}/tdesktop/Telegram/Resources/art/icon${icon_size}.png" \ - "${icon_dir}/telegram.png" + install -m644 "Telegram/Resources/art/icon${icon_size}.png" \ + "${icon_dir}/telegram.png" done %files diff --git a/v1.8.15.tar.gz b/v1.8.15.tar.gz deleted file mode 100644 index 98a4e50..0000000 --- a/v1.8.15.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:68bb6c3d007fe21847286815f22c2532a7cf9c247dc2781d749ebeb40f02ed99 -size 14416530 diff --git a/variant-master.zip b/variant-master.zip deleted file mode 100644 index cb448ed..0000000 --- a/variant-master.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:51a2ec343b43e0baedd785315e7691be87689235c5cced4626f95732ee9c4ecb -size 125044 diff --git a/xxHash-master.zip b/xxHash-master.zip deleted file mode 100644 index 2c2372a..0000000 --- a/xxHash-master.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b864f7fdee91a5adb67f1bb65927e571573f5cb8a7b719ea2ae3f269045bb70 -size 96813 From 3902ce442a15ba938c9a8ca2911055b84fea54a1c492b68990a2e3bcb8bb7f4d Mon Sep 17 00:00:00 2001 From: Marcel Kuehlhorn Date: Thu, 16 Jan 2020 10:07:11 +0000 Subject: [PATCH 2/3] Mention patches in changelog for Factory OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=116 --- telegram-desktop.changes | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/telegram-desktop.changes b/telegram-desktop.changes index 64df416..e9e6bbd 100644 --- a/telegram-desktop.changes +++ b/telegram-desktop.changes @@ -8,6 +8,14 @@ Thu Jan 16 01:47:32 UTC 2020 - Xu Zhao * Control automatic playback for videos, GIFs and round video messages in Settings > Advanced > Automatic media download. * Enjoy system spell checker support on all modern systems. +- Switch build system to Ninja +- Rename default-gtk2.patch to 0000-gtk2-default.patch +- Added patches: + * 0001-Dynamic-linking-system-libs.patch + * 0002-Dynamic-linking-system-qt.patch + * 0004-gtk3.patch + * 0005-Use-system-wide-fonts.patch + * 0006-Revert-Disable-DemiBold-fallback-for-Semibold.patch ------------------------------------------------------------------- Tue Nov 5 20:51:58 UTC 2019 - Xu Zhao From 6fda97187677d50aa02bd132e3af06b03194376f5d695552aeb8e75df6a02059 Mon Sep 17 00:00:00 2001 From: Marcel Kuehlhorn Date: Thu, 16 Jan 2020 10:36:23 +0000 Subject: [PATCH 3/3] Mention patches in changelog for Factory OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=117 --- telegram-desktop.changes | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/telegram-desktop.changes b/telegram-desktop.changes index e9e6bbd..effba0c 100644 --- a/telegram-desktop.changes +++ b/telegram-desktop.changes @@ -9,7 +9,8 @@ Thu Jan 16 01:47:32 UTC 2020 - Xu Zhao messages in Settings > Advanced > Automatic media download. * Enjoy system spell checker support on all modern systems. - Switch build system to Ninja -- Rename default-gtk2.patch to 0000-gtk2-default.patch +- Rename default-gtk2.patch to 0000-gtk2-default.patch, + removed tdesktop.patch - Added patches: * 0001-Dynamic-linking-system-libs.patch * 0002-Dynamic-linking-system-qt.patch