Something has changed in Qt libraries remote layout so now the perl init-repository script from the old Qt version doesn't work anymore. We init the submodules using script from the latest Qt version and after that we checkout the desired version by tag in all submodules.
		
			
				
	
	
	
	
		
			4.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			4.7 KiB
		
	
	
	
	
	
	
	
Building via qmake
NB These are outdated, please refer to Building using GYP/CMake instructions.
The following commands assume the following environment variables are set:
$srcdir: The directory into which the source has been downloaded and unpacked._qtver: The Qt version being used (eg:5.6.2).$pkgdir: The directory into which installable files are places. This is/for local installations, or can be different directory when preparing a redistributable package.
Either set them accordingly, or replace them in the below commands as desired.
The following sources should be downloaded and unpacked into $srcdir:
- This repository (either 
masteror a specific tag). git clone git://code.qt.io/qt/qt5.gitgit clone git+https://chromium.googlesource.com/breakpad/breakpad breakpadgit clone git+https://chromium.googlesource.com/linux-syscall-support breakpad-lss- telegramdesktop.desktop (The intention is to include this file inside the
source package at some point):
https://aur.archlinux.org/cgit/aur.git/plain/telegramdesktop.desktop?h=telegram-desktop - tg.protocol: 
https://aur.archlinux.org/cgit/aur.git/plain/tg.protocol?h=telegram-desktop 
Preparation
cd "$srcdir/tdesktop"
mkdir -p "$srcdir/Libraries"
local qt_patch_file="$srcdir/tdesktop/Telegram/Patches/qtbase_${_qtver//./_}.diff"
local qt_dir="$srcdir/Libraries/qt${_qtver//./_}"
if [ "$qt_patch_file" -nt "$qt_dir" ]; then
  rm -rf "$qt_dir"
  git clone git://code.qt.io/qt/qt5.git
  cd "$qt_dir"
  perl init-repository --module-subset=qtbase,qtimageformats
  git checkout v$_qtver
  cd qtimageformats
  git checkout v$_qtver
  cd ../qtbase
  git checkout v$_qtver
  git apply "$qt_patch_file"
fi
if [ ! -h "$srcdir/Libraries/breakpad" ]; then
  ln -s "$srcdir/breakpad" "$srcdir/Libraries/breakpad"
  ln -s "$srcdir/breakpad-lss" "$srcdir/Libraries/breakpad/src/third_party/lss"
fi
sed -i 's/CUSTOM_API_ID//g' "$srcdir/tdesktop/Telegram/Telegram.pro"
(
  echo "DEFINES += TDESKTOP_DISABLE_AUTOUPDATE"
  echo "DEFINES += TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
) >> "$srcdir/tdesktop/Telegram/Telegram.pro"
Building
# Build patched Qt
cd "$qtdir"
./configure -prefix "$srcdir/qt" -release -opensource -confirm-license -qt-zlib \
            -qt-libpng -qt-libjpeg -qt-freetype -qt-harfbuzz -qt-pcre -qt-xcb \
            -qt-xkbcommon-x11 -no-opengl -no-gtkstyle -static -nomake examples -nomake tests
make module-qtbase module-qtimageformats
make module-qtbase-install_subtargets module-qtimageformats-install_subtargets
export PATH="$srcdir/qt/bin:$PATH"
# Build breakpad
cd "$srcdir/Libraries/breakpad"
./configure
make
# Build codegen_style
mkdir -p "$srcdir/tdesktop/Linux/obj/codegen_style/Debug"
cd "$srcdir/tdesktop/Linux/obj/codegen_style/Debug"
qmake CONFIG+=debug ../../../../Telegram/build/qmake/codegen_style/codegen_style.pro
make
# Build codegen_numbers
mkdir -p "$srcdir/tdesktop/Linux/obj/codegen_numbers/Debug"
cd "$srcdir/tdesktop/Linux/obj/codegen_numbers/Debug"
qmake CONFIG+=debug ../../../../Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
make
# Build MetaLang
mkdir -p "$srcdir/tdesktop/Linux/DebugIntermediateLang"
cd "$srcdir/tdesktop/Linux/DebugIntermediateLang"
qmake CONFIG+=debug "../../Telegram/MetaLang.pro"
make
# Build Telegram Desktop
mkdir -p "$srcdir/tdesktop/Linux/ReleaseIntermediate"
cd "$srcdir/tdesktop/Linux/ReleaseIntermediate"
qmake CONFIG+=release "../../Telegram/Telegram.pro"
make
Installation
install -dm755 "$pkgdir/usr/bin"
install -m755 "$srcdir/tdesktop/Linux/Release/Telegram" "$pkgdir/usr/bin/telegram-desktop"
install -d "$pkgdir/usr/share/applications"
install -m644 "$srcdir/telegramdesktop.desktop" "$pkgdir/usr/share/applications/telegramdesktop.desktop"
install -d "$pkgdir/usr/share/kde4/services"
install -m644 "$srcdir/tg.protocol" "$pkgdir/usr/share/kde4/services/tg.protocol"
local icon_size icon_dir
for icon_size in 16 32 48 64 128 256 512; do
  icon_dir="$pkgdir/usr/share/icons/hicolor/${icon_size}x${icon_size}/apps"
  install -d "$icon_dir"
  install -m644 "$srcdir/tdesktop/Telegram/SourceFiles/art/icon${icon_size}.png" "$icon_dir/telegram-desktop.png"
done
Notes
These instructions are based on the ArchLinux package for telegram-desktop.
In case these instructions are at some point out of date, the above may serve as an update reference.