diff options
author | Ilya Fedin <fedin-ilja2010@ya.ru> | 2021-12-05 09:40:46 +0400 |
---|---|---|
committer | Ilya Fedin <fedin-ilja2010@ya.ru> | 2022-03-17 02:26:24 +0400 |
commit | 1a8e99e7f84d5e1047d7c92d8f4f8a52c86cf442 (patch) | |
tree | 5d1903bd9660bde48ad14cd0ee236e296f49733e /pkgs/applications/networking/instant-messengers | |
parent | d3367563ef18942b88bbe057e4cd557d2319e01b (diff) |
kotatogram-desktop: add Darwin support
tdesktop and kotatogram both have macos builds, so it shouldn't be hard to make them available in nixpkgs
Diffstat (limited to 'pkgs/applications/networking/instant-messengers')
4 files changed, 627 insertions, 22 deletions
diff --git a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix index b0a04a36befd0..ce5dc0e266e63 100644 --- a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix +++ b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix @@ -33,6 +33,38 @@ , abseil-cpp , microsoft_gsl , wayland +, libicns +, Cocoa +, CoreFoundation +, CoreServices +, CoreText +, CoreGraphics +, CoreMedia +, OpenGL +, AudioUnit +, ApplicationServices +, Foundation +, AGL +, Security +, SystemConfiguration +, Carbon +, AudioToolbox +, VideoToolbox +, VideoDecodeAcceleration +, AVFoundation +, CoreAudio +, CoreVideo +, CoreMediaIO +, QuartzCore +, AppKit +, CoreWLAN +, WebKit +, IOKit +, GSS +, MediaPlayer +, IOSurface +, Metal +, MetalKit , withWebKit ? false }: @@ -40,9 +72,20 @@ with lib; let tg_owt = callPackage ./tg_owt.nix { - abseil-cpp = abseil-cpp.override { + abseil-cpp = (abseil-cpp.override { + # abseil-cpp should use the same compiler + inherit stdenv; cxxStandard = "20"; - }; + }).overrideAttrs (_: { + # https://github.com/NixOS/nixpkgs/issues/130963 + NIX_LDFLAGS = optionalString stdenv.isDarwin "-lc++abi"; + }); + + # tg_owt should use the same compiler + inherit stdenv; + + inherit Cocoa AppKit IOKit IOSurface Foundation AVFoundation CoreMedia VideoToolbox + CoreGraphics CoreVideo OpenGL Metal MetalKit CoreFoundation ApplicationServices; }; in stdenv.mkDerivation rec { @@ -59,35 +102,44 @@ stdenv.mkDerivation rec { patches = [ ./shortcuts-binary-path.patch + # let it build with nixpkgs 10.12 sdk + ./kotato-10.12-sdk.patch ]; - postPatch = '' + postPatch = optionalString stdenv.isLinux '' substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.cpp \ --replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"' substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioOutputALSA.cpp \ --replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"' substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioPulse.cpp \ --replace '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"' - '' + optionalString withWebKit '' + '' + optionalString (stdenv.isLinux && withWebKit) '' substituteInPlace Telegram/lib_webview/webview/platform/linux/webview_linux_webkit_gtk.cpp \ --replace '"libwebkit2gtk-4.0.so.37"' '"${webkitgtk}/lib/libwebkit2gtk-4.0.so.37"' + '' + optionalString stdenv.isDarwin '' + substituteInPlace Telegram/CMakeLists.txt \ + --replace 'COMMAND iconutil' 'COMMAND png2icns' \ + --replace '--convert icns' "" \ + --replace '--output AppIcon.icns' 'AppIcon.icns' \ + --replace "\''${appicon_path}" "\''${appicon_path}/icon_16x16.png \''${appicon_path}/icon_32x32.png \''${appicon_path}/icon_128x128.png \''${appicon_path}/icon_256x256.png \''${appicon_path}/icon_512x512.png" ''; # We want to run wrapProgram manually (with additional parameters) - dontWrapGApps = true; - dontWrapQtApps = withWebKit; + dontWrapGApps = stdenv.isLinux; + dontWrapQtApps = stdenv.isLinux && withWebKit; nativeBuildInputs = [ pkg-config cmake ninja - # to build bundled libdispatch - clang python3 wrapQtAppsHook removeReferencesTo + ] ++ optionals stdenv.isLinux [ + # to build bundled libdispatch + clang extra-cmake-modules - ] ++ optionals withWebKit [ + ] ++ optionals (stdenv.isLinux && withWebKit) [ wrapGAppsHook ]; @@ -95,28 +147,64 @@ stdenv.mkDerivation rec { qtbase qtimageformats qtsvg - kwayland lz4 xxHash ffmpeg openalSoft minizip libopus - alsa-lib - libpulseaudio range-v3 tl-expected - hunspell - glibmm - jemalloc rnnoise tg_owt microsoft_gsl + ] ++ optionals stdenv.isLinux [ + kwayland + alsa-lib + libpulseaudio + hunspell + glibmm + jemalloc wayland - ] ++ optionals withWebKit [ + ] ++ optionals (stdenv.isLinux && withWebKit) [ webkitgtk + ] ++ optionals stdenv.isDarwin [ + Cocoa + CoreFoundation + CoreServices + CoreText + CoreGraphics + CoreMedia + OpenGL + AudioUnit + ApplicationServices + Foundation + AGL + Security + SystemConfiguration + Carbon + AudioToolbox + VideoToolbox + VideoDecodeAcceleration + AVFoundation + CoreAudio + CoreVideo + CoreMediaIO + QuartzCore + AppKit + CoreWLAN + WebKit + IOKit + GSS + MediaPlayer + IOSurface + Metal + libicns ]; + # https://github.com/NixOS/nixpkgs/issues/130963 + NIX_LDFLAGS = optionalString stdenv.isDarwin "-lc++abi"; + enableParallelBuilding = true; cmakeFlags = [ @@ -124,13 +212,20 @@ stdenv.mkDerivation rec { "-DDESKTOP_APP_QT6=OFF" ]; + installPhase = optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + cp -r Kotatogram.app $out/Applications + ln -s $out/Applications/Kotatogram.app/Contents/MacOS $out/bin + ''; + preFixup = '' - remove-references-to -t ${stdenv.cc.cc} $out/bin/kotatogram-desktop - remove-references-to -t ${microsoft_gsl} $out/bin/kotatogram-desktop - remove-references-to -t ${tg_owt.dev} $out/bin/kotatogram-desktop + binName=${if stdenv.isLinux then "kotatogram-desktop" else "Kotatogram"} + remove-references-to -t ${stdenv.cc.cc} $out/bin/$binName + remove-references-to -t ${microsoft_gsl} $out/bin/$binName + remove-references-to -t ${tg_owt.dev} $out/bin/$binName ''; - postFixup = optionalString withWebKit '' + postFixup = optionalString (stdenv.isLinux && withWebKit) '' # We also use gappsWrapperArgs from wrapGAppsHook. wrapProgram $out/bin/kotatogram-desktop \ "''${gappsWrapperArgs[@]}" \ @@ -149,7 +244,7 @@ stdenv.mkDerivation rec { It contains some useful (or purely cosmetic) features, but they could be unstable. A detailed list is available here: https://kotatogram.github.io/changes ''; license = licenses.gpl3; - platforms = platforms.linux; + platforms = platforms.all; homepage = "https://kotatogram.github.io"; changelog = "https://github.com/kotatogram/kotatogram-desktop/releases/tag/k{version}"; maintainers = with maintainers; [ ilya-fedin ]; diff --git a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kotato-10.12-sdk.patch b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kotato-10.12-sdk.patch new file mode 100644 index 0000000000000..d603c967cfde2 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kotato-10.12-sdk.patch @@ -0,0 +1,415 @@ +diff --git a/Telegram/SourceFiles/platform/mac/file_bookmark_mac.mm b/Telegram/SourceFiles/platform/mac/file_bookmark_mac.mm +index 337055443..09604b117 100644 +--- a/Telegram/SourceFiles/platform/mac/file_bookmark_mac.mm ++++ b/Telegram/SourceFiles/platform/mac/file_bookmark_mac.mm +@@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL + + #include <Cocoa/Cocoa.h> + #include <CoreFoundation/CFURL.h> ++#undef check + + namespace Platform { + namespace { +diff --git a/Telegram/SourceFiles/platform/mac/specific_mac.mm b/Telegram/SourceFiles/platform/mac/specific_mac.mm +index 3b4395ae3..7f8ee401f 100644 +--- a/Telegram/SourceFiles/platform/mac/specific_mac.mm ++++ b/Telegram/SourceFiles/platform/mac/specific_mac.mm +@@ -119,6 +119,7 @@ PermissionStatus GetPermissionStatus(PermissionType type) { + switch (type) { + case PermissionType::Microphone: + case PermissionType::Camera: ++#if 0 + const auto nativeType = (type == PermissionType::Microphone) + ? AVMediaTypeAudio + : AVMediaTypeVideo; +@@ -133,6 +134,7 @@ PermissionStatus GetPermissionStatus(PermissionType type) { + return PermissionStatus::Denied; + } + } ++#endif + break; + } + return PermissionStatus::Granted; +@@ -142,6 +144,7 @@ void RequestPermission(PermissionType type, Fn<void(PermissionStatus)> resultCal + switch (type) { + case PermissionType::Microphone: + case PermissionType::Camera: ++#if 0 + const auto nativeType = (type == PermissionType::Microphone) + ? AVMediaTypeAudio + : AVMediaTypeVideo; +@@ -152,6 +155,7 @@ void RequestPermission(PermissionType type, Fn<void(PermissionStatus)> resultCal + }); + }]; + } ++#endif + break; + } + resultCallback(PermissionStatus::Granted); +diff --git a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_formatter_item.h b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_formatter_item.h +index a537929c8..82ef2b837 100644 +--- a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_formatter_item.h ++++ b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_formatter_item.h +@@ -9,8 +9,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL + + #import <AppKit/NSPopoverTouchBarItem.h> + #import <AppKit/NSTouchBar.h> ++#undef check + +-API_AVAILABLE(macos(10.12.2)) + @interface TextFormatPopover : NSPopoverTouchBarItem + - (id)init:(NSTouchBarItemIdentifier)identifier; + @end +diff --git a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.h b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.h +index c6a4b886f..d2e0936c0 100644 +--- a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.h ++++ b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_pinned_chats_item.h +@@ -8,12 +8,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL + #pragma once + + #include <AppKit/NSImageView.h> ++#undef check + + namespace Main { + class Session; + } // namespace Main + +-API_AVAILABLE(macos(10.12.2)) + @interface PinnedDialogsPanel : NSImageView + - (id)init:(not_null<Main::Session*>)session + destroyEvent:(rpl::producer<>)touchBarSwitches; +diff --git a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_scrubber_item.h b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_scrubber_item.h +index 27b04467c..b1a7dfbd9 100644 +--- a/Telegram/SourceFiles/platform/mac/touchbar/items/mac_scrubber_item.h ++++ b/Telegram/SourceFiles/platform/mac/touchbar/items/mac_scrubber_item.h +@@ -9,12 +9,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL + + #import <AppKit/NSPopoverTouchBarItem.h> + #import <AppKit/NSTouchBar.h> ++#undef check + + namespace Window { + class Controller; + } // namespace Window + +-API_AVAILABLE(macos(10.12.2)) + @interface StickerEmojiPopover : NSPopoverTouchBarItem<NSTouchBarDelegate> + - (id)init:(not_null<Window::Controller*>)controller + identifier:(NSTouchBarItemIdentifier)identifier; +diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_audio.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_audio.h +index ec4596c67..972461aef 100644 +--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_audio.h ++++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_audio.h +@@ -8,8 +8,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL + #pragma once + + #import <AppKit/NSTouchBar.h> ++#undef check + +-API_AVAILABLE(macos(10.12.2)) + @interface TouchBarAudioPlayer : NSTouchBar<NSTouchBarDelegate> + - (rpl::producer<>)closeRequests; + @end +diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_common.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_common.h +index 52b54de12..ac3857f9b 100644 +--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_common.h ++++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_common.h +@@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL + + #import <AppKit/NSImage.h> + #import <Foundation/Foundation.h> ++#undef check + + namespace TouchBar { + +diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_controls.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_controls.h +index 1cc8c832f..c2178c975 100644 +--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_controls.h ++++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_controls.h +@@ -20,19 +20,19 @@ struct TrackState; + + namespace TouchBar { + +-[[nodiscard]] API_AVAILABLE(macos(10.12.2)) ++[[nodiscard]] + NSButton *CreateTouchBarButton( + NSImage *image, + rpl::lifetime &lifetime, + Fn<void()> callback); + +-[[nodiscard]] API_AVAILABLE(macos(10.12.2)) ++[[nodiscard]] + NSButton *CreateTouchBarButton( + const style::icon &icon, + rpl::lifetime &lifetime, + Fn<void()> callback); + +-[[nodiscard]] API_AVAILABLE(macos(10.12.2)) ++[[nodiscard]] + NSButton *CreateTouchBarButtonWithTwoStates( + NSImage *icon1, + NSImage *icon2, +@@ -41,7 +41,7 @@ NSButton *CreateTouchBarButtonWithTwoStates( + bool firstState, + rpl::producer<bool> stateChanged = rpl::never<bool>()); + +-[[nodiscard]] API_AVAILABLE(macos(10.12.2)) ++[[nodiscard]] + NSButton *CreateTouchBarButtonWithTwoStates( + const style::icon &icon1, + const style::icon &icon2, +@@ -50,14 +50,14 @@ NSButton *CreateTouchBarButtonWithTwoStates( + bool firstState, + rpl::producer<bool> stateChanged = rpl::never<bool>()); + +-[[nodiscard]] API_AVAILABLE(macos(10.12.2)) ++[[nodiscard]] + NSSliderTouchBarItem *CreateTouchBarSlider( + NSString *itemId, + rpl::lifetime &lifetime, + Fn<void(bool, double, double)> callback, + rpl::producer<Media::Player::TrackState> stateChanged); + +-[[nodiscard]] API_AVAILABLE(macos(10.12.2)) ++[[nodiscard]] + NSCustomTouchBarItem *CreateTouchBarTrackPosition( + NSString *itemId, + rpl::producer<Media::Player::TrackState> stateChanged); +diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h +index f03546eaf..bc8c63678 100644 +--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h ++++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h +@@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL + #pragma once + + #import <AppKit/NSTouchBar.h> ++#undef check + + namespace Window { + class Controller; +@@ -21,7 +22,6 @@ const auto kPopoverPickerItemIdentifier = @"pickerButtons"; + + } // namespace TouchBar::Main + +-API_AVAILABLE(macos(10.12.2)) + @interface TouchBarMain : NSTouchBar + - (id)init:(not_null<Window::Controller*>)controller + touchBarSwitches:(rpl::producer<>)touchBarSwitches; +diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_manager.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_manager.h +index 464f87c9c..9a008c75e 100644 +--- a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_manager.h ++++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_manager.h +@@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL + #pragma once + + #import <AppKit/NSTouchBar.h> ++#undef check + + namespace Main { + class Domain; +@@ -17,7 +18,6 @@ namespace Window { + class Controller; + } // namespace Window + +-API_AVAILABLE(macos(10.12.2)) + @interface RootTouchBar : NSTouchBar<NSTouchBarDelegate> + - (id)init:(rpl::producer<bool>)canApplyMarkdown + controller:(not_null<Window::Controller*>)controller +Submodule Telegram/ThirdParty/tgcalls contains modified content +diff --git a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoDecoderFactory.mm b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoDecoderFactory.mm +index 8a4417b..2d9794e 100644 +--- a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoDecoderFactory.mm ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoDecoderFactory.mm +@@ -71,7 +71,7 @@ + if (@available(iOS 11.0, *)) { + [result addObject:h265Info]; + } +-#else // WEBRTC_IOS ++#elif 0 // WEBRTC_IOS + if (@available(macOS 10.13, *)) { + [result addObject:h265Info]; + } +@@ -101,7 +101,7 @@ + return [[TGRTCVideoDecoderH265 alloc] init]; + } + } +-#else // WEBRTC_IOS ++#elif 0 // WEBRTC_IOS + if (@available(macOS 10.13, *)) { + if ([info.name isEqualToString:kRTCVideoCodecH265Name]) { + return [[TGRTCVideoDecoderH265 alloc] init]; +diff --git a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoEncoderFactory.mm b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoEncoderFactory.mm +index 2901417..ac9ec2a 100644 +--- a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoEncoderFactory.mm ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/TGRTCDefaultVideoEncoderFactory.mm +@@ -76,7 +76,7 @@ + [result addObject:h265Info]; + } + } +-#else // WEBRTC_IOS ++#elif 0 // WEBRTC_IOS + if (@available(macOS 10.13, *)) { + if ([[AVAssetExportSession allExportPresets] containsObject:AVAssetExportPresetHEVCHighestQuality]) { + [result addObject:h265Info]; +@@ -112,7 +112,7 @@ + return [[TGRTCVideoEncoderH265 alloc] initWithCodecInfo:info]; + } + } +-#else // WEBRTC_IOS ++#elif 0 // WEBRTC_IOS + if (@available(macOS 10.13, *)) { + if ([info.name isEqualToString:kRTCVideoCodecH265Name]) { + return [[TGRTCVideoEncoderH265 alloc] initWithCodecInfo:info]; +diff --git a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.mm b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.mm +index de92427..9a5b20d 100644 +--- a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.mm ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.mm +@@ -507,8 +507,7 @@ static tgcalls::DarwinVideoTrackSource *getObjCVideoSource(const rtc::scoped_ref + - (void)captureOutput:(AVCaptureOutput *)captureOutput + didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer + fromConnection:(AVCaptureConnection *)connection { +- NSString *droppedReason = +- (__bridge NSString *)CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_DroppedFrameReason, nil); ++ NSString *droppedReason = nil; + RTCLogError(@"Dropped sample buffer. Reason: %@", droppedReason); + } + +diff --git a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.mm b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.mm +index bcabcf7..de7b6c7 100644 +--- a/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.mm ++++ b/Telegram/ThirdParty/tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.mm +@@ -245,9 +245,11 @@ private: + layer.framebufferOnly = true; + layer.opaque = false; + // layer.cornerRadius = 4; ++#if 0 + if (@available(macOS 10.13, *)) { + layer.displaySyncEnabled = NO; + } ++#endif + // layer.presentsWithTransaction = YES; + layer.backgroundColor = [NSColor clearColor].CGColor; + layer.contentsGravity = kCAGravityResizeAspectFill; +@@ -334,9 +336,7 @@ private: + - (RTCVideoRotation)rtcFrameRotation { + if (_rotationOverride) { + RTCVideoRotation rotation; +- if (@available(macOS 10.13, *)) { +- [_rotationOverride getValue:&rotation size:sizeof(rotation)]; +- } else { ++ { + [_rotationOverride getValue:&rotation]; + } + return rotation; +Submodule Telegram/lib_base contains modified content +diff --git a/Telegram/lib_base/base/platform/mac/base_global_shortcuts_mac.mm b/Telegram/lib_base/base/platform/mac/base_global_shortcuts_mac.mm +index 5491702..32befc6 100644 +--- a/Telegram/lib_base/base/platform/mac/base_global_shortcuts_mac.mm ++++ b/Telegram/lib_base/base/platform/mac/base_global_shortcuts_mac.mm +@@ -128,6 +128,7 @@ bool Available() { + } + + bool Allowed() { ++#if 0 + if (@available(macOS 10.15, *)) { + // Input Monitoring is required on macOS 10.15 an later. + // Even if user grants access, restart is required. +@@ -141,6 +142,7 @@ bool Allowed() { + return AXIsProcessTrustedWithOptions( + (__bridge CFDictionaryRef)options); + } ++#endif + return true; + } + +diff --git a/Telegram/lib_base/base/platform/mac/base_info_mac.mm b/Telegram/lib_base/base/platform/mac/base_info_mac.mm +index 29e368f..ea1f65f 100644 +--- a/Telegram/lib_base/base/platform/mac/base_info_mac.mm ++++ b/Telegram/lib_base/base/platform/mac/base_info_mac.mm +@@ -203,16 +203,20 @@ void Finish() { + } + + void OpenInputMonitoringPrivacySettings() { ++#if 0 + if (@available(macOS 10.15, *)) { + IOHIDRequestAccess(kIOHIDRequestTypeListenEvent); + } ++#endif + [[NSWorkspace sharedWorkspace] openURL:PrivacySettingsUrl("Privacy_ListenEvent")]; + } + + void OpenDesktopCapturePrivacySettings() { ++#if 0 + if (@available(macOS 11.0, *)) { + CGRequestScreenCaptureAccess(); + } ++#endif + [[NSWorkspace sharedWorkspace] openURL:PrivacySettingsUrl("Privacy_ScreenCapture")]; + } + +diff --git a/Telegram/lib_base/base/platform/mac/base_system_media_controls_mac.mm b/Telegram/lib_base/base/platform/mac/base_system_media_controls_mac.mm +index c86ac77..b081162 100644 +--- a/Telegram/lib_base/base/platform/mac/base_system_media_controls_mac.mm ++++ b/Telegram/lib_base/base/platform/mac/base_system_media_controls_mac.mm +@@ -271,6 +271,7 @@ void SystemMediaControls::setThumbnail(const QImage &thumbnail) { + if (thumbnail.isNull()) { + return; + } ++#if 0 + if (@available(macOS 10.13.2, *)) { + const auto copy = thumbnail; + [_private->info +@@ -284,6 +285,7 @@ void SystemMediaControls::setThumbnail(const QImage &thumbnail) { + forKey:MPMediaItemPropertyArtwork]; + updateDisplay(); + } ++#endif + } + + void SystemMediaControls::setDuration(int duration) { +@@ -302,10 +304,12 @@ void SystemMediaControls::setVolume(float64 volume) { + } + + void SystemMediaControls::clearThumbnail() { ++#if 0 + if (@available(macOS 10.13.2, *)) { + [_private->info removeObjectForKey:MPMediaItemPropertyArtwork]; + updateDisplay(); + } ++#endif + } + + void SystemMediaControls::clearMetadata() { +@@ -367,9 +371,11 @@ bool SystemMediaControls::volumeSupported() const { + } + + bool SystemMediaControls::Supported() { ++#if 0 + if (@available(macOS 10.12.2, *)) { + return true; + } ++#endif + return false; + } + +Submodule Telegram/lib_webrtc contains modified content +diff --git a/Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm b/Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm +index 21e93f7..10a3890 100644 +--- a/Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm ++++ b/Telegram/lib_webrtc/webrtc/mac/webrtc_media_devices_mac.mm +@@ -397,6 +397,7 @@ void MacMediaDevices::videoInputRefreshed() { + } + + bool MacDesktopCaptureAllowed() { ++#if 0 + if (@available(macOS 11.0, *)) { + // Screen Recording is required on macOS 10.15 an later. + // Even if user grants access, restart is required. +@@ -421,6 +422,7 @@ bool MacDesktopCaptureAllowed() { + CFRelease(stream); + return true; + } ++#endif + return true; + } + diff --git a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt-10.12-sdk.patch b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt-10.12-sdk.patch new file mode 100644 index 0000000000000..a9adf5737a55c --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt-10.12-sdk.patch @@ -0,0 +1,55 @@ +diff --git a/src/rtc_base/system/gcd_helpers.m b/src/rtc_base/system/gcd_helpers.m +index fd9a361f..3a63be6d 100644 +--- a/src/rtc_base/system/gcd_helpers.m ++++ b/src/rtc_base/system/gcd_helpers.m +@@ -13,9 +13,6 @@ + dispatch_queue_t RTCDispatchQueueCreateWithTarget(const char *label, + dispatch_queue_attr_t attr, + dispatch_queue_t target) { +- if (@available(iOS 10, macOS 10.12, tvOS 10, watchOS 3, *)) { +- return dispatch_queue_create_with_target(label, attr, target); +- } + dispatch_queue_t queue = dispatch_queue_create(label, attr); + dispatch_set_target_queue(queue, target); + return queue; +diff --git a/src/sdk/objc/components/video_codec/nalu_rewriter.cc b/src/sdk/objc/components/video_codec/nalu_rewriter.cc +index 61c1e7d6..b19f3f91 100644 +--- a/src/sdk/objc/components/video_codec/nalu_rewriter.cc ++++ b/src/sdk/objc/components/video_codec/nalu_rewriter.cc +@@ -245,10 +245,7 @@ bool H265CMSampleBufferToAnnexBBuffer( + int nalu_header_size = 0; + size_t param_set_count = 0; + OSStatus status = noErr; +- if (__builtin_available(macOS 10.13, *)) { +- status = CMVideoFormatDescriptionGetHEVCParameterSetAtIndex( +- description, 0, nullptr, nullptr, ¶m_set_count, &nalu_header_size); +- } else { ++ { + RTC_LOG(LS_ERROR) << "Not supported."; + return false; + } +@@ -271,10 +268,7 @@ bool H265CMSampleBufferToAnnexBBuffer( + size_t param_set_size = 0; + const uint8_t* param_set = nullptr; + for (size_t i = 0; i < param_set_count; ++i) { +- if (__builtin_available(macOS 10.13, *)) { +- status = CMVideoFormatDescriptionGetHEVCParameterSetAtIndex( +- description, i, ¶m_set, ¶m_set_size, nullptr, nullptr); +- } else { ++ { + RTC_LOG(LS_ERROR) << "Not supported."; + return false; + } +@@ -514,11 +508,7 @@ CMVideoFormatDescriptionRef CreateH265VideoFormatDescription( + // Parse the SPS and PPS into a CMVideoFormatDescription. + CMVideoFormatDescriptionRef description = nullptr; + OSStatus status = noErr; +- if (__builtin_available(macOS 10.13, *)) { +- status = CMVideoFormatDescriptionCreateFromHEVCParameterSets( +- kCFAllocatorDefault, 3, param_set_ptrs, param_set_sizes, 4, nullptr, +- &description); +- } else { ++ { + RTC_LOG(LS_ERROR) << "Not supported."; + return nullptr; + } diff --git a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix index e6a2f0f9501d1..fe62270b8e809 100644 --- a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix +++ b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix @@ -27,6 +27,21 @@ , mesa , libglvnd , libepoxy +, Cocoa +, AppKit +, IOKit +, IOSurface +, Foundation +, AVFoundation +, CoreMedia +, VideoToolbox +, CoreGraphics +, CoreVideo +, OpenGL +, Metal +, MetalKit +, CoreFoundation +, ApplicationServices }: stdenv.mkDerivation { @@ -41,6 +56,11 @@ stdenv.mkDerivation { fetchSubmodules = true; }; + patches = [ + # let it build with nixpkgs 10.12 sdk + ./tg_owt-10.12-sdk.patch + ]; + outputs = [ "out" "dev" ]; nativeBuildInputs = [ pkg-config cmake ninja yasm ]; @@ -54,6 +74,8 @@ stdenv.mkDerivation { openh264 usrsctp libvpx + abseil-cpp + ] ++ lib.optionals stdenv.isLinux [ libX11 libXtst libXcomposite @@ -63,13 +85,31 @@ stdenv.mkDerivation { libXrandr libXi glib - abseil-cpp pipewire mesa libepoxy libglvnd + ] ++ lib.optionals stdenv.isDarwin [ + Cocoa + AppKit + IOKit + IOSurface + Foundation + AVFoundation + CoreMedia + VideoToolbox + CoreGraphics + CoreVideo + OpenGL + Metal + MetalKit + CoreFoundation + ApplicationServices ]; + # https://github.com/NixOS/nixpkgs/issues/130963 + NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-lc++abi"; + enableParallelBuilding = true; propagatedBuildInputs = [ |