diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml index 53ff92d93..8a5767e58 100644 --- a/.github/workflows/snap.yml +++ b/.github/workflows/snap.yml @@ -47,6 +47,10 @@ jobs: md5cache=$(md5sum CMAKE_CACHE_KEY.txt | cut -c -32) echo ::set-env name=CMAKE_CACHE_KEY::$md5cache + awk -v RS="" -v ORS="\n\n" '/^ ffmpeg:/' snap/snapcraft.yaml > FFMPEG_CACHE_KEY.txt + md5cache=$(md5sum FFMPEG_CACHE_KEY.txt | cut -c -32) + echo ::set-env name=FFMPEG_CACHE_KEY::$md5cache + - name: CMake cache. id: cache-cmake uses: actions/cache@v1 @@ -58,6 +62,17 @@ jobs: if: steps.cache-cmake.outputs.cache-hit != 'true' run: snapcraft build --destructive-mode cmake + - name: FFmpeg cache. + id: cache-ffmpeg + uses: actions/cache@v1 + with: + path: parts/ffmpeg + key: ${{ runner.OS }}-ffmpeg-${{ env.CACHE_KEY }}-${{ env.FFMPEG_CACHE_KEY }} + + - name: FFmpeg build. + if: steps.cache-ffmpeg.outputs.cache-hit != 'true' + run: snapcraft build --destructive-mode ffmpeg + - name: Telegram Desktop snap build. if: env.ONLY_CACHE == 'false' run: snapcraft --destructive-mode @@ -80,5 +95,5 @@ jobs: - name: Remove unneeded directories for cache. run: | - rm -rf parts/cmake/{build,src,ubuntu} - rm -rf parts/cmake/state/{stage,prime} + rm -rf parts/{cmake,ffmpeg}/{build,src,ubuntu} + rm -rf parts/{cmake,ffmpeg}/state/{stage,prime} diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 74de50313..51feca617 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -63,11 +63,6 @@ parts: - qtbase5-private-dev - libmapbox-variant-dev - libasound2-dev - - libavcodec-dev - - libavformat-dev - - libavutil-dev - - libswscale-dev - - libswresample-dev - libdbusmenu-qt5-dev - libhunspell-dev - liblz4-dev @@ -81,11 +76,6 @@ parts: stage-packages: - qt5-image-formats-plugins - libasound2 - - libavcodec57 - - libavformat57 - - libavutil55 - - libswscale4 - - libswresample2 - libdbusmenu-qt5-2 - libhunspell-1.6-0 - liblz4-1 @@ -126,6 +116,7 @@ parts: after: - cmake - desktop-qt5 + - ffmpeg - range-v3 - xxhash @@ -183,6 +174,110 @@ parts: - libtinfo5 prime: [-./*] + ffmpeg: + source: https://github.com/FFmpeg/FFmpeg.git + source-depth: 1 + source-branch: release/4.2 + plugin: autotools + build-packages: + - libtool + - pkg-config + - texi2html + - yasm + - libass-dev + - libfreetype6-dev + - libgpac-dev + - liblzma-dev + - libopus-dev + - libsdl1.2-dev + - libtheora-dev + - libva-dev + - libvdpau-dev + - libvorbis-dev + - libxcb1-dev + - libxcb-shm0-dev + - libxcb-xfixes0-dev + - zlib1g-dev + stage-packages: + - freeglut3 + - libass9 + - libfreetype6 + - libgpac4 + - liblzma5 + - libopus0 + - libslang2 + - libsdl1.2debian + - libtheora0 + - libva2 + - libva-drm2 + - libvdpau1 + - libvorbis0a + - libxcb1 + - libxcb-shm0 + - libxcb-xfixes0 + - zlib1g + configflags: + - --prefix=/usr + - --disable-debug + - --disable-programs + - --disable-doc + - --disable-everything + - --enable-gpl + - --enable-version3 + - --enable-libopus + - --enable-decoder=aac + - --enable-decoder=aac_latm + - --enable-decoder=aasc + - --enable-decoder=flac + - --enable-decoder=gif + - --enable-decoder=h264 + - --enable-decoder=h264_vdpau + - --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=mpeg4_vdpau + - --enable-decoder=msmpeg4v2 + - --enable-decoder=msmpeg4v3 + - --enable-decoder=opus + - --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-hwaccel=h264_vaapi + - --enable-hwaccel=h264_vdpau + - --enable-hwaccel=mpeg4_vaapi + - --enable-hwaccel=mpeg4_vdpau + - --enable-parser=aac + - --enable-parser=aac_latm + - --enable-parser=flac + - --enable-parser=h264 + - --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=mov + - --enable-demuxer=mp3 + - --enable-demuxer=ogg + - --enable-demuxer=wav + - --enable-muxer=ogg + - --enable-muxer=opus + range-v3: source: https://github.com/ericniebler/range-v3.git source-depth: 1