summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEsteve Varela Colominas <esteve.varela@gmail.com>2022-07-29 13:10:57 +0200
committerGeorgy Yakovlev <gyakovlev@gentoo.org>2022-08-02 15:06:35 -0700
commit795a0a5e0f5f2053b3fada3ba1f40deb31d16965 (patch)
tree3705d27bfd5a5ed2062fadbd5cd291882a6c6215 /media-libs/tg_owt
parentdev-python/django-crispy-forms: [QA] fix DTD HTTP->HTTPS (diff)
downloadgentoo-795a0a5e0f5f2053b3fada3ba1f40deb31d16965.tar.gz
gentoo-795a0a5e0f5f2053b3fada3ba1f40deb31d16965.tar.bz2
gentoo-795a0a5e0f5f2053b3fada3ba1f40deb31d16965.zip
media-libs/tg_owt: Bump to 0_pre20220507
Signed-off-by: Esteve Varela Colominas <esteve.varela@gmail.com> Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
Diffstat (limited to 'media-libs/tg_owt')
-rw-r--r--media-libs/tg_owt/Manifest1
-rw-r--r--media-libs/tg_owt/files/tg_owt-0_pre20220507-allow-disabling-X11.patch117
-rw-r--r--media-libs/tg_owt/files/tg_owt-0_pre20220507-unbundle-crc32c.patch72
-rw-r--r--media-libs/tg_owt/tg_owt-0_pre20220507.ebuild118
4 files changed, 308 insertions, 0 deletions
diff --git a/media-libs/tg_owt/Manifest b/media-libs/tg_owt/Manifest
index 342b3ec53144..c9992c75fd83 100644
--- a/media-libs/tg_owt/Manifest
+++ b/media-libs/tg_owt/Manifest
@@ -1,2 +1,3 @@
DIST libyuv-ad890067f661dc747a975bc55ba3767fe30d4452.tar.gz 473845 BLAKE2B 664be51c166440e6b03fa98f65d907efc446800804058a5ea7fdf944e12cb1237a1487e83fbe9a2f1ce4c73521234e43632f921ad0333507737d81e1cb23ce8f SHA512 f97529b80a786e2e92443caabebd6d85a42641e10c3d2940b0f69bedf3b8a96c69c3247abddd059c4ddd6f78107ab7214222a4267a559fc2086c8edf5ea1afbc
DIST tg_owt-0_pre20220209.tar.gz 16501237 BLAKE2B fb04aca8803645cc107a7e7fbab8d6020ad91f487ece0445aba29dd1127270e8b3a33d51bb35cfc916168df78cbdc98987610b39fd2cf7b86821b4f9733783c9 SHA512 0a35ce3379887b115117188aa8dce44bf89e23ad6f9fab7320a1cd55cdd534bae4c240778a37cb9588cd6acea1e7a83c22c113d608f7bfd5272ee22bb2773af3
+DIST tg_owt-0_pre20220507.tar.gz 15799740 BLAKE2B f12f3ecdfb0c7cfdae12af4734ddf22da4d95fd991b8a8ba17515f9d5c22a2f12b81967c0af15ac150c99129701c50c9384ea0e0240bf2366e176c833b14f7db SHA512 6902c65a1be0bcf300f08c274109ed53cdf92b7aff35915045c3989899fc2584cce3fe9df0e8ac29e708fcc575453fe5a6affaea85787f9c4fcc3bcde3b85711
diff --git a/media-libs/tg_owt/files/tg_owt-0_pre20220507-allow-disabling-X11.patch b/media-libs/tg_owt/files/tg_owt-0_pre20220507-allow-disabling-X11.patch
new file mode 100644
index 000000000000..71b587f471bb
--- /dev/null
+++ b/media-libs/tg_owt/files/tg_owt-0_pre20220507-allow-disabling-X11.patch
@@ -0,0 +1,117 @@
+Add -DTG_OWT_USE_X11
+
+Allows disabling X11 desktop capturing independently of pipewire support, for
+the few people that run wayland without any X11 support whatsoever.
+
+This setup is untested, but supported by the GNI build system, see:
+* src/modules/desktop_capture/BUILD.gn (option rtc_use_x11_extensions)
+
+Toggling the WEBRTC_USE_X11 define also affects some files under
+src/modules/audio_device, but that falls under "X11 support", regardless...
+
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/CMakeLists.txt
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/CMakeLists.txt
+@@ -21,11 +21,13 @@
+
+ option(BUILD_SHARED_LIBS "Builds shared libraries instead of static." OFF)
+ option(TG_OWT_USE_PROTOBUF "Use protobuf to generate additional headers. Useful for packaged build." ${BUILD_SHARED_LIBS})
++option(TG_OWT_USE_X11 "Use X11 for desktop capture on non-Apple Unix." ON)
+ option(TG_OWT_USE_PIPEWIRE "Use pipewire for desktop capture on non-Apple Unix." ON)
+ option(TG_OWT_DLOPEN_PIPEWIRE "dlopen pipewire 0.3 for desktop capture on non-Apple Unix." ${not_packaged_build})
+ option(TG_OWT_BUILD_AUDIO_BACKENDS "Build webrtc audio backends." OFF)
+
+ if (NOT UNIX OR APPLE)
++ set(TG_OWT_USE_X11 OFF)
+ set(TG_OWT_USE_PIPEWIRE OFF)
+ endif()
+
+@@ -97,6 +99,10 @@
+ add_library(tg_owt)
+ init_target(tg_owt)
+
++if (TG_OWT_USE_X11)
++ link_x11(tg_owt)
++endif()
++
+ if (TG_OWT_USE_PIPEWIRE)
+ if (TG_OWT_DLOPEN_PIPEWIRE)
+ include(cmake/generate_stubs.cmake)
+@@ -189,10 +195,6 @@
+ include(cmake/libwebrtcbuild.cmake)
+ target_link_libraries(tg_owt PUBLIC tg_owt::libwebrtcbuild)
+
+-if (UNIX AND NOT APPLE)
+- link_x11(tg_owt)
+-endif()
+-
+ function(add_sublibrary postfix)
+ add_library(tg_owt_${postfix} OBJECT)
+ init_feature_target(tg_owt_${postfix} ${postfix})
+@@ -2370,6 +2372,39 @@
+ )
+ endif()
+
++if (NOT TG_OWT_USE_X11)
++ remove_target_sources(tg_owt ${webrtc_loc}
++ # src/modules/desktop_capture/BUILD.gn (rtc_use_x11_extensions)
++ modules/desktop_capture/linux/x11/mouse_cursor_monitor_x11.cc
++ modules/desktop_capture/linux/x11/mouse_cursor_monitor_x11.h
++ modules/desktop_capture/linux/x11/screen_capturer_x11.cc
++ modules/desktop_capture/linux/x11/screen_capturer_x11.h
++ modules/desktop_capture/linux/x11/shared_x_display.cc
++ modules/desktop_capture/linux/x11/shared_x_display.h
++ modules/desktop_capture/linux/x11/window_capturer_x11.cc
++ modules/desktop_capture/linux/x11/window_capturer_x11.h
++ modules/desktop_capture/linux/x11/window_finder_x11.cc
++ modules/desktop_capture/linux/x11/window_finder_x11.h
++ modules/desktop_capture/linux/x11/window_list_utils.cc
++ modules/desktop_capture/linux/x11/window_list_utils.h
++ modules/desktop_capture/linux/x11/x_atom_cache.cc
++ modules/desktop_capture/linux/x11/x_atom_cache.h
++ modules/desktop_capture/linux/x11/x_error_trap.cc
++ modules/desktop_capture/linux/x11/x_error_trap.h
++ modules/desktop_capture/linux/x11/x_server_pixel_buffer.cc
++ modules/desktop_capture/linux/x11/x_server_pixel_buffer.h
++ modules/desktop_capture/linux/x11/x_window_property.cc
++ modules/desktop_capture/linux/x11/x_window_property.h
++
++ # screen_drawer_linux.cc depends on x11, rest are revdeps
++ modules/desktop_capture/screen_drawer.cc
++ modules/desktop_capture/screen_drawer.h
++ modules/desktop_capture/screen_drawer_linux.cc
++ modules/desktop_capture/screen_drawer_lock_posix.cc
++ modules/desktop_capture/screen_drawer_lock_posix.h
++ )
++endif()
++
+ if (NOT TG_OWT_USE_PIPEWIRE)
+ remove_target_sources(tg_owt ${webrtc_loc}
+ modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/cmake/libwebrtcbuild.cmake
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/cmake/libwebrtcbuild.cmake
+@@ -29,6 +29,13 @@
+ BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0
+ )
+
++if (TG_OWT_USE_X11)
++ target_compile_definitions(libwebrtcbuild
++ INTERFACE
++ WEBRTC_USE_X11
++ )
++endif()
++
+ if (TG_OWT_USE_PIPEWIRE)
+ target_compile_definitions(libwebrtcbuild
+ INTERFACE
+@@ -65,11 +72,6 @@
+ INTERFACE
+ WEBRTC_MAC
+ )
+- else()
+- target_compile_definitions(libwebrtcbuild
+- INTERFACE
+- WEBRTC_USE_X11
+- )
+ endif()
+
+ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
diff --git a/media-libs/tg_owt/files/tg_owt-0_pre20220507-unbundle-crc32c.patch b/media-libs/tg_owt/files/tg_owt-0_pre20220507-unbundle-crc32c.patch
new file mode 100644
index 000000000000..44283c24384c
--- /dev/null
+++ b/media-libs/tg_owt/files/tg_owt-0_pre20220507-unbundle-crc32c.patch
@@ -0,0 +1,72 @@
+Use system's crc32c if found
+
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/CMakeLists.txt
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/CMakeLists.txt
+@@ -147,7 +147,6 @@
+
+ target_link_libraries(tg_owt
+ PRIVATE
+- tg_owt::libcrc32c
+ tg_owt::libpffft
+ tg_owt::librnnoise
+ tg_owt::libsrtp
+@@ -185,6 +184,7 @@
+ link_libabsl(tg_owt)
+ link_libopenh264(tg_owt)
+ link_libvpx(tg_owt)
++link_crc32c(tg_owt)
+
+ if (TG_OWT_BUILD_AUDIO_BACKENDS AND (UNIX AND NOT APPLE))
+ link_libalsa(tg_owt)
+@@ -2599,7 +2599,6 @@
+
+ set(export_targets
+ ${tg_owt_export}
+- libcrc32c
+ libpffft
+ librnnoise
+ libsrtp
+@@ -2617,6 +2616,9 @@
+ if (NOT LIBOPENH264_FOUND)
+ list(APPEND export_targets libopenh264)
+ endif()
++if (NOT Crc32c_FOUND)
++ list(APPEND export_targets libcrc32c)
++endif()
+
+ export(
+ TARGETS ${export_targets}
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/cmake/external.cmake
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/cmake/external.cmake
+@@ -166,6 +166,20 @@
+ endif()
+ endfunction()
+
++# crc32c
++function(link_crc32c target_name)
++ if (TG_OWT_PACKAGED_BUILD)
++ find_package(Crc32c)
++ set(Crc32c_FOUND ${Crc32c_FOUND} PARENT_SCOPE)
++ if (Crc32c_FOUND)
++ target_link_libraries(${target_name} PRIVATE Crc32c::crc32c)
++ endif()
++ endif()
++ if (NOT Crc32c_FOUND)
++ target_link_libraries(${target_name} PRIVATE tg_owt::libcrc32c)
++ endif()
++endfunction()
++
+ function(link_glib target_name)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(GLIB2 REQUIRED glib-2.0)
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/src/net/dcsctp/packet/crc32c.cc
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/src/net/dcsctp/packet/crc32c.cc
+@@ -11,7 +11,7 @@
+
+ #include <cstdint>
+
+-#include "third_party/crc32c/src/include/crc32c/crc32c.h"
++#include "crc32c/crc32c.h"
+
+ namespace dcsctp {
+
diff --git a/media-libs/tg_owt/tg_owt-0_pre20220507.ebuild b/media-libs/tg_owt/tg_owt-0_pre20220507.ebuild
new file mode 100644
index 000000000000..384b3d7cafce
--- /dev/null
+++ b/media-libs/tg_owt/tg_owt-0_pre20220507.ebuild
@@ -0,0 +1,118 @@
+# Copyright 2020-2022 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="10d5f4bf77333ef6b43516f90d2ce13273255f41"
+LIBYUV_COMMIT="ad890067f661dc747a975bc55ba3767fe30d4452"
+SRC_URI="https://github.com/desktop-app/tg_owt/archive/${TG_OWT_COMMIT}.tar.gz -> ${P}.tar.gz
+ https://archive.org/download/libyuv-${LIBYUV_COMMIT}.tar/libyuv-${LIBYUV_COMMIT}.tar.gz"
+S="${WORKDIR}/${PN}-${TG_OWT_COMMIT}"
+# Fetch libyuv archive from: https://chromium.googlesource.com/libyuv/libyuv/+archive/${LIBYUV_COMMIT}.tar.gz
+
+LICENSE="BSD"
+SLOT="0/${PV##*pre}"
+KEYWORDS="~amd64 ~arm64 ~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.
+
+# 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)
+DEPEND="
+ >=dev-cpp/abseil-cpp-20211102.0:=[cxx17(+)]
+ 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
+ )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/tg_owt-0_pre20220507-allow-disabling-X11.patch"
+ "${FILESDIR}/tg_owt-0_pre20220507-unbundle-crc32c.patch"
+)
+
+src_unpack() {
+ unpack "${P}.tar.gz"
+ cd "${S}/src/third_party/libyuv" || die
+ unpack "libyuv-${LIBYUV_COMMIT}.tar.gz"
+}
+
+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 libcrc32c aren't available, avoid needing them
+ sed -i '/include(cmake\/libcrc32c.cmake)/d' 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
+}