From cb5fdac0da0cb063fe3978a4220eca16a328a17d Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Tue, 9 Apr 2024 23:41:01 +0400 Subject: [PATCH] Replace mozjpeg with jpegli on Linux --- Telegram/build/docker/centos_env/Dockerfile | 31 +++++-------- cmake | 2 +- snap/snapcraft.yaml | 51 ++++++--------------- 3 files changed, 26 insertions(+), 58 deletions(-) diff --git a/Telegram/build/docker/centos_env/Dockerfile b/Telegram/build/docker/centos_env/Dockerfile index 964684ab8..16ae4b5d4 100644 --- a/Telegram/build/docker/centos_env/Dockerfile +++ b/Telegram/build/docker/centos_env/Dockerfile @@ -51,7 +51,7 @@ FROM builder AS patches RUN git init patches \ && cd patches \ && git remote add origin {{ GIT }}/desktop-app/patches.git \ - && git fetch --depth=1 origin b8e22ca1511513024b22b5381153163ad3406a8c \ + && git fetch --depth=1 origin f81dfc6f7061d7f70c7e952cee9c1c2689f937a2 \ && git reset --hard FETCH_HEAD \ && rm -rf .git @@ -132,19 +132,6 @@ RUN git clone -b 1.0.7 --depth=1 {{ GIT }}/google/highway.git \ && cd .. \ && rm -rf highway -FROM builder AS mozjpeg -RUN git clone -b v4.1.4 --depth=1 {{ GIT }}/mozilla/mozjpeg.git \ - && cd mozjpeg \ - && cmake -GNinja -B build . \ - -DCMAKE_BUILD_TYPE=None \ - -DCMAKE_INSTALL_PREFIX=/usr/local \ - -DWITH_JPEG8=ON \ - -DPNG_SUPPORTED=OFF \ - && cmake --build build --parallel \ - && DESTDIR="{{ LibrariesPath }}/mozjpeg-cache" cmake --install build \ - && cd .. \ - && rm -rf mozjpeg - FROM builder AS opus RUN git clone -b v1.4 --depth=1 {{ GIT }}/xiph/opus.git \ && cd opus \ @@ -258,20 +245,22 @@ RUN git clone -b v1.17.6 --depth=1 {{ GIT }}/strukturag/libheif.git \ && cd .. \ && rm -rf libheif -FROM builder AS libjxl +FROM patches AS libjxl COPY --link --from=lcms2 {{ LibrariesPath }}/lcms2-cache / COPY --link --from=brotli {{ LibrariesPath }}/brotli-cache / COPY --link --from=highway {{ LibrariesPath }}/highway-cache / RUN git clone -b v0.10.2 --depth=1 {{ GIT }}/libjxl/libjxl.git \ && cd libjxl \ + && git apply ../patches/libjxl.patch \ + && git submodule update --init --recursive --depth=1 third_party/libjpeg-turbo \ && cmake -GNinja -B build . \ -DCMAKE_BUILD_TYPE=None \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_TESTING=OFF \ -DJPEGXL_ENABLE_DEVTOOLS=OFF \ -DJPEGXL_ENABLE_TOOLS=OFF \ - -DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF \ + -DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON \ -DJPEGXL_ENABLE_DOXYGEN=OFF \ -DJPEGXL_ENABLE_MANPAGES=OFF \ -DJPEGXL_ENABLE_BENCHMARK=OFF \ @@ -281,7 +270,10 @@ RUN git clone -b v0.10.2 --depth=1 {{ GIT }}/libjxl/libjxl.git \ -DJPEGXL_ENABLE_OPENEXR=OFF \ -DJPEGXL_ENABLE_SKCMS=OFF \ && cmake --build build --parallel \ - && DESTDIR="{{ LibrariesPath }}/libjxl-cache" cmake --install build \ + && export DESTDIR="{{ LibrariesPath }}/libjxl-cache" \ + && cmake --install build \ + && cp build/lib/libjpegli-static.a $DESTDIR/usr/local/lib64/libjpeg.a \ + && ar rcs $DESTDIR/usr/local/lib64/libjpeg.a build/lib/CMakeFiles/jpegli-libjpeg-obj.dir/jpegli/libjpeg_wrapper.cc.o \ && cd .. \ && rm -rf libjxl @@ -704,7 +696,7 @@ RUN git clone -b 1.78.1 --depth=1 {{ GIT }}/GNOME/gobject-introspection.git \ FROM patches AS qt COPY --link --from=zlib {{ LibrariesPath }}/zlib-cache / COPY --link --from=lcms2 {{ LibrariesPath }}/lcms2-cache / -COPY --link --from=mozjpeg {{ LibrariesPath }}/mozjpeg-cache / +COPY --link --from=libjxl {{ LibrariesPath }}/libjxl-cache / COPY --link --from=xcb {{ LibrariesPath }}/xcb-cache / COPY --link --from=xcb-wm {{ LibrariesPath }}/xcb-wm-cache / COPY --link --from=xcb-util {{ LibrariesPath }}/xcb-util-cache / @@ -757,9 +749,9 @@ RUN git clone -b v2023.06.01 --depth=1 https://chromium.googlesource.com/breakpa && rm -rf breakpad FROM builder AS webrtc -COPY --link --from=mozjpeg {{ LibrariesPath }}/mozjpeg-cache / COPY --link --from=opus {{ LibrariesPath }}/opus-cache / COPY --link --from=libvpx {{ LibrariesPath }}/libvpx-cache / +COPY --link --from=libjxl {{ LibrariesPath }}/libjxl-cache / COPY --link --from=ffmpeg {{ LibrariesPath }}/ffmpeg-cache / COPY --link --from=openssl {{ LibrariesPath }}/openssl-cache / COPY --link --from=libXtst {{ LibrariesPath }}/libXtst-cache / @@ -805,7 +797,6 @@ COPY --link --from=protobuf {{ LibrariesPath }}/protobuf-cache / COPY --link --from=lcms2 {{ LibrariesPath }}/lcms2-cache / COPY --link --from=brotli {{ LibrariesPath }}/brotli-cache / COPY --link --from=highway {{ LibrariesPath }}/highway-cache / -COPY --link --from=mozjpeg {{ LibrariesPath }}/mozjpeg-cache / COPY --link --from=opus {{ LibrariesPath }}/opus-cache / COPY --link --from=dav1d {{ LibrariesPath }}/dav1d-cache / COPY --link --from=libde265 {{ LibrariesPath }}/libde265-cache / diff --git a/cmake b/cmake index 4ec493812..621b01ec9 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 4ec493812d25de1eccfedccc49a23c15d032b118 +Subproject commit 621b01ec9bd7f953223147daf59ab4c850cb3c40 diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 8a122ab95..af58384fb 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -131,6 +131,7 @@ parts: 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 @@ -153,12 +154,9 @@ parts: override-build: | craftctl default rm -rf "$CRAFT_PART_INSTALL/usr/share/icons" - stage: - - -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjpeg.so.8.2.2 after: - ffmpeg - libjxl - - mozjpeg - openal - protobuf - qt @@ -168,7 +166,7 @@ parts: patches: source: https://github.com/desktop-app/patches.git source-depth: 1 - source-commit: b8e22ca1511513024b22b5381153163ad3406a8c + source-commit: f81dfc6f7061d7f70c7e952cee9c1c2689f937a2 plugin: dump override-pull: | craftctl default @@ -209,8 +207,6 @@ parts: fi done GTK_PATH=$PWD/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gtk-3.0 /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libgtk-3-0/gtk-query-immodules-3.0 > usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gtk-3.0/3.0.0/immodules/immodules.cache - stage: - - -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjpeg.so.8.2.2 after: - telegram @@ -238,10 +234,6 @@ parts: 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" - stage: - - -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjpeg.so.8.2.2 - after: - - mozjpeg libjxl: source: https://github.com/libjxl/libjxl.git @@ -257,7 +249,7 @@ parts: - -DBUILD_TESTING=OFF - -DJPEGXL_ENABLE_DEVTOOLS=OFF - -DJPEGXL_ENABLE_TOOLS=OFF - - -DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF + - -DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON - -DJPEGXL_ENABLE_DOXYGEN=OFF - -DJPEGXL_ENABLE_MANPAGES=OFF - -DJPEGXL_ENABLE_BENCHMARK=OFF @@ -266,6 +258,9 @@ parts: - -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: @@ -275,27 +270,8 @@ parts: - -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.a - -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.so - -./usr/share - - mozjpeg: - source: https://github.com/mozilla/mozjpeg.git - source-depth: 1 - source-tag: v4.1.4 - plugin: cmake - build-environment: - - LDFLAGS: ${LDFLAGS:+$LDFLAGS} -s - 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_BUILD_FOR/pkgconfig - - -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/*.so - - -./usr/share + after: + - patches openal: source: https://github.com/kcat/openal-soft.git @@ -458,12 +434,12 @@ parts: -confirm-license \ -openssl-linked \ -nomake examples \ - -nomake tests + -nomake tests \ + -- \ + -DCMAKE_PREFIX_PATH=$CRAFT_STAGE/usr cmake --build . -j$CRAFT_PARALLEL_BUILD_COUNT DESTDIR="$CRAFT_PART_INSTALL" cmake --install . - stage: - - -./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjpeg.so.8.2.2 prime: - -./usr/bin - -./usr/doc @@ -479,7 +455,7 @@ parts: - -./usr/mkspecs - -./usr/modules after: - - mozjpeg + - libjxl - patches rnnoise: @@ -559,10 +535,11 @@ parts: 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 - - mozjpeg + - libjxl