name: telegram-desktop adopt-info: telegram icon: Telegram/Resources/art/icon512@2x.png base: core18 grade: stable confinement: strict architectures: - build-on: amd64 - build-on: i386 - build-on: arm64 - build-on: armhf - build-on: ppc64el apps: telegram-desktop: command: telegram-launch common-id: org.telegram.desktop desktop: share/applications/telegramdesktop.desktop environment: # Use GTK3 cursor theme, icon theme and open/save file dialogs. QT_QPA_PLATFORMTHEME: gtk3 extensions: - kde-neon plugs: - alsa - audio-playback - audio-record - desktop - desktop-legacy - home - network - network-manager - opengl - pulseaudio - removable-media - unity7 - wayland - x11 plugs: # 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 layout: /usr/share/alsa: bind: $SNAP/usr/share/alsa /usr/share/X11: bind: $SNAP/usr/share/X11 parts: telegram: plugin: cmake source: . source-type: git parse-info: [share/metainfo/telegramdesktop.appdata.xml] build-environment: - CFLAGS: "$CFLAGS -I$SNAPCRAFT_STAGE/usr/include/$SNAPCRAFT_ARCH_TRIPLET/qt5/QtWaylandClient/5.12.3" - CXXFLAGS: "$CXXFLAGS -I$SNAPCRAFT_STAGE/usr/include/$SNAPCRAFT_ARCH_TRIPLET/qt5/QtWaylandClient/5.12.3" build-snaps: - kde-frameworks-5-core18-sdk - kde-frameworks-5-core18 build-packages: - gcc-8 - g++-8 - libasound2-dev - libglib2.0-dev - libglvnd-dev - libgtk-3-dev - liblzma-dev - libopus-dev - libpulse-dev - libssl-dev - zlib1g-dev stage-packages: - liblzma5 configflags: - -DCMAKE_C_COMPILER=gcc-8 - -DCMAKE_CXX_COMPILER=g++-8 - -DCMAKE_AUTOMOC_MOC_OPTIONS=-I$SNAPCRAFT_STAGE/usr/include/$SNAPCRAFT_ARCH_TRIPLET/qt5/QtWaylandClient/5.12.3 - -DCMAKE_BUILD_TYPE=Release - -DTDESKTOP_API_ID=611335 - -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c - -DDESKTOP_APP_USE_PACKAGED_LAZY=ON - -DDESKTOP_APP_USE_PACKAGED_FONTS=OFF - -DTDESKTOP_USE_FONTCONFIG_FALLBACK=ON 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=.*|Icon=/share/icons/hicolor/512x512/apps/telegram.png|g' lib/xdg/telegramdesktop.desktop after: - cmake - ffmpeg - openal telegram-launcher: plugin: dump source: snap/scripts organize: telegram-launch: bin/telegram-launch patches: plugin: dump source: Telegram/Patches prime: [-./*] qtconf: plugin: nil override-build: | KF5_DIR=/snap/kde-frameworks-5-core18-sdk/current install -d "$SNAPCRAFT_PART_INSTALL/usr/include/$SNAPCRAFT_ARCH_TRIPLET" cp -a $KF5_DIR/usr/include/$SNAPCRAFT_ARCH_TRIPLET/qt5 "$SNAPCRAFT_PART_INSTALL/usr/include/$SNAPCRAFT_ARCH_TRIPLET" install -d "$SNAPCRAFT_PART_INSTALL/usr/lib/$SNAPCRAFT_ARCH_TRIPLET" cp -a $KF5_DIR/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/qt5 "$SNAPCRAFT_PART_INSTALL/usr/lib/$SNAPCRAFT_ARCH_TRIPLET" cat << EOF > "$SNAPCRAFT_PART_INSTALL/qt.conf" [Paths] Prefix=$KF5_DIR/usr ArchData=lib/$SNAPCRAFT_ARCH_TRIPLET/qt5 Binaries=lib/qt5/bin Data=share/qt5 Documentation=share/qt5/doc Examples=lib/$SNAPCRAFT_ARCH_TRIPLET/qt5/examples Headers=$SNAPCRAFT_STAGE/usr/include/$SNAPCRAFT_ARCH_TRIPLET/qt5 HostBinaries=lib/qt5/bin HostData=$SNAPCRAFT_STAGE/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/qt5 HostLibraries=lib/$SNAPCRAFT_ARCH_TRIPLET Imports=lib/$SNAPCRAFT_ARCH_TRIPLET/qt5/imports Libraries=lib/$SNAPCRAFT_ARCH_TRIPLET LibraryExecutables=lib/$SNAPCRAFT_ARCH_TRIPLET/qt5/libexec Plugins=lib/$SNAPCRAFT_ARCH_TRIPLET/qt5/plugins Qml2Imports=lib/$SNAPCRAFT_ARCH_TRIPLET/qt5/qml Settings=/etc/xdg Translations=share/qt5/translations EOF stage: - -usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqwayland* - -usr/lib/x86_64-linux-gnu/qt5/plugins/wayland* - -usr/lib/x86_64-linux-gnu/qt5/qml/QtWayland prime: [-./*] cmake: source: "https://gitlab.kitware.com/cmake/cmake.git" source-depth: 1 source-tag: v3.16.4 source-type: git plugin: make override-build: | ${SNAPCRAFT_PART_SRC}/bootstrap \ --parallel=${SNAPCRAFT_PARALLEL_BUILD_COUNT} \ -- \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/ \ -DBUILD_TESTING=OFF snapcraftctl build build-packages: - build-essential - libssl-dev - libncurses5-dev stage-packages: - libssl1.1 - libncurses5 - libtinfo5 prime: [-./*] nasm: source: https://repo.or.cz/nasm.git source-depth: 1 source-tag: nasm-2.14.02 plugin: autotools override-build: | ./autogen.sh ./configure --prefix= make -j$(nproc) install -d "$SNAPCRAFT_PART_INSTALL/bin" install nasm "$SNAPCRAFT_PART_INSTALL/bin/nasm" install ndisasm "$SNAPCRAFT_PART_INSTALL/bin/ndisasm" prime: [-./*] dav1d: source: https://github.com/videolan/dav1d.git source-depth: 1 source-tag: 0.6.0 plugin: meson meson-parameters: - --prefix=/usr - -Denable_tools=false - -Denable_tests=false prime: - -./usr/include - -./usr/lib/*/pkgconfig after: - nasm ffmpeg: source: https://github.com/FFmpeg/FFmpeg.git source-depth: 1 source-branch: release/4.2 plugin: autotools build-packages: - libasound2-dev - libopus-dev - libva-dev - libvdpau-dev configflags: - --prefix=/usr - --disable-static - --disable-debug - --disable-programs - --disable-doc - --disable-network - --disable-autodetect - --disable-everything - --disable-neon - --disable-iconv - --enable-shared - --enable-libdav1d - --enable-libopus - --enable-vaapi - --enable-vdpau - --enable-protocol=file - --enable-hwaccel=h264_vaapi - --enable-hwaccel=h264_vdpau - --enable-hwaccel=mpeg4_vaapi - --enable-hwaccel=mpeg4_vdpau - --enable-decoder=aac - --enable-decoder=aac_fixed - --enable-decoder=aac_latm - --enable-decoder=aasc - --enable-decoder=alac - --enable-decoder=flac - --enable-decoder=gif - --enable-decoder=h264 - --enable-decoder=hevc - --enable-decoder=libdav1d - --enable-decoder=mp1 - --enable-decoder=mp1float - --enable-decoder=mp2 - --enable-decoder=mp2float - --enable-decoder=mp3 - --enable-decoder=mp3adu - --enable-decoder=mp3adufloat - --enable-decoder=mp3float - --enable-decoder=mp3on4 - --enable-decoder=mp3on4float - --enable-decoder=mpeg4 - --enable-decoder=msmpeg4v2 - --enable-decoder=msmpeg4v3 - --enable-decoder=opus - --enable-decoder=pcm_alaw - --enable-decoder=pcm_f32be - --enable-decoder=pcm_f32le - --enable-decoder=pcm_f64be - --enable-decoder=pcm_f64le - --enable-decoder=pcm_lxf - --enable-decoder=pcm_mulaw - --enable-decoder=pcm_s16be - --enable-decoder=pcm_s16be_planar - --enable-decoder=pcm_s16le - --enable-decoder=pcm_s16le_planar - --enable-decoder=pcm_s24be - --enable-decoder=pcm_s24daud - --enable-decoder=pcm_s24le - --enable-decoder=pcm_s24le_planar - --enable-decoder=pcm_s32be - --enable-decoder=pcm_s32le - --enable-decoder=pcm_s32le_planar - --enable-decoder=pcm_s64be - --enable-decoder=pcm_s64le - --enable-decoder=pcm_s8 - --enable-decoder=pcm_s8_planar - --enable-decoder=pcm_u16be - --enable-decoder=pcm_u16le - --enable-decoder=pcm_u24be - --enable-decoder=pcm_u24le - --enable-decoder=pcm_u32be - --enable-decoder=pcm_u32le - --enable-decoder=pcm_u8 - --enable-decoder=pcm_zork - --enable-decoder=vorbis - --enable-decoder=wavpack - --enable-decoder=wmalossless - --enable-decoder=wmapro - --enable-decoder=wmav1 - --enable-decoder=wmav2 - --enable-decoder=wmavoice - --enable-encoder=libopus - --enable-parser=aac - --enable-parser=aac_latm - --enable-parser=flac - --enable-parser=h264 - --enable-parser=hevc - --enable-parser=mpeg4video - --enable-parser=mpegaudio - --enable-parser=opus - --enable-parser=vorbis - --enable-demuxer=aac - --enable-demuxer=flac - --enable-demuxer=gif - --enable-demuxer=h264 - --enable-demuxer=hevc - --enable-demuxer=m4v - --enable-demuxer=mov - --enable-demuxer=mp3 - --enable-demuxer=ogg - --enable-demuxer=wav - --enable-muxer=ogg - --enable-muxer=opus override-pull: | snapcraftctl pull patch -p1 < "$SNAPCRAFT_STAGE/ffmpeg.diff" prime: - -./usr/include - -./usr/lib/pkgconfig after: - patches - nasm - dav1d openal: source: https://github.com/kcat/openal-soft.git source-depth: 1 source-tag: openal-soft-1.20.1 plugin: cmake build-packages: - libasound2-dev - libpulse-dev - libsndio-dev - portaudio19-dev configflags: - -DCMAKE_BUILD_TYPE=Release - -DALSOFT_EXAMPLES=OFF - -DALSOFT_TESTS=OFF - -DALSOFT_UTILS=OFF - -DALSOFT_CONFIG=OFF prime: - -./include - -./lib/cmake - -./lib/pkgconfig qgnomeplatform: source: https://github.com/FedoraQt/QGnomePlatform.git source-depth: 1 source-tag: 0.6.0 plugin: dump build-snaps: - kde-frameworks-5-core18-sdk - kde-frameworks-5-core18 build-packages: - libglvnd-dev - libgtk-3-dev stage-packages: - libgtk-3-0 - cinnamon-desktop-data override-build: | KF5_DIR=/snap/kde-frameworks-5-core18-sdk/current $KF5_DIR/usr/lib/qt5/bin/qmake -qtconf "$SNAPCRAFT_STAGE/qt.conf" make -j$(nproc) make INSTALL_ROOT="$SNAPCRAFT_PART_INSTALL/tmp" install cp -a "$SNAPCRAFT_PART_INSTALL/tmp/$KF5_DIR/." "$SNAPCRAFT_PART_INSTALL" rm -r "$SNAPCRAFT_PART_INSTALL/tmp" after: - qtconf - qtwayland qtimageformats: source: https://github.com/qt/qtimageformats.git source-depth: 1 source-tag: v5.12.3 plugin: dump build-snaps: - kde-frameworks-5-core18-sdk - kde-frameworks-5-core18 build-packages: - libglvnd-dev override-build: | KF5_DIR=/snap/kde-frameworks-5-core18-sdk/current $KF5_DIR/usr/lib/qt5/bin/qmake -qtconf "$SNAPCRAFT_STAGE/qt.conf" make -j$(nproc) make INSTALL_ROOT="$SNAPCRAFT_PART_INSTALL/tmp" install cp -a "$SNAPCRAFT_PART_INSTALL/tmp/$KF5_DIR/." "$SNAPCRAFT_PART_INSTALL" rm -r "$SNAPCRAFT_PART_INSTALL/tmp" after: - qtconf qtwayland: source: https://github.com/qt/qtwayland.git source-depth: 1 source-tag: v5.12.3 plugin: dump build-snaps: - kde-frameworks-5-core18-sdk - kde-frameworks-5-core18 build-packages: - libglvnd-dev override-build: | KF5_DIR=/snap/kde-frameworks-5-core18-sdk/current $KF5_DIR/usr/lib/qt5/bin/qmake -qtconf "$SNAPCRAFT_STAGE/qt.conf" make -j$(nproc) make INSTALL_ROOT="$SNAPCRAFT_PART_INSTALL/tmp" install cp -a "$SNAPCRAFT_PART_INSTALL/tmp/$KF5_DIR/." "$SNAPCRAFT_PART_INSTALL" cp -a "$SNAPCRAFT_PART_INSTALL/tmp/$SNAPCRAFT_STAGE/." "$SNAPCRAFT_PART_INSTALL" rm -r "$SNAPCRAFT_PART_INSTALL/tmp" after: - qtconf prime: [-./*]