diff options
Diffstat (limited to 'media-libs/libheif')
-rw-r--r-- | media-libs/libheif/files/libheif-1.12.0-dav1d-1.0.0.patch | 45 | ||||
-rw-r--r-- | media-libs/libheif/files/libheif-1.12.0-fix-bashism.patch | 37 | ||||
-rw-r--r-- | media-libs/libheif/libheif-1.12.0-r2.ebuild | 78 | ||||
-rw-r--r-- | media-libs/libheif/libheif-1.12.0-r3.ebuild | 89 | ||||
-rw-r--r-- | media-libs/libheif/libheif-9999.ebuild | 25 |
5 files changed, 269 insertions, 5 deletions
diff --git a/media-libs/libheif/files/libheif-1.12.0-dav1d-1.0.0.patch b/media-libs/libheif/files/libheif-1.12.0-dav1d-1.0.0.patch new file mode 100644 index 00000000000..d8eb0a54016 --- /dev/null +++ b/media-libs/libheif/files/libheif-1.12.0-dav1d-1.0.0.patch @@ -0,0 +1,45 @@ +https://bugs.gentoo.org/836205 +https://github.com/strukturag/libheif/commit/0f8496f22d284e1a69df12fe0b72f375aed31315 + +From 0f8496f22d284e1a69df12fe0b72f375aed31315 Mon Sep 17 00:00:00 2001 +From: Dirk Farin <dirk.farin@gmail.com> +Date: Tue, 5 Apr 2022 12:17:59 +0200 +Subject: [PATCH] fix dav1d decoding: input stream must be flushed with dav1d + 1.0.0 + +--- + libheif/heif_decoder_dav1d.cc | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/libheif/heif_decoder_dav1d.cc b/libheif/heif_decoder_dav1d.cc +index a6c42e4f..ecf7382e 100644 +--- a/libheif/heif_decoder_dav1d.cc ++++ b/libheif/heif_decoder_dav1d.cc +@@ -163,7 +163,10 @@ struct heif_error dav1d_decode_image(void* decoder_raw, struct heif_image** out_ + Dav1dPicture frame; + memset(&frame, 0, sizeof(Dav1dPicture)); + ++ bool flushed = false; ++ + for (;;) { ++ + int res = dav1d_send_data(decoder->context, &decoder->data); + if ((res < 0) && (res != DAV1D_ERR(EAGAIN))) { + err = {heif_error_Decoder_plugin_error, +@@ -173,11 +176,11 @@ struct heif_error dav1d_decode_image(void* decoder_raw, struct heif_image** out_ + } + + res = dav1d_get_picture(decoder->context, &frame); +- if (res == DAV1D_ERR(EAGAIN)) { +- err = {heif_error_Decoder_plugin_error, +- heif_suberror_Unspecified, +- kEmptyString}; +- return err; ++ if (!flushed && res == DAV1D_ERR(EAGAIN)) { ++ if (decoder->data.sz == 0) { ++ flushed = true; ++ } ++ continue; + } + else if (res < 0) { + err = {heif_error_Decoder_plugin_error, diff --git a/media-libs/libheif/files/libheif-1.12.0-fix-bashism.patch b/media-libs/libheif/files/libheif-1.12.0-fix-bashism.patch new file mode 100644 index 00000000000..3d4d1249505 --- /dev/null +++ b/media-libs/libheif/files/libheif-1.12.0-fix-bashism.patch @@ -0,0 +1,37 @@ +https://github.com/strukturag/libheif/pull/660 + +From a50ef159794ff66fc0a03d5269b1c36a000673ea Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Tue, 16 Aug 2022 02:23:13 +0100 +Subject: [PATCH] configure.ac: fix bashism + +configure scripts need to be runnable with a POSIX-compliant /bin/sh. + +On many (but not all!) systems, /bin/sh is provided by Bash, so errors +like this aren't spotted. Notably Debian defaults to /bin/sh provided +by dash which doesn't tolerate such bashisms as '=='. + +This retains compatibility with bash. + +Fixes errors/warnings like: +``` +checking for pthread_create in -lpthread... yes +checking for simple visibility declarations... yes +/var/tmp/portage/media-libs/libheif-1.12.0-r2/work/libheif-1.12.0/configure: 18821: test: x: unexpected operator +checking pkg-config is at least version 0.9.0... yes +checking for aom... yes +``` + +Signed-off-by: Sam James <sam@gentoo.org> +--- a/configure.ac ++++ b/configure.ac +@@ -85,7 +85,7 @@ AS_IF([test "x$enable_tests" = "xyes"], [ + HAVE_VISIBILITY=0 + CFLAG_VISIBILITY= + ]) +-AM_CONDITIONAL([HAVE_TESTS], [test "x$HAVE_TESTS" == "x1"]) ++AM_CONDITIONAL([HAVE_TESTS], [test "x$HAVE_TESTS" = "x1"]) + + AM_CONDITIONAL([HAVE_VISIBILITY], [test "x$HAVE_VISIBILITY" != "x0"]) + if eval "test x$enable_visibility = x" ; then enable_visibility=yes ; fi + diff --git a/media-libs/libheif/libheif-1.12.0-r2.ebuild b/media-libs/libheif/libheif-1.12.0-r2.ebuild new file mode 100644 index 00000000000..0b5dfbc4051 --- /dev/null +++ b/media-libs/libheif/libheif-1.12.0-r2.ebuild @@ -0,0 +1,78 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools xdg multilib-minimal + +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 + +DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder" +HOMEPAGE="https://github.com/strukturag/libheif" + +LICENSE="GPL-3" +SLOT="0/1.12" +IUSE="+aom gdk-pixbuf go rav1e test +threads x265" +REQUIRED_USE="test? ( go )" +RESTRICT="!test? ( test )" + +BDEPEND="test? ( dev-lang/go )" +DEPEND=" + media-libs/dav1d:=[${MULTILIB_USEDEP}] + media-libs/libde265:=[${MULTILIB_USEDEP}] + media-libs/libpng:0=[${MULTILIB_USEDEP}] + sys-libs/zlib:=[${MULTILIB_USEDEP}] + media-libs/libjpeg-turbo:0=[${MULTILIB_USEDEP}] + aom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] ) + gdk-pixbuf? ( x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}] ) + go? ( dev-lang/go ) + rav1e? ( media-video/rav1e:= ) + x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )" +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}"/${P}-dav1d-1.0.0.patch +) + +src_prepare() { + default + + sed -i -e 's:-Werror::' configure.ac || die + + eautoreconf + + # prevent "stat heif-test.go: no such file or directory" + multilib_copy_sources +} + +multilib_src_configure() { + export GO111MODULE=auto + local econf_args=( + --enable-libde265 + --disable-static + $(multilib_is_native_abi && use go || echo --disable-go) + $(use_enable aom) + $(use_enable gdk-pixbuf) + $(use_enable rav1e) + $(use_enable threads multithreading) + $(use_enable test tests) + $(use_enable x265) + ) + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_test() { + default + emake -C go test +} + +multilib_src_install_all() { + einstalldocs + find "${ED}" -name '*.la' -delete || die +} diff --git a/media-libs/libheif/libheif-1.12.0-r3.ebuild b/media-libs/libheif/libheif-1.12.0-r3.ebuild new file mode 100644 index 00000000000..f6505de170a --- /dev/null +++ b/media-libs/libheif/libheif-1.12.0-r3.ebuild @@ -0,0 +1,89 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools xdg multilib-minimal + +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 + +DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder" +HOMEPAGE="https://github.com/strukturag/libheif" + +LICENSE="GPL-3" +SLOT="0/1.12" +IUSE="+aom gdk-pixbuf go rav1e test +threads x265" +REQUIRED_USE="test? ( go )" +RESTRICT="!test? ( test )" + +BDEPEND=" + test? ( + <dev-cpp/catch-3 + dev-lang/go + ) +" +DEPEND=" + media-libs/dav1d:=[${MULTILIB_USEDEP}] + media-libs/libde265:=[${MULTILIB_USEDEP}] + media-libs/libpng:0=[${MULTILIB_USEDEP}] + sys-libs/zlib:=[${MULTILIB_USEDEP}] + media-libs/libjpeg-turbo:0=[${MULTILIB_USEDEP}] + aom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] ) + gdk-pixbuf? ( x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}] ) + go? ( dev-lang/go ) + rav1e? ( media-video/rav1e:= ) + x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )" +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}"/${P}-dav1d-1.0.0.patch + "${FILESDIR}"/${PN}-1.12.0-fix-bashism.patch +) + +src_prepare() { + default + + sed -i -e 's:-Werror::' configure.ac || die + + if use test ; then + rm tests/catch.hpp || die + ln -s "${ESYSROOT}"/usr/include/catch2/catch.hpp tests/catch.hpp || die + fi + + eautoreconf + + # prevent "stat heif-test.go: no such file or directory" + multilib_copy_sources +} + +multilib_src_configure() { + export GO111MODULE=auto + local econf_args=( + --enable-libde265 + --disable-static + $(multilib_is_native_abi && use go || echo --disable-go) + $(use_enable aom) + $(use_enable gdk-pixbuf) + $(use_enable rav1e) + $(use_enable threads multithreading) + $(use_enable test tests) + $(use_enable x265) + ) + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_test() { + default + emake -C go test +} + +multilib_src_install_all() { + einstalldocs + find "${ED}" -name '*.la' -delete || die +} diff --git a/media-libs/libheif/libheif-9999.ebuild b/media-libs/libheif/libheif-9999.ebuild index a1837ad0964..457096c4b4e 100644 --- a/media-libs/libheif/libheif-9999.ebuild +++ b/media-libs/libheif/libheif-9999.ebuild @@ -1,7 +1,7 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 inherit autotools xdg multilib-minimal @@ -10,7 +10,7 @@ if [[ ${PV} == *9999 ]] ; then inherit git-r3 else SRC_URI="https://github.com/strukturag/libheif/releases/download/v${PV}/${P}.tar.gz" - KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86" fi DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder" @@ -22,13 +22,18 @@ IUSE="+aom gdk-pixbuf go rav1e test +threads x265" REQUIRED_USE="test? ( go )" RESTRICT="!test? ( test )" -BDEPEND="test? ( dev-lang/go )" +BDEPEND=" + test? ( + <dev-cpp/catch-3 + dev-lang/go + ) +" DEPEND=" media-libs/dav1d:=[${MULTILIB_USEDEP}] media-libs/libde265:=[${MULTILIB_USEDEP}] media-libs/libpng:0=[${MULTILIB_USEDEP}] sys-libs/zlib:=[${MULTILIB_USEDEP}] - virtual/jpeg:0=[${MULTILIB_USEDEP}] + media-libs/libjpeg-turbo:0=[${MULTILIB_USEDEP}] aom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] ) gdk-pixbuf? ( x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}] ) go? ( dev-lang/go ) @@ -36,11 +41,20 @@ DEPEND=" x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )" RDEPEND="${DEPEND}" +PATCHES=( + "${FILESDIR}"/${PN}-1.12.0-fix-bashism.patch +) + src_prepare() { default sed -i -e 's:-Werror::' configure.ac || die + if use test ; then + rm tests/catch.hpp || die + ln -s "${ESYSROOT}"/usr/include/catch2/catch.hpp tests/catch.hpp || die + fi + eautoreconf # prevent "stat heif-test.go: no such file or directory" @@ -57,6 +71,7 @@ multilib_src_configure() { $(use_enable gdk-pixbuf) $(use_enable rav1e) $(use_enable threads multithreading) + $(use_enable test tests) $(use_enable x265) ) ECONF_SOURCE="${S}" econf "${econf_args[@]}" |