public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: profiles/features/musl/, net-im/telegram-desktop/, ...
@ 2022-02-23  4:25 Georgy Yakovlev
  0 siblings, 0 replies; only message in thread
From: Georgy Yakovlev @ 2022-02-23  4:25 UTC (permalink / raw
  To: gentoo-commits

commit:     56239ca5e225079d4b8605f577031339f077bdfa
Author:     Esteve Varela Colominas <esteve.varela <AT> gmail <DOT> com>
AuthorDate: Sat Feb 19 21:03:39 2022 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Wed Feb 23 04:22:23 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=56239ca5

net-im/telegram-desktop: Add musl support

Signed-off-by: Esteve Varela Colominas <esteve.varela <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/24278
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 .../tdesktop-3.5.2-jemalloc-only-telegram.patch    | 14 ++---
 .../files/tdesktop-3.5.2-jemalloc-optional.patch   | 71 ++++++++++++++++++++++
 .../files/tdesktop-3.5.2-musl.patch                | 33 ++++++++++
 ...5.2.ebuild => telegram-desktop-3.5.2-r1.ebuild} | 30 +++++----
 profiles/base/package.use.force                    |  6 ++
 profiles/features/musl/package.use                 |  4 ++
 profiles/features/musl/package.use.force           |  4 ++
 7 files changed, 144 insertions(+), 18 deletions(-)

diff --git a/net-im/telegram-desktop/files/tdesktop-3.5.2-jemalloc-only-telegram.patch b/net-im/telegram-desktop/files/tdesktop-3.5.2-jemalloc-only-telegram.patch
index 837cfaf38b7c..4f5c7017e6ac 100644
--- a/net-im/telegram-desktop/files/tdesktop-3.5.2-jemalloc-only-telegram.patch
+++ b/net-im/telegram-desktop/files/tdesktop-3.5.2-jemalloc-only-telegram.patch
@@ -7,19 +7,19 @@ improve runtime memory use, it's unnecessary to use it for anything else.
 
 --- tdesktop-3.5.2-full.orig/Telegram/CMakeLists.txt
 +++ tdesktop-3.5.2-full/Telegram/CMakeLists.txt
-@@ -1335,6 +1335,12 @@
-         endif()
+@@ -1357,6 +1357,12 @@
+             desktop-app::external_kwayland
+         )
      endif()
- else()
++
 +    target_link_libraries(Telegram
 +    PRIVATE
 +        desktop-app::linux_jemalloc_helper
 +        $<TARGET_OBJECTS:desktop-app::linux_jemalloc_helper>
 +    )
-+
-     if (NOT DESKTOP_APP_DISABLE_DBUS_INTEGRATION)
-         target_link_libraries(Telegram
-         PRIVATE
+ endif()
+ 
+ if (build_macstore)
 --- tdesktop-3.5.2-full.orig/cmake/options_linux.cmake
 +++ tdesktop-3.5.2-full/cmake/options_linux.cmake
 @@ -64,8 +64,6 @@

diff --git a/net-im/telegram-desktop/files/tdesktop-3.5.2-jemalloc-optional.patch b/net-im/telegram-desktop/files/tdesktop-3.5.2-jemalloc-optional.patch
new file mode 100644
index 000000000000..bd3595858c20
--- /dev/null
+++ b/net-im/telegram-desktop/files/tdesktop-3.5.2-jemalloc-optional.patch
@@ -0,0 +1,71 @@
+Optionally disable jemalloc
+
+Telegram upstream heavily insists you use the jemalloc allocator. This is due
+to the high memory usage resulting from the glibc allocator. It is unknown why
+this affects telegram the way it does, but upstream solved the issue by using a
+different allocator. Initially they used mallocng, now jemalloc.
+
+However, other libcs don't necessarily need this, and as such this should be
+optional. As mallocng is a fork of musl's allocator, and this was used before
+the switch to jemalloc, the musl allocator should still be OK.
+
+Please warn glibc users about disabling jemalloc, don't report bugs about
+memory usage upstream unless you're using jemalloc.
+
+Related info:
+https://github.com/telegramdesktop/tdesktop/issues/16084
+https://github.com/desktop-app/cmake_helpers/pull/91#issuecomment-881788003
+
+--- tdesktop-3.5.2-full.orig/Telegram/CMakeLists.txt
++++ tdesktop-3.5.2-full/Telegram/CMakeLists.txt
+@@ -1358,11 +1358,13 @@
+         )
+     endif()
+ 
+-    target_link_libraries(Telegram
+-    PRIVATE
+-        desktop-app::linux_jemalloc_helper
+-        $<TARGET_OBJECTS:desktop-app::linux_jemalloc_helper>
+-    )
++    if (NOT DESKTOP_APP_DISABLE_JEMALLOC)
++        target_link_libraries(Telegram
++        PRIVATE
++            desktop-app::linux_jemalloc_helper
++            $<TARGET_OBJECTS:desktop-app::linux_jemalloc_helper>
++        )
++    endif()
+ endif()
+ 
+ if (build_macstore)
+--- tdesktop-3.5.2-full.orig/cmake/CMakeLists.txt
++++ tdesktop-3.5.2-full/cmake/CMakeLists.txt
+@@ -5,7 +5,7 @@
+ # https://github.com/desktop-app/legal/blob/master/LEGAL
+ 
+ add_subdirectory(external)
+-if (LINUX)
++if (LINUX AND NOT DESKTOP_APP_DISABLE_JEMALLOC)
+     add_subdirectory(linux_jemalloc_helper)
+ endif()
+ if (LINUX AND NOT DESKTOP_APP_USE_PACKAGED)
+--- tdesktop-3.5.2-full.orig/cmake/external/CMakeLists.txt
++++ tdesktop-3.5.2-full/cmake/external/CMakeLists.txt
+@@ -37,7 +37,7 @@
+ 	add_checked_subdirectory(hunspell)
+ endif()
+ add_checked_subdirectory(iconv)
+-if (LINUX)
++if (LINUX AND NOT DESKTOP_APP_DISABLE_JEMALLOC)
+     add_checked_subdirectory(jemalloc)
+ endif()
+ add_checked_subdirectory(jpeg)
+--- tdesktop-3.5.2-full.orig/cmake/variables.cmake
++++ tdesktop-3.5.2-full/cmake/variables.cmake
+@@ -26,6 +26,7 @@
+ option(DESKTOP_APP_USE_PACKAGED_FONTS "Use preinstalled fonts instead of bundled patched ones." OFF)
+ option(DESKTOP_APP_USE_PACKAGED_RLOTTIE "Find rlottie using CMake instead of bundled patched one." OFF)
+ option(DESKTOP_APP_DISABLE_SPELLCHECK "Disable spellcheck library." OFF)
++option(DESKTOP_APP_DISABLE_JEMALLOC "Disable use of the jemalloc allocator (Linux only)." OFF)
+ option(DESKTOP_APP_DISABLE_CRASH_REPORTS "Disable crash report generation." ${no_special_target})
+ option(DESKTOP_APP_DISABLE_AUTOUPDATE "Disable autoupdate." ${disable_autoupdate})
+ option(DESKTOP_APP_USE_HUNSPELL_ONLY "Disable system spellchecker and use bundled Hunspell only. (For debugging purposes)" OFF)

diff --git a/net-im/telegram-desktop/files/tdesktop-3.5.2-musl.patch b/net-im/telegram-desktop/files/tdesktop-3.5.2-musl.patch
new file mode 100644
index 000000000000..4c34d107913e
--- /dev/null
+++ b/net-im/telegram-desktop/files/tdesktop-3.5.2-musl.patch
@@ -0,0 +1,33 @@
+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;

diff --git a/net-im/telegram-desktop/telegram-desktop-3.5.2.ebuild b/net-im/telegram-desktop/telegram-desktop-3.5.2-r1.ebuild
similarity index 82%
rename from net-im/telegram-desktop/telegram-desktop-3.5.2.ebuild
rename to net-im/telegram-desktop/telegram-desktop-3.5.2-r1.ebuild
index 8a4ae5891361..98ffdd9164d6 100644
--- a/net-im/telegram-desktop/telegram-desktop-3.5.2.ebuild
+++ b/net-im/telegram-desktop/telegram-desktop-3.5.2-r1.ebuild
@@ -17,7 +17,7 @@ S="${WORKDIR}/${MY_P}"
 LICENSE="BSD GPL-3-with-openssl-exception LGPL-2+"
 SLOT="0"
 KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
-IUSE="+dbus enchant +hunspell screencast +spell wayland +X"
+IUSE="+dbus enchant +hunspell +jemalloc screencast +spell wayland +X"
 REQUIRED_USE="
 	spell? (
 		^^ ( enchant hunspell )
@@ -28,7 +28,6 @@ RDEPEND="
 	!net-im/telegram-desktop-bin
 	app-arch/lz4:=
 	dev-cpp/abseil-cpp:=
-	dev-libs/jemalloc:=[-lazy-lock]
 	dev-libs/libdispatch
 	dev-libs/openssl:=
 	dev-libs/xxhash
@@ -54,6 +53,7 @@ RDEPEND="
 	)
 	enchant? ( app-text/enchant:= )
 	hunspell? ( >=app-text/hunspell-1.7:= )
+	jemalloc? ( dev-libs/jemalloc:=[-lazy-lock] )
 	wayland? ( kde-frameworks/kwayland:= )
 	X? ( x11-libs/libxcb:= )
 "
@@ -71,6 +71,8 @@ BDEPEND="
 PATCHES=(
 	"${FILESDIR}/tdesktop-3.5.2-jemalloc-only-telegram.patch"
 	"${FILESDIR}/tdesktop-3.3.0-fix-enchant.patch"
+	"${FILESDIR}/tdesktop-3.5.2-musl.patch"
+	"${FILESDIR}/tdesktop-3.5.2-jemalloc-optional.patch"
 )
 
 # Current desktop-file-utils-0.26 does not understand Version=1.5
@@ -95,17 +97,20 @@ src_prepare() {
 }
 
 src_configure() {
-	# gtk is really needed for image copy-paste due to https://bugreports.qt.io/browse/QTBUG-56595
 	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_X11_INTEGRATION=$(usex X no yes)
-		-DDESKTOP_APP_DISABLE_WAYLAND_INTEGRATION=$(usex wayland no yes)
-		-DDESKTOP_APP_DISABLE_DBUS_INTEGRATION=$(usex dbus no yes)
-		-DDESKTOP_APP_DISABLE_SPELLCHECK=$(usex spell no yes)  # enables hunspell (recommended)
+		-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
@@ -131,10 +136,6 @@ src_configure() {
 		)
 	fi
 
-	# Fix for RISCV, as well as any other platforms that might generate libatomic calls
-	# Upstreamed in >3.4.3
-	append-ldflags '-pthread'
-
 	cmake_src_configure
 }
 
@@ -142,10 +143,17 @@ 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

diff --git a/profiles/base/package.use.force b/profiles/base/package.use.force
index 579e9e3cac43..abd8fbe4ffb3 100644
--- a/profiles/base/package.use.force
+++ b/profiles/base/package.use.force
@@ -1,6 +1,12 @@
 # Copyright 1999-2022 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
+# Esteve Varela Colominas <esteve.varela@gmail.com> (2022-02-19)
+# Use the jemalloc allocator for telegram, as recommended by upstream,
+# to reduce memory usage, at least on glibc.
+# See the ebuild for more info.
+net-im/telegram-desktop jemalloc
+
 # Sam James <sam@gentoo.org> (2022-02-11)
 # Always build with PIE-default, just like GCC.
 sys-devel/clang pie

diff --git a/profiles/features/musl/package.use b/profiles/features/musl/package.use
index 9f8906ae5648..686670ae9ef4 100644
--- a/profiles/features/musl/package.use
+++ b/profiles/features/musl/package.use
@@ -1,6 +1,10 @@
 # Copyright 1999-2018 Gentoo Foundation.
 # Distributed under the terms of the GNU General Public License v2
 
+# Esteve Varela Colominas <esteve.varela@gmail.com> (2022-02-19)
+# The musl allocator works well with telegram
+net-im/telegram-desktop -jemalloc
+
 # Anthony G. Basile <blueness@gentoo.org> (2016-07-14)
 # We need this to break a circular dependency with
 # 'sys-libs/libcap pam' in stage3 catalyst builds

diff --git a/profiles/features/musl/package.use.force b/profiles/features/musl/package.use.force
index f11de170c840..c5f7ed10b1ea 100644
--- a/profiles/features/musl/package.use.force
+++ b/profiles/features/musl/package.use.force
@@ -1,6 +1,10 @@
 # Copyright 1999-2021 Gentoo Authors.
 # Distributed under the terms of the GNU General Public License v2
 
+# Esteve Varela Colominas <esteve.varela@gmail.com> (2022-02-19)
+# The musl allocator works well with telegram
+net-im/telegram-desktop -jemalloc
+
 # Andreas K. Hüttel <dilfridge@gentoo.org> (2021-07-14)
 # Do not force system install for libxcrypt here
 >=sys-libs/libxcrypt-4.4.23-r1 -system -compat


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-02-23  4:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-23  4:25 [gentoo-commits] repo/gentoo:master commit in: profiles/features/musl/, net-im/telegram-desktop/, Georgy Yakovlev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox