tdesktop/snap/snapcraft.yaml

502 lines
12 KiB
YAML

name: telegram-desktop
adopt-info: telegram
icon: Telegram/Resources/art/icon512@2x.png
base: core20
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/telegram-desktop_telegram-desktop.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
- 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/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.0:
bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.0
parts:
telegram:
plugin: cmake
source: .
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
build-packages:
- clang
- g++-10
- python
- libasound2-dev
- libglib2.0-dev
- libglibmm-2.4-dev
- libopus-dev
- libpulse-dev
- libssl-dev
- libwayland-dev
- libxcb1-dev
- libxcb-keysyms1-dev
- libxcb-record0-dev
- libxcb-screensaver0-dev
- zlib1g-dev
stage-packages:
- libasound2
- libglib2.0-0
- libglibmm-2.4-1v5
- libopus0
- libpulse0
- libssl1.1
- libwayland-client0
- libwebkit2gtk-4.0-37
- libxcb1
- libxcb-keysyms1
- libxcb-record0
- libxcb-screensaver0
- zlib1g
- systemd
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
- -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
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[^-]\+,,')"
snapcraftctl 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"
stage:
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
prime:
- -./lib/systemd
after:
- desktop-qt
- ffmpeg
- mozjpeg
- openal
- rnnoise
- webrtc
patches:
source: https://github.com/desktop-app/patches.git
source-depth: 1
plugin: dump
organize:
"*": patches/
prime: [-./*]
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
- ttf-ubuntu-font-family
- dmz-cursor-theme
- light-themes
- adwaita-icon-theme
- gnome-themes-standard
- shared-mime-info
- libgdk-pixbuf2.0-0
- locales-all
- xdg-user-dirs
stage:
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
after:
- mozjpeg
- qt
epoxy:
source: https://github.com/anholt/libepoxy.git
source-depth: 1
source-tag: 1.5.9
plugin: meson
meson-parameters:
- --buildtype=release
- --prefix=/usr
- --default-library=static
- -Dtests=false
override-pull: |
snapcraftctl pull
patch -p1 < $SNAPCRAFT_STAGE/patches/libepoxy.patch
prime: [-./*]
after:
- patches
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/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
after:
- mozjpeg
mozjpeg:
source: https://github.com/mozilla/mozjpeg.git
source-depth: 1
source-tag: v4.0.3
plugin: cmake
cmake-parameters:
- -GNinja
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DENABLE_STATIC=OFF
- -DWITH_JPEG8=ON
- -DPNG_SUPPORTED=OFF
prime:
- -./usr/bin
- -./usr/include
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgconfig
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.so
- -./usr/share
openal:
source: https://github.com/telegramdesktop/openal-soft.git
source-depth: 1
source-branch: fix_pulse_default
plugin: cmake
build-packages:
- libasound2-dev
- libpulse-dev
stage-packages:
- libasound2
- libpulse0
cmake-parameters:
- -GNinja
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DALSOFT_EXAMPLES=OFF
- -DALSOFT_TESTS=OFF
- -DALSOFT_UTILS=OFF
- -DALSOFT_CONFIG=OFF
prime:
- -./usr/include
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/cmake
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgconfig
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libopenal.so
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
- libssl-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-xinput-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
- libicu66
- libopengl0
- libpcre2-16-0
- libpng16-16
- libsm6
- libssl1.1
- libwayland-client0
- libwayland-cursor0
- libwayland-egl1
- 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-xinput0
- libxcb-xkb1
- libxcursor1
- libxkbcommon0
- libxkbcommon-x11-0
- zlib1g
override-pull: |
QT=6_2_4
git clone -b v6.2.4 --depth=1 git://code.qt.io/qt/qt5.git .
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
cd ../qtwayland
find $SNAPCRAFT_STAGE/patches/qtwayland_${QT} -type f -print0 | sort -z | xargs -r0 git apply
cd ..
override-build: |
./configure \
-prefix /usr \
-libdir /usr/lib/$SNAPCRAFT_ARCH_TRIPLET \
-release \
-opensource \
-confirm-license \
-no-feature-getentropy \
-no-feature-renameat2 \
-no-feature-statx \
-no-feature-highdpiscaling \
-openssl-linked \
-nomake examples \
-nomake tests \
-- \
-DINPUT_egl_extension_platform_wayland=no
cmake --build . -j$SNAPCRAFT_PARALLEL_BUILD_COUNT
DESTDIR="$SNAPCRAFT_PART_INSTALL" cmake --install .
stage:
- -./usr/lib/$SNAPCRAFT_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/libexec
- -./usr/mkspecs
- -./usr/modules
# Allow tdesktop's custom try-portal-and-fallback logic to work
- -./usr/plugins/platformthemes/libqxdgdesktopportal.so
after:
- epoxy
- mozjpeg
- 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/$SNAPCRAFT_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/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: 1fe5e68d999e0bf88d0128ad813438726732f6e0
plugin: cmake
build-packages:
- yasm
#- libdrm-dev
#- libgbm-dev
#- libglib2.0-dev
- libopus-dev
#- libpipewire-0.2-dev
- libssl-dev
- libx11-dev
- libxcomposite-dev
- libxdamage-dev
- libxext-dev
- libxfixes-dev
- libxrender-dev
- libxrandr-dev
- libxtst-dev
stage-packages:
#- libdrm2
#- libgbm1
#- libglib2.0-0
- libopus0
#- libpipewire-0.2-1
- libssl1.1
- libx11-6
- libxcomposite1
- libxdamage1
- libxext6
- libxfixes3
- libxrender1
- libxrandr2
- libxtst6
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
prime:
- -./usr/include
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/cmake
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.a
after:
#- epoxy
- ffmpeg
- mozjpeg
- vpx