commit:     689882aa193d1af9ada257b8b8a759b6edf2ad0e
Author:     Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com>
AuthorDate: Sun Jul 20 19:35:58 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Aug  1 08:22:59 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=689882aa

media-libs/opensubdiv: add 3.6.1

Introduce a subslot to match the SONAME.

Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/43084
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-libs/opensubdiv/Manifest                |   1 +
 media-libs/opensubdiv/opensubdiv-3.6.1.ebuild | 254 ++++++++++++++++++++++++++
 2 files changed, 255 insertions(+)

diff --git a/media-libs/opensubdiv/Manifest b/media-libs/opensubdiv/Manifest
index 83a6e3544845..8554674e2594 100644
--- a/media-libs/opensubdiv/Manifest
+++ b/media-libs/opensubdiv/Manifest
@@ -1 +1,2 @@
 DIST opensubdiv-3.6.0.tar.gz 40746688 BLAKE2B 
23f92fa028ae32b430350998299dab3fbb87b8530755abd435ce059223998a8f3d48de17c746028362fd1d2eee33e8a4c7a55b8cf4083202cfd0b6d27de008c7
 SHA512 
a976733a26e2c0f6510f59d4372b1b33f5404a9d536bcbd6ae3a1a0ffd1bba5495df7108bebc854d5c069575772c97c0d00f0f16f79e87611376ba84e9ae7a4b
+DIST opensubdiv-3.6.1.tar.gz 40745394 BLAKE2B 
1dfb24b22ddc3874e4aaf03feb1944cf91008b52bfcf44f039831f2945f58f9a777903d073748ecc477a2fda0cb46b2f79045489fc0aee77acbcfceb011e1c06
 SHA512 
afc30951642d978c7fd82549f0b03eae7dbf4f28642cf7e42e4a09ac550e111555c391f21dee239d5ee5522b758038d2cc7553fe2db818dad6dcf2ab5fd22358

diff --git a/media-libs/opensubdiv/opensubdiv-3.6.1.ebuild 
b/media-libs/opensubdiv/opensubdiv-3.6.1.ebuild
new file mode 100644
index 000000000000..0a6ded0eefc3
--- /dev/null
+++ b/media-libs/opensubdiv/opensubdiv-3.6.1.ebuild
@@ -0,0 +1,254 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..13} )
+
+inherit cmake cuda flag-o-matic python-any-r1 toolchain-funcs virtualx xdg
+
+MY_PV="$(ver_rs "1-3" '_')"
+
+DESCRIPTION="An Open-Source subdivision surface library"
+HOMEPAGE="https://graphics.pixar.com/opensubdiv/docs/intro.html";
+SRC_URI="https://github.com/PixarAnimationStudios/OpenSubdiv/archive/v${MY_PV}.tar.gz
 -> ${P}.tar.gz"
+S="${WORKDIR}/OpenSubdiv-${MY_PV}"
+
+# Modfied Apache-2.0 license, where section 6 has been replaced.
+# See for example CMakeLists.txt for details.
+LICENSE="Apache-2.0"
+# MATCHES SONAME
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="X cuda doc examples glfw opencl +opengl openmp ptex python tbb test 
tutorials"
+RESTRICT="!test? ( test )"
+
+# TODO needed for stringify due to unwrapped KERNEL_FILES in 
opensubdiv/{far,osd}/CMakeLists.txt
+REQUIRED_USE="
+       || ( opencl opengl )
+       ptex? ( glfw )
+"
+
+BDEPEND="
+       doc? (
+               app-text/doxygen
+               dev-python/docutils
+       )
+       python? ( ${PYTHON_DEPS} )
+"
+
+# opengl requires GLX, libglvnd[X]
+RDEPEND="
+       examples? (
+               opengl? (
+                       glfw? (
+                               >=media-libs/glfw-3.4[X?]
+                       )
+               )
+       )
+       opengl? ( media-libs/libglvnd[X] )
+       opencl? ( virtual/opencl )
+       openmp? ( || (
+               sys-devel/gcc:*[openmp]
+               llvm-runtimes/openmp
+       ) )
+       ptex? ( media-libs/ptex )
+       tbb? ( dev-cpp/tbb:= )
+       test? ( >=media-libs/glfw-3.4[X] )
+"
+
+# CUDA_RUNTIME is statically linked
+DEPEND="
+       ${RDEPEND}
+       test? (
+               glfw? (
+                       >=media-libs/glfw-3.4[X?]
+               )
+       )
+       cuda? ( dev-util/nvidia-cuda-toolkit:= )
+"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-3.6.0-use-gnuinstalldirs.patch"
+       "${FILESDIR}/${PN}-3.6.0-cudaflags.patch"
+)
+
+pkg_pretend() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+
+       if use cuda; then
+               # When building binary packages we build all major targets 
unless specified otherwise
+               if [[ -z "${CUDAARCHS+x}" ]]; then
+                       case ${MERGE_TYPE} in
+                               source)    CUDAARCHS="native" ;;
+                               # buildonly) CUDAARCHS="all" ;;
+                               buildonly) CUDAARCHS="all-major" ;;
+                       esac
+               fi
+
+               # check if user provided --gpu-architecture/-arch flag instead 
of CUDAARCHS
+               for f in ${NVCCFLAGS}; do
+                       if [[ ${f} == -arch* || ${f} == --gpu-architecture* ]]; 
then
+                               CUDAARCHS="NVCC"
+                               break
+                       fi
+               done
+
+               if [[ "${CUDAARCHS}" == "NVCC" ]]; then
+                       unset  CUDAARCHS
+               else
+                       export CUDAARCHS
+               fi
+       fi
+}
+
+src_prepare() {
+       cmake_src_prepare
+
+       sed \
+               -e "/install(/s/^/#DONOTINSTALL /g" \
+               -i \
+                       regression/*/CMakeLists.txt \
+                       tools/stringify/CMakeLists.txt \
+               || die
+
+       sed \
+               -e "/install( TARGETS osd_static_[cg]pu/s/^/#DONOTINSTALL /g" \
+               -i \
+                       opensubdiv/CMakeLists.txt \
+               || die
+
+       if use cuda; then
+               # do this little headstand to filter out lto from NVCCFLAGS
+               local CFLAGS_orig="${CFLAGS}" CXXFLAGS_orig="${CXXFLAGS}"
+               filter-lto
+
+               cuda_src_prepare
+
+               CFLAGS="${CFLAGS_orig}"
+               CXXFLAGS="${CXXFLAGS_orig}"
+       fi
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_INSTALL_BINDIR="share/${PN}/bin"
+
+               # DirectX
+               -DNO_DX="yes"
+
+               # MacOS
+               -DNO_MACOS_FRAMEWORK="yes"
+               -DNO_METAL="yes"
+
+               -DNO_DOC="$(usex !doc)"
+               -DNO_EXAMPLES="$(usex !examples)"
+               -DNO_TUTORIALS="$(usex !tutorials)"
+               -DNO_REGRESSION="$(usex !test)"
+               -DNO_TESTS="$(usex !test)"
+
+               -DNO_PTEX="$(usex !ptex)"
+
+               # GUI
+               -DNO_OPENGL="$(usex !opengl)"
+
+               # Backends
+               -DNO_CUDA="$(usex !cuda)"
+               -DNO_OMP="$(usex !openmp)"
+               -DNO_TBB="$(usex !tbb)"
+               -DNO_OPENCL="$(usex !opencl)"
+       )
+
+       if use cuda; then
+               # The old cmake CUDA module doesn't use environment variable to 
initialize flags
+               mycmakeargs+=(
+                       -DCUDA_PROPAGATE_HOST_FLAGS="no"
+                       -DCUDA_NVCC_FLAGS="-forward-unknown-opts ${NVCCFLAGS}"
+               )
+       fi
+
+       if use opencl; then
+               mycmakeargs+=(
+                       # not packaged https://github.com/martijnberger/clew
+                       -DNO_CLEW="yes"
+               )
+       fi
+
+       if use opengl; then
+               mycmakeargs+=(
+                       -DNO_GLTESTS="$(usex !test)"
+                        # GLEW support is unmaintained in favour of their own 
GL handler code.
+                        # Turning this on will lead to crashes when using 
their GPU backend.
+                       -DNO_GLEW="yes"
+                       -DNO_GLFW="$(usex !glfw)"
+               )
+               if use glfw; then
+                       mycmakeargs+=(
+                               -DGLFW_LOCATION="${ESYSROOT}/usr/$(get_libdir)"
+                               -DNO_GLFW_X11="$(usex !X)"
+                       )
+               fi
+       fi
+
+       if use ptex; then
+               mycmakeargs+=(
+                       -DPTEX_LOCATION="${ESYSROOT}/usr/$(get_libdir)"
+               )
+       fi
+
+       if ! use python; then
+               mycmakeargs+=(
+                       -DCMAKE_DISABLE_FIND_PACKAGE_Python="yes"
+               )
+       fi
+
+       cmake_src_configure
+}
+
+src_test() {
+       xdg_environment_reset
+
+       CMAKE_SKIP_TESTS=(
+               # Fails due to CL & CUDA kernels, works outside
+               "glImaging"
+       )
+
+       if ! test -w /dev/dri/card0; then
+               CMAKE_SKIP_TESTS+=(
+                       "osd_regression"
+               )
+       fi
+
+       # "far_tutorial_1_2 breaks with gcc and > -O1"
+       tc-is-gcc && is-flagq '-O@(2|3|fast)' && CMAKE_SKIP_TESTS+=( 
"far_tutorial_1_2" )
+
+       if use cuda; then
+               cuda_add_sandbox -w
+               addpredict /dev/char/
+               addwrite /dev/dri/card0
+               addwrite /dev/dri/renderD128
+               addwrite /dev/udmabuf
+       fi
+
+       virtx cmake_src_test
+
+       if use examples && use opengl && use glfw; then
+
+               local KERNELS=( CPU )
+               use openmp && KERNELS+=( OPENMP )
+               use tbb && KERNELS+=( TBB )
+
+               # use cuda && KERNELS+=( CUDA )
+               # use opencl && KERNELS+=( CL )
+
+               use opengl && use X && KERNELS+=( XFB )
+               use opengl && KERNELS+=( GLSL )
+
+               #Bug https://bugs.gentoo.org/924516
+               virtx "${BUILD_DIR}/bin/glImaging" -w test -l 3 -s 256 256 -a 
-k "$(IFS=","; echo "${KERNELS[*]}")"
+       fi
+}

Reply via email to