From 2589011d84cf08501a0adb51288a5f40107af995 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Thu, 5 Dec 2024 08:58:24 +1100 Subject: [PATCH] Build rav1e --- .github/workflows/wheels-dependencies.sh | 56 ++++++++-------------- docs/installation/building-from-source.rst | 2 +- 2 files changed, 22 insertions(+), 36 deletions(-) diff --git a/.github/workflows/wheels-dependencies.sh b/.github/workflows/wheels-dependencies.sh index 3c104317c21..6a85a18a33d 100755 --- a/.github/workflows/wheels-dependencies.sh +++ b/.github/workflows/wheels-dependencies.sh @@ -97,49 +97,36 @@ function build_harfbuzz { touch harfbuzz-stamp } -function install_rav1e { - if [ -n "$IS_MACOS" ]; then - suffix="macos" - if [[ "$PLAT" == "arm64" ]]; then - suffix+="-aarch64" - fi - else - suffix="linux" - if [[ "$PLAT" == "aarch64" ]]; then - suffix+="-aarch64" - else - suffix+="-generic" - fi +function build_rav1e { + if [ -e rav1e-stamp ]; then return; fi + curl https://sh.rustup.rs -sSf | sh -s -- -y + . "$HOME/.cargo/env" + + if [ -n "$IS_ALPINE" ]; then + apk add openssl-dev + elif [ -z "$IS_MACOS" ]; then + yum install -y openssl-devel fi - curl -sLo - \ - https://github.com/xiph/rav1e/releases/download/v$RAV1E_VERSION/librav1e-$RAV1E_VERSION-$suffix.tar.gz \ - | tar -C $BUILD_PREFIX --exclude LICENSE --exclude '*.so' --exclude '*.dylib' -zxf - - - if [ -z "$IS_MACOS" ]; then - sed -i 's/-lgcc_s/-lgcc_eh/g' "${BUILD_PREFIX}/lib/pkgconfig/rav1e.pc" + local out_dir=$(fetch_unpack https://github.com/xiph/rav1e/archive/refs/tags/v$RAV1E_VERSION.tar.gz) + cargo install cargo-c + if [ -n "$IS_MACOS" ]; then + (cd $out_dir && sudo cargo cinstall --release) + else + (cd $out_dir && cargo cinstall --release) fi - - # Force libavif to treat system rav1e as if it were local - mkdir -p /tmp/cmake/Modules - cat < /tmp/cmake/Modules/Findrav1e.cmake - add_library(rav1e::rav1e STATIC IMPORTED GLOBAL) - set_target_properties(rav1e::rav1e PROPERTIES - IMPORTED_LOCATION "$BUILD_PREFIX/lib/librav1e.a" - AVIF_LOCAL ON - INTERFACE_INCLUDE_DIRECTORIES "$BUILD_PREFIX/include/rav1e" - ) -EOF + touch rav1e-stamp } function build_libavif { if [ -e libavif-stamp ]; then return; fi - install_rav1e - python3 -m pip install meson ninja if [[ "$PLAT" == "x86_64" ]]; then - build_simple nasm 2.16.03 https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/ + build_simple nasm 2.16.03 https://www.nasm.us/pub/nasm/releasebuilds/2.16.03 fi + build_rav1e + + python3 -m pip install meson ninja local out_dir=$(fetch_unpack https://github.com/AOMediaCodec/libavif/archive/refs/tags/v$LIBAVIF_VERSION.tar.gz libavif-$LIBAVIF_VERSION.tar.gz) (cd $out_dir \ @@ -150,12 +137,11 @@ function build_libavif { -DBUILD_SHARED_LIBS=OFF \ -DAVIF_LIBSHARPYUV=LOCAL \ -DAVIF_LIBYUV=LOCAL \ - -DAVIF_CODEC_RAV1E=SYSTEM \ + -DAVIF_CODEC_RAV1E=LOCAL \ -DAVIF_CODEC_AOM=LOCAL \ -DAVIF_CODEC_DAV1D=LOCAL \ -DAVIF_CODEC_SVT=LOCAL \ -DENABLE_NASM=ON \ - -DCMAKE_MODULE_PATH=/tmp/cmake/Modules \ . \ && make install) touch libavif-stamp diff --git a/docs/installation/building-from-source.rst b/docs/installation/building-from-source.rst index 1447b049e3d..37b7d1e9d28 100644 --- a/docs/installation/building-from-source.rst +++ b/docs/installation/building-from-source.rst @@ -226,7 +226,7 @@ Many of Pillow's features require external libraries: sudo pkg install jpeg-turbo tiff webp lcms2 freetype2 openjpeg harfbuzz fribidi libxcb libavif - See ``depends/install_raqm_cmake.sh`` to install libraqm. + Then see ``depends/install_raqm_cmake.sh`` to install libraqm. .. tab:: Android