tdesktop: 2.3.0 -> 2.4.3 and enable webrtc (#100450)
Enables WebRTC by packaging tg_owt.
This commit is contained in:
parent
f9728adae7
commit
4c59c0b1da
@ -1,4 +1,4 @@
|
||||
{ mkDerivation, lib, fetchurl, fetchsvn
|
||||
{ mkDerivation, lib, fetchurl, callPackage
|
||||
, pkgconfig, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook
|
||||
, qtbase, qtimageformats, gtk3, libsForQt5, enchant2, lz4, xxHash
|
||||
, dee, ffmpeg, openalSoft, minizip, libopus, alsaLib, libpulseaudio, range-v3
|
||||
@ -17,14 +17,17 @@ with lib;
|
||||
# - https://git.alpinelinux.org/aports/tree/testing/telegram-desktop/APKBUILD
|
||||
# - https://github.com/void-linux/void-packages/blob/master/srcpkgs/telegram-desktop/template
|
||||
|
||||
mkDerivation rec {
|
||||
let
|
||||
tg_owt = callPackage ./tg_owt.nix {};
|
||||
|
||||
in mkDerivation rec {
|
||||
pname = "telegram-desktop";
|
||||
version = "2.3.0";
|
||||
version = "2.4.3";
|
||||
|
||||
# Telegram-Desktop with submodules
|
||||
src = fetchurl {
|
||||
url = "https://github.com/telegramdesktop/tdesktop/releases/download/v${version}/tdesktop-${version}-full.tar.gz";
|
||||
sha256 = "0yga4p36jrc5m3d8q2y2g0505c2v540w5hgcscapl4xj9hyb21dw";
|
||||
sha256 = "15a8pnz4wf3464n8dvfzr9ck0vmhlx16ya1y889y3crjagm4ipjn";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@ -44,6 +47,7 @@ mkDerivation rec {
|
||||
qtbase qtimageformats gtk3 libsForQt5.libdbusmenu enchant2 lz4 xxHash
|
||||
dee ffmpeg openalSoft minizip libopus alsaLib libpulseaudio range-v3
|
||||
tl-expected hunspell
|
||||
tg_owt
|
||||
# TODO: Shouldn't be required:
|
||||
pcre xorg.libpthreadstubs xorg.libXdmcp utillinux libselinux libsepol epoxy at-spi2-core libXtst
|
||||
];
|
||||
@ -60,7 +64,6 @@ mkDerivation rec {
|
||||
"-DDESKTOP_APP_USE_PACKAGED_GSL=OFF"
|
||||
"-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME=ON"
|
||||
"-DTDESKTOP_USE_PACKAGED_TGVOIP=OFF"
|
||||
"-DDESKTOP_APP_DISABLE_WEBRTC_INTEGRATION=ON"
|
||||
#"-DDESKTOP_APP_SPECIAL_TARGET=\"\"" # TODO: Error when set to "": Bad special target '""'
|
||||
"-DTDESKTOP_LAUNCHER_BASENAME=telegramdesktop" # Note: This is the default
|
||||
];
|
||||
@ -82,6 +85,10 @@ mkDerivation rec {
|
||||
# TODO: Package mapbox-variant
|
||||
|
||||
postFixup = ''
|
||||
# Nuke refs to `tg_owt` which is introduced by `__FILE__` in headers.
|
||||
sed -E "s|($NIX_STORE/)[a-z0-9]{32}(-${tg_owt.name})|\1eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\2|g" \
|
||||
--in-place $out/bin/telegram-desktop
|
||||
|
||||
# This is necessary to run Telegram in a pure environment.
|
||||
# We also use gappsWrapperArgs from wrapGAppsHook.
|
||||
wrapProgram $out/bin/telegram-desktop \
|
||||
|
@ -0,0 +1,159 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 6fbc0da..6cbff3c 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -1856,3 +1856,41 @@ configure_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/tg_owtConfig.cmake"
|
||||
COPYONLY
|
||||
)
|
||||
+
|
||||
+install(
|
||||
+TARGETS
|
||||
+ tg_owt
|
||||
+ libabsl
|
||||
+ libopenh264
|
||||
+ libpffft
|
||||
+ librnnoise
|
||||
+ libsrtp
|
||||
+ libusrsctp
|
||||
+ libvpx
|
||||
+ ${vpx_export}
|
||||
+ libwebrtcbuild
|
||||
+ libyuv
|
||||
+ ${platform_export}
|
||||
+EXPORT tg_owtTargets
|
||||
+RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
+ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
+)
|
||||
+
|
||||
+install(
|
||||
+ DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/src/
|
||||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
+ FILES_MATCHING PATTERN "*.h"
|
||||
+)
|
||||
+
|
||||
+install(
|
||||
+ EXPORT tg_owtTargets
|
||||
+ NAMESPACE tg_owt::
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tg_owt
|
||||
+)
|
||||
+
|
||||
+install(
|
||||
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/tg_owtConfig.cmake
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tg_owt
|
||||
+)
|
||||
diff --git a/cmake/libabsl.cmake b/cmake/libabsl.cmake
|
||||
index 2fb3b8c..4a4f85b 100644
|
||||
--- a/cmake/libabsl.cmake
|
||||
+++ b/cmake/libabsl.cmake
|
||||
@@ -123,5 +123,6 @@ PRIVATE
|
||||
|
||||
target_include_directories(libabsl
|
||||
PUBLIC
|
||||
- ${libabsl_loc}
|
||||
+ $<BUILD_INTERFACE:${libabsl_loc}>
|
||||
+ $<INSTALL_INTERFACE:include/third_party/abseil-cpp>
|
||||
)
|
||||
diff --git a/cmake/libpffft.cmake b/cmake/libpffft.cmake
|
||||
index a6ceb3e..435d3a3 100644
|
||||
--- a/cmake/libpffft.cmake
|
||||
+++ b/cmake/libpffft.cmake
|
||||
@@ -24,5 +24,6 @@ endif()
|
||||
|
||||
target_include_directories(libpffft
|
||||
PUBLIC
|
||||
- ${libpffft_loc}
|
||||
+ $<BUILD_INTERFACE:${libpffft_loc}>
|
||||
+ $<INSTALL_INTERFACE:include/third_party/pffft/src>
|
||||
)
|
||||
diff --git a/cmake/libsrtp.cmake b/cmake/libsrtp.cmake
|
||||
index 57c54b5..26b3466 100644
|
||||
--- a/cmake/libsrtp.cmake
|
||||
+++ b/cmake/libsrtp.cmake
|
||||
@@ -30,6 +30,8 @@ PRIVATE
|
||||
|
||||
target_include_directories(libsrtp
|
||||
PUBLIC
|
||||
- ${libsrtp_loc}/include
|
||||
- ${libsrtp_loc}/crypto/include
|
||||
+ $<BUILD_INTERFACE:${libsrtp_loc}/include>
|
||||
+ $<BUILD_INTERFACE:${libsrtp_loc}/crypto/include>
|
||||
+ $<INSTALL_INTERFACE:include/third_party/libsrtp/include>
|
||||
+ $<INSTALL_INTERFACE:include/third_party/libsrtp/crypto/include>
|
||||
)
|
||||
diff --git a/cmake/libusrsctp.cmake b/cmake/libusrsctp.cmake
|
||||
index caa0529..38d2ef6 100644
|
||||
--- a/cmake/libusrsctp.cmake
|
||||
+++ b/cmake/libusrsctp.cmake
|
||||
@@ -67,6 +67,8 @@ endif()
|
||||
|
||||
target_include_directories(libusrsctp
|
||||
PUBLIC
|
||||
- ${third_party_loc}/usrsctp/usrsctplib
|
||||
- ${libusrsctp_loc}
|
||||
+ $<BUILD_INTERFACE:${third_party_loc}/usrsctp/usrsctplib>
|
||||
+ $<BUILD_INTERFACE:${libusrsctp_loc}>
|
||||
+ $<INSTALL_INTERFACE:include/third_party/usrsctp/usrsctplib/usrsctplib>
|
||||
+ $<INSTALL_INTERFACE:include/third_party/usrsctp/usrsctplib>
|
||||
)
|
||||
diff --git a/cmake/libvpx.cmake b/cmake/libvpx.cmake
|
||||
index e192e7e..78cf25b 100644
|
||||
--- a/cmake/libvpx.cmake
|
||||
+++ b/cmake/libvpx.cmake
|
||||
@@ -68,6 +68,11 @@ else()
|
||||
set(ASM_SUFFIX ".asm.S")
|
||||
endif()
|
||||
|
||||
+foreach(dir ${include_directories})
|
||||
+ string(REPLACE ${libvpx_loc} include/third_party/libvpx install_include_dir ${dir})
|
||||
+ list(APPEND install_include_directories ${install_include_dir})
|
||||
+endforeach()
|
||||
+
|
||||
function(add_sublibrary postfix)
|
||||
add_library(libvpx_${postfix} OBJECT)
|
||||
init_feature_target(libvpx_${postfix} ${postfix})
|
||||
@@ -75,6 +80,8 @@ function(add_sublibrary postfix)
|
||||
target_include_directories(libvpx_${postfix}
|
||||
PRIVATE
|
||||
${include_directories}
|
||||
+ "$<BUILD_INTERFACE:${include_directories}>"
|
||||
+ "$<INSTALL_INTERFACE:${install_include_directories}>"
|
||||
)
|
||||
set(sources_list ${ARGV})
|
||||
list(REMOVE_AT sources_list 0)
|
||||
@@ -725,5 +732,6 @@ endif()
|
||||
|
||||
target_include_directories(libvpx
|
||||
PUBLIC
|
||||
- ${include_directories}
|
||||
+ "$<BUILD_INTERFACE:${include_directories}>"
|
||||
+ "$<INSTALL_INTERFACE:${install_include_directories}>"
|
||||
)
|
||||
diff --git a/cmake/libwebrtcbuild.cmake b/cmake/libwebrtcbuild.cmake
|
||||
index c3520b8..9b4b543 100644
|
||||
--- a/cmake/libwebrtcbuild.cmake
|
||||
+++ b/cmake/libwebrtcbuild.cmake
|
||||
@@ -44,5 +44,6 @@ endif()
|
||||
|
||||
target_include_directories(libwebrtcbuild
|
||||
INTERFACE
|
||||
- ${webrtc_loc}
|
||||
+ $<BUILD_INTERFACE:${webrtc_loc}>
|
||||
+ $<INSTALL_INTERFACE:include>
|
||||
)
|
||||
diff --git a/cmake/libyuv.cmake b/cmake/libyuv.cmake
|
||||
index ebfc6f0..18e70ef 100644
|
||||
--- a/cmake/libyuv.cmake
|
||||
+++ b/cmake/libyuv.cmake
|
||||
@@ -126,7 +126,8 @@ endif()
|
||||
|
||||
target_include_directories(libyuv
|
||||
PUBLIC
|
||||
- ${libyuv_loc}/include
|
||||
+ $<BUILD_INTERFACE:${libyuv_loc}/include>
|
||||
+ $<INSTALL_INTERFACE:include/third_party/libyuv/include>
|
||||
)
|
||||
|
||||
target_compile_definitions(libyuv
|
@ -0,0 +1,26 @@
|
||||
{ lib, stdenv, fetchFromGitHub, cmake, ninja, yasm
|
||||
, pkg-config, libjpeg, openssl, libopus, ffmpeg, alsaLib, libpulseaudio
|
||||
}:
|
||||
|
||||
let
|
||||
rev = "c73a4718cbff7048373a63db32068482e5fd11ef";
|
||||
sha256 = "0nr20mvvmmg8ii8f2rljd7iv2szplcfjn40rpy6llkmf705mwr1k";
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
pname = "tg_owt";
|
||||
version = "git-${rev}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "desktop-app";
|
||||
repo = "tg_owt";
|
||||
inherit rev sha256;
|
||||
};
|
||||
|
||||
patches = [ ./tg_owt-install.patch ];
|
||||
|
||||
nativeBuildInputs = [ pkg-config cmake ninja yasm ];
|
||||
|
||||
buildInputs = [ libjpeg openssl libopus ffmpeg alsaLib libpulseaudio ];
|
||||
|
||||
meta.license = lib.licenses.bsd3;
|
||||
}
|
Loading…
Reference in New Issue
Block a user