Telegram* updated
This commit is contained in:
parent
003c14d62a
commit
d1a2f821f1
|
@ -0,0 +1,68 @@
|
|||
# Copyright 1999-2022 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
# @ECLASS: patches.eclass
|
||||
# @MAINTAINER:
|
||||
# mva
|
||||
# @AUTHOR:
|
||||
# mva
|
||||
# @BLURB: autopatching magic (pretty useful for me, but criticized for obscurity and looks like not suitable for gentoo repo)
|
||||
# @DESCRIPTION:
|
||||
# Eclass that checks for patches directories existance and auto-add them into PATCHES=()
|
||||
|
||||
EXPORT_FUNCTIONS src_prepare
|
||||
|
||||
|
||||
patches_src_prepare() {
|
||||
[[ -z ${PATCHES[@]} ]] && PATCHES=()
|
||||
PATCHDIR_BASE="${FILESDIR}/patches"
|
||||
PATCHDIRS=("${CUSTOM_PATCHDIR:-non-existant-dir}" "${SLOT//\/*}" "${PV}" "${PV}-${PR}")
|
||||
for PATCHDIR in ${PATCHDIRS[@]/#/${PATCHDIR_BASE}/}; do
|
||||
if [[ -d "${PATCHDIR}" ]]; then
|
||||
_patchdir_not_empty() {
|
||||
local has_files
|
||||
local LC_ALL=POSIX
|
||||
local prev_shopt=$(shopt -p nullglob)
|
||||
shopt -s nullglob
|
||||
local f
|
||||
local lvl=${2}
|
||||
for f in "${1:-${PATCHDIR}}"/*; do
|
||||
if [[ "${f}" == *.diff || "${f}" == *.patch ]] && [[ -f "${f}" || -L "${f}" ]]; then
|
||||
has_files=1
|
||||
elif [[ -d "${f}" ]] && [[ "${lvl:-0}" -eq 0 ]]; then
|
||||
# limit recursion to first level only,
|
||||
# since eapply cannot into recursion,
|
||||
# while 2-lvl "conditional" patching implemented below
|
||||
let lvl+=1
|
||||
_patchdir_not_empty "${f}" "${lvl}" && has_files=1
|
||||
fi
|
||||
done
|
||||
${prev_shopt}
|
||||
[[ -n "${has_files}" ]]; return $?
|
||||
}
|
||||
|
||||
_patchdir_not_empty && PATCHES+=("${PATCHDIR}")
|
||||
|
||||
if [[ -d "${PATCHDIR}/conditional" ]]; then
|
||||
pushd "${PATCHDIR}/conditional" &>/dev/null
|
||||
for d in *; do
|
||||
if [[ -d ${d} ]]; then
|
||||
if [[ "${d##no-}" == ${d} ]]; then
|
||||
(use "${d}" && _patchdir_not_empty "${d}") && PATCHES+=("${PATCHDIR}/conditional/${d}")
|
||||
else
|
||||
(use "${d##no-}" && _patchdir_not_empty "${d}") || PATCHES+=("${PATCHDIR}/conditional/${d}")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
popd &>/dev/null
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if declare -f cmake-utils_src_prepare &>/dev/null; then
|
||||
cmake-utils_src_prepare
|
||||
elif declare -f cmake_src_prepare &>/dev/null; then
|
||||
cmake_src_prepare
|
||||
else
|
||||
default_src_prepare
|
||||
fi
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
DIST libtgvoip-2.4.5_pre20231016.tar.gz 1089860 BLAKE2B b472ed42fb089d136ec00aec55a3869acb2f5eac219747c75a6643aa4ff3715924af3379e846cdb4962bb72b69007422ca9063ba457d3c8fdb6f03ce41fec981 SHA512 6e9bc8b229622ac2d7fd5bd60f48a1709a3914b8c610a0257471a39bef613a4302d15d1eb32fcd6e13f99b22e3d82e78c9e7f91a5bccb1c84641be965c72f646
|
|
@ -0,0 +1,94 @@
|
|||
cmake_minimum_required(VERSION 3.14)
|
||||
project(tgvoip)
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
option(ENABLE_ALSA "Enable ALSA" ON)
|
||||
option(ENABLE_PULSEAUDIO "Enable pulseaudio" ON)
|
||||
option(BUILD_STATIC_LIBRARY "Build static library" OFF)
|
||||
option(BUILD_SHARED_LIBRARY "Build static library" ON)
|
||||
|
||||
file(GLOB TGVOIP_SOURCE_FILES
|
||||
*.cpp
|
||||
audio/*.cpp
|
||||
os/linux/*.cpp
|
||||
os/posix/*.cpp
|
||||
video/*.cpp
|
||||
)
|
||||
|
||||
if(BUILD_SHARED_LIBRARY OR BUILD_STATIC_LIBRARY)
|
||||
find_package(tg_owt REQUIRED)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(OPUS REQUIRED opus)
|
||||
set(TGVOIP_COMPILE_DEFINITIONS TGVOIP_USE_DESKTOP_DSP WEBRTC_NS_FLOAT WEBRTC_POSIX WEBRTC_LINUX INSTALL_TARGETS)
|
||||
|
||||
if(ENABLE_ALSA)
|
||||
pkg_check_modules(ALSA REQUIRED alsa)
|
||||
else()
|
||||
file(GLOB ALSA_SOURCE_FILES
|
||||
os/linux/AudioInputALSA.cpp
|
||||
os/linux/AudioOutputALSA.cpp
|
||||
)
|
||||
list(REMOVE_ITEM TGVOIP_SOURCE_FILES ${ALSA_SOURCE_FILES})
|
||||
list(APPEND TGVOIP_COMPILE_DEFINITIONS WITHOUT_ALSA)
|
||||
endif()
|
||||
|
||||
if(ENABLE_PULSEAUDIO)
|
||||
pkg_check_modules(LIBPULSE REQUIRED libpulse)
|
||||
else()
|
||||
file(GLOB PULSEAUDIO_SOURCE_FILES
|
||||
os/linux/AudioInputPulse.cpp
|
||||
os/linux/AudioOutputPulse.cpp
|
||||
os/linux/AudioPulse.cpp
|
||||
)
|
||||
list(REMOVE_ITEM TGVOIP_SOURCE_FILES ${PULSEAUDIO_SOURCE_FILES})
|
||||
list(APPEND TGVOIP_COMPILE_DEFINITIONS WITHOUT_PULSE)
|
||||
endif()
|
||||
|
||||
get_target_property(OWT_INCLUDE_DIRS tg_owt::tg_owt INTERFACE_INCLUDE_DIRECTORIES)
|
||||
|
||||
add_library(${PROJECT_NAME} OBJECT ${TGVOIP_SOURCE_FILES})
|
||||
list(APPEND INSTALL_TARGETS ${PROJECT_NAME})
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC ${TGVOIP_COMPILE_DEFINITIONS})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||
"${OPUS_INCLUDE_DIRS}"
|
||||
# "${CMAKE_CURRENT_LIST_DIR}/webrtc_dsp"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/audio"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/video"
|
||||
"${OWT_INCLUDE_DIRS}"
|
||||
)
|
||||
set(LIBTGVOIP_VERSION 2.4.4)
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(exec_prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
set(libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||
set(includedir "${CMAKE_INSTALL_PREFIX}/include")
|
||||
configure_file(tgvoip.pc.in tgvoip.pc @ONLY)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tgvoip.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER TgVoip.h)
|
||||
# install(TARGETS ${PROJECT_NAME} PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/tgvoip")
|
||||
endif(BUILD_SHARED_LIBRARY OR BUILD_STATIC_LIBRARY)
|
||||
|
||||
if(BUILD_SHARED_LIBRARY)
|
||||
add_library(${PROJECT_NAME}_shared SHARED $<TARGET_OBJECTS:${PROJECT_NAME}>)
|
||||
target_compile_definitions(${PROJECT_NAME}_shared PUBLIC ${TGVOIP_COMPILE_DEFINITIONS})
|
||||
set_target_properties(${PROJECT_NAME}_shared PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
|
||||
set_target_properties(${PROJECT_NAME}_shared PROPERTIES SOVERSION 2 VERSION ${LIBTGVOIP_VERSION})
|
||||
target_link_libraries(${PROJECT_NAME}_shared dl ${OPUS_LIBRARIES} tg_owt)
|
||||
list(APPEND INSTALL_TARGETS ${PROJECT_NAME}_shared)
|
||||
endif(BUILD_SHARED_LIBRARY)
|
||||
|
||||
if(BUILD_STATIC_LIBRARY)
|
||||
add_library(${PROJECT_NAME}_static STATIC $<TARGET_OBJECTS:${PROJECT_NAME}>)
|
||||
target_compile_definitions(${PROJECT_NAME}_static PUBLIC ${TGVOIP_COMPILE_DEFINITIONS})
|
||||
set_target_properties(${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
|
||||
target_link_libraries(${PROJECT_NAME}_static dl ${OPUS_LIBRARIES} tg_owt)
|
||||
list(APPEND INSTALL_TARGETS ${PROJECT_NAME}_static)
|
||||
endif(BUILD_STATIC_LIBRARY)
|
||||
|
||||
install(TARGETS ${INSTALL_TARGETS}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/ DESTINATION include/${PROJECT_NAME} FILES_MATCHING PATTERN "*.h*" PATTERN "webrtc_dsp/*" EXCLUDE PATTERN ".git*" EXCLUDE)
|
|
@ -0,0 +1,100 @@
|
|||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit autotools flag-o-matic patches
|
||||
# cmake
|
||||
|
||||
if [[ "${PV}" == 9999 ]]; then
|
||||
EGIT_SUBMODULES=(-cmake)
|
||||
EGIT_REPO_URI="https://github.com/telegramdesktop/${PN}"
|
||||
inherit git-r3
|
||||
else
|
||||
if [[ "${PV}" == *_pre* ]]; then
|
||||
EGIT_COMMIT="06983098037603a4b2e5f7a8ba665da32857a631"
|
||||
fi
|
||||
MY_PV="${EGIT_COMMIT:-${PV}}"
|
||||
SRC_URI="https://github.com/telegramdesktop/${PN}/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
|
||||
# ~mips
|
||||
# ^ pulseaudio
|
||||
S="${WORKDIR}/${PN}-${MY_PV}"
|
||||
fi
|
||||
|
||||
DESCRIPTION="VoIP library for Telegram clients"
|
||||
HOMEPAGE="https://github.com/telegramdesktop/libtgvoip"
|
||||
|
||||
LICENSE="Unlicense"
|
||||
SLOT="0"
|
||||
IUSE="+alsa +dsp pulseaudio pipewire static-libs"
|
||||
REQUIRED_USE="|| ( dsp alsa pulseaudio pipewire )"
|
||||
|
||||
RDEPEND="
|
||||
alsa? ( media-libs/alsa-lib )
|
||||
dsp? (
|
||||
dev-cpp/abseil-cpp:=
|
||||
>=media-libs/tg_owt-0_pre20230401:=
|
||||
)
|
||||
dev-libs/openssl:=
|
||||
media-libs/opus
|
||||
pulseaudio? ( !pipewire? ( media-sound/pulseaudio-daemon ) )
|
||||
pipewire? (
|
||||
!media-sound/pulseaudio-daemon
|
||||
media-video/pipewire[sound-server(-)]
|
||||
)
|
||||
"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="virtual/pkgconfig"
|
||||
|
||||
src_prepare() {
|
||||
# cp "${FILESDIR}"/cmake/"${PN}".cmake "${S}"/CMakeLists.txt
|
||||
rm -rf "${S}"/webrtc_dsp # we'll link over tg_owt instead
|
||||
# Will be controlled by us
|
||||
sed -i -e '/^CFLAGS += -DTGVOIP_NO_DSP/d' Makefile.am || die
|
||||
# https://bugs.gentoo.org/717210
|
||||
echo 'libtgvoip_la_LIBTOOLFLAGS = --tag=CXX' >> Makefile.am || die
|
||||
# default
|
||||
patches_src_prepare
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
# src_configure() {
|
||||
# filter-flags '-DDEBUG' # produces bugs in bundled forks of 3party code
|
||||
# append-cppflags '-DNDEBUG' # Telegram sets that in code
|
||||
# # (and I also forced that in ebuild to have the same behaviour),
|
||||
# # and segfaults on voice calls on mismatch
|
||||
# # (if tg was built with it, and deps are built without it, and vice versa)
|
||||
# local mycmakeargs=(
|
||||
# #-DDESKTOP_APP_USE_PACKAGED=TRUE
|
||||
# #-DDESKTOP_APP_DISABLE_CRASH_REPORTS=TRUE
|
||||
# -DBUILD_STATIC_LIBRARY=$(usex static-libs ON OFF)
|
||||
# -DENABLE_ALSA=$(usex alsa ON OFF)
|
||||
# -DENABLE_PULSEAUDIO=$(usex pulseaudio ON $(usex pipewire ON OFF))
|
||||
# )
|
||||
# cmake_src_configure
|
||||
# }
|
||||
|
||||
src_configure() {
|
||||
# Not using the CMake build despite being the preferred one, because
|
||||
# it's lacking relevant configure options.
|
||||
local myconf=(
|
||||
--disable-dsp # WebRTC is linked from tg_owt
|
||||
$(use_with alsa)
|
||||
$(use_with pulseaudio pulse)
|
||||
$(use_with pipewire pulse)
|
||||
)
|
||||
if use dsp; then
|
||||
append-cppflags "-I${ESYSROOT}/usr/include/tg_owt"
|
||||
# append-cppflags "-I${ESYSROOT}/usr/include/tg_owt/third_party/abseil-cpp"
|
||||
append-libs '-ltg_owt'
|
||||
else
|
||||
append-cppflags '-DTGVOIP_NO_DSP'
|
||||
fi
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
find "${D}" -name '*.la' -delete || die
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit autotools flag-o-matic patches
|
||||
# cmake
|
||||
|
||||
if [[ "${PV}" == 9999 ]]; then
|
||||
EGIT_SUBMODULES=(-cmake)
|
||||
EGIT_REPO_URI="https://github.com/telegramdesktop/${PN}"
|
||||
inherit git-r3
|
||||
else
|
||||
if [[ "${PV}" == *_pre* ]]; then
|
||||
EGIT_COMMIT="06983098037603a4b2e5f7a8ba665da32857a631"
|
||||
fi
|
||||
MY_PV="${EGIT_COMMIT:-${PV}}"
|
||||
SRC_URI="https://github.com/telegramdesktop/${PN}/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
|
||||
# ~mips
|
||||
# ^ pulseaudio
|
||||
S="${WORKDIR}/${PN}-${MY_PV}"
|
||||
fi
|
||||
|
||||
DESCRIPTION="VoIP library for Telegram clients"
|
||||
HOMEPAGE="https://github.com/telegramdesktop/libtgvoip"
|
||||
|
||||
LICENSE="Unlicense"
|
||||
SLOT="0"
|
||||
IUSE="+alsa +dsp pulseaudio pipewire static-libs"
|
||||
REQUIRED_USE="|| ( dsp alsa pulseaudio pipewire )"
|
||||
|
||||
RDEPEND="
|
||||
alsa? ( media-libs/alsa-lib )
|
||||
dsp? (
|
||||
dev-cpp/abseil-cpp:=
|
||||
>=media-libs/tg_owt-0_pre20230401:=
|
||||
)
|
||||
dev-libs/openssl:=
|
||||
media-libs/opus
|
||||
pulseaudio? ( !pipewire? ( media-sound/pulseaudio-daemon ) )
|
||||
pipewire? (
|
||||
!media-sound/pulseaudio-daemon
|
||||
media-video/pipewire[sound-server(-)]
|
||||
)
|
||||
"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="virtual/pkgconfig"
|
||||
|
||||
src_prepare() {
|
||||
# cp "${FILESDIR}"/cmake/"${PN}".cmake "${S}"/CMakeLists.txt
|
||||
rm -rf "${S}"/webrtc_dsp # we'll link over tg_owt instead
|
||||
# Will be controlled by us
|
||||
sed -i -e '/^CFLAGS += -DTGVOIP_NO_DSP/d' Makefile.am || die
|
||||
# https://bugs.gentoo.org/717210
|
||||
echo 'libtgvoip_la_LIBTOOLFLAGS = --tag=CXX' >> Makefile.am || die
|
||||
# default
|
||||
patches_src_prepare
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
# src_configure() {
|
||||
# filter-flags '-DDEBUG' # produces bugs in bundled forks of 3party code
|
||||
# append-cppflags '-DNDEBUG' # Telegram sets that in code
|
||||
# # (and I also forced that in ebuild to have the same behaviour),
|
||||
# # and segfaults on voice calls on mismatch
|
||||
# # (if tg was built with it, and deps are built without it, and vice versa)
|
||||
# local mycmakeargs=(
|
||||
# #-DDESKTOP_APP_USE_PACKAGED=TRUE
|
||||
# #-DDESKTOP_APP_DISABLE_CRASH_REPORTS=TRUE
|
||||
# -DBUILD_STATIC_LIBRARY=$(usex static-libs ON OFF)
|
||||
# -DENABLE_ALSA=$(usex alsa ON OFF)
|
||||
# -DENABLE_PULSEAUDIO=$(usex pulseaudio ON $(usex pipewire ON OFF))
|
||||
# )
|
||||
# cmake_src_configure
|
||||
# }
|
||||
|
||||
src_configure() {
|
||||
# Not using the CMake build despite being the preferred one, because
|
||||
# it's lacking relevant configure options.
|
||||
local myconf=(
|
||||
--disable-dsp # WebRTC is linked from tg_owt
|
||||
$(use_with alsa)
|
||||
$(use_with pulseaudio pulse)
|
||||
$(use_with pipewire pulse)
|
||||
)
|
||||
if use dsp; then
|
||||
append-cppflags "-I${ESYSROOT}/usr/include/tg_owt"
|
||||
# append-cppflags "-I${ESYSROOT}/usr/include/tg_owt/third_party/abseil-cpp"
|
||||
append-libs '-ltg_owt'
|
||||
else
|
||||
append-cppflags '-DTGVOIP_NO_DSP'
|
||||
fi
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
find "${D}" -name '*.la' -delete || die
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<email>mva@gentoo.org</email>
|
||||
<description>Also, you can find me on IRC (Libera.Chat) as mva, or in Telegram as @mva_name</description>
|
||||
<name>Vadim A. Misbakh-Soloviov</name>
|
||||
</maintainer>
|
||||
<use>
|
||||
<flag name="alsa">Enable ALSA support</flag>
|
||||
<flag name="dsp">Enable signal processing (echo cancellation, noise suppression, and automatic gain control)</flag>
|
||||
<flag name="pulseaudio">Enable PulseAudio support</flag>
|
||||
<flag name="pipewire">Enable PipeWire support (actually, only force needed dependencies)</flag>
|
||||
<!-- <flag name="libcxx">Build with <pkg>sys-devel/clang</pkg> against <pkg>sys-libs/libcxx</pkg></flag> -->
|
||||
<flag name="static-libs">Build static library</flag>
|
||||
</use>
|
||||
<upstream>
|
||||
<remote-id type="github">grishka/libtgvoip</remote-id>
|
||||
<bugs-to>https://github.com/grishka/libtgvoip/issues</bugs-to>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
|
@ -0,0 +1,3 @@
|
|||
DIST libsrtp-f53df50059906e5c364eca65bd3c847cac9ef192.tar.gz 638464 BLAKE2B e876d606a73a9da226806fb14f6a53ba9339a4738c4785494144d835717fe76e37b585cd6168e98f0929faee262c8d26c021c333397712bf7bdc587e812fb8f1 SHA512 8713f84cc470540f4ccd3826d9da3460ab2ce0b81dfecc9b2d7be20a498ce945759b5f869ba722fbffdbcc68af38fddbd44342fc700f0c6b3dd05b18283fb868
|
||||
DIST libyuv-914624f0b8b92986ef385e9650ee7b5fb07099e9.tar.bz2 427558 BLAKE2B d1c87228de1120a883c4c06bdfbd809190a60862a3f8923513fbd057a28859a25882db109a1ff8e2c1ac584cb40a4c9c7d253c858c236d589019b849a78f7a8c SHA512 7596a33d2d6f94dca077929ba433d13a5e663eee01f63a9cfa8b8881d3270b7488cce8d40046429db3acf8ba3a89e58baba30f692ceb2088933a4beffc6a192e
|
||||
DIST tg_owt-0_pre20231221.tar.gz 13725943 BLAKE2B cd1fd52353cbbcad0ff8bd566394ce4238ecd1714ba30b1d8b275956c29ffe87f228b78048a4ec56faad63c802150635e5c71ae09c01f8673827a67ec3a593c8 SHA512 1a11d880a209eb82f702da8bc5ccb677042e7864065c442d9e1fd0ee60fe48ac911d5421e579273fbee9a0ce4437000e3c230a9f2cb2236dceff4750c28a4dc9
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person" proxied="yes">
|
||||
<email>esteve.varela@gmail.com</email>
|
||||
<name>Esteve Varela Colominas</name>
|
||||
</maintainer>
|
||||
<maintainer type="project" proxied="proxy">
|
||||
<email>proxy-maint@gentoo.org</email>
|
||||
<name>Proxy Maintainers</name>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="github">desktop-app/tg_owt</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
|
@ -0,0 +1,129 @@
|
|||
# Copyright 2020-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit cmake flag-o-matic
|
||||
|
||||
DESCRIPTION="WebRTC build for Telegram"
|
||||
HOMEPAGE="https://github.com/desktop-app/tg_owt"
|
||||
|
||||
TG_OWT_COMMIT="afd9d5d31798d3eacf9ed6c30601e91d0f1e4d60"
|
||||
LIBYUV_COMMIT="914624f0b8b92986ef385e9650ee7b5fb07099e9"
|
||||
LIBSRTP_COMMIT="f53df50059906e5c364eca65bd3c847cac9ef192"
|
||||
SRC_URI="https://github.com/desktop-app/tg_owt/archive/${TG_OWT_COMMIT}.tar.gz -> ${P}.tar.gz
|
||||
https://gitlab.com/chromiumsrc/libyuv/-/archive/${LIBYUV_COMMIT}/libyuv-${LIBYUV_COMMIT}.tar.bz2
|
||||
https://github.com/cisco/libsrtp/archive/${LIBSRTP_COMMIT}.tar.gz -> libsrtp-${LIBSRTP_COMMIT}.tar.gz"
|
||||
S="${WORKDIR}/${PN}-${TG_OWT_COMMIT}"
|
||||
# Upstream libyuv: https://chromium.googlesource.com/libyuv/libyuv
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0/${PV##*pre}"
|
||||
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv"
|
||||
IUSE="screencast +X"
|
||||
|
||||
# This package's USE flags may change the ABI and require a rebuild of
|
||||
# dependent pacakges. As such, one should make sure to depend on
|
||||
# media-libs/tg_owt[x=,y=,z=] for any package that uses this.
|
||||
# Furthermore, the -DNDEBUG preprocessor flag should be defined by any
|
||||
# dependent package, failure to do so will change the ABI in the header files.
|
||||
|
||||
# Bundled libs:
|
||||
# - libyuv (no stable versioning, www-client/chromium and media-libs/libvpx bundle it)
|
||||
# - libsrtp (project uses private APIs)
|
||||
# - pffft (no stable versioning, patched)
|
||||
RDEPEND="
|
||||
>=dev-cpp/abseil-cpp-20220623.1:=
|
||||
dev-libs/openssl:=
|
||||
dev-libs/protobuf:=
|
||||
media-libs/libjpeg-turbo:=
|
||||
>=media-libs/libvpx-1.10.0:=
|
||||
media-libs/openh264:=
|
||||
media-libs/opus
|
||||
media-video/ffmpeg:=
|
||||
dev-libs/crc32c
|
||||
screencast? (
|
||||
dev-libs/glib:2
|
||||
media-video/pipewire:=
|
||||
)
|
||||
X? (
|
||||
x11-libs/libX11
|
||||
x11-libs/libXcomposite
|
||||
x11-libs/libXdamage
|
||||
x11-libs/libXext
|
||||
x11-libs/libXfixes
|
||||
x11-libs/libXrender
|
||||
x11-libs/libXrandr
|
||||
x11-libs/libXtst
|
||||
)
|
||||
"
|
||||
DEPEND="${RDEPEND}
|
||||
screencast? (
|
||||
media-libs/libglvnd
|
||||
media-libs/mesa
|
||||
x11-libs/libdrm
|
||||
)
|
||||
"
|
||||
BDEPEND="
|
||||
virtual/pkgconfig
|
||||
X? ( x11-base/xorg-proto )
|
||||
"
|
||||
|
||||
src_unpack() {
|
||||
unpack "${P}.tar.gz"
|
||||
unpack "libyuv-${LIBYUV_COMMIT}.tar.bz2"
|
||||
mv -T "libyuv-${LIBYUV_COMMIT}" "${S}/src/third_party/libyuv" || die
|
||||
unpack "libsrtp-${LIBSRTP_COMMIT}.tar.gz"
|
||||
mv -T "libsrtp-${LIBSRTP_COMMIT}" "${S}/src/third_party/libsrtp" || die
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# libopenh264 has GENERATED files with yasm that aren't excluded by
|
||||
# EXCLUDE_FROM_ALL, and I have no clue how to avoid this.
|
||||
# These source files aren't used with system-openh264, anyway.
|
||||
sed -i '/include(cmake\/libopenh264.cmake)/d' CMakeLists.txt || die
|
||||
|
||||
# The sources for these aren't available, avoid needing them
|
||||
sed -e '/include(cmake\/libcrc32c.cmake)/d' \
|
||||
-e '/include(cmake\/libabsl.cmake)/d' -i CMakeLists.txt || die
|
||||
|
||||
# "lol" said the scorpion, "lmao"
|
||||
sed -i '/if (BUILD_SHARED_LIBS)/{n;n;s/WARNING/DEBUG/}' CMakeLists.txt || die
|
||||
|
||||
cmake_src_prepare
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Defined by -DCMAKE_BUILD_TYPE=Release, avoids crashes
|
||||
# See https://bugs.gentoo.org/754012
|
||||
# EAPI 8 still wipes this flag.
|
||||
append-cppflags '-DNDEBUG'
|
||||
|
||||
local mycmakeargs=(
|
||||
-DTG_OWT_USE_X11=$(usex X)
|
||||
-DTG_OWT_USE_PIPEWIRE=$(usex screencast)
|
||||
)
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cmake_src_install
|
||||
|
||||
# Save about 15MB of useless headers
|
||||
rm -r "${ED}/usr/include/tg_owt/rtc_base/third_party" || die
|
||||
rm -r "${ED}/usr/include/tg_owt/common_audio/third_party" || die
|
||||
rm -r "${ED}/usr/include/tg_owt/modules/third_party" || die
|
||||
rm -r "${ED}/usr/include/tg_owt/third_party" || die
|
||||
|
||||
# Install a few headers anyway, as required by net-im/telegram-desktop...
|
||||
local headers=(
|
||||
third_party/libyuv/include
|
||||
rtc_base/third_party/sigslot
|
||||
rtc_base/third_party/base64
|
||||
)
|
||||
for dir in "${headers[@]}"; do
|
||||
pushd "${S}/src/${dir}" > /dev/null || die
|
||||
find -type f -name "*.h" -exec install -Dm644 '{}' "${ED}/usr/include/tg_owt/${dir}/{}" \; || die
|
||||
popd > /dev/null || die
|
||||
done
|
||||
}
|
|
@ -1 +1 @@
|
|||
DIST tdesktop-3.6.1-full.tar.gz 41226549 SHA256 1e87df0970b135d566f5af4bc6c2695fc98ba387dc1137100a478f02d48c12e8 SHA512 dd216c720ea3b1c72669805bb31319746a7ddfe746d188bf2ae0c5cdf0a10b379fc2e888a26fe755d77381fc5d9aa638cedc76b2dce1f1126a9c1ef9c02da2ba WHIRLPOOL 9cbf5c46bc937793ab37d7ccf93ab391aee2b3fb06ce7b07c1767af126875db5489a6f8aa6897281f71d44d71f08c7e6cd2ec1a24d4be673ca7e188bb6ef8030
|
||||
DIST tdesktop-4.14.15-full.tar.gz 68147116 SHA256 969b7e4d22229717ea7b210e3c429f25fd5d06ec61ef3030f993e8f912c1ebe6 SHA512 12812fa1fd067fca03b2e5cb04502ef05e98368b91a4ed5458a61a0bea8b3d6daf6c32b7632c170fe0904acb63eb422f6fa6364e4af18f73e49659e2d50f531b WHIRLPOOL fdb60f373c779e08b3f14f07b56a92fbaf92585bbec3d361baf3bbf52987765784808ac85c051db7fe12256884f315b6e34fbe8884388f47b6a377f7c23531fb
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
--- tdesktop-3.3.0-full.orig/Telegram/lib_spellcheck/spellcheck/platform/linux/spellcheck_linux.cpp
|
||||
+++ tdesktop-3.3.0-full/Telegram/lib_spellcheck/spellcheck/platform/linux/spellcheck_linux.cpp
|
||||
@@ -34,7 +34,7 @@
|
||||
auto IsHebrew(const QString &word) {
|
||||
// Words with mixed scripts will be automatically ignored,
|
||||
// so this check should be fine.
|
||||
- return ::Spellchecker::WordScript(&word) == QChar::Script_Hebrew;
|
||||
+ return ::Spellchecker::WordScript(word) == QChar::Script_Hebrew;
|
||||
}
|
||||
|
||||
class EnchantSpellChecker {
|
||||
@@ -154,7 +154,7 @@
|
||||
}
|
||||
|
||||
auto EnchantSpellChecker::findSuggestions(const QString &word) {
|
||||
- const auto wordScript = ::Spellchecker::WordScript(&word);
|
||||
+ const auto wordScript = ::Spellchecker::WordScript(word);
|
||||
auto w = word.toStdString();
|
||||
std::vector<QString> result;
|
||||
if (!_validators.size()) {
|
|
@ -1,33 +0,0 @@
|
|||
Stub out some glibc-specific functions
|
||||
|
||||
This allows support for alternative libcs like musl
|
||||
|
||||
--- tdesktop-3.5.2-full.orig/Telegram/lib_base/base/platform/linux/base_info_linux.cpp
|
||||
+++ tdesktop-3.5.2-full/Telegram/lib_base/base/platform/linux/base_info_linux.cpp
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#include <sys/utsname.h>
|
||||
|
||||
-#ifdef Q_OS_LINUX
|
||||
+#if defined(Q_OS_LINUX) && defined(__GLIBC__)
|
||||
#include <gnu/libc-version.h>
|
||||
#endif // Q_OS_LINUX
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
}
|
||||
|
||||
QString GetLibcName() {
|
||||
-#ifdef Q_OS_LINUX
|
||||
+#if defined(Q_OS_LINUX) && defined(__GLIBC__)
|
||||
return "glibc";
|
||||
#endif // Q_OS_LINUX
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
}
|
||||
|
||||
QString GetLibcVersion() {
|
||||
-#ifdef Q_OS_LINUX
|
||||
+#if defined(Q_OS_LINUX) && defined(__GLIBC__)
|
||||
static const auto result = [&] {
|
||||
const auto version = QString::fromLatin1(gnu_get_libc_version());
|
||||
return QVersionNumber::fromString(version).isNull() ? QString() : version;
|
|
@ -1,41 +0,0 @@
|
|||
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.
|
||||
|
||||
--- tdesktop-3.6.0-full.orig/Telegram/CMakeLists.txt
|
||||
+++ tdesktop-3.6.0-full/Telegram/CMakeLists.txt
|
||||
@@ -1376,6 +1376,14 @@
|
||||
desktop-app::external_kwayland
|
||||
)
|
||||
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-3.6.0-full.orig/cmake/options_linux.cmake
|
||||
+++ tdesktop-3.6.0-full/cmake/options_linux.cmake
|
||||
@@ -62,14 +62,6 @@
|
||||
target_link_options(common_options INTERFACE $<IF:$<CONFIG:Debug>,,-g -flto -fuse-linker-plugin>)
|
||||
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()
|
||||
-
|
||||
target_link_libraries(common_options
|
||||
INTERFACE
|
||||
${CMAKE_DL_LIBS}
|
|
@ -1,75 +0,0 @@
|
|||
Support FFmpeg 5
|
||||
|
||||
I'm not comfortable changing the _durationInMilliseconds formula on older
|
||||
versions of ffmpeg. Doing that only for newer versions also reduces the amount
|
||||
of testing this patch needs (of which it'll get very minimal amounts, this is a
|
||||
job better left for upstream when they get to it).
|
||||
|
||||
Also it doesn't compile under ffmpeg 4 if the variables are constants :/
|
||||
|
||||
--- tdesktop-3.6.0-full.orig/Telegram/ThirdParty/tgcalls/tgcalls/group/AudioStreamingPartInternal.cpp
|
||||
+++ tdesktop-3.6.0-full/Telegram/ThirdParty/tgcalls/tgcalls/group/AudioStreamingPartInternal.cpp
|
||||
@@ -104,7 +104,11 @@
|
||||
|
||||
_frame = av_frame_alloc();
|
||||
|
||||
+#if LIBAVFORMAT_VERSION_MAJOR >= 59
|
||||
+ const AVInputFormat *inputFormat = av_find_input_format(container.c_str());
|
||||
+#else
|
||||
AVInputFormat *inputFormat = av_find_input_format(container.c_str());
|
||||
+#endif
|
||||
if (!inputFormat) {
|
||||
_didReadToEnd = true;
|
||||
return;
|
||||
@@ -144,7 +148,11 @@
|
||||
|
||||
_streamId = i;
|
||||
|
||||
+#if LIBAVFORMAT_VERSION_MAJOR >= 59
|
||||
+ _durationInMilliseconds = inStream->duration * 1000 / 48000;
|
||||
+#else
|
||||
_durationInMilliseconds = (int)((inStream->duration + inStream->first_dts) * 1000 / 48000);
|
||||
+#endif
|
||||
|
||||
if (inStream->metadata) {
|
||||
AVDictionaryEntry *entry = av_dict_get(inStream->metadata, "TG_META", nullptr, 0);
|
||||
--- tdesktop-3.6.0-full.orig/Telegram/ThirdParty/tgcalls/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp
|
||||
+++ tdesktop-3.6.0-full/Telegram/ThirdParty/tgcalls/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp
|
||||
@@ -32,7 +32,11 @@
|
||||
AudioStreamingPartPersistentDecoderState(AVCodecParameters const *codecParameters, AVRational timeBase) :
|
||||
_codecParameters(codecParameters),
|
||||
_timeBase(timeBase) {
|
||||
+#ifdef LIBAVCODEC_VERSION_MAJOR >= 59
|
||||
+ const AVCodec *codec = avcodec_find_decoder(codecParameters->codec_id);
|
||||
+#else
|
||||
AVCodec *codec = avcodec_find_decoder(codecParameters->codec_id);
|
||||
+#endif
|
||||
if (codec) {
|
||||
_codecContext = avcodec_alloc_context3(codec);
|
||||
int ret = avcodec_parameters_to_context(_codecContext, codecParameters);
|
||||
--- tdesktop-3.6.0-full.orig/Telegram/ThirdParty/tgcalls/tgcalls/group/VideoStreamingPart.cpp
|
||||
+++ tdesktop-3.6.0-full/Telegram/ThirdParty/tgcalls/tgcalls/group/VideoStreamingPart.cpp
|
||||
@@ -280,7 +280,11 @@
|
||||
|
||||
int ret = 0;
|
||||
|
||||
+#if LIBAVFORMAT_VERSION_MAJOR >= 59
|
||||
+ const AVInputFormat *inputFormat = av_find_input_format(container.c_str());
|
||||
+#else
|
||||
AVInputFormat *inputFormat = av_find_input_format(container.c_str());
|
||||
+#endif
|
||||
if (!inputFormat) {
|
||||
_didReadToEnd = true;
|
||||
return;
|
||||
@@ -323,7 +327,11 @@
|
||||
}
|
||||
|
||||
if (videoCodecParameters && videoStream) {
|
||||
+#if LIBAVCODEC_VERSION_MAJOR >= 59
|
||||
+ const AVCodec *codec = avcodec_find_decoder(videoCodecParameters->codec_id);
|
||||
+#else
|
||||
AVCodec *codec = avcodec_find_decoder(videoCodecParameters->codec_id);
|
||||
+#endif
|
||||
if (codec) {
|
||||
_codecContext = avcodec_alloc_context3(codec);
|
||||
ret = avcodec_parameters_to_context(_codecContext, videoCodecParameters);
|
|
@ -1,46 +0,0 @@
|
|||
Description: Do not capture buttons in AccountsList that belong to inner VerticalLayout widget
|
||||
This fixes a use-after-free error (double destruction) in the main menu right after account switching.
|
||||
Bug-Debian: https://bugs.debian.org/1008156
|
||||
Bug-Ubuntu: https://launchpad.net/bugs/1967673
|
||||
Forwarded: https://github.com/telegramdesktop/tdesktop/pull/24301
|
||||
Author: Nicholas Guriev <guriev-ns@ya.ru>
|
||||
Last-Update: Sat, 09 Apr 2022 13:47:55 +0300
|
||||
|
||||
diff --git a/Telegram/SourceFiles/settings/settings_information.cpp b/Telegram/SourceFiles/settings/settings_information.cpp
|
||||
index 092194dcf5ce..08365a9a0c27 100644
|
||||
--- a/Telegram/SourceFiles/settings/settings_information.cpp
|
||||
+++ b/Telegram/SourceFiles/settings/settings_information.cpp
|
||||
@@ -78,9 +78,7 @@ class AccountsList final {
|
||||
int _outerIndex = 0;
|
||||
|
||||
Ui::SlideWrap<Ui::SettingsButton> *_addAccount = nullptr;
|
||||
- base::flat_map<
|
||||
- not_null<Main::Account*>,
|
||||
- base::unique_qptr<Ui::SettingsButton>> _watched;
|
||||
+ base::flat_map<not_null<Main::Account*>, Ui::SettingsButton*> _watched;
|
||||
|
||||
base::unique_qptr<Ui::PopupMenu> _contextMenu;
|
||||
std::unique_ptr<Ui::VerticalLayoutReorder> _reorder;
|
||||
@@ -730,7 +728,7 @@ void AccountsList::rebuild() {
|
||||
order.reserve(inner->count());
|
||||
for (auto i = 0; i < inner->count(); i++) {
|
||||
for (const auto &[account, button] : _watched) {
|
||||
- if (button.get() == inner->widgetAt(i)) {
|
||||
+ if (button == inner->widgetAt(i)) {
|
||||
order.push_back(account->session().uniqueId());
|
||||
}
|
||||
}
|
||||
@@ -769,11 +767,11 @@ void AccountsList::rebuild() {
|
||||
account,
|
||||
std::move(activate));
|
||||
};
|
||||
- button.reset(inner->add(MakeAccountButton(
|
||||
+ button = inner->add(MakeAccountButton(
|
||||
inner,
|
||||
_controller,
|
||||
account,
|
||||
- std::move(callback))));
|
||||
+ std::move(callback)));
|
||||
}
|
||||
}
|
||||
inner->resizeToWidth(_outer->width());
|
|
@ -0,0 +1,32 @@
|
|||
Use system cppgir
|
||||
|
||||
https://github.com/desktop-app/cmake_helpers/issues/282
|
||||
https://github.com/desktop-app/cmake_helpers/pull/305
|
||||
--- tdesktop-4.10.0-full.orig/cmake/external/glib/CMakeLists.txt
|
||||
+++ tdesktop-4.10.0-full/cmake/external/glib/CMakeLists.txt
|
||||
@@ -7,14 +7,6 @@
|
||||
add_library(external_glib INTERFACE IMPORTED GLOBAL)
|
||||
add_library(desktop-app::external_glib ALIAS external_glib)
|
||||
|
||||
-function(add_cppgir) # isolate scope
|
||||
- set(BUILD_TESTING OFF)
|
||||
- set(BUILD_DOC OFF)
|
||||
- set(BUILD_EXAMPLES OFF)
|
||||
- add_subdirectory(cppgir EXCLUDE_FROM_ALL)
|
||||
-endfunction()
|
||||
-add_cppgir()
|
||||
-
|
||||
include(generate_cppgir.cmake)
|
||||
generate_cppgir(external_glib Gio-2.0)
|
||||
|
||||
--- tdesktop-4.10.0-full.orig/cmake/external/glib/generate_cppgir.cmake
|
||||
+++ tdesktop-4.10.0-full/cmake/external/glib/generate_cppgir.cmake
|
||||
@@ -4,6 +4,8 @@
|
||||
# For license and copyright information please follow this link:
|
||||
# https://github.com/desktop-app/legal/blob/master/LEGAL
|
||||
|
||||
+find_package(CppGir REQUIRED)
|
||||
+
|
||||
function(generate_cppgir target_name gir)
|
||||
# cppgir generates all the dependent headers everytime, better to have a global folder
|
||||
set(gen_dst ${CMAKE_BINARY_DIR}/gen)
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/Telegram/lib_base/base/qt/qt_compare.h b/Telegram/lib_base/base/qt/qt_compare.h
|
||||
index ca03fa2..d1eb6ab 100644
|
||||
--- a/Telegram/lib_base/base/qt/qt_compare.h
|
||||
+++ b/Telegram/lib_base/base/qt/qt_compare.h
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <gsl/pointers>
|
||||
|
||||
#include <QString>
|
||||
+#include <variant>
|
||||
|
||||
#if !defined(__apple_build_version__) || (__apple_build_version__ > 12000032)
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
# Copyright 2020-2022 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{8..10} )
|
||||
|
||||
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 +hunspell +jemalloc screencast +spell wayland +X"
|
||||
REQUIRED_USE="
|
||||
spell? (
|
||||
^^ ( enchant hunspell )
|
||||
)
|
||||
"
|
||||
|
||||
RDEPEND="
|
||||
!net-im/telegram-desktop-bin
|
||||
app-arch/lz4:=
|
||||
dev-cpp/abseil-cpp:=
|
||||
dev-libs/libdispatch
|
||||
dev-libs/openssl:=
|
||||
dev-libs/xxhash
|
||||
>=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?]
|
||||
media-fonts/open-sans
|
||||
media-libs/fontconfig:=
|
||||
~media-libs/libtgvoip-2.4.4_p20220117
|
||||
media-libs/openal
|
||||
media-libs/opus:=
|
||||
media-libs/rnnoise
|
||||
~media-libs/tg_owt-0_pre20220209[screencast=,X=]
|
||||
media-video/ffmpeg:=[opus]
|
||||
sys-libs/zlib:=[minizip]
|
||||
dbus? (
|
||||
dev-cpp/glibmm:2
|
||||
dev-qt/qtdbus:5
|
||||
dev-libs/libdbusmenu-qt[qt5(+)]
|
||||
)
|
||||
enchant? ( app-text/enchant:= )
|
||||
hunspell? ( >=app-text/hunspell-1.7:= )
|
||||
jemalloc? ( dev-libs/jemalloc:=[-lazy-lock] )
|
||||
wayland? (
|
||||
dev-qt/qtwayland:=
|
||||
kde-frameworks/kwayland:=
|
||||
)
|
||||
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-3.6.0-jemalloc-only-telegram.patch"
|
||||
"${FILESDIR}/tdesktop-3.3.0-fix-enchant.patch"
|
||||
"${FILESDIR}/tdesktop-3.5.2-musl.patch"
|
||||
"${FILESDIR}/tdesktop-3.6.0-support-ffmpeg5.patch"
|
||||
"${FILESDIR}/tdesktop-3.6.1-fix-double-destruction.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
|
||||
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() {
|
||||
# no explicit toggle, doesn't build with the system one #752417
|
||||
sed -i 's/DESKTOP_APP_USE_PACKAGED/NO_ONE_WILL_EVER_SET_THIS/' \
|
||||
cmake/external/rlottie/CMakeLists.txt || die
|
||||
|
||||
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.
|
||||
-DDESKTOP_APP_QT6=OFF
|
||||
|
||||
-DDESKTOP_APP_DISABLE_DBUS_INTEGRATION=$(usex !dbus)
|
||||
-DDESKTOP_APP_DISABLE_X11_INTEGRATION=$(usex !X)
|
||||
-DDESKTOP_APP_DISABLE_WAYLAND_INTEGRATION=$(usex !wayland)
|
||||
-DDESKTOP_APP_DISABLE_SPELLCHECK=$(usex !spell) # enables hunspell (recommended)
|
||||
-DDESKTOP_APP_USE_ENCHANT=$(usex enchant) # enables enchant and disables hunspell
|
||||
|
||||
# This option is heavily discouraged by upstream.
|
||||
# See files/tdesktop-*-jemalloc-optional.patch
|
||||
-DDESKTOP_APP_DISABLE_JEMALLOC=$(usex !jemalloc)
|
||||
)
|
||||
|
||||
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
|
||||
elog "both the 'X' and 'screencast' useflags are disabled, screen sharing won't work!"
|
||||
elog
|
||||
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
|
||||
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
|
||||
optfeature_header
|
||||
optfeature "shop payment support (requires USE=dbus enabled)" net-libs/webkit-gtk
|
||||
}
|
|
@ -0,0 +1,238 @@
|
|||
# Copyright 2020-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..12} )
|
||||
|
||||
inherit xdg cmake python-any-r1 optfeature flag-o-matic
|
||||
|
||||
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 ~loong ~ppc64 ~riscv"
|
||||
IUSE="dbus enchant +fonts screencast qt6 qt6-imageformats wayland webkit +X"
|
||||
REQUIRED_USE="
|
||||
qt6-imageformats? ( qt6 )
|
||||
"
|
||||
|
||||
KIMAGEFORMATS_RDEPEND="
|
||||
media-libs/libavif:=
|
||||
media-libs/libheif:=
|
||||
>=media-libs/libjxl-0.8.0:=
|
||||
"
|
||||
CDEPEND="
|
||||
!net-im/telegram-desktop-bin
|
||||
app-arch/lz4:=
|
||||
dev-cpp/abseil-cpp:=
|
||||
>=dev-cpp/glibmm-2.77:2.68
|
||||
dev-libs/glib:2
|
||||
dev-libs/libdispatch
|
||||
dev-libs/openssl:=
|
||||
dev-libs/protobuf
|
||||
dev-libs/xxhash
|
||||
media-libs/libjpeg-turbo:=
|
||||
>=media-libs/libtgvoip-2.4.4_p20230929
|
||||
media-libs/openal
|
||||
media-libs/opus
|
||||
media-libs/rnnoise
|
||||
>=media-libs/tg_owt-0_pre20230921:=[screencast=,X=]
|
||||
media-video/ffmpeg:=[opus,vpx]
|
||||
sys-libs/zlib:=[minizip]
|
||||
virtual/opengl
|
||||
!enchant? ( >=app-text/hunspell-1.7:= )
|
||||
enchant? ( app-text/enchant:= )
|
||||
!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:5
|
||||
webkit? (
|
||||
>=dev-qt/qtdeclarative-5.15:5
|
||||
>=dev-qt/qtwayland-5.15:5
|
||||
)
|
||||
)
|
||||
qt6? (
|
||||
>=dev-qt/qtbase-6.5:6=[dbus?,gui,network,opengl,wayland?,widgets,X?]
|
||||
>=dev-qt/qtimageformats-6.5:6
|
||||
>=dev-qt/qtsvg-6.5:6
|
||||
webkit? (
|
||||
>=dev-qt/qtdeclarative-6.5:6
|
||||
>=dev-qt/qtwayland-6.5:6[compositor]
|
||||
)
|
||||
qt6-imageformats? (
|
||||
>=dev-qt/qtimageformats-6.5:6=
|
||||
${KIMAGEFORMATS_RDEPEND}
|
||||
)
|
||||
)
|
||||
X? (
|
||||
x11-libs/libxcb:=
|
||||
x11-libs/xcb-util-keysyms
|
||||
)
|
||||
"
|
||||
RDEPEND="${CDEPEND}
|
||||
webkit? ( net-libs/webkit-gtk:4.1 net-libs/webkit-gtk:6 )
|
||||
"
|
||||
DEPEND="${CDEPEND}
|
||||
>=dev-cpp/cppgir-0_p20240110
|
||||
>=dev-cpp/ms-gsl-4
|
||||
dev-cpp/expected-lite
|
||||
dev-cpp/range-v3
|
||||
"
|
||||
BDEPEND="
|
||||
${PYTHON_DEPS}
|
||||
>=dev-build/cmake-3.16
|
||||
>=dev-cpp/cppgir-0_p20230926
|
||||
dev-util/gdbus-codegen
|
||||
virtual/pkgconfig
|
||||
wayland? ( dev-util/wayland-scanner )
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/tdesktop-4.10.0-system-cppgir.patch"
|
||||
"${FILESDIR}/tdesktop-4.10.5-qt_compare.patch"
|
||||
)
|
||||
|
||||
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 || die
|
||||
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 || die
|
||||
fi
|
||||
# kde-frameworks/kcoreaddons is bundled when using qt6.
|
||||
|
||||
# Happily fail if libraries aren't found...
|
||||
find -type f \( -name 'CMakeLists.txt' -o -name '*.cmake' \) \
|
||||
\! -path './Telegram/lib_webview/CMakeLists.txt' \
|
||||
\! -path './cmake/external/expected/CMakeLists.txt' \
|
||||
\! -path './cmake/external/kcoreaddons/CMakeLists.txt' \
|
||||
\! -path './cmake/external/qt/package.cmake' \
|
||||
-print0 | xargs -0 sed -i \
|
||||
-e '/pkg_check_modules(/s/[^ ]*)/REQUIRED &/' \
|
||||
-e '/find_package(/s/)/ REQUIRED)/' || die
|
||||
# Make sure to check the excluded files for new
|
||||
# CMAKE_DISABLE_FIND_PACKAGE entries.
|
||||
|
||||
# Control QtDBus dependency from here, to avoid messing with QtGui.
|
||||
if ! use dbus; then
|
||||
sed -e '/find_package(Qt[^ ]* OPTIONAL_COMPONENTS/s/DBus *//' \
|
||||
-i cmake/external/qt/package.cmake || die
|
||||
fi
|
||||
|
||||
cmake_src_prepare
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Having user paths sneak into the build environment through the
|
||||
# XDG_DATA_DIRS variable causes all sorts of weirdness with cppgir:
|
||||
# - bug 909038: can't read from flatpak directories (fixed upstream)
|
||||
# - bug 920819: system-wide directories ignored when variable is set
|
||||
export XDG_DATA_DIRS="${EPREFIX}/usr/share"
|
||||
|
||||
# Evil flag (bug #919201)
|
||||
filter-flags -fno-delete-null-pointer-checks
|
||||
|
||||
# The ABI of media-libs/tg_owt breaks if the -DNDEBUG flag doesn't keep
|
||||
# the same state across both projects.
|
||||
# See https://bugs.gentoo.org/866055
|
||||
append-cppflags '-DNDEBUG'
|
||||
|
||||
local qt=$(usex qt6 6 5)
|
||||
local mycmakeargs=(
|
||||
-DQT_VERSION_MAJOR=${qt}
|
||||
|
||||
# Override new cmake.eclass defaults (https://bugs.gentoo.org/921939)
|
||||
# Upstream never tests this any other way
|
||||
-DCMAKE_DISABLE_PRECOMPILE_HEADERS=OFF
|
||||
|
||||
# Control automagic dependencies on certain packages
|
||||
## Header-only lib, some git version.
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_tl-expected=ON
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Qt${qt}Quick=$(usex !webkit)
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Qt${qt}QuickWidgets=$(usex !webkit)
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Qt${qt}WaylandClient=$(usex !wayland)
|
||||
## Only used in Telegram/lib_webview/CMakeLists.txt
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Qt${qt}WaylandCompositor=$(usex !webkit)
|
||||
## KF6CoreAddons is currently unavailable in ::gentoo
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_KF${qt}CoreAddons=$(usex qt6)
|
||||
|
||||
-DDESKTOP_APP_DISABLE_X11_INTEGRATION=$(usex !X)
|
||||
-DDESKTOP_APP_DISABLE_WAYLAND_INTEGRATION=$(usex !wayland)
|
||||
## Enables enchant and disables hunspell
|
||||
-DDESKTOP_APP_USE_ENCHANT=$(usex enchant)
|
||||
## Use system fonts instead of bundled ones
|
||||
-DDESKTOP_APP_USE_PACKAGED_FONTS=$(usex !fonts)
|
||||
)
|
||||
|
||||
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 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
|
||||
if ! use qt6; then
|
||||
optfeature "AVIF, HEIF and JpegXL image support" kde-frameworks/kimageformats[avif,heif,jpegxl]
|
||||
fi
|
||||
}
|
Loading…
Reference in New Issue