Subject: [PATCH] Fixed build under Fedora using rpmbuild and mock.

From dba8b962c805af477ceee699aa1c05143aa19d43 Mon Sep 17 00:00:00 2001
From: Vitaly Zaitsev <vitaly@easycoding.org>
Date: Fri, 31 Mar 2017 14:29:58 +0200
This commit is contained in:
Berkus Decker 2017-11-20 22:59:18 +02:00
parent a653fd0f44
commit dbc9f041ef
15 changed files with 153 additions and 143 deletions

View File

@ -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"));
InitFromCommandLine(argc, argv);
@ -38,6 +39,13 @@ int main(int argc, char *argv[]) {
// both are finished in Application::closeApplication
Logs::start(); // must be started before Platform is started
Platform::start(); // must be started before QApplication is created
#if defined(Q_OS_LINUX64)
QCoreApplication::addLibraryPath("/usr/lib64/qt5/plugins");
#else
QCoreApplication::addLibraryPath("/usr/lib/qt5/plugins");
#endif
setenv("QT_STYLE_OVERRIDE", "qwerty", false);
unsetenv("QT_QPA_PLATFORMTHEME");
int result = 0;
{

View File

@ -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;
}

View File

@ -28,13 +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)
Q_IMPORT_PLUGIN(QGenericEnginePlugin)
Q_IMPORT_PLUGIN(QNetworkManagerEnginePlugin)
Q_IMPORT_PLUGIN(QComposePlatformInputContextPlugin)
Q_IMPORT_PLUGIN(QIbusPlatformInputContextPlugin)
Q_IMPORT_PLUGIN(QFcitxPlatformInputContextPlugin)
Q_IMPORT_PLUGIN(QHimePlatformInputContextPlugin)
#endif // Q_OS_WIN | Q_OS_MAC | Q_OS_LINUX

View File

@ -1690,11 +1690,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();

View File

@ -330,7 +330,7 @@ TextBlock::TextBlock(const style::font &font, const QString &str, QFixed minResi
SignalHandlers::setCrashAnnotationRef("CrashString", &part);
QStackTextEngine engine(part, blockFont->f);
QTextLayout layout(&engine);
QTextLayout layout(part, blockFont->f);
layout.beginLayout();
layout.createLine();

View File

@ -191,9 +191,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);

View File

@ -112,7 +112,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}"
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)
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}"
DEPENDS "${_pchfile}" "${_pch_cpp_flags_file}"
IMPLICIT_DEPENDS CXX "${_pch_header}"
COMMENT "Precompiling ${_name} for ${_target} (C++)")

View File

@ -31,7 +31,6 @@
'src_loc': '../SourceFiles',
'res_loc': '../Resources',
'submodules_loc': '../ThirdParty',
'minizip_loc': '<(submodules_loc)/minizip',
'sp_media_key_tap_loc': '<(submodules_loc)/SPMediaKeyTap',
'emoji_suggestions_loc': '<(submodules_loc)/emoji_suggestions',
'style_files': [
@ -80,31 +79,24 @@
'codegen.gyp:codegen_lang',
'codegen.gyp:codegen_numbers',
'codegen.gyp:codegen_style',
'tests/tests.gyp:tests',
'utils.gyp:Updater',
'../ThirdParty/libtgvoip/libtgvoip.gyp:libtgvoip',
],
'defines': [
'AL_LIBTYPE_STATIC',
'AL_ALEXT_PROTOTYPES',
'TGVOIP_USE_CXX11_LIB',
'__STDC_FORMAT_MACROS',
'TDESKTOP_DISABLE_AUTOUPDATE',
'TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME',
'TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION',
'TDESKTOP_DISABLE_CRASH_REPORTS',
'TDESKTOP_DISABLE_UNITY_INTEGRATION',
],
'include_dirs': [
'<(src_loc)',
'<(SHARED_INTERMEDIATE_DIR)',
'<(libs_loc)/breakpad/src',
'<(minizip_loc)',
'<(sp_media_key_tap_loc)',
'<(emoji_suggestions_loc)',
'<(submodules_loc)/GSL/include',
'<(submodules_loc)/variant/include',
],
'sources': [
'<@(qrc_files)',

View File

@ -27,14 +27,11 @@
[ 'build_macold', {
'qt_version%': '5.3.2',
}, {
'qt_version%': '5.6.2',
'qt_version%': '<!(rpm -qa --queryformat "%{VERSION}" qt5-qtbase)',
}]
],
},
'qt_libs': [
'qwebp',
'Qt5PrintSupport',
'Qt5PlatformSupport',
'Qt5Network',
'Qt5Widgets',
'Qt5Gui',
@ -44,7 +41,7 @@
[ 'build_macold', {
'linux_path_qt%': '/usr/local/macold/Qt-<(qt_version)',
}, {
'linux_path_qt%': '../../../qt',
'linux_path_qt%': '<!(rpm --eval "%{_qt5_libdir}")',
}]
]
},
@ -84,17 +81,11 @@
],
}],
[ 'build_linux', {
'qt_lib_prefix': 'lib',
'qt_lib_debug_postfix': '.a',
'qt_lib_release_postfix': '.a',
'qt_lib_prefix': '',
'qt_lib_debug_postfix': '',
'qt_lib_release_postfix': '',
'qt_libs': [
'qxcb',
'Qt5XcbQpa',
'qconnmanbearer',
'qgenericbearer',
'qnmbearer',
'<@(qt_libs)',
'Qt5DBus',
'Qt5Core',
],
}],
@ -120,7 +111,6 @@
'qt_loc': '<(qt_loc_unix)',
}],
],
# If you need moc sources include a line in your 'sources':
# '<!@(python <(DEPTH)/list_sources.py [sources] <(qt_moc_list_sources_arg))'
# where [sources] contains all your source files
@ -173,21 +163,20 @@
},
'include_dirs': [
'<(qt_loc)/include',
'<(qt_loc)/include/QtCore',
'<(qt_loc)/include/QtGui',
'<(qt_loc)/include/QtDBus',
'<(qt_loc)/include/QtCore/<(qt_version)',
'<(qt_loc)/include/QtGui/<(qt_version)',
'<(qt_loc)/include/QtCore/<(qt_version)/QtCore',
'<(qt_loc)/include/QtGui/<(qt_version)/QtGui',
'<!(rpm --eval "%{_includedir}")/qt5',
'<!(rpm --eval "%{_includedir}")/qt5/QtCore',
'<!(rpm --eval "%{_includedir}")/qt5/QtGui',
'<!(rpm --eval "%{_includedir}")/qt5/QtCore/<(qt_version)',
'<!(rpm --eval "%{_includedir}")/qt5/QtGui/<(qt_version)',
'<!(rpm --eval "%{_includedir}")/qt5/QtCore/<(qt_version)/QtCore',
'<!(rpm --eval "%{_includedir}")/qt5/QtGui/<(qt_version)/QtGui',
],
'library_dirs': [
'<(qt_loc)/lib',
'<(qt_loc)/plugins',
'<(qt_loc)/plugins/bearer',
'<(qt_loc)/plugins/platforms',
'<(qt_loc)/plugins/imageformats',
'<(qt_loc)',
'<(qt_loc)/qt5/plugins',
'<(qt_loc)/qt5/plugins/bearer',
'<(qt_loc)/qt5/plugins/platforms',
'<(qt_loc)/qt5/plugins/imageformats',
],
'defines': [
'QT_WIDGETS_LIB',
@ -198,42 +187,17 @@
'conditions': [
[ 'build_linux', {
'library_dirs': [
'<(qt_loc)/plugins/platforminputcontexts',
'<(qt_loc)/qt5/plugins/platforminputcontexts',
],
'libraries': [
'<@(qt_libs_release)',
'z',
'pcre16',
'harfbuzz',
'icuuc',
'icutu',
'icui18n',
'png16',
'jpeg',
'xcb',
'xcb-shm',
'xcb-xfixes',
'xcb-render',
'X11',
'X11-xcb',
'GL',
'dbus-1',
'dl',
'gthread-2.0',
'glib-2.0',
'pthread',
'ssl',
'crypto',
'Xi',
'Xext',
'SM',
'ICE',
'fontconfig',
'expat',
'freetype',
'-lX11',
'-lglib-2.0',
'-lpthread',
],
'include_dirs': [
'<(qt_loc)/mkspecs/linux-g++',
'<(qt_loc)/qt5/mkspecs/linux-g++',
],
'ldflags': [
'-pthread',

View File

@ -28,7 +28,7 @@
'<(SHARED_INTERMEDIATE_DIR)/<(_target_name)/qrc/qrc_<(RULE_INPUT_ROOT).cpp',
],
'action': [
'<(qt_loc)/bin/rcc<(exe_ext)',
'<(qt_loc)/qt5/bin/rcc<(exe_ext)',
'-name', '<(RULE_INPUT_ROOT)',
'-no-compress',
'<(RULE_INPUT_PATH)',

View File

@ -22,11 +22,6 @@
[ 'build_linux', {
'variables': {
'linux_common_flags': [
'-pipe',
'-g',
'-Wall',
'-Werror',
'-W',
'-fPIC',
'-Wno-unused-variable',
'-Wno-unused-parameter',
@ -61,7 +56,6 @@
],
'defines': [
'_REENTRANT',
'QT_STATICPLUGIN',
'QT_PLUGIN',
],
'cflags_c': [
@ -72,6 +66,8 @@
'<@(linux_common_flags)',
'-std=gnu++14',
],
'ldflags': [
],
'configurations': {
'Debug': {
},

View File

@ -28,79 +28,48 @@
# QApplication() -> createPlatformIntegration -> QXcbIntegrationPlugin::create
#'xkbcommon',
],
'linux_path_breakpad%': '<(libs_loc)/breakpad',
'linux_path_opus_include%': '<(libs_loc)/opus/include',
},
'include_dirs': [
'/usr/include',
'/usr/include/ffmpeg',
'<(linux_path_breakpad)/include/breakpad',
'<(linux_path_opus_include)',
'<!(rpm --eval "%{_includedir}")',
'<!(rpm --eval "%{_includedir}")/ffmpeg',
'<!(rpm --eval "%{_includedir}")/minizip',
'<!(rpm --eval "%{_includedir}")/opus',
'<!(rpm --eval "%{_includedir}")/libtgvoip',
],
'library_dirs': [
'/usr/lib64',
'/usr/lib',
'<(linux_path_breakpad)/src/client/linux',
+ '<!(rpm --eval "%{_libdir}")',
],
'libraries': [
'breakpad_client',
'composeplatforminputcontextplugin',
'ibusplatforminputcontextplugin',
'fcitxplatforminputcontextplugin',
'himeplatforminputcontextplugin',
'xkbcommon',
'xkbcommon-x11',
'xcb-randr',
'xcb-xinerama',
'xcb-xkb',
'xcb-shape',
'xcb-icccm',
'xcb-sync',
'xcb-keysyms',
'xcb-image',
'xcb-render-util',
'wayland-client',
'wayland-cursor',
'proxy',
'lzma',
'openal',
'avformat',
'avcodec',
'swresample',
'swscale',
'avutil',
'opus',
'va-x11',
'va-drm',
'va',
'vdpau',
'z',
'minizip',
'tgvoip',
'webp',
# '<!(pkg-config 2> /dev/null --libs <@(pkgconfig_libs))',
],
'conditions': [['not_need_gtk!="True"', {
'cflags_cc': [
'<!(pkg-config 2> /dev/null --cflags appindicator-0.1)',
'<!(pkg-config 2> /dev/null --cflags gtk+-2.0)',
'<!(pkg-config 2> /dev/null --cflags glib-2.0)',
'<!(pkg-config 2> /dev/null --cflags gtk+-3.0)',
'<!(pkg-config 2> /dev/null --cflags dee-1.0)',
],
}]],
'configurations': {
'Release': {
'cflags': [
'-Ofast',
'-flto',
'-fno-strict-aliasing',
],
'cflags_cc': [
'-Ofast',
'-flto',
'-fno-strict-aliasing',
],
'ldflags': [
'-Ofast',
'-flto',
],
},
},

View File

@ -597,13 +597,7 @@
<(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: mac
<(sp_media_key_tap_loc)/SPMediaKeyTap.m

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<component type="desktop">
<id>org.telegram.desktop</id>
<id>telegram-desktop.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0</project_license>
<name>Telegram Desktop</name>

View File

@ -1,9 +1,11 @@
[Desktop Entry]
Version=1.0
Name=Telegram Desktop
GenericName=Telegram Desktop
Keywords=IM;Chat;
Comment=Official desktop version of Telegram messaging app
Exec=telegram-desktop -- %u
Icon=telegram
Exec=/usr/bin/telegram-desktop -- %u
Icon=telegram-desktop
Terminal=false
StartupWMClass=TelegramDesktop
Type=Application