1
0

Compare commits

...

16 Commits

Author SHA256 Message Date
Ana Guerrero
21d2a9b29a Accepting request 1243539 from server:messaging
- Replace pkgconfig(webkit2gtk-4.0) with pkgconfig(webkit2gtk-4.1)
  and drop superfluous webkit2gtk3-devel BuildRequires.

OBS-URL: https://build.opensuse.org/request/show/1243539
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/telegram-desktop?expand=0&rev=130
2025-02-06 21:08:02 +00:00
Илья Индиго
58031b5ce1 - Replace pkgconfig(webkit2gtk-4.0) with pkgconfig(webkit2gtk-4.1)
and drop superfluous webkit2gtk3-devel BuildRequires.

OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=347
2025-02-06 03:48:41 +00:00
2ddc79648e Accepting request 1238761 from server:messaging
- Replace ffmpeg-6-*-devel with ffmpeg-7-*-devel BuildRequires.
- Remove patches
  * 0001-use-bundled-webrtc.patch
  * 0002-use-bundled-rnnoise-expected-gsl-ranges-webrtc.patch
  * 0003-revert-webrtc-cmake-target-file.patch
  * 0004-use-dynamic-x-libraries.patch
  * 0005-use-bundled-ada.patch
  * 0006-tdesktop-disable-h264.patch
  * 0007-tg_owt-h264-dlopen.patch
- Add patches
  * 0001-dynamic-link-x.patch
  * 0002-tg_owt-h264-dlopen.patch

OBS-URL: https://build.opensuse.org/request/show/1238761
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/telegram-desktop?expand=0&rev=129
2025-01-19 20:49:52 +00:00
Xu Zhao
8c3a86dad4 - Replace ffmpeg-6-*-devel with ffmpeg-7-*-devel BuildRequires.
OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=345
2025-01-19 03:46:31 +00:00
Xu Zhao
9a881aade6 - Remove patches
* 0001-use-bundled-webrtc.patch
  * 0002-use-bundled-rnnoise-expected-gsl-ranges-webrtc.patch
  * 0003-revert-webrtc-cmake-target-file.patch
  * 0004-use-dynamic-x-libraries.patch
  * 0005-use-bundled-ada.patch
  * 0006-tdesktop-disable-h264.patch
  * 0007-tg_owt-h264-dlopen.patch
- Add patches
  * 0001-dynamic-link-x.patch
  * 0002-tg_owt-h264-dlopen.patch

OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=344
2025-01-18 14:19:29 +00:00
Ana Guerrero
9bb2476ca3 Accepting request 1237051 from server:messaging
- Update to version 5.10.3
  * Fix a crash in legacy group opening.
- Update tg_owt link in obs_scm _service file.

OBS-URL: https://build.opensuse.org/request/show/1237051
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/telegram-desktop?expand=0&rev=128
2025-01-12 10:21:54 +00:00
Xu Zhao
86da2b107e - Update to version 5.10.3
* Fix a crash in legacy group opening.
- Update tg_owt link in obs_scm _service file.

OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=342
2025-01-11 01:35:45 +00:00
Ana Guerrero
a83646817b Accepting request 1234803 from server:messaging
OBS-URL: https://build.opensuse.org/request/show/1234803
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/telegram-desktop?expand=0&rev=127
2025-01-05 14:31:07 +00:00
Xu Zhao
9bc4b3172c - Update to version 5.10.0
* Collectible Gifts.
  * Reactions for Service Messages.
- Download and compress tarballs with obs service
  * Remove ada-packager.sh
  * Remove tg_owt-packager.sh

OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=340
2025-01-03 22:13:56 +00:00
Ana Guerrero
3403c1722c Accepting request 1229175 from server:messaging
OBS-URL: https://build.opensuse.org/request/show/1229175
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/telegram-desktop?expand=0&rev=126
2024-12-09 20:12:11 +00:00
Xu Zhao
bdc8ff72fd Add patch file in the changes
OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=338
2024-12-09 00:00:29 +00:00
Xu Zhao
9aa0693282 - Update to version 5.9.0
* Affiliate programs for bots.
  * Add option to show folder tags in chats list.

OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=337
2024-12-08 23:54:45 +00:00
Ana Guerrero
5e432e55fb Accepting request 1218755 from server:messaging
- Update to version 5.6.3
  * Gifts for Telegram Stars.
  * Mention / hashtag autocomplete in media caption field.
  * Resizing the window used for web apps and games.
  * "Include muted chats in folder counters" notifications setting.
  * Emoji from Unicode 15.1. (forwarded request 1208908 from Dmitry_R)

OBS-URL: https://build.opensuse.org/request/show/1218755
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/telegram-desktop?expand=0&rev=125
2024-10-28 14:22:33 +00:00
ffbf959efa - Update to version 5.6.3
* Gifts for Telegram Stars.
  * Mention / hashtag autocomplete in media caption field.
  * Resizing the window used for web apps and games.
  * "Include muted chats in folder counters" notifications setting.
  * Emoji from Unicode 15.1.

OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=335
2024-10-28 09:21:12 +00:00
Ana Guerrero
900fe232f4 Accepting request 1203953 from server:messaging
OBS-URL: https://build.opensuse.org/request/show/1203953
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/telegram-desktop?expand=0&rev=124
2024-09-27 15:10:58 +00:00
Xu Zhao
120d578347 - Update to version 5.5.5
* Suggest URL from clipboard when creating a custom link.
  * Fix animated topic icons in topic info page.
  * Fix excessive getChannelDifference requests.

OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=333
2024-09-26 17:18:39 +00:00
22 changed files with 488 additions and 254 deletions

24
0001-dynamic-link-x.patch Normal file
View File

@ -0,0 +1,24 @@
diff --git a/tdesktop/cmake/external/webrtc/CMakeLists.txt b/tdesktop-copy/cmake/external/webrtc/CMakeLists.txt
index a372fb7..6a81876 100644
--- a/cmake/external/webrtc/CMakeLists.txt
+++ b/cmake/external/webrtc/CMakeLists.txt
@@ -9,7 +9,18 @@ add_library(desktop-app::external_webrtc ALIAS external_webrtc)
if (DESKTOP_APP_USE_PACKAGED)
find_package(tg_owt REQUIRED)
- target_link_libraries(external_webrtc INTERFACE tg_owt::tg_owt)
+ target_link_libraries(external_webrtc INTERFACE
+ tg_owt::tg_owt
+ X11
+ Xcomposite
+ Xdamage
+ Xext
+ Xfixes
+ Xrandr
+ Xrender
+ Xtst
+ vpx
+ )
return()
endif()

View File

@ -1,13 +0,0 @@
Index: tdesktop-4.4.0-full/cmake/external/webrtc/CMakeLists.txt
===================================================================
--- tdesktop-4.4.0-full.orig/cmake/external/webrtc/CMakeLists.txt
+++ tdesktop-4.4.0-full/cmake/external/webrtc/CMakeLists.txt
@@ -7,7 +7,7 @@
add_library(external_webrtc INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_webrtc ALIAS external_webrtc)
-if (DESKTOP_APP_USE_PACKAGED)
+if (NOT DESKTOP_APP_USE_PACKAGED)
find_package(tg_owt REQUIRED)
target_link_libraries(external_webrtc INTERFACE tg_owt::tg_owt)
return()

View File

@ -0,0 +1,281 @@
From c985d2e06f17057255fc5f0cf2e65701f179a9ab Mon Sep 17 00:00:00 2001
From: Xu Zhao <i@xuzhao.net>
Date: Thu, 22 Aug 2024 01:06:23 -0400
Subject: [PATCH] Add an option to load H264 decoder with dlopen()
---
CMakeLists.txt | 3 +-
cmake/external.cmake | 6 +-
.../video_coding/codecs/h264/h264_dlopen.cc | 128 ++++++++++++++++++
.../video_coding/codecs/h264/h264_dlopen.h | 46 +++++++
.../codecs/h264/h264_encoder_impl.cc | 6 +
.../codecs/h264/h264_encoder_impl.h | 5 +
6 files changed, 192 insertions(+), 2 deletions(-)
create mode 100644 src/modules/video_coding/codecs/h264/h264_dlopen.cc
create mode 100644 src/modules/video_coding/codecs/h264/h264_dlopen.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fcd8ef132..a0cc7b454 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,6 +25,7 @@ cmake_dependent_option(TG_OWT_USE_X11 "Use X11 for desktop capture." ON "UNIX; N
cmake_dependent_option(TG_OWT_USE_PIPEWIRE "Use pipewire for desktop capture." ON "UNIX; NOT APPLE" OFF)
cmake_dependent_option(TG_OWT_DLOPEN_PIPEWIRE "dlopen pipewire for desktop capture." ${not_packaged_build} TG_OWT_USE_PIPEWIRE OFF)
option(TG_OWT_BUILD_AUDIO_BACKENDS "Build webrtc audio backends." OFF)
+option(TG_OWT_DLOPEN_H264 "dlopen H264 for video coding." OFF)
if (BUILD_SHARED_LIBS)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
@@ -168,7 +169,7 @@ link_openssl(tg_owt)
link_ffmpeg(tg_owt)
link_opus(tg_owt)
link_libabsl(tg_owt)
-link_libopenh264(tg_owt)
+link_libopenh264(tg_owt ${TG_OWT_DLOPEN_H264})
link_libvpx(tg_owt)
link_crc32c(tg_owt)
link_dl(tg_owt)
diff --git a/cmake/external.cmake b/cmake/external.cmake
index 1c71f8518..b1fabbc67 100644
--- a/cmake/external.cmake
+++ b/cmake/external.cmake
@@ -129,7 +129,7 @@ endfunction()
# libopenh264
set(TG_OWT_OPENH264_INCLUDE_PATH "" CACHE STRING "Include path for openh264.")
-function(link_libopenh264 target_name)
+function(link_libopenh264 target_name with_dlopen)
if (TG_OWT_PACKAGED_BUILD)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBOPENH264 openh264)
@@ -148,6 +148,10 @@ function(link_libopenh264 target_name)
${TG_OWT_OPENH264_INCLUDE_PATH}
)
endif()
+ if (with_dlopen)
+ target_compile_definitions(${target_name} PRIVATE -DWEBRTC_USE_H264_DLOPEN)
+ target_sources(${target_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/modules/video_coding/codecs/h264/h264_dlopen.cc)
+ endif()
endfunction()
# libvpx
diff --git a/src/modules/video_coding/codecs/h264/h264_dlopen.cc b/src/modules/video_coding/codecs/h264/h264_dlopen.cc
new file mode 100644
index 000000000..3762e1dfc
--- /dev/null
+++ b/src/modules/video_coding/codecs/h264/h264_dlopen.cc
@@ -0,0 +1,128 @@
+/*
+ * OpenH264 dlopen code
+ *
+ * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include <dlfcn.h>
+#include <cstddef>
+
+#include "h264_dlopen.h"
+
+/*
+ * The symbol binding makes sure we do not run into strict aliasing issues which
+ * can lead into segfaults.
+ */
+typedef int (*__oh264_WelsCreateSVCEncoder)(ISVCEncoder **);
+typedef void (*__oh264_WelsDestroySVCEncoder)(ISVCEncoder *);
+typedef int (*__oh264_WelsGetDecoderCapability)(SDecoderCapability *);
+typedef long (*__oh264_WelsCreateDecoder)(ISVCDecoder **);
+typedef void (*__oh264_WelsDestroyDecoder)(ISVCDecoder *);
+typedef OpenH264Version (*__oh264_WelsGetCodecVersion)(void);
+typedef void (*__oh264_WelsGetCodecVersionEx)(OpenH264Version *);
+
+#define OH264_SYMBOL_ENTRY(i) \
+ union { \
+ __oh264_##i f; \
+ void *obj; \
+ } _oh264_##i
+
+struct oh264_symbols {
+ OH264_SYMBOL_ENTRY(WelsCreateSVCEncoder);
+ OH264_SYMBOL_ENTRY(WelsDestroySVCEncoder);
+ OH264_SYMBOL_ENTRY(WelsGetDecoderCapability);
+ OH264_SYMBOL_ENTRY(WelsCreateDecoder);
+ OH264_SYMBOL_ENTRY(WelsDestroyDecoder);
+ OH264_SYMBOL_ENTRY(WelsGetCodecVersion);
+ OH264_SYMBOL_ENTRY(WelsGetCodecVersionEx);
+};
+
+/* Symbols are bound by loadLibOpenH264() */
+static struct oh264_symbols openh264_symbols;
+
+int oh264_WelsCreateSVCEncoder(ISVCEncoder **ppEncoder) {
+ return openh264_symbols._oh264_WelsCreateSVCEncoder.f(ppEncoder);
+}
+
+void oh264_WelsDestroySVCEncoder(ISVCEncoder *pEncoder) {
+ return openh264_symbols._oh264_WelsDestroySVCEncoder.f(pEncoder);
+}
+
+int oh264_WelsGetDecoderCapability(SDecoderCapability *pDecCapability) {
+ return openh264_symbols._oh264_WelsGetDecoderCapability.f(pDecCapability);
+}
+
+long oh264_WelsCreateDecoder(ISVCDecoder **ppDecoder) {
+ return openh264_symbols._oh264_WelsCreateDecoder.f(ppDecoder);
+}
+
+void oh264_WelsDestroyDecoder(ISVCDecoder *pDecoder) {
+ return openh264_symbols._oh264_WelsDestroyDecoder.f(pDecoder);
+}
+
+OpenH264Version oh264_WelsGetCodecVersion(void) {
+ return openh264_symbols._oh264_WelsGetCodecVersion.f();
+}
+
+void oh264_WelsGetCodecVersionEx(OpenH264Version *pVersion) {
+ openh264_symbols._oh264_WelsGetCodecVersionEx.f(pVersion);
+}
+
+static void *_oh264_bind_symbol(void *handle,
+ const char *sym_name) {
+ void *sym = NULL;
+
+ sym = dlsym(handle, sym_name);
+ if (sym == NULL) {
+ const char *err = dlerror();
+ return NULL;
+ }
+
+ return sym;
+}
+
+#define oh264_bind_symbol(handle, sym_name) \
+ if (openh264_symbols._oh264_##sym_name.obj == NULL) { \
+ openh264_symbols._oh264_##sym_name.obj = _oh264_bind_symbol(handle, #sym_name); \
+ if (openh264_symbols._oh264_##sym_name.obj == NULL) { \
+ return 1; \
+ } \
+ }
+
+int loadLibOpenH264(void) {
+ static bool initialized = false;
+ void *libopenh264 = NULL;
+ const char *err = NULL;
+
+ if (initialized) {
+ return 0;
+ }
+
+#define OPENH264_LIB "libopenh264.so.7"
+ libopenh264 = dlopen(OPENH264_LIB, RTLD_LAZY);
+ err = dlerror();
+ if (err != NULL) {
+ if (libopenh264 != NULL) {
+ dlclose(libopenh264);
+ }
+ return 1;
+ }
+
+ oh264_bind_symbol(libopenh264, WelsCreateSVCEncoder);
+ oh264_bind_symbol(libopenh264, WelsDestroySVCEncoder);
+ oh264_bind_symbol(libopenh264, WelsGetDecoderCapability);
+ oh264_bind_symbol(libopenh264, WelsCreateDecoder);
+ oh264_bind_symbol(libopenh264, WelsDestroyDecoder);
+ oh264_bind_symbol(libopenh264, WelsGetCodecVersion);
+ oh264_bind_symbol(libopenh264, WelsGetCodecVersionEx);
+
+ initialized = true;
+
+ return 0;
+}
diff --git a/src/modules/video_coding/codecs/h264/h264_dlopen.h b/src/modules/video_coding/codecs/h264/h264_dlopen.h
new file mode 100644
index 000000000..25fe94ea8
--- /dev/null
+++ b/src/modules/video_coding/codecs/h264/h264_dlopen.h
@@ -0,0 +1,46 @@
+/*
+ * OpenH264 dlopen code
+ *
+ * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef HAVE_LIBOPENH264_DLOPEN_H
+#define HAVE_LIBOPENH264_DLOPEN_H
+
+#ifdef WEBRTC_USE_H264_DLOPEN
+
+#include <wels/codec_api.h>
+#include <wels/codec_ver.h>
+
+int oh264_WelsCreateSVCEncoder(ISVCEncoder **ppEncoder);
+#define WelsCreateSVCEncoder oh264_WelsCreateSVCEncoder
+
+void oh264_WelsDestroySVCEncoder(ISVCEncoder *pEncoder);
+#define WelsDestroySVCEncoder oh264_WelsDestroySVCEncoder
+
+int oh264_WelsGetDecoderCapability(SDecoderCapability *pDecCapability);
+#define WelsGetDecoderCapability oh264_WelsGetDecoderCapability
+
+long oh264_WelsCreateDecoder(ISVCDecoder **ppDecoder);
+#define WelsCreateDecoder oh264_WelsCreateDecoder
+
+void oh264_WelsDestroyDecoder(ISVCDecoder *pDecoder);
+#define WelsDestroyDecoder oh264_WelsDestroyDecoder
+
+OpenH264Version oh264_WelsGetCodecVersion(void);
+#define WelsGetCodecVersion oh264_WelsGetCodecVersion
+
+void oh264_WelsGetCodecVersionEx(OpenH264Version *pVersion);
+#define WelsGetCodecVersionEx oh264_WelsGetCodecVersionEx
+
+int loadLibOpenH264(void);
+
+#endif /* WEBRTC_USE_H264_DLOPEN */
+
+#endif /* HAVE_LIBOPENH264_DLOPEN_H */
diff --git a/src/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/src/modules/video_coding/codecs/h264/h264_encoder_impl.cc
index c232133b7..fd06a98cd 100644
--- a/src/modules/video_coding/codecs/h264/h264_encoder_impl.cc
+++ b/src/modules/video_coding/codecs/h264/h264_encoder_impl.cc
@@ -218,6 +218,12 @@ int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst,
return release_ret;
}
+ #ifdef WEBRTC_USE_H264_DLOPEN
+ if (loadLibOpenH264()) {
+ return WEBRTC_VIDEO_CODEC_ERROR;
+ }
+ #endif
+
int number_of_streams = SimulcastUtility::NumberOfSimulcastStreams(*inst);
bool doing_simulcast = (number_of_streams > 1);
diff --git a/src/modules/video_coding/codecs/h264/h264_encoder_impl.h b/src/modules/video_coding/codecs/h264/h264_encoder_impl.h
index 9e246b85e..2deb5a2a3 100644
--- a/src/modules/video_coding/codecs/h264/h264_encoder_impl.h
+++ b/src/modules/video_coding/codecs/h264/h264_encoder_impl.h
@@ -30,7 +30,12 @@
#include "modules/video_coding/codecs/h264/include/h264.h"
#include "modules/video_coding/svc/scalable_video_controller.h"
#include "modules/video_coding/utility/quality_scaler.h"
+
+#ifdef WEBRTC_USE_H264_DLOPEN
+#include "h264_dlopen.h"
+#else
#include <wels/codec_app_def.h>
+#endif
class ISVCEncoder;

View File

@ -1,71 +0,0 @@
diff -rup a/cmake/external/expected/CMakeLists.txt b/cmake/external/expected/CMakeLists.txt
--- a/cmake/external/expected/CMakeLists.txt 2023-09-04 14:19:11.000000000 +0200
+++ b/cmake/external/expected/CMakeLists.txt 2023-09-14 09:56:02.804347761 +0200
@@ -7,7 +7,7 @@
add_library(external_expected INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_expected ALIAS external_expected)
-if (DESKTOP_APP_USE_PACKAGED)
+if (NOT DESKTOP_APP_USE_PACKAGED)
if (DESKTOP_APP_USE_PACKAGED_LAZY)
find_package(tl-expected QUIET)
else()
Only in b/cmake/external/gsl: CMakeLists.txt.rej
diff -rup a/cmake/external/ranges/CMakeLists.txt b/cmake/external/ranges/CMakeLists.txt
--- a/cmake/external/ranges/CMakeLists.txt 2023-09-04 14:19:11.000000000 +0200
+++ b/cmake/external/ranges/CMakeLists.txt 2023-09-14 09:56:02.804347761 +0200
@@ -7,7 +7,7 @@
add_library(external_ranges INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_ranges ALIAS external_ranges)
-if (DESKTOP_APP_USE_PACKAGED)
+if (NOT DESKTOP_APP_USE_PACKAGED)
if (DESKTOP_APP_USE_PACKAGED_LAZY)
find_package(range-v3 QUIET)
else()
diff -rup a/cmake/external/rnnoise/CMakeLists.txt b/cmake/external/rnnoise/CMakeLists.txt
--- a/cmake/external/rnnoise/CMakeLists.txt 2023-09-04 14:19:11.000000000 +0200
+++ b/cmake/external/rnnoise/CMakeLists.txt 2023-09-14 09:56:02.804347761 +0200
@@ -4,7 +4,7 @@
# For license and copyright information please follow this link:
# https://github.com/desktop-app/legal/blob/master/LEGAL
-if (DESKTOP_APP_USE_PACKAGED)
+if (NOT DESKTOP_APP_USE_PACKAGED)
add_library(external_rnnoise INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_rnnoise ALIAS external_rnnoise)
@@ -18,7 +18,7 @@ endif()
add_library(external_rnnoise STATIC IMPORTED GLOBAL)
add_library(desktop-app::external_rnnoise ALIAS external_rnnoise)
-set(rnnoise_lib_loc ${libs_loc}/rnnoise/out)
+set(rnnoise_lib_loc ${libs_loc}/rnnoise/.libs)
if (WIN32)
target_include_directories(external_rnnoise SYSTEM
INTERFACE
@@ -40,7 +40,11 @@ elseif (APPLE)
IMPORTED_LOCATION_DEBUG "${rnnoise_lib_loc}/Debug/librnnoise.a"
)
else()
+ target_include_directories(external_rnnoise SYSTEM
+ INTERFACE
+ ${libs_loc}/rnnoise/include
+ )
- find_library(DESKTOP_APP_RNNOISE_LIBRARIES librnnoise.a REQUIRED)
+ find_library(DESKTOP_APP_RNNOISE_LIBRARIES librnnoise.a HINTS "${rnnoise_lib_loc}" REQUIRED)
set_target_properties(external_rnnoise PROPERTIES
IMPORTED_LOCATION "${DESKTOP_APP_RNNOISE_LIBRARIES}"
)
diff -rup a/cmake/external/webrtc/CMakeLists.txt b/cmake/external/webrtc/CMakeLists.txt
--- a/cmake/external/webrtc/CMakeLists.txt 2023-09-04 14:19:11.000000000 +0200
+++ b/cmake/external/webrtc/CMakeLists.txt 2023-09-14 09:56:02.804347761 +0200
@@ -7,7 +7,7 @@
add_library(external_webrtc INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_webrtc ALIAS external_webrtc)
-if (DESKTOP_APP_USE_PACKAGED)
+if (NOT DESKTOP_APP_USE_PACKAGED)
find_package(tg_owt REQUIRED)
target_link_libraries(external_webrtc INTERFACE tg_owt::tg_owt)
return()

View File

@ -1,16 +0,0 @@
Index: tdesktop-4.4.0-full/cmake/external/webrtc/CMakeLists.txt
===================================================================
--- tdesktop-4.4.0-full.orig/cmake/external/webrtc/CMakeLists.txt
+++ tdesktop-4.4.0-full/cmake/external/webrtc/CMakeLists.txt
@@ -94,11 +94,8 @@ INTERFACE
${webrtc_libs_list}
$<LINK_ONLY:desktop-app::external_openssl>
$<LINK_ONLY:desktop-app::external_jpeg>
- $<TARGET_FILE:desktop-app::external_jpeg>
$<LINK_ONLY:desktop-app::external_opus>
- $<TARGET_FILE:desktop-app::external_opus>
$<LINK_ONLY:desktop-app::external_vpx>
- $<TARGET_FILE:desktop-app::external_vpx>
)
if (WIN32)

View File

@ -1,13 +0,0 @@
Index: tdesktop-4.4.0-full/cmake/external/webrtc/CMakeLists.txt
===================================================================
--- tdesktop-4.4.0-full.orig/cmake/external/webrtc/CMakeLists.txt
+++ tdesktop-4.4.0-full/cmake/external/webrtc/CMakeLists.txt
@@ -110,7 +110,7 @@ elseif (APPLE)
)
else()
# Required for desktop_capture
- target_link_static_libraries(external_webrtc
+ target_link_libraries(external_webrtc
INTERFACE
Xcomposite
Xdamage

View File

@ -1,26 +0,0 @@
diff --git a/cmake/external/ada/CMakeLists.txt b/cmake/external/ada/CMakeLists.txt
index 4b8063b..fbddaac 100644
--- a/cmake/external/ada/CMakeLists.txt
+++ b/cmake/external/ada/CMakeLists.txt
@@ -4,7 +4,7 @@
# For license and copyright information please follow this link:
# https://github.com/desktop-app/legal/blob/master/LEGAL
-if (DESKTOP_APP_USE_PACKAGED)
+if (NOT DESKTOP_APP_USE_PACKAGED)
add_library(external_ada INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_ada ALIAS external_ada)
@@ -37,10 +37,9 @@ elseif (APPLE)
else()
target_include_directories(external_ada SYSTEM
INTERFACE
- /usr/local/include
+ ${libs_loc}/ada/include
)
- find_library(DESKTOP_APP_ADA_LIBRARIES libada.a REQUIRED)
set_target_properties(external_ada PROPERTIES
- IMPORTED_LOCATION "${DESKTOP_APP_ADA_LIBRARIES}"
+ IMPORTED_LOCATION ${libs_loc}/ada/build/src/libada.a
)
endif()

View File

@ -1,13 +0,0 @@
diff --git a/cmake/external/webrtc/CMakeLists.txt b/cmake/external/webrtc/CMakeLists.txt
index 67159d6..0caf765 100644
--- a/cmake/external/webrtc/CMakeLists.txt
+++ b/cmake/external/webrtc/CMakeLists.txt
@@ -134,7 +134,7 @@ else()
Xrandr
Xrender
Xtst
- openh264
+ # openh264
)
target_link_libraries(external_webrtc
INTERFACE

35
_service Normal file
View File

@ -0,0 +1,35 @@
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/telegramdesktop/tdesktop</param>
<param name="filename">tdesktop</param>
<param name="revision">v5.10.3</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="versionrewrite-replacement">\1</param>
</service>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/ada-url/ada</param>
<param name="filename">ada</param>
<param name="revision">v2.9.0</param>
<param name="version">_none_</param>
</service>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/desktop-app/tg_owt</param>
<param name="filename">tg_owt</param>
<param name="revision">8198c4d8b91e22d68eb5c7327fd408e3b6abcc79</param>
<param name="version">_none_</param>
</service>
<service name="tar" mode="buildtime" />
<service name="recompress" mode="buildtime">
<param name="compression">zstd</param>
<param name="file">*.tar</param>
</service>
</services>

View File

@ -1,12 +0,0 @@
#! /bin/bash
rm -rf ada \
&& git clone -b v2.9.0 --depth=1 https://github.com/ada-url/ada.git \
&& cd ada \
&& rm -rf .git \
&& cd .. \
&& mv ada ada-v2.9.0 \
&& zip ada-v2.9.0.zip -r ada-v2.9.0 -x '*.git*' \
rm -rf ada-v2.9.0

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7b6fc58c3e00c4629b8c4d890aca2f1451885a8c28bbedec38f5d3960ad04cb7
size 860638

3
ada.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:60212223a382fae4724a3157a0c4d891e24497187cb3079330925775fb57f1c1
size 2214412

4
ada.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: ada
version:
mtime: 1720301936
commit: 4358bcc6156e730eaff0681330ac74d187e881c1

3
tdesktop-5.10.3.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:536adeb19202099c8ca907b2f179a249d33c6fd25b2346822fe3d5a9ad73ed29
size 193083918

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b7ef049f64aa7015753c3be158e1a38dafd5e4b58d69bed16aee2402d11ef394
size 70056797

4
tdesktop.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: tdesktop
version: 5.10.3
mtime: 1736448897
commit: 48fb0f3b1e3921b7ddd5bd4b7bb0e30875c91583

View File

@ -1,3 +1,73 @@
-------------------------------------------------------------------
Wed Feb 5 07:15:06 UTC 2025 - Bjørn Lie <bjorn.lie@gmail.com>
- Replace pkgconfig(webkit2gtk-4.0) with pkgconfig(webkit2gtk-4.1)
and drop superfluous webkit2gtk3-devel BuildRequires.
-------------------------------------------------------------------
Sat Jan 18 12:50:30 UTC 2025 - Bjørn Lie <bjorn.lie@gmail.com>
- Replace ffmpeg-6-*-devel with ffmpeg-7-*-devel BuildRequires.
-------------------------------------------------------------------
Sat Jan 18 06:50:26 UTC 2025 - Xu Zhao <i@xuzhao.net>
- Remove patches
* 0001-use-bundled-webrtc.patch
* 0002-use-bundled-rnnoise-expected-gsl-ranges-webrtc.patch
* 0003-revert-webrtc-cmake-target-file.patch
* 0004-use-dynamic-x-libraries.patch
* 0005-use-bundled-ada.patch
* 0006-tdesktop-disable-h264.patch
* 0007-tg_owt-h264-dlopen.patch
- Add patches
* 0001-dynamic-link-x.patch
* 0002-tg_owt-h264-dlopen.patch
-------------------------------------------------------------------
Fri Jan 10 23:14:36 UTC 2025 - Xu Zhao <i@xuzhao.net>
- Update to version 5.10.3
* Fix a crash in legacy group opening.
- Update tg_owt link in obs_scm _service file.
-------------------------------------------------------------------
Fri Jan 3 19:54:03 UTC 2025 - Xu Zhao <i@xuzhao.net>
- Update to version 5.10.0
* Collectible Gifts.
* Reactions for Service Messages.
- Download and compress tarballs with obs service
* Remove ada-packager.sh
* Remove tg_owt-packager.sh
-------------------------------------------------------------------
Sun Nov 17 09:24:53 UTC 2024 - Xu Zhao <i@xuzhao.net>
- Update to version 5.9.0
* Affiliate programs for bots.
* Add option to show folder tags in chats list.
- Add 0007-tg_owt-h264-dlopen.patch
* Patch tg_owt to load h264 decoder with dlopen.
-------------------------------------------------------------------
Fri Oct 18 18:26:23 UTC 2024 - Dmitry Roshchin <dmitry_r@opensuse.org>
- Update to version 5.6.3
* Gifts for Telegram Stars.
* Mention / hashtag autocomplete in media caption field.
* Resizing the window used for web apps and games.
* "Include muted chats in folder counters" notifications setting.
* Emoji from Unicode 15.1.
-------------------------------------------------------------------
Sun Sep 22 22:52:10 UTC 2024 - Xu Zhao <i@xuzhao.net>
- Update to version 5.5.5
* Suggest URL from clipboard when creating a custom link.
* Fix animated topic icons in topic info page.
* Fix excessive getChannelDifference requests.
-------------------------------------------------------------------
Thu Aug 22 05:30:55 UTC 2024 - Xu Zhao <i@xuzhao.net>

View File

@ -1,7 +1,7 @@
#
# spec file for package telegram-desktop
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -36,39 +36,25 @@
%define _dwz_max_die_limit 200000000
%define qt_major_version 6
%define srcext tar.zst
Name: telegram-desktop
Version: 5.4.1
Version: 5.10.3
Release: 0
Summary: Messaging application with a focus on speed and security
License: GPL-3.0-only
Group: Productivity/Networking/Instant Messenger
URL: https://github.com/telegramdesktop/tdesktop
Source0: https://github.com/telegramdesktop/tdesktop/releases/download/v%{version}/tdesktop-%{version}-full.tar.gz
# Use tg_owt-packager.sh to prepare tg_owt-master.zip
# Usage: bash tg_owt-packager.sh
Source1: tg_owt-packager.sh
Source2: tg_owt-master.zip
Source3: ada-v2.9.0.zip
# Usage: bash ads-packager.sh
Source4: ada-packager.sh
Source5: tg_owt-dlopen-headers.tar.gz
Source0: tdesktop-%{version}.%{srcext}
Source1: tg_owt.%{srcext}
Source2: ada.%{srcext}
Source3: tg_owt-dlopen-headers.tar.gz
%if %{with use_system_rnnoise}
# PATCH-FIX-OPENSUSE
Patch1: 0001-use-bundled-webrtc.patch
%else
Source6: rnnoise-git20210122.tar.gz
# PATCH-FIX-OPENSUSE
Patch1: 0002-use-bundled-rnnoise-expected-gsl-ranges-webrtc.patch
Source4: rnnoise-git20210122.tar.gz
%endif
# PATCH-FIX-OPENSUSE
Patch3: 0003-revert-webrtc-cmake-target-file.patch
# PATCH-FIX-OPENSUSE
Patch4: 0004-use-dynamic-x-libraries.patch
# PATCH-FIX-OPENSUSE
Patch5: 0005-use-bundled-ada.patch
# PATCH-FIX-OPENSUSE
Patch6: 0006-tdesktop-disable-h264.patch
Patch1: 0001-dynamic-link-x.patch
Patch2: 0002-tg_owt-h264-dlopen.patch
# There is an (incomplete) patch available for part of the source:
# https://github.com/desktop-app/lib_base.git 3582bca53a1e195a31760978dc41f67ce44fc7e4
# but tdesktop itself still falls short, and it looks to be something
@ -80,11 +66,11 @@ BuildRequires: clang
BuildRequires: cmake >= 3.16
BuildRequires: desktop-file-utils
BuildRequires: enchant-devel
BuildRequires: ffmpeg-6-libavcodec-devel
BuildRequires: ffmpeg-6-libavdevice-devel
BuildRequires: ffmpeg-6-libavfilter-devel
BuildRequires: ffmpeg-6-libavformat-devel
BuildRequires: ffmpeg-6-libavutil-devel
BuildRequires: ffmpeg-7-libavcodec-devel
BuildRequires: ffmpeg-7-libavdevice-devel
BuildRequires: ffmpeg-7-libavfilter-devel
BuildRequires: ffmpeg-7-libavformat-devel
BuildRequires: ffmpeg-7-libavutil-devel
%if %{with compiler_upgrade} || %{with compiler_downgrade}
BuildRequires: gcc12
BuildRequires: gcc12-c++
@ -101,7 +87,6 @@ BuildRequires: pkgconfig
BuildRequires: python3 >= 3.7
BuildRequires: unzip
BuildRequires: wayland-devel
BuildRequires: webkit2gtk3-devel
BuildRequires: xxhash-devel
BuildRequires: xz
BuildRequires: yasm
@ -188,7 +173,7 @@ BuildRequires: libtool
BuildRequires: pkgconfig(tslib)
BuildRequires: pkgconfig(vdpau)
BuildRequires: pkgconfig(vpx)
BuildRequires: pkgconfig(webkit2gtk-4.0)
BuildRequires: pkgconfig(webkit2gtk-4.1)
BuildRequires: pkgconfig(xcb-ewmh)
BuildRequires: pkgconfig(xcb-icccm)
BuildRequires: pkgconfig(xcb-image)
@ -224,26 +209,32 @@ always immediately published, whereas its server-side code is closed-source and
The service also provides APIs to independent developers.
%prep
%setup -q -n tdesktop-%{version}-full
%autopatch -p1 -M 6
%setup -q -n tdesktop-%{version}
%autopatch -p1 1
cd %{_builddir}
mkdir -p %{_builddir}/Libraries
unzip -q %{S:3}
mv ada-v2.9.0 %{_builddir}/Libraries/ada
# -q: quiet mode
# -T: do not perform default archive unpacking
# -D: do not delete the tdesktop-{version} directory
# -b <n>: unpack nth sources before changing the directory
%setup -q -T -D -b 1 -n tdesktop-%{version}
mv ../tg_owt %{_builddir}/Libraries
%setup -q -T -D -b 2 -n tdesktop-%{version}
mv ../ada %{_builddir}/Libraries
%setup -q -T -D -b 3 -n tdesktop-%{version}
mkdir -p %{_builddir}/Libraries/openh264/include
tar xzf %{S:5}
mv wels %{_builddir}/Libraries/openh264/include/
mv ../wels %{_builddir}/Libraries/openh264/include
# If not TW, unpack rnnoise source
%if %{without use_system_rnnoise}
%setup -q -T -D -b 6 -n tdesktop-%{version}-full
%setup -q -T -D -b 4 -n tdesktop-%{version}
mv ../rnnoise-git20210122 ../Libraries/rnnoise
%endif
unzip -q %{SOURCE2}
mv tg_owt-master Libraries/tg_owt
pushd %{_builddir}/Libraries/tg_owt
%autopatch -p1 2
popd
%build
%if %{with compiler_upgrade} || %{with compiler_downgrade}
@ -266,38 +257,47 @@ pushd %{_builddir}/Libraries/rnnoise
popd
%endif
# setup library install path
mkdir -p %{_builddir}/Libraries/install
# Build Ada
pushd %{_builddir}/Libraries/ada
cmake -GNinja -B build . \
-D CMAKE_INSTALL_PREFIX=%{_builddir}/Libraries/install \
-D CMAKE_BUILD_TYPE=None \
-D ADA_TESTING=OFF \
-D ADA_TOOLS=OFF
cmake --build build --parallel
# Install ada to build dir
ninja install -C build
# Build tg_owt
cd %{_builddir}/Libraries/tg_owt
mkdir -p out/Release
cd out/Release
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-B out/Release \
-DCMAKE_INSTALL_PREFIX=%{_builddir}/Libraries/install \
-DCMAKE_BUILD_TYPE=Release \
%ifarch armv7l armv7hl
-DTG_OWT_ARCH_ARMV7_USE_NEON=OFF \
-DTG_OWT_ARCH_ARMV7_USE_NEON=OFF \
%endif
-DTG_OWT_DLOPEN_H264=ON \
-DTG_OWT_SPECIAL_TARGET=linux \
-DTG_OWT_LIBJPEG_INCLUDE_PATH=/usr/include \
-DTG_OWT_OPENH264_INCLUDE_PATH=%{_builddir}/Libraries/openh264/include \
-DTG_OWT_OPENSSL_INCLUDE_PATH=/usr/include/openssl \
-DTG_OWT_OPUS_INCLUDE_PATH=/usr/include/opus \
-DTG_OWT_FFMPEG_INCLUDE_PATH=/usr/include/ffmpeg \
-DTG_OWT_LIBVPX_INCLUDE_PATH=/usr/include/vpx \
../..
sed -i 's,gnu++2a,gnu++17,g' build.ninja
ninja
-DTG_OWT_DLOPEN_H264=ON \
-DTG_OWT_SPECIAL_TARGET=linux \
-DTG_OWT_LIBJPEG_INCLUDE_PATH=/usr/include \
-DTG_OWT_OPENH264_INCLUDE_PATH=%{_builddir}/Libraries/openh264/include \
-DTG_OWT_OPENSSL_INCLUDE_PATH=/usr/include/openssl \
-DTG_OWT_OPUS_INCLUDE_PATH=/usr/include/opus \
-DTG_OWT_FFMPEG_INCLUDE_PATH=/usr/include/ffmpeg \
-DTG_OWT_LIBVPX_INCLUDE_PATH=/usr/include/vpx \
.
sed -i 's,gnu++2a,gnu++17,g' out/Release/build.ninja
cmake --build out/Release --parallel
ninja install -C out/Release
cd %{_builddir}/tdesktop-%{version}-full
pushd %{_builddir}/tdesktop-%{version}
# Use the official API key that telegram uses for their snap builds:
# https://github.com/telegramdesktop/tdesktop/blob/8fab9167beb2407c1153930ed03a4badd0c2b59f/snap/snapcraft.yaml#L87-L88
# Thanks to @primeos on Github.
export CMAKE_PREFIX_PATH=%{_builddir}/Libraries/install/lib64/cmake
%cmake \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DCMAKE_BUILD_TYPE=Release \

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6addc180f1fbfe33b03b3616c1f9fefa5d0a4a68972de4bc2739b69b893ad49e
size 23497999

View File

@ -1,24 +0,0 @@
#! /bin/bash
# tg_owt origin
# get it from https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/build/docker/centos_env/Dockerfile around line 761
# tg_owt_origin="4a60ce1ab9fdb962004c6a959f682ace3db50cbd"
# use xuzhao9's fork to workaround the h264 dlopen issue
tg_owt_origin="0342ae21ee2cc6c6052798bc8fa6b737d9a66418"
rm -rf tg_owt \
&& mkdir tg_owt \
&& cd tg_owt \
&& git init tg_owt \
&& cd tg_owt \
&& git remote add origin https://github.com/xuzhao9/tg_owt.git \
&& git fetch --depth=1 origin "$tg_owt_origin" \
&& git reset --hard FETCH_HEAD \
&& git submodule update --init --recursive --depth=1 \
&& rm -rf .git \
&& cd .. \
&& mv tg_owt tg_owt-master \
&& zip tg_owt-master.zip -r tg_owt-master -x '*.git*' \
&& mv tg_owt-master.zip ..
cd ..; rm -rf tg_owt

3
tg_owt.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c80ea2064ce33282f1f9a8f828fbde71ea105e62e8bfcfd6ce589577ed605a56
size 72658958

4
tg_owt.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: tg_owt
version:
mtime: 1730101779
commit: 8198c4d8b91e22d68eb5c7327fd408e3b6abcc79