diff options
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Avoid-depending-on-static-libraries.patch | 227 | ||||
-rw-r--r-- | Correct-MOC-path.patch | 13 | ||||
-rw-r--r-- | Downgrade-Qt-version.patch | 53 | ||||
-rw-r--r-- | Fix-desktop-integration-issues.patch | 42 | ||||
-rw-r--r-- | Flags-for-precompiled-header-and-MOC.patch | 32 | ||||
-rw-r--r-- | PKGBUILD | 37 | ||||
-rw-r--r-- | Reduce-number-of-libraries.patch | 42 | ||||
-rw-r--r-- | Remove-Werror-flag.patch | 17 | ||||
-rw-r--r-- | qt_functions.cpp | 94 |
11 files changed, 321 insertions, 262 deletions
@@ -1,6 +1,6 @@ pkgbase = telegram-desktop-systemqt-notoemoji pkgdesc = Experimental build of Telegram Desktop (using system Qt, emojis replaced with those from Noto Color Emoji) - pkgver = 1.0.14 + pkgver = 1.0.27 pkgrel = 1 url = https://desktop.telegram.org/ install = telegram-desktop.install @@ -27,31 +27,41 @@ pkgbase = telegram-desktop-systemqt-notoemoji optdepends = libappindicator-gtk3: AppIndicator tray icon provides = telegram-desktop conflicts = telegram-desktop - source = tdesktop::git+https://github.com/telegramdesktop/tdesktop.git#tag=v1.0.14 + source = tdesktop::git+https://github.com/telegramdesktop/tdesktop.git#tag=v1.0.27 + source = GSL::git+https://github.com/Microsoft/GSL.git#commit=16a6a41690325433976d843e13ec676d6f9ab091 + source = variant::git+https://github.com/mapbox/variant#tag=v1.1.3 source = telegramdesktop.desktop source = tg.protocol source = Avoid-depending-on-static-libraries.patch - source = Fix-desktop-integration-issues.patch + source = Remove-Werror-flag.patch + source = Downgrade-Qt-version.patch source = Flags-for-precompiled-header-and-MOC.patch source = Fix-rcc-path.patch source = Use-gtk3-headers.patch source = Reduce-number-of-libraries.patch + source = Correct-MOC-path.patch source = CMakeLists.inj + source = qt_functions.cpp source = https://github.com/PeterCxy/tdesktop/raw/62fcc728a12a4d5b41049e6aadb5e6f039c28f8d/Telegram/Resources/art/emoji.webp source = https://github.com/PeterCxy/tdesktop/raw/62fcc728a12a4d5b41049e6aadb5e6f039c28f8d/Telegram/Resources/art/emoji_125x.webp source = https://github.com/PeterCxy/tdesktop/raw/62fcc728a12a4d5b41049e6aadb5e6f039c28f8d/Telegram/Resources/art/emoji_150x.webp source = https://github.com/PeterCxy/tdesktop/raw/62fcc728a12a4d5b41049e6aadb5e6f039c28f8d/Telegram/Resources/art/emoji_200x.webp source = https://github.com/PeterCxy/tdesktop/raw/62fcc728a12a4d5b41049e6aadb5e6f039c28f8d/Telegram/Resources/art/emoji_250x.webp sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP sha256sums = 41c22fae6ae757936741e63aec3d0f17cafe86b2d6153cdd1d01a5581e871f17 sha256sums = d4cdad0d091c7e47811d8a26d55bbee492e7845e968c522e86f120815477e9eb - sha256sums = 197159eca70fc4a3d55548842d3218bcd67394cb869f08825d8fc12cf7b050f8 - sha256sums = 4e1938a5ddfcf8ac57bafa5f9ce80413665ac3b0ccd3c1853fe8f0835b91f468 - sha256sums = 952c7590cb05354c70037745d980fa97c36e36f96a1fa7d0db29a5c6a1d8dbd1 + sha256sums = 8da40e3d8bbec2c8dc653cc8c5071b5a7a6e899befac75d6b996536703da4ce6 + sha256sums = c47633e0c1e86cd4488c1533d5742245c5f9e910300f93083101d54597c00c3a + sha256sums = c05175c418354f3202f4a031ca4133769a37640c920e9e4ff91025f9fc58a015 + sha256sums = 5b5a41a852d4d5b84466a19a04684dc7e43dfc6d6494dbcbe41341807bae52b3 sha256sums = cf4dbb293afdbfd226861a00a42790a15b23bea296eccf35853d104e07ea345a sha256sums = 5f3ac7c08df0293bed626293dbfb6040764abf28899db7681572cfb1d8bcaa6e - sha256sums = 0442af5365a31de5a8e15de8a94f5c1192775fc4460b74c4045da99e548f045a + sha256sums = ca37a7a7bec56133530c4e03c718ad5d5d43f29ec79009d87cb7d891ef78b7a7 + sha256sums = 75dcda4aa2d6032f4931cf99e1d915defb4d960ee42725f3b54bbb7dd4ab8531 sha256sums = 7a06af83609168a8eaec59a65252caa41dcd0ecc805225886435eb65073e9c82 + sha256sums = 8fa4115ae60a87ee6c846f82d5cc4b90d0ba2b2016e1bd36634772230903af31 sha256sums = c6fea6d718b054aa3deb0b8b5a7f1ff330db2ab1f66962de033ad84c33622727 sha256sums = 701d15ffe711113022981b2f7da3ae2a4aa9febe260dac020a30274f8c8b538b sha256sums = c268159a23152b765c7af72997cd290bfbb8c1ed5219991cca28596f85596bd1 diff --git a/.gitignore b/.gitignore index 11f448572c09..e43f151aa967 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ src pkg tdesktop *.webp +GSL +variant diff --git a/Avoid-depending-on-static-libraries.patch b/Avoid-depending-on-static-libraries.patch index afb0232f5e4d..aa64b05389ee 100644 --- a/Avoid-depending-on-static-libraries.patch +++ b/Avoid-depending-on-static-libraries.patch @@ -1,15 +1,14 @@ Description: Eliminates dependencies from static Qt and other libraries Author: Nicholas Guriev <guriev-ns@ya.ru> -Last-Update: 2017-01-31 +Last-Update: 2017-03-31 diff --git a/Telegram/SourceFiles/main.cpp b/Telegram/SourceFiles/main.cpp -index 0c31e9b..3f9c0e4 100644 --- a/Telegram/SourceFiles/main.cpp +++ b/Telegram/SourceFiles/main.cpp -@@ -45,6 +45,11 @@ int main(int argc, char *argv[]) { +@@ -39,6 +39,11 @@ int main(int argc, char *argv[]) { Logs::start(); // must be started before Platform is started Platform::start(); // must be started before QApplication is created - + + // I don't know why path is not in QT_PLUGIN_PATH by default + QCoreApplication::addLibraryPath("/usr/lib/qt/plugins"); + // without this Telegram doesn't start on Ubuntu 17.04 due GTK errors @@ -19,7 +18,6 @@ index 0c31e9b..3f9c0e4 100644 { Application app(argc, argv); diff --git a/Telegram/SourceFiles/platform/linux/linux_libs.h b/Telegram/SourceFiles/platform/linux/linux_libs.h -index 1ecae70..e835c31 100644 --- a/Telegram/SourceFiles/platform/linux/linux_libs.h +++ b/Telegram/SourceFiles/platform/linux/linux_libs.h @@ -29,7 +29,7 @@ extern "C" { @@ -31,31 +29,13 @@ index 1ecae70..e835c31 100644 #endif // !TDESKTOP_DISABLE_UNITY_INTEGRATION namespace Platform { -diff --git a/Telegram/SourceFiles/stdafx.cpp b/Telegram/SourceFiles/stdafx.cpp -index 3cc98b8..7afd662 100644 ---- a/Telegram/SourceFiles/stdafx.cpp -+++ b/Telegram/SourceFiles/stdafx.cpp -@@ -16,28 +16,70 @@ In addition, as a special exception, the copyright holders give permission - to link the code of portions of this program with the OpenSSL library. - - Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE --Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org -+Copyright (c) 2009-2017 Various Qt Authors - */ - #include "stdafx.h" --#include <QtCore/QtPlugin> -- --#ifdef Q_OS_WINRT --//Q_IMPORT_PLUGIN(QWinRTIntegrationPlugin) --//Q_IMPORT_PLUGIN(QWbmpPlugin) --#elif defined Q_OS_WIN // Q_OS_WINRT --Q_IMPORT_PLUGIN(QWebpPlugin) --Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) --#elif defined Q_OS_MAC // Q_OS_WIN --Q_IMPORT_PLUGIN(QWebpPlugin) --Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin) --Q_IMPORT_PLUGIN(QGenericEnginePlugin) --#elif defined Q_OS_LINUX // Q_OS_LINUX +diff --git a/Telegram/SourceFiles/qt_static_plugins.cpp b/Telegram/SourceFiles/qt_static_plugins.cpp +--- a/Telegram/SourceFiles/qt_static_plugins.cpp ++++ b/Telegram/SourceFiles/qt_static_plugins.cpp +@@ -28,12 +28,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) @@ -64,76 +44,11 @@ index 3cc98b8..7afd662 100644 -Q_IMPORT_PLUGIN(QComposePlatformInputContextPlugin) -Q_IMPORT_PLUGIN(QIbusPlatformInputContextPlugin) -Q_IMPORT_PLUGIN(QFcitxPlatformInputContextPlugin) --#endif -+ -+/* This file contains some code from Qt source to ensure successful build. -+ * 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; -+} + #endif // Q_OS_WIN | Q_OS_MAC | Q_OS_LINUX diff --git a/Telegram/SourceFiles/ui/text/text_block.cpp b/Telegram/SourceFiles/ui/text/text_block.cpp -index d7597f8..3a50097 100644 --- a/Telegram/SourceFiles/ui/text/text_block.cpp +++ b/Telegram/SourceFiles/ui/text/text_block.cpp -@@ -335,7 +335,7 @@ TextBlock::TextBlock(const style::font &font, const QString &str, QFixed minResi +@@ -330,7 +330,7 @@ TextBlock::TextBlock(const style::font &font, const QString &str, QFixed minResi SignalHandlers::setCrashAnnotationRef("CrashString", &part); QStackTextEngine engine(part, blockFont->f); @@ -143,18 +58,14 @@ index d7597f8..3a50097 100644 layout.createLine(); diff --git a/Telegram/gyp/Telegram.gyp b/Telegram/gyp/Telegram.gyp -index 2503f1e..92415ea 100644 --- a/Telegram/gyp/Telegram.gyp +++ b/Telegram/gyp/Telegram.gyp -@@ -79,20 +80,16 @@ +@@ -81,20 +82,13 @@ ], 'defines': [ - 'AL_LIBTYPE_STATIC', '<!@(python -c "for s in \'<(build_defines)\'.split(\',\'): print(s)")', -+ 'TDESKTOP_DISABLE_AUTOUPDATE', -+ 'TDESKTOP_DISABLE_CRASH_REPORTS', -+ 'TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME', ], 'include_dirs': [ @@ -169,51 +80,30 @@ index 2503f1e..92415ea 100644 - '<(minizip_loc)', + '/usr/include/minizip', '<(sp_media_key_tap_loc)', - ], - 'sources': [ -@@ -631,13 +625,6 @@ - }], - [ '"<(build_win)" != "1"', { - 'sources': [ -- '<(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', - ], - 'sources!': [ - '<(src_loc)/pspecific_win.cpp', + '<(submodules_loc)/GSL/include', + '<(submodules_loc)/variant/include', diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi -index 24ededb..0cfd178 100644 --- a/Telegram/gyp/qt.gypi +++ b/Telegram/gyp/qt.gypi -@@ -27,21 +27,18 @@ +@@ -27,7 +27,7 @@ [ 'build_macold', { 'qt_version%': '5.3.2', }, { - 'qt_version%': '5.6.2', -+ 'qt_version%': '5.8.0', ++ 'qt_version%': '<!(echo /usr/include/qt/QtCore/*/ | grep -Po "\d+\.\d+\.\d+")', }] ], }, - 'qt_libs': [ -- 'qwebp', - 'Qt5PrintSupport', -- 'Qt5PlatformSupport', - 'Qt5Network', - 'Qt5Widgets', - 'Qt5Gui', -- 'qtharfbuzzng', - ], - 'qt_version%': '<(qt_version)', -- 'linux_path_qt%': '/usr/local/tdesktop/Qt-<(qt_version)', -+ 'linux_path_qt%': '/usr/lib/qt', +@@ -45,7 +45,7 @@ + [ 'build_macold', { + 'linux_path_qt%': '/usr/local/macold/Qt-<(qt_version)', + }, { +- 'linux_path_qt%': '/usr/local/tdesktop/Qt-<(qt_version)', ++ 'linux_path_qt%': '/usr/lib/qt', + }] + ] }, - 'qt_version%': '<(qt_version)', - 'qt_loc_unix': '<(linux_path_qt)', -@@ -79,19 +77,14 @@ +@@ -85,9 +85,9 @@ ], }], [ 'build_linux', { @@ -224,28 +114,10 @@ index 24ededb..0cfd178 100644 + 'qt_lib_debug_postfix': '', + 'qt_lib_release_postfix': '', 'qt_libs': [ -- 'qxcb', + 'qxcb', 'Qt5XcbQpa', -- 'qconnmanbearer', -- 'qgenericbearer', -- 'qnmbearer', - '<@(qt_libs)', - 'Qt5DBus', - 'Qt5Core', -- 'qtpcre', - 'Xi', - 'Xext', - 'Xfixes', -@@ -103,7 +96,6 @@ - 'xcb-shm', - 'xcb-xfixes', - 'xcb-render', -- 'xcb-static', - ], - }], - ], -@@ -130,9 +122,9 @@ - ], +@@ -141,9 +141,9 @@ + 'qt_moc_list_sources_arg': '--moc-prefix SHARED_INTERMEDIATE_DIR/<(_target_name)/moc/moc_', 'linux_path_xkbcommon%': '/usr/local', - 'linux_lib_ssl%': '/usr/local/ssl/lib/libssl.a', @@ -257,7 +129,7 @@ index 24ededb..0cfd178 100644 }, 'configurations': { -@@ -181,13 +173,13 @@ +@@ -192,13 +192,13 @@ }, 'include_dirs': [ @@ -278,16 +150,20 @@ index 24ededb..0cfd178 100644 ], 'library_dirs': [ '<(qt_loc)/lib', -@@ -208,7 +200,7 @@ +@@ -219,11 +219,8 @@ '<(qt_loc)/plugins/platforminputcontexts', ], 'libraries': [ - '<(linux_path_xkbcommon)/lib/libxkbcommon.a', -+ 'xkbcommon', '<@(qt_libs_release)', - '<(linux_lib_ssl)', - '<(linux_lib_crypto)', -@@ -226,7 +218,6 @@ +- '<(linux_lib_ssl)', +- '<(linux_lib_crypto)', +- '<!@(python -c "for s in \'<(linux_lib_icu)\'.split(\' \'): print(s)")', ++ 'crypto', + 'xcb', + 'X11', + 'X11-xcb', +@@ -237,7 +234,6 @@ '<(qt_loc)/mkspecs/linux-g++', ], 'ldflags': [ @@ -296,19 +172,17 @@ index 24ededb..0cfd178 100644 '-g', '-rdynamic', diff --git a/Telegram/gyp/settings_linux.gypi b/Telegram/gyp/settings_linux.gypi -index 3356b97..20b4732 100644 --- a/Telegram/gyp/settings_linux.gypi +++ b/Telegram/gyp/settings_linux.gypi -@@ -60,7 +60,6 @@ +@@ -61,7 +61,6 @@ ], 'defines': [ '_REENTRANT', - 'QT_STATICPLUGIN', 'QT_PLUGIN', ], - 'cflags': [ + 'cflags_c': [ diff --git a/Telegram/gyp/telegram_linux.gypi b/Telegram/gyp/telegram_linux.gypi -index b42e744..29386a9 100644 --- a/Telegram/gyp/telegram_linux.gypi +++ b/Telegram/gyp/telegram_linux.gypi @@ -50,24 +50,21 @@ @@ -351,3 +225,22 @@ index b42e744..29386a9 100644 # '<!(pkg-config 2> /dev/null --libs <@(pkgconfig_libs))', ], 'cflags_cc': [ +diff --git a/Telegram/gyp/telegram_sources.txt b/Telegram/gyp/telegram_sources.txt +--- a/Telegram/gyp/telegram_sources.txt ++++ b/Telegram/gyp/telegram_sources.txt +@@ -511,14 +511,7 @@ + <(src_loc)/structs.cpp + <(src_loc)/structs.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 ++../../debian/qt_functions.cpp + + platforms: mac + <(sp_media_key_tap_loc)/SPMediaKeyTap.m diff --git a/Correct-MOC-path.patch b/Correct-MOC-path.patch new file mode 100644 index 000000000000..8f1f4bc089de --- /dev/null +++ b/Correct-MOC-path.patch @@ -0,0 +1,13 @@ +diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi +index 897cfa69..5f55135e 100644 +--- a/Telegram/gyp/qt.gypi ++++ b/Telegram/gyp/qt.gypi +@@ -223,7 +223,7 @@ + '<(SHARED_INTERMEDIATE_DIR)/<(_target_name)/moc/moc_<(RULE_INPUT_ROOT).cpp', + ], + 'action': [ +- '<(qt_loc)/bin/moc<(exe_ext)', ++ '/usr/bin/moc<(exe_ext)', + + # Silence "Note: No relevant classes found. No output generated." + '--no-notes', diff --git a/Downgrade-Qt-version.patch b/Downgrade-Qt-version.patch new file mode 100644 index 000000000000..903bf181b3b9 --- /dev/null +++ b/Downgrade-Qt-version.patch @@ -0,0 +1,53 @@ +Description: Downgrade Qt version +Author: Nicholas Guriev <guriev-ns@ya.ru> +Last-Update: 2017-03-31 + +diff --git a/Telegram/SourceFiles/main.cpp b/Telegram/SourceFiles/main.cpp +--- a/Telegram/SourceFiles/main.cpp ++++ b/Telegram/SourceFiles/main.cpp +@@ -23,9 +23,10 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org + #include "storage/localstorage.h" + + int main(int argc, char *argv[]) { +-#ifndef Q_OS_MAC // Retina display support is working fine, others are not. ++#if !defined(Q_OS_MAC) && QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) ++ // Retina display support is working fine, others are not. + QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling, true); +-#endif // Q_OS_MAC ++#endif // not defined Q_OS_MAC and QT_VERSION >= 5.6.0 + QCoreApplication::setApplicationName(qsl("TelegramDesktop")); + + settingsParseArgs(argc, argv); +diff --git a/Telegram/SourceFiles/ui/text/text.cpp b/Telegram/SourceFiles/ui/text/text.cpp +--- a/Telegram/SourceFiles/ui/text/text.cpp ++++ b/Telegram/SourceFiles/ui/text/text.cpp +@@ -1692,11 +1692,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 + + int blockIndex = _lineStartBlock; + ITextBlock *currentBlock = _t->_blocks[blockIndex]; +diff --git a/Telegram/SourceFiles/ui/twidget.cpp b/Telegram/SourceFiles/ui/twidget.cpp +--- a/Telegram/SourceFiles/ui/twidget.cpp ++++ b/Telegram/SourceFiles/ui/twidget.cpp +@@ -107,9 +107,9 @@ void sendSynteticMouseEvent(QWidget *widget, QEvent::Type type, Qt::MouseButton + , button + , QGuiApplication::mouseButtons() | button + , QGuiApplication::keyboardModifiers() +-#ifndef OS_MAC_OLD ++#if !defined(OS_MAC_OLD) && QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) + , Qt::MouseEventSynthesizedByApplication +-#endif // OS_MAC_OLD ++#endif + ); + ev.setTimestamp(getms()); + QGuiApplication::sendEvent(windowHandle, &ev); diff --git a/Fix-desktop-integration-issues.patch b/Fix-desktop-integration-issues.patch deleted file mode 100644 index 374c581a77f2..000000000000 --- a/Fix-desktop-integration-issues.patch +++ /dev/null @@ -1,42 +0,0 @@ -Description: Fix some problems with desktop integration which relate to names of the binaries -Author: Nicholas Guriev <guriev-ns@ya.ru> -Last-Update: 2017-01-26 - -diff --git a/Telegram/SourceFiles/pspecific_linux.cpp b/Telegram/SourceFiles/pspecific_linux.cpp -index 8b21afe..258b5bd 100644 ---- a/Telegram/SourceFiles/pspecific_linux.cpp -+++ b/Telegram/SourceFiles/pspecific_linux.cpp -@@ -505,7 +505,7 @@ void psRegisterCustomScheme() { - s << "Exec=" << escapeShell(QFile::encodeName(cExeDir() + cExeName())) << " -- %u\n"; - s << "Icon=telegram\n"; - s << "Terminal=false\n"; -- s << "StartupWMClass=Telegram\n"; -+ s << "StartupWMClass=TelegramDesktop\n"; - s << "Type=Application\n"; - s << "Categories=Network;\n"; - s << "MimeType=x-scheme-handler/tg;\n"; -@@ -572,7 +572,7 @@ bool _execUpdater(bool update = true, const QString &crashreport = QString()) { - static const int MaxLen = 65536, MaxArgsCount = 128; - - char path[MaxLen] = {0}; -- QByteArray data(QFile::encodeName(cExeDir() + "Updater")); -+ QByteArray data(QFile::encodeName(cExeDir() + (update ? "Updater" : gExeName))); - memcpy(path, data.constData(), data.size()); - - char *args[MaxArgsCount] = {0}, p_noupdate[] = "-noupdate", p_autostart[] = "-autostart", p_debug[] = "-debug", p_tosettings[] = "-tosettings", p_key[] = "-key", p_path[] = "-workpath", p_startintray[] = "-startintray", p_testmode[] = "-testmode", p_crashreport[] = "-crashreport"; -diff --git a/lib/xdg/telegramdesktop.desktop b/lib/xdg/telegramdesktop.desktop -index 35a5c61..da7a35a 100644 ---- a/lib/xdg/telegramdesktop.desktop -+++ b/lib/xdg/telegramdesktop.desktop -@@ -4,9 +4,9 @@ Version=1.0 - Name=Telegram Desktop - Comment=Official desktop version of Telegram messaging app - Exec=/usr/bin/telegram-desktop -- %u --Icon=telegram-desktop -+Icon=telegram - Terminal=false --StartupWMClass=Telegram -+StartupWMClass=TelegramDesktop - Type=Application - Categories=Network; - MimeType=x-scheme-handler/tg; diff --git a/Flags-for-precompiled-header-and-MOC.patch b/Flags-for-precompiled-header-and-MOC.patch index 558d0fbed0e8..c6df3258963f 100644 --- a/Flags-for-precompiled-header-and-MOC.patch +++ b/Flags-for-precompiled-header-and-MOC.patch @@ -1,27 +1,8 @@ Description: Specify preprocessor and compiler flags for precompiled header and Qt object files Author: Nicholas Guriev <guriev-ns@ya.ru> -Last-Update: 2017-01-26 +Last-Update: 2017-03-31 -diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi -index 24ededb..0cfd178 100644 ---- a/Telegram/gyp/qt.gypi -+++ b/Telegram/gyp/qt.gypi -@@ -241,11 +231,12 @@ - '<(SHARED_INTERMEDIATE_DIR)/<(_target_name)/moc/moc_<(RULE_INPUT_ROOT).cpp', - ], - 'action': [ -- '<(qt_loc)/bin/moc<(exe_ext)', -+ '/usr/bin/moc', - - # Silence "Note: No relevant classes found. No output generated." - '--no-notes', - -+ '<!@(echo $CPPFLAGS | grep -Po "[-]([IDU]\s*\S*|E)")', - '<!@(python -c "for s in \'<@(_defines)\'.split(\' \'): print(\'-D\' + s)")', - # '<!@(python -c "for s in \'<@(_include_dirs)\'.split(\' \'): print(\'-I\' + s)")', - '<(RULE_INPUT_PATH)', diff --git a/Telegram/gyp/PrecompiledHeader.cmake b/Telegram/gyp/PrecompiledHeader.cmake -index fc189e4..30becec 100644 --- a/Telegram/gyp/PrecompiledHeader.cmake +++ b/Telegram/gyp/PrecompiledHeader.cmake @@ -112,7 +112,7 @@ function(add_precompiled_header _target _input) @@ -42,3 +23,14 @@ index fc189e4..30becec 100644 DEPENDS "${_pchfile}" "${_pch_cpp_flags_file}" IMPLICIT_DEPENDS CXX "${_pch_header}" COMMENT "Precompiling ${_name} for ${_target} (C++)") +diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi +--- a/Telegram/gyp/qt.gypi ++++ b/Telegram/gyp/qt.gypi +@@ -228,6 +228,7 @@ + # Silence "Note: No relevant classes found. No output generated." + '--no-notes', + ++ '<!@(echo $CPPFLAGS | grep -Po "[-]([IDU]\s*\S*|E)")', + '<!@(python -c "for s in \'<@(_defines)\'.split(\' \'): print(\'-D\' + s)")', + # '<!@(python -c "for s in \'<@(_include_dirs)\'.split(\' \'): print(\'-I\' + s)")', + '<(RULE_INPUT_PATH)', @@ -7,7 +7,7 @@ _emoji_res_commit="62fcc728a12a4d5b41049e6aadb5e6f039c28f8d" pkgname=telegram-desktop-systemqt-notoemoji -pkgver=1.0.14 +pkgver=1.0.27 pkgrel=1 pkgdesc='Experimental build of Telegram Desktop (using system Qt, emojis replaced with those from Noto Color Emoji)' arch=('i686' 'x86_64') @@ -19,17 +19,24 @@ optdepends=('libappindicator-gtk3: AppIndicator tray icon') conflicts=('telegram-desktop') provides=('telegram-desktop') install="telegram-desktop.install" +_variant_ver="1.1.3" +_GSL_commit="16a6a41690325433976d843e13ec676d6f9ab091" source=( "tdesktop::git+https://github.com/telegramdesktop/tdesktop.git#tag=v$pkgver" + "GSL::git+https://github.com/Microsoft/GSL.git#commit=${_GSL_commit}" + "variant::git+https://github.com/mapbox/variant#tag=v${_variant_ver}" "telegramdesktop.desktop" "tg.protocol" "Avoid-depending-on-static-libraries.patch" - "Fix-desktop-integration-issues.patch" + "Remove-Werror-flag.patch" + "Downgrade-Qt-version.patch" "Flags-for-precompiled-header-and-MOC.patch" "Fix-rcc-path.patch" "Use-gtk3-headers.patch" "Reduce-number-of-libraries.patch" + "Correct-MOC-path.patch" "CMakeLists.inj" + "qt_functions.cpp" "https://github.com/PeterCxy/tdesktop/raw/${_emoji_res_commit}/Telegram/Resources/art/emoji.webp" "https://github.com/PeterCxy/tdesktop/raw/${_emoji_res_commit}/Telegram/Resources/art/emoji_125x.webp" "https://github.com/PeterCxy/tdesktop/raw/${_emoji_res_commit}/Telegram/Resources/art/emoji_150x.webp" @@ -37,15 +44,20 @@ source=( "https://github.com/PeterCxy/tdesktop/raw/${_emoji_res_commit}/Telegram/Resources/art/emoji_250x.webp" ) sha256sums=('SKIP' + 'SKIP' + 'SKIP' '41c22fae6ae757936741e63aec3d0f17cafe86b2d6153cdd1d01a5581e871f17' 'd4cdad0d091c7e47811d8a26d55bbee492e7845e968c522e86f120815477e9eb' - '197159eca70fc4a3d55548842d3218bcd67394cb869f08825d8fc12cf7b050f8' - '4e1938a5ddfcf8ac57bafa5f9ce80413665ac3b0ccd3c1853fe8f0835b91f468' - '952c7590cb05354c70037745d980fa97c36e36f96a1fa7d0db29a5c6a1d8dbd1' + '8da40e3d8bbec2c8dc653cc8c5071b5a7a6e899befac75d6b996536703da4ce6' + 'c47633e0c1e86cd4488c1533d5742245c5f9e910300f93083101d54597c00c3a' + 'c05175c418354f3202f4a031ca4133769a37640c920e9e4ff91025f9fc58a015' + '5b5a41a852d4d5b84466a19a04684dc7e43dfc6d6494dbcbe41341807bae52b3' 'cf4dbb293afdbfd226861a00a42790a15b23bea296eccf35853d104e07ea345a' '5f3ac7c08df0293bed626293dbfb6040764abf28899db7681572cfb1d8bcaa6e' - '0442af5365a31de5a8e15de8a94f5c1192775fc4460b74c4045da99e548f045a' + 'ca37a7a7bec56133530c4e03c718ad5d5d43f29ec79009d87cb7d891ef78b7a7' + '75dcda4aa2d6032f4931cf99e1d915defb4d960ee42725f3b54bbb7dd4ab8531' '7a06af83609168a8eaec59a65252caa41dcd0ecc805225886435eb65073e9c82' + '8fa4115ae60a87ee6c846f82d5cc4b90d0ba2b2016e1bd36634772230903af31' 'c6fea6d718b054aa3deb0b8b5a7f1ff330db2ab1f66962de033ad84c33622727' '701d15ffe711113022981b2f7da3ae2a4aa9febe260dac020a30274f8c8b538b' 'c268159a23152b765c7af72997cd290bfbb8c1ed5219991cca28596f85596bd1' @@ -54,20 +66,31 @@ sha256sums=('SKIP' prepare() { cd "$srcdir/tdesktop" + git submodule init + git config submodule.third_party/GSL.url "$srcdir/GSL" + git config submodule.third_party/variant.url "$srcdir/variant" + git submodule update git apply "$srcdir/Avoid-depending-on-static-libraries.patch" - git apply "$srcdir/Fix-desktop-integration-issues.patch" + git apply "$srcdir/Remove-Werror-flag.patch" + git apply "$srcdir/Downgrade-Qt-version.patch" git apply "$srcdir/Flags-for-precompiled-header-and-MOC.patch" git apply "$srcdir/Fix-rcc-path.patch" git apply "$srcdir/Use-gtk3-headers.patch" git apply "$srcdir/Reduce-number-of-libraries.patch" + git apply "$srcdir/Correct-MOC-path.patch" cp "$srcdir/emoji.webp" "$srcdir/emoji_"{125,150,200,250}"x.webp" "$srcdir/tdesktop/Telegram/Resources/art/" + mkdir -p debian + cp "$srcdir/qt_functions.cpp" debian/ } build() { + export GYP_DEFINES="TDESKTOP_DISABLE_CRASH_REPORTS,TDESKTOP_DISABLE_AUTOUPDATE,TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME" cd "$srcdir/tdesktop" export EXTRA_CPPFLAGS="-DTDESKTOP_DISABLE_AUTOUPDATE -DTDESKTOP_DISABLE_CRASH_REPORTS -DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME" export CPPFLAGS="$CPPFLAGS $EXTRA_CPPFLAGS" + export CXXFLAGS="$CXXFLAGS $EXTRA_CPPFLAGS" gyp \ + -Dbuild_defines=${GYP_DEFINES:1} \ -Gconfig=Release \ --depth=Telegram/gyp --generator-output=../.. -Goutput_dir=out Telegram/gyp/Telegram.gyp --format=cmake NUM=$((`wc -l < out/Release/CMakeLists.txt` - 2)) diff --git a/Reduce-number-of-libraries.patch b/Reduce-number-of-libraries.patch index a782e1c730c4..3ea2b26bd766 100644 --- a/Reduce-number-of-libraries.patch +++ b/Reduce-number-of-libraries.patch @@ -1,12 +1,11 @@ Description: Remove linking of unused libraries Author: Nicholas Guriev <guriev-ns@ya.ru> -Last-Update: 2017-02-18 +Last-Update: 2017-03-31 diff --git a/Telegram/gyp/Telegram.gyp b/Telegram/gyp/Telegram.gyp -index 603264b..830df69 100644 --- a/Telegram/gyp/Telegram.gyp +++ b/Telegram/gyp/Telegram.gyp -@@ -76,7 +76,6 @@ +@@ -78,7 +78,6 @@ 'codegen.gyp:codegen_style', 'codegen.gyp:codegen_numbers', 'codegen.gyp:MetaLang', @@ -15,24 +14,35 @@ index 603264b..830df69 100644 'defines': [ diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi -index 1db05de..d322153 100644 --- a/Telegram/gyp/qt.gypi +++ b/Telegram/gyp/qt.gypi -@@ -32,6 +32,5 @@ +@@ -32,13 +32,9 @@ ], }, 'qt_libs': [ +- 'qwebp', - 'Qt5PrintSupport', +- 'Qt5PlatformSupport', 'Qt5Network', 'Qt5Widgets', -@@ -81,21 +80,8 @@ + 'Qt5Gui', +- 'qtharfbuzzng', + ], + 'qt_version%': '<(qt_version)', + 'conditions': [ +@@ -89,27 +86,8 @@ 'qt_lib_debug_postfix': '', 'qt_lib_release_postfix': '', 'qt_libs': [ +- 'qxcb', - 'Qt5XcbQpa', +- 'qconnmanbearer', +- 'qgenericbearer', +- 'qnmbearer', '<@(qt_libs)', - 'Qt5DBus', 'Qt5Core', +- 'qtpcre', - 'Xi', - 'Xext', - 'Xfixes', @@ -44,13 +54,14 @@ index 1db05de..d322153 100644 - 'xcb-shm', - 'xcb-xfixes', - 'xcb-render', +- 'xcb-static', ], }], ], -@@ -120,11 +106,6 @@ - 'qt_loc': '<(qt_loc_unix)', - }], - ], +@@ -139,11 +117,6 @@ + # '<!@(python <(DEPTH)/list_sources.py [sources] <(qt_moc_list_sources_arg))' + # where [sources] contains all your source files + 'qt_moc_list_sources_arg': '--moc-prefix SHARED_INTERMEDIATE_DIR/<(_target_name)/moc/moc_', - - 'linux_path_xkbcommon%': '/usr/local', - 'linux_lib_ssl%': 'ssl', @@ -59,17 +70,11 @@ index 1db05de..d322153 100644 }, 'configurations': { -@@ -200,17 +181,9 @@ - '<(qt_loc)/plugins/platforminputcontexts', - ], +@@ -221,12 +194,7 @@ icudata.a', 'libraries': [ -- 'xkbcommon', '<@(qt_libs_release)', -- '<(linux_lib_ssl)', -- '<(linux_lib_crypto)', -- '<!@(python -c "for s in \'<(linux_lib_icu)\'.split(\' \'): print(s)")', + 'crypto', - 'xcb', -+ 'crypto', 'X11', - 'X11-xcb', - 'dbus-1', @@ -79,7 +84,6 @@ index 1db05de..d322153 100644 'pthread', ], diff --git a/Telegram/gyp/telegram_linux.gypi b/Telegram/gyp/telegram_linux.gypi -index 29386a9..63d26e4 100644 --- a/Telegram/gyp/telegram_linux.gypi +++ b/Telegram/gyp/telegram_linux.gypi @@ -50,19 +50,12 @@ diff --git a/Remove-Werror-flag.patch b/Remove-Werror-flag.patch new file mode 100644 index 000000000000..9c8dab4ba747 --- /dev/null +++ b/Remove-Werror-flag.patch @@ -0,0 +1,17 @@ +Description: Remove -Werror flag + This flag is removed because of fatal warnings in Qt +Author: Nicholas Guriev <guriev-ns@ya.ru> +Last-Update: 2017-03-31 + +diff --git a/Telegram/gyp/settings_linux.gypi b/Telegram/gyp/settings_linux.gypi +index 9050ab2..82bd931 100644 +--- a/Telegram/gyp/settings_linux.gypi ++++ b/Telegram/gyp/settings_linux.gypi +@@ -25,7 +25,6 @@ + '-pipe', + '-g', + '-Wall', +- '-Werror', + '-W', + '-fPIC', + '-Wno-unused-variable', diff --git a/qt_functions.cpp b/qt_functions.cpp new file mode 100644 index 000000000000..4a722b8d70ee --- /dev/null +++ b/qt_functions.cpp @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** 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 +*/ +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; +} |