commit:     f5d009bc761285494e6d69340a9b3bfb4faf355b
Author:     Hanno Böck <hanno <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 26 10:13:27 2025 +0000
Commit:     Hanno Böck <hanno <AT> gentoo <DOT> org>
CommitDate: Sun Oct 26 10:14:09 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f5d009bc

media-libs/libheif: add 1.20.2

Include patch to fix undefined symbol (already in upstream
git, but not yet part of a release).

Closes: https://bugs.gentoo.org/960789
Signed-off-by: Hanno Böck <hanno <AT> gentoo.org>

 media-libs/libheif/Manifest                     |   1 +
 media-libs/libheif/files/libheif-undefined.diff |  13 +++
 media-libs/libheif/libheif-1.20.2.ebuild        | 125 ++++++++++++++++++++++++
 3 files changed, 139 insertions(+)

diff --git a/media-libs/libheif/Manifest b/media-libs/libheif/Manifest
index 0222377015d6..306f0746f267 100644
--- a/media-libs/libheif/Manifest
+++ b/media-libs/libheif/Manifest
@@ -1,2 +1,3 @@
 DIST libheif-1.19.8.tar.gz 1718218 BLAKE2B 
048fe46fc6d4a889ff80da51b6768b505d265a11b2363ecc9d908438dfd8613d0e460737a36a30e5fd84c6e91c70f22f86778cb5f04ab1f6a8b9eae54c027ab0
 SHA512 
ccb7359c2a7632fd598bb82d238482652fec58c8cebfecd3c2fef07d814d6e623d7916db18eeb47887f1c32bbdbb80680533643b7610880844e1dee3e128cade
 DIST libheif-1.20.1.tar.gz 1787033 BLAKE2B 
11f312d9b4222a8f07e0953d3f828a7b324d4fb3359d7a33f0ef7f2507cbd9ca06c5d433cf3271934bcf748f5e9a5c9c008b4373e82b21e264fc817190a32fb9
 SHA512 
360a02e71bd1693c42e110ebf77e8da576775517c8c0250c02bbfd8fd0ceb6b56d3d7cec76eddf8dfc572687c308cfb756e4c3519d31572d25c0a7557d3de415
+DIST libheif-1.20.2.tar.gz 1787518 BLAKE2B 
8bf39d9a1cd545c5bf30c502909811bcf93370e471ee21b02595fef969690096def2db964d8963d9e820532eb7d2603aa4da86207707a2ca1abe005c328f2e5e
 SHA512 
0ab8669d2ee1ed619c89cbe3fa3a7618c25d26a7e4c65801dd4db163d4a584fde13b32ed0996461e81bd42ed4def8f4eb7b296b15b7819e90c0a7d5a8c08b06b

diff --git a/media-libs/libheif/files/libheif-undefined.diff 
b/media-libs/libheif/files/libheif-undefined.diff
new file mode 100644
index 000000000000..043879dc74c1
--- /dev/null
+++ b/media-libs/libheif/files/libheif-undefined.diff
@@ -0,0 +1,13 @@
+diff --git a/libheif/plugins/CMakeLists.txt b/libheif/plugins/CMakeLists.txt
+index f7379c09da..643f413a1c 100644
+--- a/libheif/plugins/CMakeLists.txt
++++ b/libheif/plugins/CMakeLists.txt
+@@ -66,7 +66,7 @@ set(AOM_ENCODER_extra_plugin_sources ../error.cc 
../common_utils.cc ../common_ut
+ plugin_compilation(aomenc AOM AOM_ENCODER_FOUND AOM_ENCODER AOM_ENCODER)
+ 
+ set(SvtEnc_sources encoder_svt.cc encoder_svt.h)
+-set(SvtEnc_extra_plugin_sources ../common_utils.cc ../common_utils.h)
++set(SvtEnc_extra_plugin_sources ../error.cc ../common_utils.cc 
../common_utils.h)
+ plugin_compilation(svtenc SvtEnc SvtEnc_FOUND SvtEnc SvtEnc)
+ 
+ set(RAV1E_sources encoder_rav1e.cc encoder_rav1e.h)

diff --git a/media-libs/libheif/libheif-1.20.2.ebuild 
b/media-libs/libheif/libheif-1.20.2.ebuild
new file mode 100644
index 000000000000..615ff02fa33c
--- /dev/null
+++ b/media-libs/libheif/libheif-1.20.2.ebuild
@@ -0,0 +1,125 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake-multilib gnome2-utils xdg
+
+# From 
https://github.com/strukturag/libheif/commit/6c3fb973c5d9f954899839f6f4aaa6a173cab098
+PATCHES="${FILESDIR}/libheif-undefined.diff"
+
+DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder"
+HOMEPAGE="https://github.com/strukturag/libheif";
+
+if [[ ${PV} == *9999* ]] ; then
+       EGIT_REPO_URI="https://github.com/strukturag/libheif.git";
+       inherit git-r3
+else
+       
SRC_URI="https://github.com/strukturag/libheif/releases/download/v${PV}/${P}.tar.gz";
+       KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+fi
+
+LICENSE="GPL-3 MIT"
+SLOT="0/$(ver_cut 1-2)"
+IUSE="+aom dav1d +de265 doc ffmpeg gdk-pixbuf gui +jpeg +jpeg2k +kvazaar 
openh264 rav1e svt-av1 test test-full +threads tools +webp x265"
+# IUSE+=" vvdec vvenc"
+REQUIRED_USE="test-full? ( test )"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+       doc? ( app-text/doxygen )
+"
+DEPEND="
+       media-libs/libpng:=[${MULTILIB_USEDEP}]
+       media-libs/tiff:=[${MULTILIB_USEDEP}]
+       sys-libs/zlib:=[${MULTILIB_USEDEP}]
+       aom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] )
+       dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+       de265? ( media-libs/libde265[${MULTILIB_USEDEP}] )
+       ffmpeg? ( media-video/ffmpeg:=[${MULTILIB_USEDEP}] )
+       gdk-pixbuf? ( x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}] )
+       jpeg? ( media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}] )
+       jpeg2k? ( media-libs/openjpeg:=[${MULTILIB_USEDEP}] )
+       kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+       openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+       rav1e? ( media-video/rav1e:= )
+       svt-av1? ( media-libs/svt-av1:=[${MULTILIB_USEDEP}] )
+       tools? (
+               gui? (
+                       media-libs/libsdl2:=[${MULTILIB_USEDEP}]
+               )
+       )
+       webp? ( media-libs/libwebp:= )
+       x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+"
+#      vvdec? ( >=media-libs/vvdec-2.3.0:=::guru[${MULTILIB_USEDEP}] )
+#      vvenc? ( media-libs/vvenc:=::guru[${MULTILIB_USEDEP}] )
+RDEPEND="${DEPEND}"
+
+MULTILIB_WRAPPED_HEADERS=(
+       /usr/include/libheif/heif_version.h
+)
+
+pkg_pretend() {
+       if use gui && use !tools ; then
+               ewarn "Building heif-view requires USE=\"gui tools\"."
+       fi
+}
+
+multilib_src_configure() {
+       local mycmakeargs=(
+               $(cmake_use_find_package doc Doxygen)
+               -DBUILD_TESTING=$(usex test)
+               -DENABLE_PLUGIN_LOADING=true
+               -DWITH_LIBDE265=$(usex de265)
+               -DWITH_AOM_DECODER=$(usex aom)
+               -DWITH_AOM_ENCODER=$(usex aom)
+               -DWITH_DAV1D=$(usex dav1d)
+               -DWITH_EXAMPLES=$(usex tools) # the examples are tools
+               -DWITH_FFMPEG_DECODER=$(usex ffmpeg)
+               -DWITH_GDK_PIXBUF=$(usex gdk-pixbuf)
+               -DWITH_OpenH264_DECODER=$(usex openh264)
+               -DWITH_OpenH264_ENCODER=$(usex openh264)
+               -DWITH_RAV1E=$(multilib_native_usex rav1e)
+               -DWITH_SvtEnc=$(usex svt-av1)
+               -DWITH_LIBSHARPYUV=$(usex webp)
+               # -DWITH_VVDEC=$(usex vvdec) # vvdec not yet packaged, in ::guru
+               # -DWITH_VVENC=$(usex vvenc) # vvenc not yet packaged, in ::guru
+               -DWITH_X265=$(usex x265)
+               -DWITH_KVAZAAR=$(usex kvazaar)
+               -DWITH_JPEG_DECODER=$(usex jpeg)
+               -DWITH_JPEG_ENCODER=$(usex jpeg)
+               -DWITH_OpenJPEG_DECODER=$(usex jpeg2k)
+               -DWITH_OpenJPEG_ENCODER=$(usex jpeg2k)
+       )
+
+       # Allow tests that rely on options not normally enabled
+       # 
https://github.com/strukturag/libheif/blob/v1.20.1/tests/CMakeLists.txt#L36-L46
+       # 
https://github.com/strukturag/libheif/blob/v1.20.1/tests/CMakeLists.txt#L82-L101
+       if use test && use test-full; then
+               mycmakeargs+=(
+                       -DENABLE_EXPERIMENTAL_FEATURES=ON
+                       -DWITH_REDUCED_VISIBILITY=OFF
+                       -DWITH_UNCOMPRESSED_CODEC=ON
+               )
+       fi
+
+       # TODO WITH_EXAMPLE_HEIF_VIEW in -9999
+       if use tools && ! use gui; then
+               mycmakeargs+=(
+                       -DCMAKE_DISABLE_FIND_PACKAGE_SDL2=ON
+               )
+       fi
+
+       cmake_src_configure
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+       use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
+}
+
+pkg_postrm() {
+       xdg_pkg_postrm
+       use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
+}

Reply via email to