AyuGramDesktop/snap/snapcraft.yaml
Ilya Fedin fc4682d77e Get rid of TDESKTOP_LAUNCHER_BASENAME
This key was mainly used to let flatpak and snap provide right desktop file name.
Now, we can compute it from the environment in runtime for both flatpak and snap.
There's no more need in this option. Desktop filename override by downstreams is highly discouraged.
2022-11-07 13:47:58 +04:00

539 lines
13 KiB
YAML

name: telegram-desktop
adopt-info: telegram
icon: Telegram/Resources/art/icon512@2x.png
base: core22
grade: stable
confinement: strict
compression: lzo
architectures:
- build-on: amd64
- build-on: arm64
- build-on: armhf
- build-on: ppc64el
apps:
telegram-desktop:
command: bin/desktop-launch telegram-desktop
common-id: org.telegram.desktop
desktop: usr/share/applications/telegramdesktop.desktop
environment:
# Tell glib to use portals on file associations handling.
GTK_USE_PORTAL: 1
# Use sandboxed ibus api
IBUS_USE_PORTAL: 1
plugs:
- alsa
- audio-playback
- audio-record
- camera
- desktop
- desktop-legacy
- hardware-observe
- home
- network
- network-status
- opengl
- removable-media
- unity7
- wayland
- x11
slots:
- tdesktop-mpris
hooks:
configure:
command-chain:
- bin/hooks-configure-desktop
plugs:
- desktop
plugs:
desktop:
mount-host-font-cache: false
# Support for common GTK themes
# https://forum.snapcraft.io/t/how-to-use-the-system-gtk-theme-via-the-gtk-common-themes-snap/6235
gsettings:
gtk-3-themes:
interface: content
target: $SNAP/data-dir/themes
default-provider: gtk-common-themes
icon-themes:
interface: content
target: $SNAP/data-dir/icons
default-provider: gtk-common-themes
sound-themes:
interface: content
target: $SNAP/data-dir/sounds
default-provider: gtk-common-themes
slots:
tdesktop-mpris:
interface: mpris
name: tdesktop
layout:
/usr/share/alsa:
bind: $SNAP/usr/share/alsa
/usr/share/X11:
bind: $SNAP/usr/share/X11
/usr/lib/$CRAFT_ARCH_TRIPLET/webkit2gtk-4.1:
bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/webkit2gtk-4.1
parts:
telegram:
plugin: cmake
source: .
source-type: git
parse-info: [usr/share/metainfo/telegram-desktop_telegram-desktop.metainfo.xml]
build-environment:
- LD_LIBRARY_PATH: $CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
build-packages:
- clang
- python3
- libasound2-dev
- libavif-dev
- libglib2.0-dev
- libheif-dev
- libopus-dev
- libpulse-dev
- libwayland-dev
- libxcb1-dev
- libxcb-keysyms1-dev
- libxcb-record0-dev
- libxcb-screensaver0-dev
- zlib1g-dev
stage-packages:
- libasound2
- libavif13
- libglib2.0-0
- libheif1
- libopus0
- libpulse0
- libwayland-client0
- libwebkit2gtk-4.1-0
- libxcb1
- libxcb-keysyms1
- libxcb-record0
- libxcb-screensaver0
- zlib1g
- glib-networking
- systemd
cmake-generator: Ninja
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DTDESKTOP_API_ID=611335
- -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c
- -DDESKTOP_APP_USE_PACKAGED_LAZY=ON
override-pull: |
craftctl default
version_file=Telegram/build/version
version=$(sed -n "s/AppVersionStr[ ]\+\(.*\)\+/\1/p" $version_file)
beta=$(sed -n "s/BetaChannel[ ]\+\(.*\)\+/\1/p" $version_file)
if [ "$beta" != "0" ]; then
version="$version-beta"
fi
version="${version}$(git describe --tags | sed 's,^v[^-]\+,,')"
craftctl set version="$version"
sed -i 's|^Icon=telegram$|Icon=${SNAP}/meta/gui/icon.png|g' lib/xdg/telegramdesktop.desktop
override-build: |
craftctl default
rm -rf "$CRAFT_PART_INSTALL/usr/share/icons"
stage:
- -./usr/lib/$CRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
prime:
- -./lib/systemd
after:
- desktop-qt
- ffmpeg
- libjxl
- glibmm
- mozjpeg
- openal
- openssl
- rnnoise
- webrtc
patches:
source: https://github.com/desktop-app/patches.git
source-depth: 1
plugin: dump
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
source-subdir: qt
plugin: make
make-parameters: ["FLAVOR=qt5"]
build-packages:
- build-essential
- dpkg-dev
stage-packages:
- libxkbcommon0
- shared-mime-info
- libgdk-pixbuf-2.0-0
- locales-all
- xdg-user-dirs
stage:
- -./usr/lib/$CRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
after:
- mozjpeg
- qt
ffmpeg:
plugin: nil
build-packages:
- libavcodec-dev
- libavformat-dev
- libavutil-dev
- libswresample-dev
- libswscale-dev
stage-packages:
- libavcodec58
- libavformat58
- libavutil56
- libswresample3
- libswscale5
stage:
- -./usr/lib/$CRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
after:
- mozjpeg
glibmm:
source: https://github.com/GNOME/glibmm.git
source-depth: 1
source-tag: 2.72.1
plugin: meson
build-packages:
- curl
- meson
- ninja-build
- libglib2.0-dev
- libxml-parser-perl
stage-packages:
- libglib2.0-0
meson-parameters:
- --buildtype=release
- --prefix=/usr
- -Dbuild-documentation=false
- -Dbuild-examples=false
- -Dsigc++-3.0:build-documentation=false
- -Dsigc++-3.0:build-examples=false
- -Dsigc++-3.0:validation=false
- -Dmm-common:use-network=true
prime:
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
- -./usr/lib/$CRAFT_ARCH_TRIPLET/*.so
libjxl:
source: https://github.com/libjxl/libjxl.git
source-depth: 1
source-tag: v0.7.0
plugin: cmake
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DBUILD_TESTING=OFF
- -DJPEGXL_ENABLE_DEVTOOLS=OFF
- -DJPEGXL_ENABLE_TOOLS=OFF
- -DJPEGXL_ENABLE_DOXYGEN=OFF
- -DJPEGXL_ENABLE_MANPAGES=OFF
- -DJPEGXL_ENABLE_BENCHMARK=OFF
- -DJPEGXL_ENABLE_EXAMPLES=OFF
- -DJPEGXL_ENABLE_JNI=OFF
- -DJPEGXL_ENABLE_SJPEG=OFF
- -DJPEGXL_ENABLE_OPENEXR=OFF
- -DJPEGXL_ENABLE_SKCMS=OFF
override-pull: |
craftctl default
sed -i 's/NOT JPEGXL_ENABLE_SKCMS/0/' lib/jxl.cmake
stage:
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libbrotli*
prime:
- -./usr/bin
- -./usr/include
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgconfig
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.a
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.so
- -./usr/share
mozjpeg:
source: https://github.com/mozilla/mozjpeg.git
source-depth: 1
source-tag: v4.0.3
plugin: cmake
cmake-generator: Ninja
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DENABLE_STATIC=OFF
- -DWITH_JPEG8=ON
- -DPNG_SUPPORTED=OFF
prime:
- -./usr/bin
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
- -./usr/lib/$CRAFT_ARCH_TRIPLET/*.so
- -./usr/share
openal:
source: https://github.com/kcat/openal-soft.git
source-depth: 1
source-tag: 1.22.2
plugin: cmake
build-packages:
- 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:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DALSOFT_EXAMPLES=OFF
- -DALSOFT_UTILS=OFF
- -DALSOFT_INSTALL_CONFIG=OFF
prime:
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET/cmake
- -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
- -./usr/lib/$CRAFT_ARCH_TRIPLET/*.so
openssl:
source: https://github.com/openssl/openssl.git
source-depth: 1
source-branch: OpenSSL_1_1_1-stable
plugin: make
override-build: |
./config \
shared \
--prefix=/usr \
--openssldir=/usr/lib/ssl \
--libdir=lib/$CRAFT_ARCH_TRIPLET \
no-tests
craftctl default
prime:
- -./usr/bin
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
- -./usr/lib/$CRAFT_ARCH_TRIPLET/*.a
- -./usr/lib/$CRAFT_ARCH_TRIPLET/*.so
- -./usr/share
qt:
plugin: nil
build-packages:
- libdbus-1-dev
- libegl-dev
- libfontconfig1-dev
- libfreetype-dev
- libglib2.0-dev
- libglx-dev
- libgtk-3-dev
- libharfbuzz-dev
- libice-dev
- libicu-dev
- libopengl-dev
- libpcre2-dev
- libpng-dev
- libsm-dev
- libvulkan-dev
- libwayland-dev
- libx11-dev
- libx11-xcb-dev
- libxcb1-dev
- libxcb-glx0-dev
- libxcb-icccm4-dev
- libxcb-image0-dev
- libxcb-keysyms1-dev
- libxcb-randr0-dev
- libxcb-render0-dev
- libxcb-render-util0-dev
- libxcb-shape0-dev
- libxcb-shm0-dev
- libxcb-sync-dev
- libxcb-util-dev
- libxcb-xfixes0-dev
- libxcb-xkb-dev
- libxcursor-dev
- libxkbcommon-dev
- libxkbcommon-x11-dev
- zlib1g-dev
stage-packages:
- libdbus-1-3
- libegl1
- libfontconfig1
- libfreetype6
- libglib2.0-0
- libglx0
- libgtk-3-0
- libharfbuzz0b
- libice6
- libicu70
- libopengl0
- libpcre2-16-0
- libpng16-16
- libsm6
- libvulkan1
- libwayland-client0
- libwayland-cursor0
- libwayland-egl1
- libwayland-server0
- libx11-6
- libx11-xcb1
- libxcb1
- libxcb-glx0
- libxcb-icccm4
- libxcb-image0
- libxcb-keysyms1
- libxcb-randr0
- libxcb-render0
- libxcb-render-util0
- libxcb-shape0
- libxcb-shm0
- libxcb-sync1
- libxcb-util1
- libxcb-xfixes0
- libxcb-xkb1
- libxcursor1
- libxkbcommon0
- libxkbcommon-x11-0
- zlib1g
override-pull: |
QT=6_4_0
git clone -b v6.4.0 --depth=1 git://code.qt.io/qt/qt5.git .
git submodule update --init --recursive --depth=1 qtbase qtdeclarative qtwayland qtimageformats qtsvg qt5compat qtshadertools
cd qtbase
find $CRAFT_STAGE/patches/qtbase_${QT} -type f -print0 | sort -z | xargs -r0 git apply
cd ..
override-build: |
./configure \
-prefix /usr \
-libdir /usr/lib/$CRAFT_ARCH_TRIPLET \
-release \
-opensource \
-confirm-license \
-no-feature-getentropy \
-no-feature-renameat2 \
-no-feature-statx \
-no-feature-egl-extension-platform-wayland \
-no-feature-highdpiscaling \
-openssl-linked \
-nomake examples \
-nomake tests
cmake --build . -j$CRAFT_PARALLEL_BUILD_COUNT
DESTDIR="$CRAFT_PART_INSTALL" cmake --install .
stage:
- -./usr/lib/$CRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
prime:
- -./usr/bin
- -./usr/doc
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET/cmake
- -./usr/lib/$CRAFT_ARCH_TRIPLET/metatypes
- -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
- -./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
after:
- mozjpeg
- openssl
- patches
rnnoise:
source: https://gitlab.xiph.org/xiph/rnnoise.git
source-depth: 1
source-commit: 7f449bf8bd3b933891d12c30112268c4090e4d59
plugin: autotools
autotools-configure-parameters:
- --prefix=/usr
- --libdir=\${exec_prefix}/lib/$CRAFT_ARCH_TRIPLET
- --disable-static
- --disable-examples
- --disable-doc
prime:
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig
- -./usr/lib/$CRAFT_ARCH_TRIPLET/*.la
- -./usr/lib/$CRAFT_ARCH_TRIPLET/*.so
- -./usr/share
webrtc:
source: https://github.com/desktop-app/tg_owt.git
source-depth: 1
source-commit: 10d5f4bf77333ef6b43516f90d2ce13273255f41
plugin: cmake
build-packages:
- yasm
- libdrm-dev
- libegl-dev
- libgbm-dev
- libgl-dev
- libglib2.0-dev
- libopenh264-dev
- libopus-dev
- libpipewire-0.3-dev
- libvpx-dev
- libx11-dev
- libxcomposite-dev
- libxdamage-dev
- libxext-dev
- libxfixes-dev
- libxrender-dev
- libxrandr-dev
- libxtst-dev
stage-packages:
- libdrm2
- libegl1
- libgbm1
- libgl1
- libglib2.0-0
- libopenh264-6
- libopus0
- libpipewire-0.3-0
- libvpx7
- libx11-6
- libxcomposite1
- libxdamage1
- libxext6
- libxfixes3
- libxrender1
- libxrandr2
- libxtst6
cmake-generator: Ninja
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
prime:
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET/cmake
- -./usr/lib/$CRAFT_ARCH_TRIPLET/*.a
after:
- ffmpeg
- mozjpeg
- openssl