summary refs log tree commit diff
path: root/pkgs/applications/networking/instant-messengers/telegram
diff options
context:
space:
mode:
authoroxalica <oxalicc@pm.me>2020-10-16 21:41:07 +0800
committerGitHub <noreply@github.com>2020-10-16 15:41:07 +0200
commit4c59c0b1dacacf0272958880eaa50612397511b0 (patch)
tree092051817dba9a33fdf3275eb2830854be03a9ea /pkgs/applications/networking/instant-messengers/telegram
parentf9728adae78a9e2530dfb89918e33e985019483d (diff)
downloadnixpkgs-4c59c0b1dacacf0272958880eaa50612397511b0.tar
nixpkgs-4c59c0b1dacacf0272958880eaa50612397511b0.tar.gz
nixpkgs-4c59c0b1dacacf0272958880eaa50612397511b0.tar.bz2
nixpkgs-4c59c0b1dacacf0272958880eaa50612397511b0.tar.lz
nixpkgs-4c59c0b1dacacf0272958880eaa50612397511b0.tar.xz
nixpkgs-4c59c0b1dacacf0272958880eaa50612397511b0.tar.zst
nixpkgs-4c59c0b1dacacf0272958880eaa50612397511b0.zip
tdesktop: 2.3.0 -> 2.4.3 and enable webrtc (#100450)
Enables WebRTC by packaging tg_owt.
Diffstat (limited to 'pkgs/applications/networking/instant-messengers/telegram')
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix17
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt-install.patch159
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix26
3 files changed, 197 insertions, 5 deletions
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
index 7e932d74abc..fff4400e0a4 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
@@ -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 \
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt-install.patch b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt-install.patch
new file mode 100644
index 00000000000..bc8a23eb31e
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt-install.patch
@@ -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
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix
new file mode 100644
index 00000000000..47e9b6787e3
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix
@@ -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;
+}