mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-08 00:05:33 +03:00
media-libs/openimageio: add 3.1.7.0 3.0.11.0 2.5.19.1, update 9999
Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com> Part-of: https://github.com/gentoo/gentoo/pull/44694 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
parent
28500f368e
commit
bd97774574
@ -6,6 +6,8 @@ DIST file009.fits 25920 BLAKE2B 594061eba4d48da8cbfee58ab592a0adb5a22d681228330e
|
||||
DIST file012.fits 1019520 BLAKE2B e86d9e0004ca159d9a5ae0585776db65c7dd49162cb5dbd8b511686244950e33746d8a41f60b5ba8fcea220194fa87e16235adb7ccc0b4fb4b0a61e6c5c376a8 SHA512 45439544da478b24ccbcf14dc9a651aa8ecbce29b9992204d85c1eee42bc88b68802ec57bc148510da1e062de95ee53dd5c64c9bfa2e0b6cdfd945a78d1fc76a
|
||||
DIST openimageio-2.5.18.0.tar.gz 52549475 BLAKE2B 8a3f61f6089b304202e829a28946ec8c0bc84e05e61b84dd39f1e036614faab005619962c0217248208e133595f55fa8ffea1d931710a88eff8208b8c36fa2ae SHA512 ab6ef20fe099c19ec8cce1308890e76ec82c4bcdc1d5a2ead8c44f04593c060e819fededb958b7f36ccd0118b1aae9b1c5e12b442f7e066e940b4e32d378f7d9
|
||||
DIST openimageio-2.5.19.0.tar.gz 52549345 BLAKE2B 6c209f0213ce92c7e9f2f27eea1086ef3ce1ec1e722ab3b31a8488816ae55d4716fe0adbdda25f60150b331f4bbbbc3390bf9e4051ae2224b2d253a728ba935b SHA512 94cac306661f15236656a8cd114d8524ed94aeea91847d61bed8ae8096821e008b4f891c17c542dddb917ec7c1e57945cde7f7bb193c49f306da481cfbac5a22
|
||||
DIST openimageio-2.5.19.1.tar.gz 52556593 BLAKE2B c97c08fde4a0335c553e451231d320ac2b241d56cf5c70e6e86c18c40c8208d98904553d6511a597457598938d45ea2d2cf717d18a6cc43fcd121044642c920b SHA512 9599faa766be603c6c373e8d29c589f4f19976e51fb70bc7823920247302fff47a075be39c3ef4d9ef9bbaa4e0eaf7337f4820adfdd30e3290b1512e4c82566b
|
||||
DIST openimageio-3.0.11.0.tar.gz 53484474 BLAKE2B f749d5306a948eff4a4dab74f5bd643ce33ca24584aa8a4ea0adb0c4eb6ff7904135690756970be57026a5107865d9a10bfcdb633dc71db39c4bda68d6a2ad85 SHA512 172a1d174b30bd4514b14f04424987d5b184d2c157c1a2e77ec7bd513ca14aa01254187ae88ad5f22084ffae494d2ff1ed9dbcdefbcb095d3f0a9194fd4b4dbd
|
||||
DIST openimageio-3.0.6.1.tar.gz 52703969 BLAKE2B 20a905b092df63727f52cb2e1bc78743a615905bdbb964d358a04183c2e30b1f3a0287c4df6d6d2c72ca4608963fa5c1717c8249062c620bf9bbbcd61838bd18 SHA512 6ae915dea0113d6c577cfd6b374ab7eb534bf7703e802bdcb0315b8a91711a2b726da420c00ba89fc90fa9e2f695c42d6b3b34b09d4384d45e439ef7d9927f80
|
||||
DIST openimageio-3.0.8.1.tar.gz 53129890 BLAKE2B e270e3996900ab2f43904555f59b2f5a51858efd3b8f2b29a22450feb78da9d450ddb2d41c362d709c793b07125a745c59dbde8d0c7c6e540cc61459f57d157e SHA512 f99511c5815b3dd510dcddbf828f32e92c05d433880442e621e9d87ace6d68ed6230132fef9377a8e706ddd44824963b65b6294b7e389bacb2628a256b61bd0e
|
||||
DIST openimageio-3.1.7.0.tar.gz 53595984 BLAKE2B f2e61584e04118fc5c576bd069d0acc3c90ba76a7948c410d45e4b3e4c2efbe21efc4fbc053553c8a32b32d19b20a2053b2507b1ce76eb9b5c1ce67ab3195ef7 SHA512 404e60ad2f3d0d5b76aff7cbc2428833be4de6d182735f1826cc3640c73a268db097fd03d3105f51e7bb0d386e8fdbb880fc7fd7b67028972e79b0fc58d37f4c
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
From: Paul Zander <negril.nx+gentoo@gmail.com>
|
||||
Make fits test images download optional
|
||||
Make j2k test images download optional
|
||||
|
||||
diff --git a/src/cmake/testing.cmake b/src/cmake/testing.cmake
|
||||
index b671def..ff84b7d 100644
|
||||
--- a/src/cmake/testing.cmake
|
||||
+++ b/src/cmake/testing.cmake
|
||||
@@ -410,6 +410,10 @@ function (oiio_setup_test_data)
|
||||
oiio_get_test_data (openexr-images
|
||||
REPO https://github.com/AcademySoftwareFoundation/openexr-images.git
|
||||
BRANCH main)
|
||||
+ if(ENABLE_FITS)
|
||||
oiio_get_test_data (fits-images)
|
||||
+ endif()
|
||||
+ if(ENABLE_OPENJPEG)
|
||||
oiio_get_test_data (j2kp4files_v1_5)
|
||||
+ endif()
|
||||
endfunction ()
|
||||
@ -1,36 +0,0 @@
|
||||
From: Paul Zander <negril.nx+gentoo@gmail.com>
|
||||
|
||||
Make fits test images download optional
|
||||
Make j2k test images download optional
|
||||
|
||||
Adapted for OpenImageIO 3.1.7.0.
|
||||
|
||||
diff -urw a b
|
||||
--- a/src/cmake/testing.cmake
|
||||
+++ b/src/cmake/testing.cmake
|
||||
@@ -276,12 +276,14 @@
|
||||
IMAGEDIR oiio-images URL "Recent checkout of OpenImageIO-images")
|
||||
oiio_add_tests (jpeg2000
|
||||
FOUNDVAR OPENJPEG_FOUND
|
||||
+ ENABLEVAR ENABLE_OPENJPEG
|
||||
IMAGEDIR oiio-images URL "Recent checkout of OpenImageIO-images")
|
||||
oiio_add_tests (htj2k
|
||||
FOUNDVAR openjph_FOUND
|
||||
IMAGEDIR oiio-images URL "Recent checkout of OpenImageIO-images")
|
||||
oiio_add_tests (jpeg2000-j2kp4files
|
||||
FOUNDVAR OPENJPEG_FOUND
|
||||
+ ENABLEVAR ENABLE_OPENJPEG
|
||||
IMAGEDIR j2kp4files_v1_5
|
||||
URL http://www.itu.int/net/ITU-T/sigdb/speimage/ImageForm-s.aspx?val=10100803)
|
||||
set (all_openexr_tests
|
||||
@@ -432,6 +434,10 @@
|
||||
oiio_get_test_data (openexr-images
|
||||
REPO https://github.com/AcademySoftwareFoundation/openexr-images.git
|
||||
BRANCH main)
|
||||
+ if(ENABLE_FITS)
|
||||
oiio_get_test_data (fits-images)
|
||||
+ endif()
|
||||
+ if(ENABLE_OPENJPEG)
|
||||
oiio_get_test_data (j2kp4files_v1_5)
|
||||
+ endif()
|
||||
endfunction ()
|
||||
@ -1,13 +0,0 @@
|
||||
Fix wrong webpmux library name
|
||||
|
||||
--- a/src/webp.imageio/CMakeLists.txt 2025-11-17 13:37:13.795979999 +0300
|
||||
+++ b/src/webp.imageio/CMakeLists.txt 2025-11-17 13:37:33.095764587 +0300
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
if (WebP_FOUND)
|
||||
add_oiio_plugin (webpinput.cpp webpoutput.cpp
|
||||
- LINK_LIBRARIES WebP::webp WebP::webpdemux WebP::libwebpmux
|
||||
+ LINK_LIBRARIES WebP::webp WebP::webpdemux WebP::webpmux
|
||||
DEFINITIONS "USE_WEBP=1")
|
||||
else ()
|
||||
message (STATUS "WebP plugin will not be built")
|
||||
310
media-libs/openimageio/openimageio-2.5.19.1.ebuild
Normal file
310
media-libs/openimageio/openimageio-2.5.19.1.ebuild
Normal file
@ -0,0 +1,310 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
|
||||
TEST_OIIO_IMAGE_COMMIT="7e6d875542b5bc1b2974b7cbecee115365a36527"
|
||||
TEST_OEXR_IMAGE_COMMIT="d45a2d5a890d6963b94479c7a644440068c37dd2"
|
||||
inherit cmake flag-o-matic python-single-r1 virtualx
|
||||
|
||||
DESCRIPTION="A library for reading and writing images"
|
||||
HOMEPAGE="https://sites.google.com/site/openimageio/ https://github.com/OpenImageIO"
|
||||
SRC_URI="
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/v${PV}.tar.gz -> ${P}.tar.gz
|
||||
test? (
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO-images/archive/${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oiio-test-image-${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
https://github.com/AcademySoftwareFoundation/openexr-images/archive/${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oexr-test-image-${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
jpeg2k? ( https://www.itu.int/wftp3/Public/t/testsignal/SpeImage/T803/v2002_11/J2KP4files.zip )
|
||||
|
||||
fits? (
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file002.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file009.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file012.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0005.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0006.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0007.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0008.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0013.fits
|
||||
)
|
||||
)
|
||||
"
|
||||
S="${WORKDIR}/OpenImageIO-${PV}"
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0/$(ver_cut 1-2)"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv"
|
||||
|
||||
X86_CPU_FEATURES=(
|
||||
aes:aes sse2:sse2 sse3:sse3 ssse3:ssse3 sse4_1:sse4.1 sse4_2:sse4.2
|
||||
avx:avx avx2:avx2 avx512f:avx512f f16c:f16c
|
||||
)
|
||||
CPU_FEATURES=( "${X86_CPU_FEATURES[@]/#/cpu_flags_x86_}" )
|
||||
|
||||
IUSE="dicom doc ffmpeg fits gif gui jpeg2k opencv openvdb ptex python raw test +tools +truetype ${CPU_FEATURES[*]%:*}"
|
||||
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) gui? ( tools ) test? ( tools truetype )"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="
|
||||
jpeg2k? ( app-arch/unzip )
|
||||
doc? (
|
||||
app-text/doxygen
|
||||
dev-texlive/texlive-bibtexextra
|
||||
dev-texlive/texlive-fontsextra
|
||||
dev-texlive/texlive-fontutils
|
||||
dev-texlive/texlive-latex
|
||||
dev-texlive/texlive-latexextra
|
||||
)
|
||||
"
|
||||
RDEPEND="
|
||||
dev-libs/boost:=
|
||||
dev-cpp/robin-map
|
||||
dev-libs/libfmt:=
|
||||
dev-libs/pugixml:=
|
||||
>=media-libs/libheif-1.13.0:=
|
||||
media-libs/libjpeg-turbo:=
|
||||
media-libs/libpng:0=
|
||||
>=media-libs/libwebp-0.2.1:=
|
||||
>=dev-libs/imath-3.1.2-r4:=
|
||||
>=media-libs/opencolorio-2.1.1-r4:=
|
||||
>=media-libs/openexr-3:0=
|
||||
media-libs/tiff:=
|
||||
virtual/zlib:=
|
||||
dicom? ( sci-libs/dcmtk )
|
||||
ffmpeg? ( media-video/ffmpeg:= )
|
||||
fits? ( sci-libs/cfitsio:= )
|
||||
gif? ( media-libs/giflib:0= )
|
||||
jpeg2k? ( >=media-libs/openjpeg-2.0:2= )
|
||||
opencv? ( media-libs/opencv:= )
|
||||
openvdb? (
|
||||
dev-cpp/tbb:=
|
||||
media-gfx/openvdb:=
|
||||
)
|
||||
ptex? ( media-libs/ptex:= )
|
||||
python? (
|
||||
${PYTHON_DEPS}
|
||||
$(python_gen_cond_dep '
|
||||
dev-libs/boost:=[python,${PYTHON_USEDEP}]
|
||||
dev-python/numpy[${PYTHON_USEDEP}]
|
||||
dev-python/pybind11[${PYTHON_USEDEP}]
|
||||
')
|
||||
)
|
||||
gui? (
|
||||
media-libs/libglvnd
|
||||
dev-qt/qtbase:6[gui,widgets,opengl]
|
||||
)
|
||||
raw? ( media-libs/libraw:= )
|
||||
truetype? ( media-libs/freetype:2= )
|
||||
"
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
"
|
||||
|
||||
DOCS=(
|
||||
CHANGES.md
|
||||
CREDITS.md
|
||||
README.md
|
||||
)
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-2.5.8.0-fix-tests.patch"
|
||||
"${FILESDIR}/${PN}-2.5.12.0-heif-find-fix.patch"
|
||||
"${FILESDIR}/${PN}-2.5.18.0-tests-optional.patch"
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
use python && python-single-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# IO plugin directories are globbed and included, so we just remove the ones we don't want
|
||||
if ! use dicom; then
|
||||
rm -r "src/dicom.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use gif; then
|
||||
rm -r "src/gif.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use jpeg2k; then
|
||||
rm -r "src/jpeg2000.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use jpegxl; then
|
||||
rm -r "src/jpegxl.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use raw; then
|
||||
rm -r "src/raw.imageio" || die
|
||||
fi
|
||||
|
||||
cmake_src_prepare
|
||||
cmake_comment_add_subdirectory src/fonts
|
||||
|
||||
if use test ; then
|
||||
ln -s "${WORKDIR}/OpenImageIO-images-${TEST_OIIO_IMAGE_COMMIT}" "${WORKDIR}/oiio-images" || die
|
||||
ln -s "${WORKDIR}/openexr-images-${TEST_OEXR_IMAGE_COMMIT}" "${WORKDIR}/openexr-images" || die
|
||||
|
||||
if use fits; then
|
||||
mkdir -p "${WORKDIR}/fits-images/"{ftt4b,pg93} || die
|
||||
for a in ${A}; do
|
||||
if [[ "${a}" == file*.fits ]]; then
|
||||
ln -s "${DISTDIR}/${a}" "${WORKDIR}/fits-images/ftt4b/" || die
|
||||
fi
|
||||
if [[ "${a}" == tst*.fits ]]; then
|
||||
ln -s "${DISTDIR}/${a}" "${WORKDIR}/fits-images/pg93/" || die
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if use jpeg2k; then
|
||||
ln -s "${WORKDIR}/J2KP4files" "${WORKDIR}/j2kp4files_v1_5" || die
|
||||
fi
|
||||
|
||||
cp testsuite/heif/ref/out-libheif1.1{2,5}-orient.txt || die
|
||||
eapply "${FILESDIR}/${PN}-2.5.12.0_heif_test.patch"
|
||||
|
||||
sed \
|
||||
-e "s/BBAA06ABCADF65F9323FDA979421A54F5B2E53D0/A5C53C7628B01F12DCAE09A42D8B15433644C54C/g" \
|
||||
-i testsuite/tiff-depths/ref/out-*.txt || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Build with SIMD support
|
||||
local cpufeature
|
||||
local mysimd=()
|
||||
for cpufeature in "${CPU_FEATURES[@]}"; do
|
||||
use "${cpufeature%:*}" && mysimd+=("${cpufeature#*:}")
|
||||
done
|
||||
|
||||
# If no CPU SIMDs were used, completely disable them
|
||||
[[ -z ${mysimd[*]} ]] && mysimd=("0")
|
||||
|
||||
# This is currently needed on arm64 to get the NEON SIMD wrapper to compile the code successfully
|
||||
# Even if there are no SIMD features selected, it seems like the code will turn on NEON support if it is available.
|
||||
use arm64 && append-flags -flax-vector-conversions
|
||||
|
||||
local mycmakeargs=(
|
||||
-DVERBOSE="yes"
|
||||
-DINTERNALIZE_FMT="no"
|
||||
# -DALWAYS_PREFER_CONFIG="yes"
|
||||
# -DGLIBCXX_USE_CXX11_ABI="yes"
|
||||
# -DTEX_BATCH_SIZE="8" # TODO AVX512 -> 16
|
||||
-DSTOP_ON_WARNING="OFF"
|
||||
|
||||
-DCMAKE_CXX_STANDARD="17"
|
||||
-DDOWNSTREAM_CXX_STANDARD="17"
|
||||
|
||||
-DCMAKE_UNITY_BUILD_MODE="BATCH"
|
||||
-DUNITY_SMALL_BATCH_SIZE="$(nproc)"
|
||||
|
||||
-DBUILD_DOCS="$(usex doc)"
|
||||
# -DBUILD_OIIOUTIL_ONLY="no"
|
||||
-DBUILD_TESTING="$(usex test)"
|
||||
|
||||
-DINSTALL_FONTS="OFF"
|
||||
-DINSTALL_DOCS="$(usex doc)"
|
||||
|
||||
-DENABLE_DCMTK="$(usex dicom)"
|
||||
-DENABLE_FFmpeg="$(usex ffmpeg)"
|
||||
-DENABLE_FITS="$(usex fits)"
|
||||
-DENABLE_FREETYPE="$(usex truetype)"
|
||||
-DENABLE_GIF="$(usex gif)"
|
||||
-DENABLE_LibRaw="$(usex raw)"
|
||||
-DENABLE_Nuke="no" # not in Gentoo
|
||||
-DENABLE_OpenCV="$(usex opencv)"
|
||||
-DENABLE_OpenJPEG="$(usex jpeg2k)"
|
||||
-DENABLE_OpenVDB="$(usex openvdb)"
|
||||
-DENABLE_TBB="$(usex openvdb)"
|
||||
-DENABLE_Ptex="$(usex ptex)"
|
||||
|
||||
-DENABLE_GIF="$(usex gif)"
|
||||
-DENABLE_LIBRAW="$(usex raw)"
|
||||
-DENABLE_PTEX="$(usex ptex)"
|
||||
-DENABLE_OPENJPEG="$(usex jpeg2k)"
|
||||
|
||||
-DOIIO_BUILD_TOOLS="$(usex tools)"
|
||||
-DOIIO_BUILD_TESTS="$(usex test)"
|
||||
-DOIIO_DOWNLOAD_MISSING_TESTDATA="no"
|
||||
|
||||
-DUSE_CCACHE="no"
|
||||
-DUSE_EXTERNAL_PUGIXML="yes"
|
||||
# -DUSE_LIBCPLUSPLUS="yes"
|
||||
-DUSE_R3DSDK="no" # not in Gentoo
|
||||
-DUSE_PYTHON="$(usex python)"
|
||||
-DUSE_SIMD="$(local IFS=','; echo "${mysimd[*]}")"
|
||||
)
|
||||
|
||||
if use gui; then
|
||||
mycmakeargs+=(
|
||||
-DUSE_IV="yes"
|
||||
-DUSE_OPENGL="yes"
|
||||
-DUSE_QT="yes"
|
||||
)
|
||||
else
|
||||
mycmakeargs+=(
|
||||
-DUSE_QT="no"
|
||||
)
|
||||
fi
|
||||
|
||||
if use python; then
|
||||
mycmakeargs+=(
|
||||
"-DPYTHON_VERSION=${EPYTHON#python}"
|
||||
"-DPYTHON_SITE_DIR=$(python_get_sitedir)"
|
||||
)
|
||||
fi
|
||||
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# A lot of tests needs to have access to the installed data files.
|
||||
# So install them into the image directory now.
|
||||
DESTDIR="${T}" cmake_build install
|
||||
|
||||
CMAKE_SKIP_TESTS=(
|
||||
"-broken$"
|
||||
"texture-levels-stochaniso.batch"
|
||||
"unit_simd"
|
||||
)
|
||||
|
||||
sed -e "s#../../../testsuite#../../../OpenImageIO-${PV}/testsuite#g" \
|
||||
-i "${CMAKE_USE_DIR}/testsuite/python-imagebufalgo/ref/out.txt" || die
|
||||
|
||||
local -x CI CMAKE_PREFIX_PATH LD_LIBRARY_PATH OPENIMAGEIO_FONTS PYTHONPATH
|
||||
CI=true
|
||||
CMAKE_PREFIX_PATH="${T}/usr"
|
||||
LD_LIBRARY_PATH="${T}/usr/$(get_libdir)"
|
||||
OPENIMAGEIO_FONTS="${CMAKE_USE_DIR}/src/fonts"
|
||||
|
||||
if use python; then
|
||||
PYTHONPATH="${T}$(python_get_sitedir)"
|
||||
fi
|
||||
|
||||
local -x myctestargs=(
|
||||
-R tiff-depths
|
||||
)
|
||||
|
||||
virtx cmake_src_test
|
||||
|
||||
# Clean up the image directory for src_install
|
||||
rm -fr "${T:?}"/usr || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cmake_src_install
|
||||
|
||||
# remove Windows loader file
|
||||
if use python; then
|
||||
rm "${D}$(python_get_sitedir)/__init__.py" || die
|
||||
fi
|
||||
}
|
||||
479
media-libs/openimageio/openimageio-3.0.11.0.ebuild
Normal file
479
media-libs/openimageio/openimageio-3.0.11.0.ebuild
Normal file
@ -0,0 +1,479 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
|
||||
inherit cuda cmake flag-o-matic python-single-r1 toolchain-funcs
|
||||
|
||||
# TODO
|
||||
# investigate defaulting back to CMAKE_BUILD_TYPE=Release
|
||||
|
||||
DESCRIPTION="A library for reading and writing images"
|
||||
HOMEPAGE="
|
||||
https://sites.google.com/site/openimageio/
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO
|
||||
"
|
||||
|
||||
if [[ ${PV} == *9999* ]] ; then
|
||||
inherit git-r3
|
||||
EGIT_REPO_URI="https://github.com/AcademySoftwareFoundation/OpenColorIO.git"
|
||||
else
|
||||
TEST_OIIO_IMAGE_COMMIT="75099275c73a6937d40c69f9e14a006aa49fa201"
|
||||
TEST_OEXR_IMAGE_COMMIT="e38ffb0790f62f05a6f083a6fa4cac150b3b7452"
|
||||
SRC_URI="
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/v${PV/_/-}.tar.gz
|
||||
-> ${P}.tar.gz
|
||||
test? (
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO-images/archive/${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oiio-test-image-${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
https://github.com/AcademySoftwareFoundation/openexr-images/archive/${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oexr-test-image-${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
jpeg2k? (
|
||||
https://www.itu.int/wftp3/Public/t/testsignal/SpeImage/T803/v2002_11/J2KP4files.zip
|
||||
)
|
||||
fits? (
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file002.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file009.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file012.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0005.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0006.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0007.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0008.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0013.fits
|
||||
)
|
||||
)
|
||||
"
|
||||
S="${WORKDIR}/OpenImageIO-${PV}"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv"
|
||||
fi
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0/$(ver_cut 1-2)"
|
||||
|
||||
X86_CPU_FEATURES=(
|
||||
aes:aes
|
||||
sse2:sse2
|
||||
sse3:sse3
|
||||
ssse3:ssse3
|
||||
sse4_1:sse4.1
|
||||
sse4_2:sse4.2
|
||||
avx:avx
|
||||
avx2:avx2
|
||||
avx512f:avx512f
|
||||
f16c:f16c
|
||||
)
|
||||
CPU_FEATURES=( "${X86_CPU_FEATURES[@]/#/cpu_flags_x86_}" )
|
||||
|
||||
IUSE="cuda debug dicom doc ffmpeg fits gif gui jpeg2k jpegxl libcxx opencv openvdb ptex python raw test +tools +truetype ${CPU_FEATURES[*]%:*}"
|
||||
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) gui? ( tools ) test? ( tools truetype )"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="
|
||||
jpeg2k? ( app-arch/unzip )
|
||||
doc? (
|
||||
app-text/doxygen
|
||||
dev-texlive/texlive-bibtexextra
|
||||
dev-texlive/texlive-fontsextra
|
||||
dev-texlive/texlive-fontutils
|
||||
dev-texlive/texlive-latex
|
||||
dev-texlive/texlive-latexextra
|
||||
)
|
||||
"
|
||||
|
||||
# >=media-libs/libuhdr-1.3
|
||||
RDEPEND="
|
||||
app-arch/bzip2:=
|
||||
dev-cpp/robin-map
|
||||
dev-libs/pugixml
|
||||
media-libs/libheif:=
|
||||
media-libs/libjpeg-turbo:=
|
||||
media-libs/libpng:=
|
||||
>=media-libs/libwebp-1.6.0:=
|
||||
media-libs/opencolorio:=
|
||||
media-libs/openexr:=
|
||||
media-libs/tiff:=
|
||||
virtual/zlib:=
|
||||
dicom? ( sci-libs/dcmtk )
|
||||
ffmpeg? ( media-video/ffmpeg:= )
|
||||
fits? ( sci-libs/cfitsio:= )
|
||||
gif? ( media-libs/giflib:= )
|
||||
jpeg2k? ( media-libs/openjpeg:= )
|
||||
jpegxl? ( media-libs/libjxl:= )
|
||||
opencv? ( media-libs/opencv:= )
|
||||
openvdb? (
|
||||
dev-cpp/tbb:=
|
||||
media-gfx/openvdb:=
|
||||
)
|
||||
ptex? ( media-libs/ptex:= )
|
||||
python? (
|
||||
${PYTHON_DEPS}
|
||||
$(python_gen_cond_dep '
|
||||
dev-python/numpy:=[${PYTHON_USEDEP}]
|
||||
dev-python/pybind11[${PYTHON_USEDEP}]
|
||||
')
|
||||
)
|
||||
gui? (
|
||||
media-libs/libglvnd
|
||||
dev-qt/qtbase:6[gui,widgets,opengl]
|
||||
)
|
||||
raw? ( media-libs/libraw:= )
|
||||
truetype? ( media-libs/freetype )
|
||||
"
|
||||
DEPEND="
|
||||
dev-libs/imath:=
|
||||
dev-libs/libfmt:=
|
||||
${RDEPEND}
|
||||
test? ( media-fonts/droid )
|
||||
"
|
||||
|
||||
DOCS=(
|
||||
CHANGES.md
|
||||
CREDITS.md
|
||||
README.md
|
||||
)
|
||||
|
||||
PATCHES=(
|
||||
# "${FILESDIR}/${PN}-2.5.8.0-fix-tests.patch"
|
||||
"${FILESDIR}/${PN}-2.5.12.0-heif-find-fix.patch"
|
||||
"${FILESDIR}/${PN}-2.5.18.0-tests-optional.patch"
|
||||
# in src_prepare
|
||||
# "${FILESDIR}/${PN}-2.5.12.0_heif_test.patch"
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
use python && python-single-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# IO plugin directories are globbed and included, so we just remove the ones we don't want
|
||||
if ! use dicom; then
|
||||
rm -r "src/dicom.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use gif; then
|
||||
rm -r "src/gif.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use jpeg2k; then
|
||||
rm -r "src/jpeg2000.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use jpegxl; then
|
||||
rm -r "src/jpegxl.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use raw; then
|
||||
rm -r "src/raw.imageio" || die
|
||||
fi
|
||||
|
||||
cmake_src_prepare
|
||||
cmake_comment_add_subdirectory src/fonts
|
||||
|
||||
if use test ; then
|
||||
if [[ ${PV} != *9999* ]] ; then
|
||||
ln -s "${WORKDIR}/OpenImageIO-images-${TEST_OIIO_IMAGE_COMMIT}" "${WORKDIR}/oiio-images" || die
|
||||
ln -s "${WORKDIR}/openexr-images-${TEST_OEXR_IMAGE_COMMIT}" "${WORKDIR}/openexr-images" || die
|
||||
fi
|
||||
|
||||
if use fits; then
|
||||
mkdir -p "${WORKDIR}/fits-images/"{ftt4b,pg93} || die
|
||||
for a in ${A}; do
|
||||
if [[ "${a}" == file*.fits ]]; then
|
||||
ln -s "${DISTDIR}/${a}" "${WORKDIR}/fits-images/ftt4b/" || die
|
||||
fi
|
||||
if [[ "${a}" == tst*.fits ]]; then
|
||||
ln -s "${DISTDIR}/${a}" "${WORKDIR}/fits-images/pg93/" || die
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if use jpeg2k; then
|
||||
ln -s "${WORKDIR}/J2KP4files" "${WORKDIR}/j2kp4files_v1_5" || die
|
||||
fi
|
||||
|
||||
cp testsuite/heif/ref/out-libheif1.1{2,5}-orient.txt || die
|
||||
eapply "${FILESDIR}/${PN}-2.5.12.0_heif_test.patch"
|
||||
fi
|
||||
|
||||
mkdir "${T}/cmake" || die
|
||||
|
||||
local libdir="${ESYSROOT}/usr/$(get_libdir)"
|
||||
|
||||
# generate our own WebPConfig.cmake via pkg-config # 937031
|
||||
cat <<-EOF > "${T}/cmake/WebPConfig.cmake" || die
|
||||
set(WebP_VERSION $(pkg-config --modversion libwebp))
|
||||
set(WEBP_VERSION \${WebP_VERSION})
|
||||
|
||||
set_and_check(WebP_INCLUDE_DIR "$(pkg-config --variable includedir libwebp)")
|
||||
set(WebP_INCLUDE_DIRS \${WebP_INCLUDE_DIR})
|
||||
set(WEBP_INCLUDE_DIRS \${WebP_INCLUDE_DIR})
|
||||
set(WebP_LIBRARIES "webp")
|
||||
set(WEBP_LIBRARIES "\${WebP_LIBRARIES}")
|
||||
|
||||
# Create imported target WebP::sharpyuv
|
||||
add_library(WebP::sharpyuv SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::sharpyuv PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR};\${WebP_INCLUDE_DIR}/webp"
|
||||
INTERFACE_LINK_LIBRARIES "m"
|
||||
)
|
||||
|
||||
# Create imported target WebP::webp
|
||||
add_library(WebP::webp SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::webp PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::sharpyuv;Threads::Threads;m"
|
||||
)
|
||||
|
||||
# Create imported target WebP::webpdemux
|
||||
add_library(WebP::webpdemux SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::webpdemux PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::webp"
|
||||
)
|
||||
|
||||
# Create imported target WebP::libwebpmux
|
||||
add_library(WebP::libwebpmux SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::libwebpmux PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::webp"
|
||||
)
|
||||
|
||||
# Import target "WebP::webp" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::webp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::webp PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libwebp.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::webp )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::webp "${libdir}/libwebp.so" )
|
||||
|
||||
# Import target "WebP::webpdemux" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::webpdemux APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::webpdemux PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libwebpdemux.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::webpdemux )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::webpdemux "${libdir}/libwebpdemux.so" )
|
||||
|
||||
# Import target "WebP::sharpyuv" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::sharpyuv APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::sharpyuv PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libsharpyuv.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::sharpyuv )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::sharpyuv "${libdir}/libsharpyuv.so" )
|
||||
|
||||
# Import target "WebP::libwebpmux" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::libwebpmux APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::libwebpmux PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libwebpmux.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::libwebpmux )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::libwebpmux "${libdir}/libwebpmux.so" )
|
||||
|
||||
check_required_components(WebP)
|
||||
EOF
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Build with SIMD support
|
||||
local cpufeature
|
||||
local mysimd=()
|
||||
for cpufeature in "${CPU_FEATURES[@]}"; do
|
||||
use "${cpufeature%:*}" && mysimd+=("${cpufeature#*:}")
|
||||
done
|
||||
|
||||
# If no CPU SIMDs were used, completely disable them
|
||||
[[ -z ${mysimd[*]} ]] && mysimd=("0")
|
||||
|
||||
# This is currently needed on arm64 to get the NEON SIMD wrapper to compile the code successfully
|
||||
# Even if there are no SIMD features selected, it seems like the code will turn on NEON support if it is available.
|
||||
use arm64 && append-flags -flax-vector-conversions
|
||||
|
||||
append-cflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
|
||||
append-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
|
||||
|
||||
local mycmakeargs=(
|
||||
-DVERBOSE="no"
|
||||
-DLINKSTATIC="no"
|
||||
|
||||
-DTEX_BATCH_SIZE="16" # AVX512 -> 16
|
||||
-DSTOP_ON_WARNING="no"
|
||||
|
||||
-DCMAKE_CXX_STANDARD="17"
|
||||
-DDOWNSTREAM_CXX_STANDARD="17"
|
||||
|
||||
-DCMAKE_UNITY_BUILD=OFF
|
||||
# -DCMAKE_UNITY_BUILD_MODE="BATCH"
|
||||
# -DCMAKE_UNITY_BUILD_BATCH_SIZE="$(nproc)"
|
||||
|
||||
-DBUILD_DOCS="$(usex doc)"
|
||||
# -DBUILD_OIIOUTIL_ONLY="no"
|
||||
-DBUILD_TESTING="$(usex test)"
|
||||
|
||||
-DINSTALL_FONTS="no"
|
||||
-DINSTALL_DOCS="$(usex doc)"
|
||||
|
||||
-DENABLE_DCMTK="$(usex dicom)"
|
||||
-DENABLE_FFmpeg="$(usex ffmpeg)"
|
||||
-DENABLE_FITS="$(usex fits)"
|
||||
-DENABLE_FREETYPE="$(usex truetype)"
|
||||
-DENABLE_GIF="$(usex gif)"
|
||||
-DENABLE_LibRaw="$(usex raw)"
|
||||
-DENABLE_Nuke="no" # not in Gentoo
|
||||
-DENABLE_OpenCV="$(usex opencv)"
|
||||
-DENABLE_OpenJPEG="$(usex jpeg2k)"
|
||||
-DENABLE_openjph="no" # not in Gentoo
|
||||
-DENABLE_OpenVDB="$(usex openvdb)"
|
||||
-DENABLE_Ptex="$(usex ptex)"
|
||||
-DENABLE_TBB="$(usex openvdb)"
|
||||
|
||||
-DENABLE_libuhdr="no" # not in Gentoo
|
||||
-DENABLE_WebP="yes"
|
||||
|
||||
-DOIIO_BUILD_TESTS="$(usex test)"
|
||||
-DOIIO_BUILD_TOOLS="$(usex tools)"
|
||||
-DOIIO_DOWNLOAD_MISSING_TESTDATA="no"
|
||||
-DOIIO_INTERNALIZE_FMT="no"
|
||||
-DOIIO_USE_CUDA="$(usex cuda)"
|
||||
# -DOIIO_USE_EXR_C_API="yes"
|
||||
|
||||
-DOPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH="yes"
|
||||
|
||||
# -DOpenImageIO_ALWAYS_PREFER_CONFIG="yes" # breaks openexr detection
|
||||
-DOpenImageIO_BUILD_STATIC_UTIL_LIBRARY="no"
|
||||
|
||||
-DUSE_CCACHE="no"
|
||||
-DUSE_EXTERNAL_PUGIXML="yes"
|
||||
-DUSE_JXL="$(usex jpegxl)"
|
||||
-DUSE_R3DSDK="no" # not in Gentoo
|
||||
-DUSE_PYTHON="$(usex python)"
|
||||
-DUSE_QT="$(usex gui)"
|
||||
-DUSE_SIMD="$(local IFS=','; echo "${mysimd[*]}")"
|
||||
|
||||
-DWebP_DIR="${T}/cmake"
|
||||
)
|
||||
|
||||
if use gui; then
|
||||
mycmakeargs+=(
|
||||
-DUSE_IV="yes"
|
||||
-DUSE_OPENGL="yes"
|
||||
# -DUSE_CCACHE="yes"
|
||||
# needs local -x CCACHE_CPP2=1
|
||||
# CXX_COMPILER_LAUNCHER
|
||||
)
|
||||
fi
|
||||
|
||||
if use python; then
|
||||
mycmakeargs+=(
|
||||
"-DPYTHON_VERSION=${EPYTHON#python}"
|
||||
"-DPYTHON_SITE_DIR=$(python_get_sitedir)"
|
||||
)
|
||||
fi
|
||||
|
||||
if use test; then
|
||||
mycmakeargs+=(
|
||||
-DENABLE_LIBRAW="$(usex raw)"
|
||||
-DENABLE_OPENJPEG="$(usex jpeg2k)"
|
||||
-DENABLE_PTEX="$(usex ptex)"
|
||||
)
|
||||
fi
|
||||
|
||||
# checks CMAKE_COMPILER_IS_CLANG
|
||||
if tc-is-clang; then
|
||||
mycmakeargs+=(
|
||||
-DUSE_LIBCPLUSPLUS="$(usex libcxx)"
|
||||
)
|
||||
fi
|
||||
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# A lot of tests needs to have access to the installed data files.
|
||||
# So install them into the image directory now.
|
||||
DESTDIR="${T}" cmake_build install
|
||||
|
||||
if use cuda; then
|
||||
cuda_add_sandbox -w
|
||||
addwrite "/proc/self/task/"
|
||||
addpredict "/dev/char/"
|
||||
fi
|
||||
|
||||
CMAKE_SKIP_TESTS=(
|
||||
"-broken$"
|
||||
|
||||
"^cmake-consumer$"
|
||||
"^docs-examples-(cpp|python)$"
|
||||
|
||||
"texture-interp-bilinear.batch$"
|
||||
"texture-interp-closest.batch$"
|
||||
"texture-levels-stochaniso.batch$"
|
||||
"texture-levels-stochmip.batch$"
|
||||
|
||||
"texture-mip-onelevel.batch$"
|
||||
"texture-mip-stochastictrilinear.batch$"
|
||||
"texture-mip-stochasticaniso.batch$"
|
||||
|
||||
"^python-imagebufalgo$"
|
||||
|
||||
"^bmp$"
|
||||
"^dds$"
|
||||
"^ico$"
|
||||
"^jpeg2000$"
|
||||
"^psd$"
|
||||
"^ptex$"
|
||||
)
|
||||
|
||||
sed -e "s#../../../testsuite#../../../OpenImageIO-${PV}/testsuite#g" \
|
||||
-i "${CMAKE_USE_DIR}/testsuite/python-imagebufalgo/ref/out.txt" || die
|
||||
|
||||
# NOTE testsuite/runtest.py
|
||||
local -x CI=true
|
||||
# local -x OPENIMAGEIO_CUDA=0 # prevent trying to access gpu devices
|
||||
# local -x OIIO_USE_CUDA=0
|
||||
local -x CMAKE_MODULE_PATH="${T}/usr"
|
||||
local -x LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH="${T}/usr/$(get_libdir)"
|
||||
# local -x OPENIMAGEIO_DEBUG_FILE
|
||||
local -x OPENIMAGEIO_DEBUG=0
|
||||
|
||||
# find ${CMAKE_USE_DIR}/src/fonts -mindepth 1 -type d
|
||||
local -x OPENIMAGEIO_FONTS="${CMAKE_USE_DIR}/src/fonts/Droid_Serif"
|
||||
|
||||
if use python; then
|
||||
local -x PYTHONPATH="${T}$(python_get_sitedir)"
|
||||
fi
|
||||
|
||||
cmake_src_test
|
||||
|
||||
# Clean up the image directory for src_install
|
||||
rm -fr "${T:?}"/usr || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cmake_src_install
|
||||
|
||||
# remove Windows loader file
|
||||
if use python; then
|
||||
rm "${D}$(python_get_sitedir)/__init__.py" || die
|
||||
fi
|
||||
}
|
||||
478
media-libs/openimageio/openimageio-3.1.7.0-r1.ebuild
Normal file
478
media-libs/openimageio/openimageio-3.1.7.0-r1.ebuild
Normal file
@ -0,0 +1,478 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..14} )
|
||||
|
||||
inherit cuda cmake flag-o-matic python-single-r1 toolchain-funcs
|
||||
|
||||
# TODO
|
||||
# investigate defaulting back to CMAKE_BUILD_TYPE=Release
|
||||
|
||||
DESCRIPTION="A library for reading and writing images"
|
||||
HOMEPAGE="
|
||||
https://sites.google.com/site/openimageio/
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO
|
||||
"
|
||||
|
||||
if [[ ${PV} == *9999* ]] ; then
|
||||
inherit git-r3
|
||||
EGIT_REPO_URI="https://github.com/AcademySoftwareFoundation/OpenColorIO.git"
|
||||
else
|
||||
TEST_OIIO_IMAGE_COMMIT="75099275c73a6937d40c69f9e14a006aa49fa201"
|
||||
TEST_OEXR_IMAGE_COMMIT="e38ffb0790f62f05a6f083a6fa4cac150b3b7452"
|
||||
SRC_URI="
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/v${PV/_/-}.tar.gz
|
||||
-> ${P}.tar.gz
|
||||
test? (
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO-images/archive/${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oiio-test-image-${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
https://github.com/AcademySoftwareFoundation/openexr-images/archive/${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oexr-test-image-${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
jpeg2k? (
|
||||
https://www.itu.int/wftp3/Public/t/testsignal/SpeImage/T803/v2002_11/J2KP4files.zip
|
||||
)
|
||||
fits? (
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file002.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file009.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file012.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0005.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0006.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0007.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0008.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0013.fits
|
||||
)
|
||||
)
|
||||
"
|
||||
S="${WORKDIR}/OpenImageIO-${PV}"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv"
|
||||
fi
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0/$(ver_cut 1-2)"
|
||||
|
||||
X86_CPU_FEATURES=(
|
||||
aes:aes
|
||||
sse2:sse2
|
||||
sse3:sse3
|
||||
ssse3:ssse3
|
||||
sse4_1:sse4.1
|
||||
sse4_2:sse4.2
|
||||
avx:avx
|
||||
avx2:avx2
|
||||
avx512f:avx512f
|
||||
f16c:f16c
|
||||
)
|
||||
CPU_FEATURES=( "${X86_CPU_FEATURES[@]/#/cpu_flags_x86_}" )
|
||||
|
||||
IUSE="cuda debug dicom doc ffmpeg fits gif gui jpeg2k jpegxl libcxx opencv openvdb ptex python raw test +tools +truetype ${CPU_FEATURES[*]%:*}"
|
||||
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) gui? ( tools ) test? ( tools truetype )"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="
|
||||
jpeg2k? ( app-arch/unzip )
|
||||
doc? (
|
||||
app-text/doxygen
|
||||
dev-texlive/texlive-bibtexextra
|
||||
dev-texlive/texlive-fontsextra
|
||||
dev-texlive/texlive-fontutils
|
||||
dev-texlive/texlive-latex
|
||||
dev-texlive/texlive-latexextra
|
||||
)
|
||||
"
|
||||
|
||||
# >=media-libs/libuhdr-1.3
|
||||
RDEPEND="
|
||||
app-arch/bzip2:=
|
||||
dev-cpp/robin-map
|
||||
dev-libs/pugixml
|
||||
media-libs/libheif:=
|
||||
media-libs/libjpeg-turbo:=
|
||||
media-libs/libpng:=
|
||||
>=media-libs/libwebp-1.6.0:=
|
||||
>=media-libs/opencolorio-2.3:=
|
||||
media-libs/openexr:=
|
||||
media-libs/tiff:=
|
||||
virtual/zlib:=
|
||||
dicom? ( sci-libs/dcmtk )
|
||||
ffmpeg? ( media-video/ffmpeg:= )
|
||||
fits? ( sci-libs/cfitsio:= )
|
||||
gif? ( media-libs/giflib:= )
|
||||
jpeg2k? ( media-libs/openjpeg:= )
|
||||
jpegxl? ( media-libs/libjxl:= )
|
||||
opencv? ( media-libs/opencv:= )
|
||||
openvdb? (
|
||||
dev-cpp/tbb:=
|
||||
media-gfx/openvdb:=
|
||||
)
|
||||
ptex? ( media-libs/ptex:= )
|
||||
python? (
|
||||
${PYTHON_DEPS}
|
||||
$(python_gen_cond_dep '
|
||||
dev-python/numpy:=[${PYTHON_USEDEP}]
|
||||
dev-python/pybind11[${PYTHON_USEDEP}]
|
||||
')
|
||||
)
|
||||
gui? (
|
||||
media-libs/libglvnd
|
||||
dev-qt/qtbase:6[gui,widgets,opengl]
|
||||
)
|
||||
raw? ( media-libs/libraw:= )
|
||||
truetype? ( media-libs/freetype )
|
||||
"
|
||||
DEPEND="
|
||||
dev-libs/imath:=
|
||||
dev-libs/libfmt:=
|
||||
${RDEPEND}
|
||||
test? ( media-fonts/droid )
|
||||
"
|
||||
|
||||
DOCS=(
|
||||
CHANGES.md
|
||||
CREDITS.md
|
||||
README.md
|
||||
)
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-2.5.12.0-heif-find-fix.patch"
|
||||
"${FILESDIR}/${PN}-3.1.6.2-tests-optional.patch"
|
||||
# in src_prepare
|
||||
# "${FILESDIR}/${PN}-2.5.12.0_heif_test.patch"
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
use python && python-single-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# IO plugin directories are globbed and included, so we just remove the ones we don't want
|
||||
if ! use dicom; then
|
||||
rm -r "src/dicom.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use gif; then
|
||||
rm -r "src/gif.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use jpeg2k; then
|
||||
rm -r "src/jpeg2000.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use jpegxl; then
|
||||
rm -r "src/jpegxl.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use raw; then
|
||||
rm -r "src/raw.imageio" || die
|
||||
fi
|
||||
|
||||
cmake_src_prepare
|
||||
cmake_comment_add_subdirectory src/fonts
|
||||
|
||||
if use test ; then
|
||||
if [[ ${PV} != *9999* ]] ; then
|
||||
ln -s "${WORKDIR}/OpenImageIO-images-${TEST_OIIO_IMAGE_COMMIT}" "${WORKDIR}/oiio-images" || die
|
||||
ln -s "${WORKDIR}/openexr-images-${TEST_OEXR_IMAGE_COMMIT}" "${WORKDIR}/openexr-images" || die
|
||||
fi
|
||||
|
||||
if use fits; then
|
||||
mkdir -p "${WORKDIR}/fits-images/"{ftt4b,pg93} || die
|
||||
for a in ${A}; do
|
||||
if [[ "${a}" == file*.fits ]]; then
|
||||
ln -s "${DISTDIR}/${a}" "${WORKDIR}/fits-images/ftt4b/" || die
|
||||
fi
|
||||
if [[ "${a}" == tst*.fits ]]; then
|
||||
ln -s "${DISTDIR}/${a}" "${WORKDIR}/fits-images/pg93/" || die
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if use jpeg2k; then
|
||||
ln -s "${WORKDIR}/J2KP4files" "${WORKDIR}/j2kp4files_v1_5" || die
|
||||
fi
|
||||
|
||||
cp testsuite/heif/ref/out-libheif1.1{2,5}-orient.txt || die
|
||||
# eapply "${FILESDIR}/${PN}-2.5.12.0_heif_test.patch"
|
||||
fi
|
||||
|
||||
mkdir "${T}/cmake" || die
|
||||
|
||||
local libdir="${ESYSROOT}/usr/$(get_libdir)"
|
||||
|
||||
# generate our own WebPConfig.cmake via pkg-config # 937031
|
||||
cat <<-EOF > "${T}/cmake/WebPConfig.cmake" || die
|
||||
set(WebP_VERSION $(pkg-config --modversion libwebp))
|
||||
set(WEBP_VERSION \${WebP_VERSION})
|
||||
|
||||
set_and_check(WebP_INCLUDE_DIR "$(pkg-config --variable includedir libwebp)")
|
||||
set(WebP_INCLUDE_DIRS \${WebP_INCLUDE_DIR})
|
||||
set(WEBP_INCLUDE_DIRS \${WebP_INCLUDE_DIR})
|
||||
set(WebP_LIBRARIES "webp")
|
||||
set(WEBP_LIBRARIES "\${WebP_LIBRARIES}")
|
||||
|
||||
# Create imported target WebP::sharpyuv
|
||||
add_library(WebP::sharpyuv SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::sharpyuv PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR};\${WebP_INCLUDE_DIR}/webp"
|
||||
INTERFACE_LINK_LIBRARIES "m"
|
||||
)
|
||||
|
||||
# Create imported target WebP::webp
|
||||
add_library(WebP::webp SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::webp PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::sharpyuv;Threads::Threads;m"
|
||||
)
|
||||
|
||||
# Create imported target WebP::webpdemux
|
||||
add_library(WebP::webpdemux SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::webpdemux PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::webp"
|
||||
)
|
||||
|
||||
# Create imported target WebP::libwebpmux
|
||||
add_library(WebP::libwebpmux SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::libwebpmux PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::webp"
|
||||
)
|
||||
|
||||
# Import target "WebP::webp" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::webp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::webp PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libwebp.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::webp )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::webp "${libdir}/libwebp.so" )
|
||||
|
||||
# Import target "WebP::webpdemux" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::webpdemux APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::webpdemux PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libwebpdemux.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::webpdemux )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::webpdemux "${libdir}/libwebpdemux.so" )
|
||||
|
||||
# Import target "WebP::sharpyuv" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::sharpyuv APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::sharpyuv PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libsharpyuv.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::sharpyuv )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::sharpyuv "${libdir}/libsharpyuv.so" )
|
||||
|
||||
# Import target "WebP::libwebpmux" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::libwebpmux APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::libwebpmux PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libwebpmux.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::libwebpmux )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::libwebpmux "${libdir}/libwebpmux.so" )
|
||||
|
||||
check_required_components(WebP)
|
||||
EOF
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Build with SIMD support
|
||||
local cpufeature
|
||||
local mysimd=()
|
||||
for cpufeature in "${CPU_FEATURES[@]}"; do
|
||||
use "${cpufeature%:*}" && mysimd+=("${cpufeature#*:}")
|
||||
done
|
||||
|
||||
# If no CPU SIMDs were used, completely disable them
|
||||
[[ -z ${mysimd[*]} ]] && mysimd=("0")
|
||||
|
||||
# This is currently needed on arm64 to get the NEON SIMD wrapper to compile the code successfully
|
||||
# Even if there are no SIMD features selected, it seems like the code will turn on NEON support if it is available.
|
||||
use arm64 && append-flags -flax-vector-conversions
|
||||
|
||||
append-cflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
|
||||
append-cxxflags "$(usex debug '-DDEBUG' '-DNDEBUG')"
|
||||
|
||||
local mycmakeargs=(
|
||||
-DVERBOSE="no"
|
||||
-DLINKSTATIC="no"
|
||||
|
||||
-DTEX_BATCH_SIZE="16" # AVX512 -> 16
|
||||
-DSTOP_ON_WARNING="no"
|
||||
|
||||
-DCMAKE_CXX_STANDARD="17"
|
||||
-DDOWNSTREAM_CXX_STANDARD="17"
|
||||
|
||||
-DCMAKE_UNITY_BUILD=OFF
|
||||
# -DCMAKE_UNITY_BUILD_MODE="BATCH"
|
||||
# -DCMAKE_UNITY_BUILD_BATCH_SIZE="$(nproc)"
|
||||
|
||||
-DBUILD_DOCS="$(usex doc)"
|
||||
# -DBUILD_OIIOUTIL_ONLY="no"
|
||||
-DBUILD_TESTING="$(usex test)"
|
||||
|
||||
-DINSTALL_FONTS="no"
|
||||
-DINSTALL_DOCS="$(usex doc)"
|
||||
|
||||
-DENABLE_DCMTK="$(usex dicom)"
|
||||
-DENABLE_FFmpeg="$(usex ffmpeg)"
|
||||
-DENABLE_FITS="$(usex fits)"
|
||||
-DENABLE_FREETYPE="$(usex truetype)"
|
||||
-DENABLE_GIF="$(usex gif)"
|
||||
-DENABLE_LibRaw="$(usex raw)"
|
||||
-DENABLE_Nuke="no" # not in Gentoo
|
||||
-DENABLE_OpenCV="$(usex opencv)"
|
||||
-DENABLE_OpenJPEG="$(usex jpeg2k)"
|
||||
-DENABLE_openjph="no" # not in Gentoo
|
||||
-DENABLE_OpenVDB="$(usex openvdb)"
|
||||
-DENABLE_Ptex="$(usex ptex)"
|
||||
-DENABLE_TBB="$(usex openvdb)"
|
||||
|
||||
-DENABLE_libuhdr="no" # not in Gentoo
|
||||
-DENABLE_WebP="yes"
|
||||
|
||||
-DOIIO_BUILD_TESTS="$(usex test)"
|
||||
-DOIIO_BUILD_TOOLS="$(usex tools)"
|
||||
-DOIIO_DOWNLOAD_MISSING_TESTDATA="no"
|
||||
-DOIIO_INTERNALIZE_FMT="no"
|
||||
-DOIIO_USE_CUDA="$(usex cuda)"
|
||||
# -DOIIO_USE_EXR_C_API="yes"
|
||||
|
||||
-DOPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH="yes"
|
||||
|
||||
# -DOpenImageIO_ALWAYS_PREFER_CONFIG="yes" # breaks openexr detection
|
||||
-DOpenImageIO_BUILD_STATIC_UTIL_LIBRARY="no"
|
||||
|
||||
-DUSE_CCACHE="no"
|
||||
-DUSE_EXTERNAL_PUGIXML="yes"
|
||||
-DUSE_JXL="$(usex jpegxl)"
|
||||
-DUSE_R3DSDK="no" # not in Gentoo
|
||||
-DUSE_PYTHON="$(usex python)"
|
||||
-DUSE_QT="$(usex gui)"
|
||||
-DUSE_SIMD="$(local IFS=','; echo "${mysimd[*]}")"
|
||||
|
||||
-DWebP_DIR="${T}/cmake"
|
||||
)
|
||||
|
||||
if use gui; then
|
||||
mycmakeargs+=(
|
||||
-DUSE_IV="yes"
|
||||
-DUSE_OPENGL="yes"
|
||||
# -DUSE_CCACHE="yes"
|
||||
# needs local -x CCACHE_CPP2=1
|
||||
# CXX_COMPILER_LAUNCHER
|
||||
)
|
||||
fi
|
||||
|
||||
if use python; then
|
||||
mycmakeargs+=(
|
||||
"-DPYTHON_VERSION=${EPYTHON#python}"
|
||||
"-DPYTHON_SITE_DIR=$(python_get_sitedir)"
|
||||
)
|
||||
fi
|
||||
|
||||
if use test; then
|
||||
mycmakeargs+=(
|
||||
-DENABLE_LIBRAW="$(usex raw)"
|
||||
-DENABLE_OPENJPEG="$(usex jpeg2k)"
|
||||
-DENABLE_PTEX="$(usex ptex)"
|
||||
)
|
||||
fi
|
||||
|
||||
# checks CMAKE_COMPILER_IS_CLANG
|
||||
if tc-is-clang; then
|
||||
mycmakeargs+=(
|
||||
-DUSE_LIBCPLUSPLUS="$(usex libcxx)"
|
||||
)
|
||||
fi
|
||||
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# A lot of tests needs to have access to the installed data files.
|
||||
# So install them into the image directory now.
|
||||
DESTDIR="${T}" cmake_build install
|
||||
|
||||
if use cuda; then
|
||||
cuda_add_sandbox -w
|
||||
addwrite "/proc/self/task/"
|
||||
addpredict "/dev/char/"
|
||||
fi
|
||||
|
||||
CMAKE_SKIP_TESTS=(
|
||||
"-broken$"
|
||||
|
||||
"^cmake-consumer$"
|
||||
"^docs-examples-(cpp|python)$"
|
||||
|
||||
"texture-interp-bilinear.batch$"
|
||||
"texture-interp-closest.batch$"
|
||||
"texture-levels-stochaniso.batch$"
|
||||
"texture-levels-stochmip.batch$"
|
||||
|
||||
"texture-mip-onelevel.batch$"
|
||||
"texture-mip-stochastictrilinear.batch$"
|
||||
"texture-mip-stochasticaniso.batch$"
|
||||
|
||||
"^python-imagebufalgo$"
|
||||
|
||||
"^bmp$"
|
||||
"^dds$"
|
||||
"^ico$"
|
||||
"^jpeg2000$"
|
||||
"^psd$"
|
||||
"^ptex$"
|
||||
)
|
||||
|
||||
sed -e "s#../../../testsuite#../../../OpenImageIO-${PV}/testsuite#g" \
|
||||
-i "${CMAKE_USE_DIR}/testsuite/python-imagebufalgo/ref/out.txt" || die
|
||||
|
||||
# NOTE testsuite/runtest.py
|
||||
local -x CI=true
|
||||
# local -x OPENIMAGEIO_CUDA=0 # prevent trying to access gpu devices
|
||||
# local -x OIIO_USE_CUDA=0
|
||||
local -x CMAKE_MODULE_PATH="${T}/usr"
|
||||
local -x LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH="${T}/usr/$(get_libdir)"
|
||||
# local -x OPENIMAGEIO_DEBUG_FILE
|
||||
local -x OPENIMAGEIO_DEBUG=0
|
||||
|
||||
# find ${CMAKE_USE_DIR}/src/fonts -mindepth 1 -type d
|
||||
local -x OPENIMAGEIO_FONTS="${CMAKE_USE_DIR}/src/fonts/Droid_Serif"
|
||||
|
||||
if use python; then
|
||||
local -x PYTHONPATH="${T}$(python_get_sitedir)"
|
||||
fi
|
||||
|
||||
cmake_src_test
|
||||
|
||||
# Clean up the image directory for src_install
|
||||
rm -fr "${T:?}"/usr || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cmake_src_install
|
||||
|
||||
# remove Windows loader file
|
||||
if use python; then
|
||||
rm "${D}$(python_get_sitedir)/__init__.py" || die
|
||||
fi
|
||||
}
|
||||
@ -5,8 +5,6 @@ EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..14} )
|
||||
|
||||
TEST_OIIO_IMAGE_COMMIT="75099275c73a6937d40c69f9e14a006aa49fa201"
|
||||
TEST_OEXR_IMAGE_COMMIT="e38ffb0790f62f05a6f083a6fa4cac150b3b7452"
|
||||
inherit cuda cmake flag-o-matic python-single-r1 toolchain-funcs
|
||||
|
||||
# TODO
|
||||
@ -17,38 +15,46 @@ HOMEPAGE="
|
||||
https://sites.google.com/site/openimageio/
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO
|
||||
"
|
||||
SRC_URI="
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/v${PV}.tar.gz
|
||||
-> ${P}.tar.gz
|
||||
test? (
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO-images/archive/${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oiio-test-image-${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
https://github.com/AcademySoftwareFoundation/openexr-images/archive/${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oexr-test-image-${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
jpeg2k? (
|
||||
https://www.itu.int/wftp3/Public/t/testsignal/SpeImage/T803/v2002_11/J2KP4files.zip
|
||||
|
||||
if [[ ${PV} == *9999* ]] ; then
|
||||
inherit git-r3
|
||||
EGIT_REPO_URI="https://github.com/AcademySoftwareFoundation/OpenColorIO.git"
|
||||
else
|
||||
TEST_OIIO_IMAGE_COMMIT="75099275c73a6937d40c69f9e14a006aa49fa201"
|
||||
TEST_OEXR_IMAGE_COMMIT="e38ffb0790f62f05a6f083a6fa4cac150b3b7452"
|
||||
SRC_URI="
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/v${PV/_/-}.tar.gz
|
||||
-> ${P}.tar.gz
|
||||
test? (
|
||||
https://github.com/AcademySoftwareFoundation/OpenImageIO-images/archive/${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oiio-test-image-${TEST_OIIO_IMAGE_COMMIT}.tar.gz
|
||||
https://github.com/AcademySoftwareFoundation/openexr-images/archive/${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
-> ${PN}-oexr-test-image-${TEST_OEXR_IMAGE_COMMIT}.tar.gz
|
||||
jpeg2k? (
|
||||
https://www.itu.int/wftp3/Public/t/testsignal/SpeImage/T803/v2002_11/J2KP4files.zip
|
||||
)
|
||||
fits? (
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file002.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file009.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file012.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0005.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0006.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0007.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0008.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0013.fits
|
||||
)
|
||||
)
|
||||
fits? (
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file002.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file009.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/ftt4b/file012.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0001.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0003.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0005.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0006.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0007.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0008.fits
|
||||
https://www.cv.nrao.edu/fits/data/tests/pg93/tst0013.fits
|
||||
)
|
||||
)
|
||||
"
|
||||
S="${WORKDIR}/OpenImageIO-${PV}"
|
||||
"
|
||||
S="${WORKDIR}/OpenImageIO-${PV}"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv"
|
||||
fi
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0/$(ver_cut 1-2)"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv"
|
||||
|
||||
X86_CPU_FEATURES=(
|
||||
aes:aes
|
||||
@ -89,7 +95,7 @@ RDEPEND="
|
||||
media-libs/libheif:=
|
||||
media-libs/libjpeg-turbo:=
|
||||
media-libs/libpng:=
|
||||
media-libs/libwebp:=
|
||||
>=media-libs/libwebp-1.6.0:=
|
||||
media-libs/opencolorio:=
|
||||
media-libs/openexr:=
|
||||
media-libs/tiff:=
|
||||
@ -98,9 +104,7 @@ RDEPEND="
|
||||
ffmpeg? ( media-video/ffmpeg:= )
|
||||
fits? ( sci-libs/cfitsio:= )
|
||||
gif? ( media-libs/giflib:= )
|
||||
jpeg2k? (
|
||||
media-libs/openjpeg:=
|
||||
)
|
||||
jpeg2k? ( media-libs/openjpeg:= )
|
||||
jpegxl? ( media-libs/libjxl:= )
|
||||
opencv? ( media-libs/opencv:= )
|
||||
openvdb? (
|
||||
@ -137,10 +141,11 @@ DOCS=(
|
||||
|
||||
PATCHES=(
|
||||
# Detect Heif library
|
||||
# "${FILESDIR}/${PN}-2.5.8.0-fix-tests.patch"
|
||||
"${FILESDIR}/${PN}-2.5.12.0-heif-find-fix.patch"
|
||||
"${FILESDIR}/${PN}-3.1.7.0-tests-optional.patch"
|
||||
# Fix WebPMux wrong libname
|
||||
"${FILESDIR}/${PN}-3.1.7.0-webpmux-fix.patch"
|
||||
"${FILESDIR}/${PN}-3.1.6.2-tests-optional.patch"
|
||||
# in src_prepare
|
||||
# "${FILESDIR}/${PN}-2.5.12.0_heif_test.patch"
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
@ -148,33 +153,35 @@ pkg_setup() {
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Drop DICOM plugin source if not enabled
|
||||
# IO plugin directories are globbed and included, so we just remove the ones we don't want
|
||||
if ! use dicom; then
|
||||
rm "src/dicom.imageio" -r || die
|
||||
rm -r "src/dicom.imageio" || die
|
||||
fi
|
||||
|
||||
# Drop GIF plugin source if not enabled
|
||||
if ! use gif; then
|
||||
rm src/gif.imageio -r || die
|
||||
rm -r "src/gif.imageio" || die
|
||||
fi
|
||||
|
||||
# Drop JPEG2000 plugin source if not enabled
|
||||
if ! use jpeg2k; then
|
||||
rm src/jpeg2000.imageio -r || die
|
||||
rm -r "src/jpeg2000.imageio" || die
|
||||
fi
|
||||
|
||||
if ! use jpegxl; then
|
||||
rm -r "src/jpegxl.imageio" || die
|
||||
fi
|
||||
|
||||
# Drop raw plugin source if not enabled
|
||||
if ! use raw; then
|
||||
rm src/raw.imageio -r || die
|
||||
rm -r "src/raw.imageio" || die
|
||||
fi
|
||||
|
||||
cmake_src_prepare
|
||||
cmake_comment_add_subdirectory src/fonts
|
||||
|
||||
# Test suite
|
||||
if use test ; then
|
||||
ln -s "${WORKDIR}/OpenImageIO-images-${TEST_OIIO_IMAGE_COMMIT}" "${WORKDIR}/oiio-images" || die
|
||||
ln -s "${WORKDIR}/openexr-images-${TEST_OEXR_IMAGE_COMMIT}" "${WORKDIR}/openexr-images" || die
|
||||
if [[ ${PV} != *9999* ]] ; then
|
||||
ln -s "${WORKDIR}/OpenImageIO-images-${TEST_OIIO_IMAGE_COMMIT}" "${WORKDIR}/oiio-images" || die
|
||||
ln -s "${WORKDIR}/openexr-images-${TEST_OEXR_IMAGE_COMMIT}" "${WORKDIR}/openexr-images" || die
|
||||
fi
|
||||
|
||||
if use fits; then
|
||||
mkdir -p "${WORKDIR}/fits-images/"{ftt4b,pg93} || die
|
||||
@ -193,7 +200,7 @@ src_prepare() {
|
||||
fi
|
||||
|
||||
cp testsuite/heif/ref/out-libheif1.1{2,5}-orient.txt || die
|
||||
# eapply "${FILESDIR}/${PN}-2.5.12.0_heif_test.patch"
|
||||
# eapply "${FILESDIR}/${PN}-2.5.12.0_heif_test.patch"
|
||||
fi
|
||||
|
||||
mkdir "${T}/cmake" || die
|
||||
@ -212,7 +219,7 @@ src_prepare() {
|
||||
set(WEBP_LIBRARIES "\${WebP_LIBRARIES}")
|
||||
|
||||
# Create imported target WebP::sharpyuv
|
||||
add_library(WebP::sharpyuv STATIC IMPORTED)
|
||||
add_library(WebP::sharpyuv SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::sharpyuv PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR};\${WebP_INCLUDE_DIR}/webp"
|
||||
@ -220,29 +227,29 @@ src_prepare() {
|
||||
)
|
||||
|
||||
# Create imported target WebP::webp
|
||||
add_library(WebP::webp STATIC IMPORTED)
|
||||
add_library(WebP::webp SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::webp PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::sharpyuv;Threads::Threads;m"
|
||||
)
|
||||
|
||||
# Create imported target WebP::webpmux
|
||||
add_library(WebP::webpmux STATIC IMPORTED)
|
||||
|
||||
set_target_properties(WebP::webpmux PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::webp;m"
|
||||
)
|
||||
|
||||
# Create imported target WebP::webpdemux
|
||||
add_library(WebP::webpdemux STATIC IMPORTED)
|
||||
add_library(WebP::webpdemux SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::webpdemux PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::webp"
|
||||
)
|
||||
|
||||
# Create imported target WebP::libwebpmux
|
||||
add_library(WebP::libwebpmux SHARED IMPORTED)
|
||||
|
||||
set_target_properties(WebP::libwebpmux PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "\${WebP_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "WebP::webp"
|
||||
)
|
||||
|
||||
# Import target "WebP::webp" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::webp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::webp PROPERTIES
|
||||
@ -253,16 +260,6 @@ src_prepare() {
|
||||
list(APPEND _cmake_import_check_targets WebP::webp )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::webp "${libdir}/libwebp.so" )
|
||||
|
||||
# Import target "WebP::webpmux" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::webpmux APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::webpmux PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libwebpmux.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::webpmux )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::webpmux "${libdir}/libwebpmux.so" )
|
||||
|
||||
# Import target "WebP::webpdemux" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::webpdemux APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::webpdemux PROPERTIES
|
||||
@ -283,6 +280,16 @@ src_prepare() {
|
||||
list(APPEND _cmake_import_check_targets WebP::sharpyuv )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::sharpyuv "${libdir}/libsharpyuv.so" )
|
||||
|
||||
# Import target "WebP::libwebpmux" for configuration "RelWithDebInfo"
|
||||
set_property(TARGET WebP::libwebpmux APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO)
|
||||
set_target_properties(WebP::libwebpmux PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "C"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${libdir}/libwebpmux.so"
|
||||
)
|
||||
|
||||
list(APPEND _cmake_import_check_targets WebP::libwebpmux )
|
||||
list(APPEND _cmake_import_check_files_for_WebP::libwebpmux "${libdir}/libwebpmux.so" )
|
||||
|
||||
check_required_components(WebP)
|
||||
EOF
|
||||
}
|
||||
@ -335,12 +342,13 @@ src_configure() {
|
||||
-DENABLE_Nuke="no" # not in Gentoo
|
||||
-DENABLE_OpenCV="$(usex opencv)"
|
||||
-DENABLE_OpenJPEG="$(usex jpeg2k)"
|
||||
-DENABLE_OpenJPH="no" # not in Gentoo
|
||||
-DENABLE_OpenVDB="$(usex openvdb)"
|
||||
-DENABLE_TBB="$(usex openvdb)"
|
||||
-DENABLE_Ptex="$(usex ptex)"
|
||||
-DENABLE_TBB="$(usex openvdb)"
|
||||
|
||||
-DENABLE_libuhdr="no" # not in Gentoo
|
||||
-DENABLE_WebP="yes" # missing cmake files
|
||||
-DENABLE_WebP="yes"
|
||||
|
||||
-DOIIO_BUILD_TESTS="$(usex test)"
|
||||
-DOIIO_BUILD_TOOLS="$(usex tools)"
|
||||
@ -414,6 +422,9 @@ src_test() {
|
||||
CMAKE_SKIP_TESTS=(
|
||||
"-broken$"
|
||||
|
||||
"^cmake-consumer$"
|
||||
"^docs-examples-(cpp|python)$"
|
||||
|
||||
"texture-interp-bilinear.batch$"
|
||||
"texture-interp-closest.batch$"
|
||||
"texture-levels-stochaniso.batch$"
|
||||
@ -440,7 +451,7 @@ src_test() {
|
||||
local -x CI=true
|
||||
# local -x OPENIMAGEIO_CUDA=0 # prevent trying to access gpu devices
|
||||
# local -x OIIO_USE_CUDA=0
|
||||
local -x CMAKE_PREFIX_PATH="${T}/usr"
|
||||
local -x CMAKE_MODULE_PATH="${T}/usr"
|
||||
local -x LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH="${T}/usr/$(get_libdir)"
|
||||
# local -x OPENIMAGEIO_DEBUG_FILE
|
||||
Loading…
x
Reference in New Issue
Block a user