From d2faacb0fbee3350560991fd7f9c85641a214db6 Mon Sep 17 00:00:00 2001
From: Ilya Fedin <fedin-ilja2010@ya.ru>
Date: Wed, 15 Jun 2022 18:21:37 +0400
Subject: [PATCH] Update snap to core22

---
 .github/workflows/snap.yml   |  13 +--
 Telegram/ThirdParty/dispatch |   2 +-
 snap/snapcraft.yaml          | 167 +++++++++++++++--------------------
 3 files changed, 75 insertions(+), 107 deletions(-)

diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml
index 0badcff0d..8fb7b79f7 100644
--- a/.github/workflows/snap.yml
+++ b/.github/workflows/snap.yml
@@ -38,7 +38,7 @@ on:
 
 jobs:
 
-  linux:
+  snap:
     name: Ubuntu
     runs-on: ubuntu-latest
 
@@ -54,22 +54,13 @@ jobs:
 
       - name: First set up.
         run: |
-          sudo apt-get purge --autoremove lxd
-
           sudo snap install --classic snapcraft
-          sudo snap install lxd
-
-          # Workaround for snapcraft
-          # See https://forum.snapcraft.io/t/13258
-          sudo chown root:root /
-
           sudo usermod -aG lxd $USER
-
           sudo snap run lxd init --auto
           sudo snap run lxd waitready
 
       - name: Telegram Desktop snap build.
-        run: sg lxd -c 'snap run snapcraft --use-lxd'
+        run: sg lxd -c 'snap run snapcraft -v'
 
       - name: Move artifact.
         if: env.UPLOAD_ARTIFACT == 'true'
diff --git a/Telegram/ThirdParty/dispatch b/Telegram/ThirdParty/dispatch
index 851fbd3cb..ecc678d79 160000
--- a/Telegram/ThirdParty/dispatch
+++ b/Telegram/ThirdParty/dispatch
@@ -1 +1 @@
-Subproject commit 851fbd3cb89385ba733bc37d6149280996715898
+Subproject commit ecc678d79f38cf63d24b6d16e18f69a9117d8d73
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index ea1f8e3fa..e30949c72 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -2,7 +2,7 @@ name: telegram-desktop
 adopt-info: telegram
 icon: Telegram/Resources/art/icon512@2x.png
 
-base: core20
+base: core22
 grade: stable
 confinement: strict
 compression: lzo
@@ -77,8 +77,8 @@ layout:
     bind: $SNAP/usr/share/alsa
   /usr/share/X11:
     bind: $SNAP/usr/share/X11
-  /usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.0:
-    bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.0
+  /usr/lib/$CRAFT_ARCH_TRIPLET/webkit2gtk-4.0:
+    bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/webkit2gtk-4.0
 
 parts:
   telegram:
@@ -87,14 +87,10 @@ parts:
     source-type: git
     parse-info: [usr/share/metainfo/telegram-desktop_telegram-desktop.metainfo.xml]
     build-environment:
-      - CC: gcc-10
-      - CXX: g++-10
-      - LD_LIBRARY_PATH: $SNAPCRAFT_STAGE/usr/lib/$SNAPCRAFT_ARCH_TRIPLET:$LD_LIBRARY_PATH
+      - LD_LIBRARY_PATH: $CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
     build-packages:
       - clang
-      - g++-10
-      - ninja-build
-      - python
+      - python3
       - libasound2-dev
       - libglib2.0-dev
       - libglibmm-2.4-dev
@@ -113,9 +109,9 @@ parts:
       - libglibmm-2.4-1v5
       - libopus0
       - libpulse0
-      - libssl1.1
+      - libssl3
       - libwayland-client0
-      - libwebkit2gtk-4.0-37
+      - libwebkit2gtk-4.1-0
       - libxcb1
       - libxcb-keysyms1
       - libxcb-record0
@@ -123,18 +119,18 @@ parts:
       - zlib1g
       - glib-networking
       - systemd
+    cmake-generator: Ninja
     cmake-parameters:
-      - -GNinja
       - -DCMAKE_BUILD_TYPE=Release
       - -DCMAKE_INSTALL_PREFIX=/usr
-      - -DJPEG_LIBRARY_RELEASE=$SNAPCRAFT_STAGE/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so
-      - -DJPEG_INCLUDE_DIR=$SNAPCRAFT_STAGE/usr/include
+      - -DCMAKE_LIBRARY_PATH=$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET
+      - -DCMAKE_INCLUDE_PATH=$CRAFT_STAGE/usr/include
       - -DTDESKTOP_API_ID=611335
       - -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c
       - -DDESKTOP_APP_USE_PACKAGED_LAZY=ON
       - -DTDESKTOP_LAUNCHER_BASENAME=telegram-desktop_telegram-desktop
     override-pull: |
-      snapcraftctl pull
+      craftctl default
 
       version_file=Telegram/build/version
       version=$(sed -n "s/AppVersionStr[ ]\+\(.*\)\+/\1/p" $version_file)
@@ -146,14 +142,14 @@ parts:
 
       version="${version}$(git describe --tags | sed 's,^v[^-]\+,,')"
 
-      snapcraftctl set-version "$version"
+      craftctl set version="$version"
 
       sed -i 's|^Icon=telegram$|Icon=${SNAP}/meta/gui/icon.png|g' lib/xdg/telegramdesktop.desktop
     override-build: |
-      snapcraftctl build
-      rm -rf "$SNAPCRAFT_PART_INSTALL/usr/share/icons"
+      craftctl default
+      rm -rf "$CRAFT_PART_INSTALL/usr/share/icons"
     stage:
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
     prime:
       - -./lib/systemd
     after:
@@ -168,9 +164,12 @@ parts:
     source: https://github.com/desktop-app/patches.git
     source-depth: 1
     plugin: dump
-    organize:
-      "*": patches/
-    prime: [-./*]
+    override-pull: |
+      craftctl default
+      cp -r . "$CRAFT_STAGE/patches"
+    override-stage: |
+      rm -rf patches
+    stage: [-./*]
 
   desktop-qt:
     source: https://github.com/desktop-app/snapcraft-desktop-helpers.git
@@ -182,7 +181,7 @@ parts:
       - dpkg-dev
     stage-packages:
       - libxkbcommon0
-      - ttf-ubuntu-font-family
+      - fonts-ubuntu
       - dmz-cursor-theme
       - light-themes
       - adwaita-icon-theme
@@ -192,7 +191,7 @@ parts:
       - locales-all
       - xdg-user-dirs
     stage:
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
     after:
       - mozjpeg
       - qt
@@ -212,7 +211,7 @@ parts:
       - libswresample3
       - libswscale5
     stage:
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
     after:
       - mozjpeg
 
@@ -221,10 +220,8 @@ parts:
     source-depth: 1
     source-tag: v4.0.3
     plugin: cmake
-    build-packages:
-      - ninja-build
+    cmake-generator: Ninja
     cmake-parameters:
-      - -GNinja
       - -DCMAKE_BUILD_TYPE=Release
       - -DCMAKE_INSTALL_PREFIX=/usr
       - -DENABLE_STATIC=OFF
@@ -233,8 +230,8 @@ parts:
     prime:
       - -./usr/bin
       - -./usr/include
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgconfig
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.so
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/*.so
       - -./usr/share
 
   openal:
@@ -243,16 +240,17 @@ parts:
     source-tag: 1.22.0
     plugin: cmake
     build-packages:
-      - ninja-build
       - libasound2-dev
       - libdbus-1-dev
+      - libpipewire-0.3-dev
       - libpulse-dev
     stage-packages:
       - libasound2
       - libdbus-1-3
+      - libpipewire-0.3-0
       - libpulse0
+    cmake-generator: Ninja
     cmake-parameters:
-      - -GNinja
       - -DCMAKE_BUILD_TYPE=Release
       - -DCMAKE_INSTALL_PREFIX=/usr
       - -DALSOFT_EXAMPLES=OFF
@@ -261,9 +259,9 @@ parts:
       - -DALSOFT_INSTALL_CONFIG=OFF
     prime:
       - -./usr/include
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/cmake
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgconfig
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libopenal.so
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/cmake
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/libopenal.so
 
   qt:
     plugin: nil
@@ -314,12 +312,12 @@ parts:
       - libgtk-3-0
       - libharfbuzz0b
       - libice6
-      - libicu66
+      - libicu70
       - libopengl0
       - libpcre2-16-0
       - libpng16-16
       - libsm6
-      - libssl1.1
+      - libssl3
       - libwayland-client0
       - libwayland-cursor0
       - libwayland-egl1
@@ -350,12 +348,12 @@ parts:
       perl init-repository --module-subset=qtbase,qtwayland,qtimageformats,qtsvg,qt5compat
 
       cd qtbase
-      find $SNAPCRAFT_STAGE/patches/qtbase_${QT} -type f -print0 | sort -z | xargs -r0 git apply
+      find $CRAFT_STAGE/patches/qtbase_${QT} -type f -print0 | sort -z | xargs -r0 git apply
       cd ..
     override-build: |
       ./configure \
         -prefix /usr \
-        -libdir /usr/lib/$SNAPCRAFT_ARCH_TRIPLET \
+        -libdir /usr/lib/$CRAFT_ARCH_TRIPLET \
         -release \
         -opensource \
         -confirm-license \
@@ -369,20 +367,20 @@ parts:
         -nomake examples \
         -nomake tests
 
-      cmake --build . -j$SNAPCRAFT_PARALLEL_BUILD_COUNT
-      DESTDIR="$SNAPCRAFT_PART_INSTALL" cmake --install .
+      cmake --build . -j$CRAFT_PARALLEL_BUILD_COUNT
+      DESTDIR="$CRAFT_PART_INSTALL" cmake --install .
     stage:
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
     prime:
       - -./usr/bin
       - -./usr/doc
       - -./usr/include
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/cmake
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/metatypes
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.a
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.la
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.prl
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.so
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/cmake
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/metatypes
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/*.a
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/*.la
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/*.prl
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/*.so
       - -./usr/libexec
       - -./usr/mkspecs
       - -./usr/modules
@@ -397,55 +395,34 @@ parts:
     plugin: autotools
     autotools-configure-parameters:
       - --prefix=/usr
-      - --libdir=\${exec_prefix}/lib/$SNAPCRAFT_ARCH_TRIPLET
+      - --libdir=\${exec_prefix}/lib/$CRAFT_ARCH_TRIPLET
       - --disable-static
       - --disable-examples
       - --disable-doc
     prime:
       - -./usr/include
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgconfig
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/librnnoise.la
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/librnnoise.so
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/librnnoise.la
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/librnnoise.so
       - -./usr/share
 
-  vpx:
-    source: https://github.com/webmproject/libvpx.git
-    source-depth: 1
-    source-tag: v1.11.0
-    plugin: autotools
-    autotools-configure-parameters:
-      - --prefix=/usr
-      - --libdir=/usr/lib/$SNAPCRAFT_ARCH_TRIPLET
-      - --disable-examples
-      - --disable-unit-tests
-      - --disable-tools
-      - --disable-docs
-      - --enable-shared
-      - --disable-static
-      - --enable-vp8
-      - --enable-vp9
-      - --enable-webm-io
-    prime:
-      - -./usr/include
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgconfig
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libvpx.so
-
   webrtc:
     source: https://github.com/desktop-app/tg_owt.git
     source-depth: 1
     source-commit: 10d5f4bf77333ef6b43516f90d2ce13273255f41
     plugin: cmake
     build-packages:
-      - ninja-build
       - yasm
-      #- libdrm-dev
-      #- libegl-dev
-      #- libgbm-dev
-      #- libgl-dev
-      #- libglib2.0-dev
+      - libdrm-dev
+      - libegl-dev
+      - libgbm-dev
+      - libgl-dev
+      - libglib2.0-dev
+      - libopenh264-dev
       - libopus-dev
-      #- libpipewire-0.2-dev
+      - libpipewire-0.3-dev
       - libssl-dev
+      - libvpx-dev
       - libx11-dev
       - libxcomposite-dev
       - libxdamage-dev
@@ -455,14 +432,16 @@ parts:
       - libxrandr-dev
       - libxtst-dev
     stage-packages:
-      #- libdrm2
-      #- libegl1
-      #- libgbm1
-      #- libgl1
-      #- libglib2.0-0
+      - libdrm2
+      - libegl1
+      - libgbm1
+      - libgl1
+      - libglib2.0-0
+      - libopenh264-6
       - libopus0
-      #- libpipewire-0.2-1
-      - libssl1.1
+      - libpipewire-0.3-0
+      - libssl3
+      - libvpx7
       - libx11-6
       - libxcomposite1
       - libxdamage1
@@ -471,18 +450,16 @@ parts:
       - libxrender1
       - libxrandr2
       - libxtst6
+    cmake-generator: Ninja
     cmake-parameters:
-      - -GNinja
       - -DCMAKE_BUILD_TYPE=Release
       - -DCMAKE_INSTALL_PREFIX=/usr
-      - -DJPEG_LIBRARY_RELEASE=$SNAPCRAFT_STAGE/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so
-      - -DJPEG_INCLUDE_DIR=$SNAPCRAFT_STAGE/usr/include
-      - -DTG_OWT_USE_PIPEWIRE=OFF
+      - -DCMAKE_LIBRARY_PATH=$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET
+      - -DCMAKE_INCLUDE_PATH=$CRAFT_STAGE/usr/include
     prime:
       - -./usr/include
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/cmake
-      - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.a
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/cmake
+      - -./usr/lib/$CRAFT_ARCH_TRIPLET/*.a
     after:
       - ffmpeg
       - mozjpeg
-      - vpx