net-im/telegram-desktop: Bump to 4.2.4

Adds support for bundling kimageformats for qt6.

Adds support for disabling bundled fonts.

Bug: https://bugs.gentoo.org/841218
Signed-off-by: Esteve Varela Colominas <esteve.varela@gmail.com>
Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
This commit is contained in:
Esteve Varela Colominas 2022-10-01 12:34:41 +02:00 committed by Georgy Yakovlev
parent f931269e1a
commit 732558f79f
No known key found for this signature in database
GPG Key ID: A272C8F015129D52
4 changed files with 250 additions and 0 deletions

View File

@ -1,3 +1,4 @@
DIST tdesktop-3.6.1-full.tar.gz 41226549 BLAKE2B 6922ae015e36f86597aaedf1212ed951d6313a8f5f76a8838ab7ef9e02afe0cbc428acd991488190bafdf28faf2a69a09a5a1e963b2aa6ed27ef941602e15d88 SHA512 dd216c720ea3b1c72669805bb31319746a7ddfe746d188bf2ae0c5cdf0a10b379fc2e888a26fe755d77381fc5d9aa638cedc76b2dce1f1126a9c1ef9c02da2ba
DIST tdesktop-4.0.2-full.tar.gz 41059443 BLAKE2B da4efb15c8a2d11719d3aa56c3a40b12f70c37577d2909c43e6029e10ca0bb1f8445ed68ed9acd532009c8e0a8f48fa13d2a51573a81f58a8a83b13427ffb631 SHA512 0078b627d06dd8e655bd2bcc222ecbb3b15b7d88f858810bccdca84793ad02a60f4a4bf3808838752d65d4f6cffa3ddb5f70c5afc8e94cb6edae52101362feeb
DIST tdesktop-4.1.1-full.tar.gz 41431505 BLAKE2B 7faf8d3a1e6d1ccb621f7a5af89c9b680fe515fbf4994f05d899ec44b8dc863440a368194a0237bef09078d14b5c670749276765da28ac6118787b6584fcbc01 SHA512 3240b9f81c3901997b1ea13fd7db7b8598b31c0faa68a2f711909ed11f33345db5a45ac99c0be77f1caeb1f571093ea42b1dbc7e7bb15e989c8756805c2ec887
DIST tdesktop-4.2.4-full.tar.gz 49210806 BLAKE2B 5900f977156f8ec98098a5e2fe97efcc5c2d7e2768123268e4b232e384c47a02fec11b3d5d875f99134aace9d3d7f937defb83ea1572d41c7df52f4d1bda1e9c SHA512 c0b458e4f21855d1041f7343ffdd501890a7535d040b45a8bd565e545d5bc01a00703af65e14ae407bf53f81a6d28d3f7d6afa664eb5b8e5641b21bb8e669a3a

View File

@ -0,0 +1,43 @@
Only link jemalloc for the Telegram binary
Some combination of factors is making the different codegen tools hang when
jemalloc is linked for those, and they're ran under portage's sandbox. Since
this is only used during build-time, and jemalloc is merely necessary to
improve runtime memory use, it's unnecessary to use it for anything else.
https://bugs.gentoo.org/802624
--- tdesktop-4.2.4-full.orig/Telegram/CMakeLists.txt
+++ tdesktop-4.2.4-full/Telegram/CMakeLists.txt
@@ -1478,6 +1478,14 @@
desktop-app::external_wayland_client
)
endif()
+
+ if (NOT DESKTOP_APP_DISABLE_JEMALLOC)
+ target_link_libraries(Telegram
+ INTERFACE
+ $<TARGET_OBJECTS:desktop-app::linux_jemalloc_helper>
+ $<LINK_ONLY:desktop-app::external_jemalloc>
+ )
+ endif()
endif()
if (build_macstore)
--- tdesktop-4.2.4-full.orig/cmake/options_linux.cmake
+++ tdesktop-4.2.4-full/cmake/options_linux.cmake
@@ -78,14 +78,6 @@
)
endif()
-if (NOT DESKTOP_APP_DISABLE_JEMALLOC)
- target_link_libraries(common_options
- INTERFACE
- $<TARGET_OBJECTS:desktop-app::linux_jemalloc_helper>
- $<LINK_ONLY:desktop-app::external_jemalloc>
- )
-endif()
-
if (DESKTOP_APP_USE_ALLOCATION_TRACER)
target_link_options(common_options
INTERFACE

View File

@ -12,6 +12,8 @@
<use>
<flag name="enchant">Enable the <pkg>app-text/aspell</pkg> spell-checking backend</flag>
<flag name="hunspell">Enable the <pkg>app-text/hunspell</pkg> spell-checking backend</flag>
<flag name="fonts">Use builtin patched copy of open-sans fonts (overrides fontconfig)</flag>
<flag name="qt6">Build with Qt6 support</flag>
<flag name="qt6-imageformats">Add support for HEIF, AVIF and JpegXL by bundling kde-frameworks/kimageformats</flag>
</use>
</pkgmetadata>

View File

@ -0,0 +1,204 @@
# Copyright 2020-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8..11} )
inherit xdg cmake python-any-r1 optfeature
DESCRIPTION="Official desktop client for Telegram"
HOMEPAGE="https://desktop.telegram.org"
MY_P="tdesktop-${PV}-full"
SRC_URI="https://github.com/telegramdesktop/tdesktop/releases/download/v${PV}/${MY_P}.tar.gz"
S="${WORKDIR}/${MY_P}"
LICENSE="BSD GPL-3-with-openssl-exception LGPL-2+"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
IUSE="+dbus enchant +fonts +hunspell +jemalloc screencast +spell qt6 qt6-imageformats wayland +X"
REQUIRED_USE="
spell? (
^^ ( enchant hunspell )
)
qt6-imageformats? ( qt6 )
"
KIMAGEFORMATS_RDEPEND="
media-libs/libavif:=
media-libs/libheif:=
media-libs/libjxl
"
RDEPEND="
!net-im/telegram-desktop-bin
app-arch/lz4:=
dev-cpp/abseil-cpp:=
dev-libs/glib:2
dev-libs/libdispatch
dev-libs/libsigc++:2
dev-libs/openssl:=
dev-libs/xxhash
media-libs/fontconfig:=
media-libs/libjpeg-turbo:=
~media-libs/libtgvoip-2.4.4_p20220503
media-libs/openal
media-libs/opus:=
media-libs/rnnoise
~media-libs/tg_owt-0_pre20220507:=[screencast=,X=]
media-video/ffmpeg:=[opus]
sys-libs/zlib:=[minizip]
x11-libs/xcb-util-keysyms
dbus? ( dev-cpp/glibmm:2 )
enchant? ( app-text/enchant:= )
hunspell? ( >=app-text/hunspell-1.7:= )
jemalloc? ( dev-libs/jemalloc:=[-lazy-lock] )
!qt6? (
>=dev-qt/qtcore-5.15:5
>=dev-qt/qtgui-5.15:5[dbus?,jpeg,png,wayland?,X?]
>=dev-qt/qtimageformats-5.15:5
>=dev-qt/qtnetwork-5.15:5[ssl]
>=dev-qt/qtsvg-5.15:5
>=dev-qt/qtwidgets-5.15:5[png,X?]
kde-frameworks/kcoreaddons:=
)
qt6? (
dev-qt/qt5compat:6
dev-qt/qtbase:6[dbus?,gui,network,opengl,widgets,X?]
dev-qt/qtimageformats:6
dev-qt/qtsvg:6
wayland? ( dev-qt/qtwayland:6 )
qt6-imageformats? ( ${KIMAGEFORMATS_RDEPEND} )
)
X? ( x11-libs/libxcb:= )
"
DEPEND="${RDEPEND}
dev-cpp/range-v3
=dev-cpp/ms-gsl-3*
"
BDEPEND="
${PYTHON_DEPS}
>=dev-util/cmake-3.16
virtual/pkgconfig
"
# dev-libs/jemalloc:=[-lazy-lock] -> https://bugs.gentoo.org/803233
PATCHES=(
"${FILESDIR}/tdesktop-4.2.4-jemalloc-only-telegram.patch"
"${FILESDIR}/tdesktop-3.3.0-fix-enchant.patch"
"${FILESDIR}/tdesktop-3.5.2-musl.patch"
)
# Current desktop-file-utils-0.26 does not understand Version=1.5
QA_DESKTOP_FILE="usr/share/applications/${PN}.desktop"
pkg_pretend() {
if has ccache ${FEATURES}; then
ewarn "ccache does not work with ${PN} out of the box"
ewarn "due to usage of precompiled headers"
ewarn "check bug https://bugs.gentoo.org/715114 for more info"
ewarn
fi
}
src_prepare() {
# Bundle kde-frameworks/kimageformats for qt6, since it's impossible to
# build in gentoo right now.
if use qt6-imageformats; then
sed -e 's/DESKTOP_APP_USE_PACKAGED_LAZY/TRUE/' -i \
cmake/external/kimageformats/CMakeLists.txt
printf "%s\n" \
'Q_IMPORT_PLUGIN(QAVIFPlugin)' \
'Q_IMPORT_PLUGIN(HEIFPlugin)' \
'Q_IMPORT_PLUGIN(QJpegXLPlugin)' \
>> cmake/external/qt/qt_static_plugins/qt_static_plugins.cpp
fi
# kde-frameworks/kcoreaddons is bundled when using qt6, see:
# cmake/external/kcoreaddons/CMakeLists.txt
cmake_src_prepare
}
src_configure() {
local mycmakeargs=(
-DTDESKTOP_LAUNCHER_BASENAME="${PN}"
-DCMAKE_DISABLE_FIND_PACKAGE_tl-expected=ON # header only lib, some git version. prevents warnings.
-DQT_VERSION_MAJOR=$(usex qt6 6 5)
-DDESKTOP_APP_DISABLE_DBUS_INTEGRATION=$(usex !dbus)
-DDESKTOP_APP_DISABLE_X11_INTEGRATION=$(usex !X)
-DDESKTOP_APP_DISABLE_WAYLAND_INTEGRATION=$(usex !wayland)
-DDESKTOP_APP_DISABLE_JEMALLOC=$(usex !jemalloc)
-DDESKTOP_APP_DISABLE_SPELLCHECK=$(usex !spell) # enables hunspell (recommended)
-DDESKTOP_APP_USE_ENCHANT=$(usex enchant) # enables enchant and disables hunspell
-DDESKTOP_APP_USE_PACKAGED_FONTS=$(usex !fonts) # use system fonts instead of bundled ones
)
if [[ -n ${MY_TDESKTOP_API_ID} && -n ${MY_TDESKTOP_API_HASH} ]]; then
einfo "Found custom API credentials"
mycmakeargs+=(
-DTDESKTOP_API_ID="${MY_TDESKTOP_API_ID}"
-DTDESKTOP_API_HASH="${MY_TDESKTOP_API_HASH}"
)
else
# https://github.com/telegramdesktop/tdesktop/blob/dev/snap/snapcraft.yaml
# Building with snapcraft API credentials by default
# Custom API credentials can be obtained here:
# https://github.com/telegramdesktop/tdesktop/blob/dev/docs/api_credentials.md
# After getting credentials you can export variables:
# export MY_TDESKTOP_API_ID="17349""
# export MY_TDESKTOP_API_HASH="344583e45741c457fe1862106095a5eb"
# and restart the build"
# you can set above variables (without export) in /etc/portage/env/net-im/telegram-desktop
# portage will use custom variable every build automatically
mycmakeargs+=(
-DTDESKTOP_API_ID="611335"
-DTDESKTOP_API_HASH="d524b414d21f4d37f08684c1df41ac9c"
)
fi
cmake_src_configure
}
pkg_postinst() {
xdg_pkg_postinst
if ! use X && ! use screencast; then
ewarn "both the 'X' and 'screencast' USE flags are disabled, screen sharing won't work!"
ewarn
fi
if has_version '<dev-qt/qtcore-5.15.2-r10'; then
ewarn "Versions of dev-qt/qtcore lower than 5.15.2-r10 might cause telegram"
ewarn "to crash when pasting big images from the clipboard."
ewarn
fi
if ! use jemalloc && use elibc_glibc; then
# https://github.com/telegramdesktop/tdesktop/issues/16084
# https://github.com/desktop-app/cmake_helpers/pull/91#issuecomment-881788003
ewarn "Disabling USE=jemalloc on glibc systems may cause very high RAM usage!"
ewarn "Do NOT report issues about RAM usage without enabling this flag first."
ewarn
fi
if use qt6; then
ewarn "Qt6 support in gentoo is experimental."
ewarn "Please report any issues you may find, but don't expect"
ewarn "everything to work correctly as of yet."
ewarn
fi
if use wayland && ! use qt6; then
ewarn "Wayland-specific integrations have been deprecated with Qt5."
ewarn "The app will continue to function under wayland, but some"
ewarn "functionality may be reduced."
ewarn "These integrations are only supported when built with Qt6."
ewarn
fi
if use qt6 && ! use qt6-imageformats; then
elog "Enable USE=qt6-imageformats for AVIF, HEIF and JpegXL support"
elog
fi
optfeature_header
optfeature "shop payment support (requires USE=dbus enabled)" net-libs/webkit-gtk:4
if ! use qt6; then
optfeature "AVIF, HEIF and JpegXL image support" kde-frameworks/kimageformats
fi
}