2017-06-20 19:37:54 +02:00
#
# spec file for package telegram-desktop
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name : telegram-desktop
2017-12-31 22:04:54 +01:00
Version : 1.2.6
2017-06-20 19:37:54 +02:00
Release : 0
Summary : A new era of messaging
License : GPL-3.0
2017-12-11 01:14:03 +01:00
Group : Productivity/Networking/Instant Messenger
2017-06-20 19:37:54 +02:00
Url : https://github.com/telegramdesktop/tdesktop
Source : https://github.com/telegramdesktop/tdesktop/archive/v%{version} .tar.gz
2017-09-11 15:11:23 +02:00
# curl https://chromium.googlesource.com/breakpad/breakpad/+archive/refs/heads/master.tar.gz -o breakpad-master.tar.gz
2017-06-20 19:37:54 +02:00
Source1 : breakpad-master.tar.gz
2017-09-11 15:11:23 +02:00
# curl https://chromium.googlesource.com/linux-syscall-support/+archive/master.tar.gz -o linux-syscall-support-refs-heads-master.tar.gz
2017-06-20 19:37:54 +02:00
Source2 : linux-syscall-support-refs-heads-master.tar.gz
2017-09-11 15:11:23 +02:00
# curl https://chromium.googlesource.com/external/gyp/+archive/master.tar.gz -o gyp-master.tar.gz
2017-06-20 19:37:54 +02:00
Source3 : gyp-master.tar.gz
2017-12-11 01:14:03 +01:00
Source4 : patch.py
2017-09-11 15:11:23 +02:00
# curl https://codeload.github.com/Microsoft/GSL/zip/master -o GSL-master.zip
2017-06-20 19:37:54 +02:00
Source5 : GSL-master.zip
2017-09-11 15:11:23 +02:00
# curl https://codeload.github.com/mapbox/variant/zip/master -o variant-master.zip
2017-06-20 19:37:54 +02:00
Source6 : variant-master.zip
2017-07-24 17:51:21 +02:00
# curl https://codeload.github.com/grishka/libtgvoip/zip/public -o libtgvoip.zip
2017-06-20 19:37:54 +02:00
Source7 : libtgvoip.zip
2017-09-11 15:11:23 +02:00
# curl https://raw.githubusercontent.com/philsquared/Catch/master/single_include/catch.hpp -o catch.hpp
Source8 : catch.hpp
2017-12-11 01:14:03 +01:00
# curl https://codeload.github.com/ericniebler/range-v3/zip/master -o range-v3-master.zip
2017-12-31 22:04:54 +01:00
Source9 : range-v3-master.zip
# curl https://codeload.github.com/telegramdesktop/crl/zip/master -o crl-master.zip
Source10 : crl-master.zip
2017-09-11 15:11:23 +02:00
# PATCH-FIX-UPSTREAM breakpad-ucontext_t-glibc2_26.patch badshah400@gmail.com -- Replace `struct ucontext` by `ucontext_t` to make compatible with glib-2.26; merged upstream
Patch0 : breakpad-ucontext_t-glibc2_26.patch
2017-12-31 15:42:33 +01:00
Patch1 : tdesktop.patch
2017-06-20 19:37:54 +02:00
BuildRequires : chrpath
2017-12-16 22:54:48 +01:00
BuildRequires : cmake >= 3.2
BuildRequires : glibc-devel
2017-06-20 19:37:54 +02:00
BuildRequires : desktop-file-utils
BuildRequires : ffmpeg-devel
BuildRequires : fontconfig-devel
BuildRequires : freetype-devel
2017-12-16 22:54:48 +01:00
BuildRequires : gcc-c++ >= 7
2017-12-11 01:14:03 +01:00
BuildRequires : python3
2018-02-27 14:26:07 +01:00
# python2-base is required for gyp [automatically pulled in for Factory, but added here for Leap:15.0, where it isn't]
BuildRequires : python2-base
2017-06-20 19:37:54 +02:00
BuildRequires : libXfixes-devel
BuildRequires : libexpat-devel
BuildRequires : libjpeg-devel
BuildRequires : libmng-devel
BuildRequires : libopus-devel
BuildRequires : libproxy-devel
BuildRequires : libtiff-devel
BuildRequires : openal-soft-devel
BuildRequires : opusfile-devel
BuildRequires : pcre-devel
BuildRequires : pkgconfig
BuildRequires : portaudio-devel
BuildRequires : unzip
BuildRequires : xcb-util-image-devel
BuildRequires : xcb-util-keysyms-devel
BuildRequires : xcb-util-renderutil-devel
BuildRequires : xcb-util-wm-devel
BuildRequires : xorg-x11-devel
BuildRequires : xz
BuildRequires : zlib-devel
2017-12-31 15:42:33 +01:00
BuildRequires : libqt5-qtbase-common-devel
BuildRequires : libqt5-qtimageformats-devel
BuildRequires : libQt5Gui-private-headers-devel
BuildRequires : libQt5Core-private-headers-devel
BuildRequires : libQt5Network-devel
BuildRequires : libQt5Widgets-devel
BuildRequires : libQt5DBus-devel
BuildRequires : minizip-devel
2017-06-20 19:37:54 +02:00
BuildRequires : pkgconfig(alsa)
BuildRequires : pkgconfig(appindicator-0.1)
BuildRequires : pkgconfig(fontconfig)
BuildRequires : pkgconfig(freetype2)
BuildRequires : pkgconfig(glib-2.0)
BuildRequires : pkgconfig(gtk+-2.0)
BuildRequires : pkgconfig(harfbuzz)
BuildRequires : pkgconfig(libavcodec)
BuildRequires : pkgconfig(libavdevice)
BuildRequires : pkgconfig(libavfilter)
BuildRequires : pkgconfig(libavformat)
BuildRequires : pkgconfig(libavutil)
BuildRequires : pkgconfig(libcrypto)
BuildRequires : pkgconfig(liblzma)
BuildRequires : pkgconfig(libpng)
BuildRequires : pkgconfig(libpulse)
BuildRequires : pkgconfig(libva)
BuildRequires : pkgconfig(libva-glx)
BuildRequires : pkgconfig(libva-x11)
BuildRequires : pkgconfig(libwebp)
BuildRequires : pkgconfig(mtdev)
BuildRequires : pkgconfig(openssl)
BuildRequires : pkgconfig(tslib)
BuildRequires : pkgconfig(xcb-util)
BuildRequires : pkgconfig(xkbcommon)
BuildRequires : pkgconfig(xkbcommon-x11)
2016-11-13 03:07:38 +01:00
# Runtime requirements
2017-06-20 19:37:54 +02:00
Requires : ffmpeg
Requires : hicolor-icon-theme
Requires : icu
Requires : jasper
Requires : openssl
2018-01-12 16:25:37 +01:00
Requires : libqt5-qtimageformats
2017-06-20 19:37:54 +02:00
ExclusiveArch : x86_64
2016-06-05 02:26:41 +02:00
%description
Telegram Desktop app. A new era of messaging.
%prep
2017-03-20 20:53:42 +01:00
2017-06-20 19:37:54 +02:00
%setup -q -n tdesktop-%{version}
2017-09-11 15:11:23 +02:00
cp %{S:8} Telegram/SourceFiles/base/
# Already included in %{S:8}
sed -i " / c a t c h _ r e p o r t e r _ c o m p a c t . h p p / d " Telegram/SourceFiles/base/tests_main.cpp
2016-11-13 03:07:38 +01:00
2017-06-20 19:37:54 +02:00
rm -rf %{_builddir} /tdesktop-%{version} /ThirdParty/*
2017-03-20 20:53:42 +01:00
cp %{_sourcedir} /GSL-master.zip . && unzip GSL-master.zip
mv GSL-master GSL
2017-06-20 19:37:54 +02:00
mv GSL %{_builddir} /tdesktop-%{version} /Telegram/ThirdParty/
2017-03-20 20:53:42 +01:00
cp %{_sourcedir} /variant-master.zip . && unzip variant-master.zip
mv variant-master variant
2017-06-20 19:37:54 +02:00
mv variant %{_builddir} /tdesktop-%{version} /Telegram/ThirdParty/
2017-03-20 20:53:42 +01:00
2017-06-20 19:37:54 +02:00
cp %{_sourcedir} /libtgvoip.zip . && unzip libtgvoip.zip
mv libtgvoip-public libtgvoip
mv libtgvoip %{_builddir} /tdesktop-%{version} /Telegram/ThirdParty/
2017-12-11 01:14:03 +01:00
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/
2017-12-31 22:04:54 +01:00
cp %{_sourcedir} /crl-master.zip . && unzip crl-master.zip
mv crl-master crl
mv crl %{_builddir} /tdesktop-%{version} /Telegram/ThirdParty/
2017-12-31 15:42:33 +01:00
cp %{_sourcedir} /tdesktop.patch %{_builddir} /tdesktop-%{version}
cd %{_builddir} /tdesktop-%{version}
patch -p1 < tdesktop.patch
2017-12-11 01:14:03 +01:00
cp %{_sourcedir} /patch.py . && python3 ./patch.py
cp %{_sourcedir} /catch.hpp ./Telegram/SourceFiles/
2018-02-27 14:26:07 +01:00
%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
2016-06-05 02:26:41 +02:00
2017-09-11 15:11:23 +02:00
%if 0%{?suse_version} > 1320
pushd %{_builddir} /breakpad/src
%patch0 -p1
popd
%endif
2016-06-05 02:26:41 +02:00
%build
2017-03-20 20:53:42 +01:00
2016-11-13 04:26:16 +01:00
# generate patch
# git diff --relative-directory=./a a b
2016-06-05 02:26:41 +02:00
# Setup compiler variables
2017-09-11 15:11:23 +02:00
2016-06-05 02:26:41 +02:00
mv %{_builddir} /tdesktop-%{version} %{_builddir} /tdesktop
2016-11-13 03:07:38 +01:00
# patch gyp
cd %{_builddir} /Libraries
ln -s %{_builddir} /gyp ./gyp
cp %{_builddir} /tdesktop/Telegram/Patches/gyp.diff ./gyp/
cd gyp
patch -p1 < ./gyp.diff
2016-06-05 02:26:41 +02:00
# Build breakpad
2017-12-11 01:14:03 +01:00
cd %{_builddir} /breakpad
2016-06-05 02:26:41 +02:00
ln -s %{_builddir} /breakpad-lss ./src/third_party/lss
2017-06-21 17:00:51 +02:00
%if 0%{?suse_version} <= 1320
2017-12-16 22:54:48 +01:00
export CXX='g++-7'
export GCC='gcc-7'
2017-06-21 17:00:51 +02:00
%endif
2017-06-20 19:37:54 +02:00
# FIXME: you should use the %%configure macro
2017-12-11 01:14:03 +01:00
./configure --prefix=`pwd`/../Libraries/breakpad
2017-06-20 19:37:54 +02:00
make %{?_smp_mflags}
2017-12-11 01:14:03 +01:00
make install
2016-11-13 03:07:38 +01:00
2017-06-20 19:37:54 +02:00
# FIXME: you should use %%cmake macros
2016-11-13 03:07:38 +01:00
# use gyp to generate cmake files
cd %{_builddir} /tdesktop/Telegram/gyp
# patch qt.gypi to change libxkbcommon path
../../../Libraries/gyp/gyp \
2017-09-11 15:11:23 +02:00
%if 0%{?suse_version} <= 1320
2017-12-16 22:54:48 +01:00
-DCMAKE_CXX_COMPILER='g++-7' \
2017-09-11 15:11:23 +02:00
%endif
2016-11-13 03:07:38 +01:00
-Dlinux_lib_ssl=-lssl \
-Dlinux_lib_crypto=-lcrypto \
-Dlinux_lib_icu=" - l i c u u c - l i c u t u - l i c u i 1 8 n " \
2017-12-11 01:14:03 +01:00
-Dlinux_path_opus_include=" / u s r / i n c l u d e / o p u s " \
-Dlinux_path_breakpad=" . . / . . / . . / L i b r a r i e s / b r e a k p a d " \
2017-12-31 15:42:33 +01:00
-Gconfig=Release \
2016-11-13 03:07:38 +01:00
--depth=. --generator-output=" . . / . . / " -Goutput_dir=out Telegram.gyp --format=cmake
# build Telegram
cd %{_builddir} /tdesktop/out/Release
2017-06-20 19:37:54 +02:00
# FIXME: you should use %%cmake macros
2017-06-21 17:00:51 +02:00
%if 0%{?suse_version} <= 1320
2017-12-16 22:54:48 +01:00
export CXX='g++-7'
export GCC='gcc-7'
CC=gcc-7 CXX=g++-7 cmake .
2017-06-21 17:00:51 +02:00
%else
2017-06-20 19:37:54 +02:00
cmake .
2017-06-21 17:00:51 +02:00
%endif
2017-12-12 20:18:11 +01:00
make #%%{?_smp_mflags}
2016-11-13 03:07:38 +01:00
chrpath --delete Telegram
2016-06-05 02:26:41 +02:00
%install
# Install binary
2017-06-20 19:37:54 +02:00
install -dm755 %{buildroot} %{_prefix} /bin
2016-11-13 03:07:38 +01:00
install -m755 %{_builddir} /tdesktop/out/Release/Telegram \
2017-06-20 19:37:54 +02:00
%{buildroot} %{_bindir} /telegram-desktop
2016-06-05 02:26:41 +02:00
2016-11-13 05:46:56 +01:00
# Install desktop file
2017-06-20 19:37:54 +02:00
install -d %{buildroot} %{_datadir} /applications
2016-06-05 02:26:41 +02:00
desktop-file-install \
--dir %{buildroot} %{_datadir} /applications \
--add-category InstantMessaging \
%{_builddir} /tdesktop/lib/xdg/telegramdesktop.desktop
2016-11-13 05:46:56 +01:00
# Install protocol
2017-06-20 19:37:54 +02:00
install -d %{buildroot} %{_datadir} /kde4/services
2016-06-05 02:26:41 +02:00
install -m644 %{_builddir} /tdesktop/lib/xdg/tg.protocol \
2017-06-20 19:37:54 +02:00
%{buildroot} %{_datadir} /kde4/services/tg.protocol
2016-06-05 02:26:41 +02:00
2016-11-13 05:46:56 +01:00
# Install icons
2016-06-05 02:26:41 +02:00
for icon_size in 16 32 48 64 128 256 512; do
2017-06-20 19:37:54 +02:00
icon_dir=" %{buildroot} %{_datadir} / i c o n s / h i c o l o r / $ { i c o n _ s i z e } x $ { i c o n _ s i z e } / a p p s "
2016-06-05 02:26:41 +02:00
install -d " $ { i c o n _ d i r } "
install -m644 " %{_builddir} / t d e s k t o p / T e l e g r a m / R e s o u r c e s / a r t / i c o n $ { i c o n _ s i z e } . p n g " \
2017-05-01 04:29:24 +02:00
" $ { i c o n _ d i r } / t e l e g r a m . p n g "
2016-06-05 02:26:41 +02:00
done
2017-07-11 18:39:54 +02:00
%post
%icon_theme_cache_post
%desktop_database_post
%postun
%icon_theme_cache_postun
%desktop_database_postun
2016-06-05 02:26:41 +02:00
%files
%defattr (-, root, root, -)
2017-06-20 19:37:54 +02:00
%{_bindir} /telegram-desktop
%{_datadir} /applications/telegramdesktop.desktop
%dir %{_datadir} /kde4
%dir %{_datadir} /kde4/services
%{_datadir} /kde4/services/tg.protocol
%{_datadir} /icons/hicolor/*/apps/telegram.png
%changelog