tdesktop/snap/snapcraft.yaml

492 lines
13 KiB
YAML

name: telegram-desktop
adopt-info: telegram
icon: Telegram/Resources/art/icon512@2x.png
base: core24
grade: stable
confinement: strict
compression: lzo
apps:
telegram-desktop:
command: usr/bin/telegram-desktop
command-chain:
- bin/desktop-launch
common-id: org.telegram.desktop
desktop: usr/share/applications/org.telegram.desktop.desktop
autostart: telegram-desktop_telegram-desktop.desktop
plugs:
- alsa
- audio-playback
- audio-record
- camera
- desktop
- desktop-legacy
- gsettings
- hardware-observe
- home
- network
- network-bind
- network-status
- opengl
- removable-media
- unity7
- wayland
- x11
slots:
- 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
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
layout:
/usr/share/alsa:
bind: $SNAP/usr/share/alsa
/usr/share/pipewire:
bind: $SNAP/usr/share/pipewire
/usr/share/X11:
bind: $SNAP/usr/share/X11
/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gtk-3.0:
bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gtk-3.0
/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gtk-4.0:
bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gtk-4.0
/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pipewire-0.3:
bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pipewire-0.3
/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/spa-0.2:
bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/spa-0.2
/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/webkitgtk-6.0:
bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/webkitgtk-6.0
parts:
telegram:
plugin: cmake
source: .
source-type: git
parse-info: [usr/share/metainfo/org.telegram.desktop.metainfo.xml]
build-environment:
- LD_LIBRARY_PATH: $CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
- LDFLAGS: ${LDFLAGS:+$LDFLAGS} -s
build-packages:
- clang
- libtool-bin
- python3
- protobuf-compiler
- libasound2-dev
- libavif-dev
- libboost-regex-dev
- libfmt-dev
- libgirepository1.0-dev
- libglib2.0-dev
- libheif-dev
- libopenal-dev
- libopus-dev
- libprotobuf-dev
- libpulse-dev
- libssl-dev
- libxcb1-dev
- libxcb-keysyms1-dev
- libxcb-record0-dev
- libxcb-screensaver0-dev
- zlib1g-dev
stage-packages:
- libasound2
- libavif16
- libboost-regex1.83.0
- libglib2.0-0t64
- libheif1
- libopenal1
- libopus0
- libprotobuf-lite32t64
- libpulse0
- libssl3t64
- libwebkitgtk-6.0-4
- libxcb1
- libxcb-keysyms1
- libxcb-record0
- libxcb-screensaver0
- zlib1g
- glib-networking
cmake-generator: Ninja
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DCMAKE_PREFIX_PATH=$CRAFT_STAGE/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/org.telegram.desktop.desktop
override-build: |
craftctl default
rm -rf "$CRAFT_PART_INSTALL/usr/share/icons"
after:
- ffmpeg
- libjxl
- qt
- rnnoise
- webrtc
patches:
source: https://github.com/desktop-app/patches.git
source-depth: 1
source-commit: 803f1c2630f5eb0d3b00ba3f095b3079c0533156
plugin: dump
override-pull: |
craftctl default
cp -r . "$CRAFT_STAGE/patches"
override-prime: |
rm -rf patches
stage: [-./*]
desktop-qt:
source: https://github.com/desktop-app/snapcraft-desktop-helpers.git
source-depth: 1
source-subdir: qt
plugin: make
make-parameters: ["FLAVOR=qt5"]
build-environment:
- LD_LIBRARY_PATH: $CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
build-packages:
- build-essential
- dpkg-dev
- gtk-update-icon-cache
- libglib2.0-bin
- libgtk-3-0t64
stage-packages:
- libc-bin
- libgdk-pixbuf-2.0-0
- libnvidia-egl-wayland1
- libxkbcommon0
- locales-all
- shared-mime-info
- xdg-user-dirs
override-prime: |
craftctl default
update-mime-database usr/share/mime
glib-compile-schemas usr/share/glib-2.0/schemas
for theme in usr/share/icons/*; do
if [ -f "$theme/index.theme" ] && [ ! -f "$theme/icon-theme.cache" ]; then
update-icon-caches "$theme"
fi
done
GTK_PATH=$PWD/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gtk-3.0 /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libgtk-3-0t64/gtk-query-immodules-3.0 > usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gtk-3.0/3.0.0/immodules/immodules.cache
after:
- telegram
ffmpeg:
plugin: nil
build-packages:
- libavcodec-dev
- libavfilter-dev
- libavformat-dev
- libavutil-dev
- libswresample-dev
- libswscale-dev
stage-packages:
- libavcodec60
- libavfilter9
- libavformat60
- libavutil58
- libswresample4
- libswscale7
- va-driver-all
- vdpau-driver-all
override-build: |
craftctl default
mv "$CRAFT_PART_INSTALL/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/blas/"* "$CRAFT_PART_INSTALL/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR"
rmdir "$CRAFT_PART_INSTALL/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/blas"
mv "$CRAFT_PART_INSTALL/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/lapack/"* "$CRAFT_PART_INSTALL/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR"
rmdir "$CRAFT_PART_INSTALL/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/lapack"
libjxl:
source: https://github.com/libjxl/libjxl.git
source-depth: 1
source-tag: v0.10.2
plugin: cmake
build-environment:
- LDFLAGS: ${LDFLAGS:+$LDFLAGS} -s
cmake-generator: Ninja
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DBUILD_TESTING=OFF
- -DJPEGXL_ENABLE_DEVTOOLS=OFF
- -DJPEGXL_ENABLE_TOOLS=OFF
- -DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON
- -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
git apply $CRAFT_STAGE/patches/libjxl.patch
stage:
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libbrotli*
prime:
- -./usr/bin
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pkgconfig
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.a
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.so
- -./usr/share
after:
- patches
qt:
plugin: nil
build-environment:
- LDFLAGS: ${LDFLAGS:+$LDFLAGS} -s
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
- liblcms2-dev
- libopengl-dev
- libpcre2-dev
- libpng-dev
- libsm-dev
- libssl-dev
- libvulkan-dev
- libwayland-dev
- libx11-dev
- libx11-xcb-dev
- libxcb1-dev
- libxcb-cursor-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
- libxkbcommon-dev
- libxkbcommon-x11-dev
- zlib1g-dev
stage-packages:
- libdbus-1-3
- libegl1
- libfontconfig1
- libfreetype6
- libglib2.0-0t64
- libglx0
- libgtk-3-0t64
- libharfbuzz0b
- libice6
- libicu74
- liblcms2-2
- libopengl0
- libpcre2-16-0
- libpng16-16t64
- libsm6
- libssl3t64
- libvulkan1
- libwayland-client0
- libwayland-cursor0
- libwayland-egl1
- libwayland-server0
- libx11-6
- libx11-xcb1
- libxcb1
- libxcb-cursor0
- 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
- libxkbcommon0
- libxkbcommon-x11-0
- zlib1g
- mesa-vulkan-drivers
- xkb-data
override-pull: |
QT=6.7.1
git clone -b v${QT} --depth=1 https://github.com/qt/qt5.git .
git submodule update --init --recursive --depth=1 qtbase qtdeclarative qtwayland qtimageformats qtsvg qtshadertools
cd qtbase
find $CRAFT_STAGE/patches/qtbase_${QT} -type f -print0 | sort -z | xargs -r0 git apply
cd ../qtwayland
find $CRAFT_STAGE/patches/qtwayland_${QT} -type f -print0 | sort -z | xargs -r0 git apply
sed -i 's/qMin(version, 8)/qMin(version, 7)/' src/client/qwaylandinputdevice.cpp
cd ..
override-build: |
./configure \
-prefix /usr \
-libdir /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR \
-release \
-opensource \
-confirm-license \
-openssl-linked \
-nomake examples \
-nomake tests \
-- \
-DCMAKE_PREFIX_PATH=$CRAFT_STAGE/usr
cmake --build . -j$CRAFT_PARALLEL_BUILD_COUNT
DESTDIR="$CRAFT_PART_INSTALL" cmake --install .
prime:
- -./usr/bin
- -./usr/doc
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/cmake
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/metatypes
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pkgconfig
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.a
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.la
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.prl
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.so
- -./usr/libexec
- -./usr/mkspecs
- -./usr/modules
after:
- libjxl
- patches
rnnoise:
source: https://gitlab.xiph.org/xiph/rnnoise.git
source-depth: 1
source-commit: 7f449bf8bd3b933891d12c30112268c4090e4d59
plugin: autotools
build-environment:
- CFLAGS: -O2 -s
autotools-configure-parameters:
- --prefix=/usr
- --libdir=\${exec_prefix}/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR
- --disable-static
- --disable-examples
- --disable-doc
prime:
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pkgconfig
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.la
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.so
- -./usr/share
systemd:
plugin: nil
stage-packages:
- systemd
stage:
- ./usr/bin/systemd-detect-virt
webrtc:
source: https://github.com/desktop-app/tg_owt.git
source-depth: 1
source-commit: 3bb3d757681e6cc5135aec6529a753dc3dcdcfb9
plugin: cmake
build-environment:
- LDFLAGS: ${LDFLAGS:+$LDFLAGS} -s
build-packages:
- yasm
- libdrm-dev
- libegl-dev
- libgbm-dev
- libgl-dev
- libglib2.0-dev
- libopenh264-dev
- libopus-dev
- libpipewire-0.3-dev
- libssl-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-0t64
- libopenh264-7
- libopus0
- libssl3t64
- libvpx9
- libx11-6
- libxcomposite1
- libxdamage1
- libxext6
- libxfixes3
- libxrender1
- libxrandr2
- libxtst6
- pipewire
cmake-generator: Ninja
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr
- -DCMAKE_PREFIX_PATH=$CRAFT_STAGE/usr
prime:
- -./usr/include
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/cmake
- -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.a
after:
- ffmpeg
- libjxl