public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Georgy Yakovlev" <gyakovlev@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/tg_owt/, media-libs/tg_owt/files/
Date: Tue,  2 Aug 2022 22:07:28 +0000 (UTC)	[thread overview]
Message-ID: <1659477995.795a0a5e0f5f2053b3fada3ba1f40deb31d16965.gyakovlev@gentoo> (raw)

commit:     795a0a5e0f5f2053b3fada3ba1f40deb31d16965
Author:     Esteve Varela Colominas <esteve.varela <AT> gmail <DOT> com>
AuthorDate: Fri Jul 29 11:10:57 2022 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Tue Aug  2 22:06:35 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=795a0a5e

media-libs/tg_owt: Bump to 0_pre20220507

Signed-off-by: Esteve Varela Colominas <esteve.varela <AT> gmail.com>
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 media-libs/tg_owt/Manifest                         |   1 +
 .../tg_owt-0_pre20220507-allow-disabling-X11.patch | 117 ++++++++++++++++++++
 .../tg_owt-0_pre20220507-unbundle-crc32c.patch     |  72 +++++++++++++
 media-libs/tg_owt/tg_owt-0_pre20220507.ebuild      | 118 +++++++++++++++++++++
 4 files changed, 308 insertions(+)

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
+}


             reply	other threads:[~2022-08-02 22:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-02 22:07 Georgy Yakovlev [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-04-17 20:16 [gentoo-commits] repo/gentoo:master commit in: media-libs/tg_owt/, media-libs/tg_owt/files/ Georgy Yakovlev
2023-02-01 19:27 Andreas Sturmlechner
2022-04-15  6:04 Sam James
2021-12-10 21:31 Georgy Yakovlev
2021-08-05 16:42 Georgy Yakovlev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1659477995.795a0a5e0f5f2053b3fada3ba1f40deb31d16965.gyakovlev@gentoo \
    --to=gyakovlev@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox