Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Apr 2026 15:32:13 +0000
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: ccd3e7a78854 - main - graphics/appleseed: try to unbreak the build against OpenImageIO 3.x
Message-ID:  <69ee2ffd.3f90f.6af3c9f7@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by danfe:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ccd3e7a7885480e535aeacf193243f215b94cc82

commit ccd3e7a7885480e535aeacf193243f215b94cc82
Author:     Alexey Dokuchaev <danfe@FreeBSD.org>
AuthorDate: 2026-04-26 15:29:44 +0000
Commit:     Alexey Dokuchaev <danfe@FreeBSD.org>
CommitDate: 2026-04-26 15:29:44 +0000

    graphics/appleseed: try to unbreak the build against OpenImageIO 3.x
    
    ... and other modern APIs (Boost and libstdc++).  Now requires C++17.
---
 graphics/appleseed/Makefile                        |  26 ++++-
 graphics/appleseed/files/patch-oiio-cxx-std-14     |   4 +-
 graphics/appleseed/files/patch-oiiotexturesystem   | 123 +++++++++++++++++++++
 ...dering_final_texturecontrolledpixelrenderer.cpp |   9 ++
 4 files changed, 158 insertions(+), 4 deletions(-)

diff --git a/graphics/appleseed/Makefile b/graphics/appleseed/Makefile
index a9b98309da64..062301f55c59 100644
--- a/graphics/appleseed/Makefile
+++ b/graphics/appleseed/Makefile
@@ -13,8 +13,6 @@ WWW=		https://appleseedhq.net/
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE.txt
 
-BROKEN=		fails to build with Boost>=1.87
-
 LIB_DEPENDS=	libboost_thread.so:devel/boost-libs \
 		liblz4.so:archivers/liblz4 \
 		libpng.so:graphics/png \
@@ -89,6 +87,30 @@ post-patch:
                 ${WRKSRC}/src/appleseed/foundation/image/color.h
 	@${REINPLACE_CMD} -e '/return Product/s,trt\.derived(),trt,' \
 		${WRKSRC}/src/thirdparty/bcd/ext/eigen/Eigen/src/Core/Transpositions.h
+	@${REINPLACE_CMD} -e 's/impl->m_input->read_image(/&0, 0, 0, -1,/' \
+		${WRKSRC}/src/appleseed/foundation/image/genericprogressiveimagefilereader.cpp
+	@${REINPLACE_CMD} -e 's/clamp(/foundation::&/' \
+		${WRKSRC}/src/appleseed/renderer/kernel/lighting/lighttree.cpp \
+		${WRKSRC}/src/appleseed/renderer/kernel/shading/closures.cpp \
+		${WRKSRC}/src/appleseed/renderer/modeling/bsdf/glassbsdf.cpp \
+		${WRKSRC}/src/appleseed/renderer/modeling/environmentedf/hosekenvironmentedf.cpp \
+		${WRKSRC}/src/appleseed/renderer/modeling/environmentedf/preethamenvironmentedf.cpp \
+		${WRKSRC}/src/appleseed/renderer/modeling/input/texturesource.cpp \
+		${WRKSRC}/src/appleseed/renderer/modeling/postprocessingstage/colormappostprocessingstage.cpp \
+		${WRKSRC}/src/appleseed/renderer/utility/transformsequence.cpp \
+		${WRKSRC}/src/appleseed.studio/utility/widgetzoomhandler.cpp
+	@${REINPLACE_CMD} -e 's/TypeDesc::Type/Type/' \
+		${WRKSRC}/src/appleseed/renderer/kernel/rendering/final/texturecontrolledpixelrenderer.cpp \
+		${WRKSRC}/src/appleseed/renderer/kernel/rendering/rendererservices.cpp \
+		${WRKSRC}/src/appleseed/renderer/modeling/postprocessingstage/renderstamppostprocessingstage.cpp \
+		${WRKSRC}/src/appleseed/renderer/modeling/shadergroup/shaderparam.cpp \
+		${WRKSRC}/src/appleseed/renderer/modeling/shadergroup/shaderquery.cpp
+	@${REINPLACE_CMD} -e 's/using OSL::TypeDesc/&, OSL::TypeColor, OSL::TypeFloat, OSL::TypeInt, OSL::TypeString, OSL::TypeVector/' \
+		${WRKSRC}/src/appleseed/renderer/kernel/shading/closures.cpp
+	@${REINPLACE_CMD} -e '/OSL::ShadingSystem(/s,texturesystem,&->get(),' \
+		${WRKSRC}/src/appleseed/renderer/kernel/shading/oslshadingsystem.cpp
+	@${REINPLACE_CMD} -e 's/filesystem::path/bf::path/' \
+		${WRKSRC}/src/appleseed/renderer/modeling/project/projectfilewriter.cpp
 
 .include <bsd.port.mk>
 
diff --git a/graphics/appleseed/files/patch-oiio-cxx-std-14 b/graphics/appleseed/files/patch-oiio-cxx-std-14
index e1459aef5764..2c54de738e37 100644
--- a/graphics/appleseed/files/patch-oiio-cxx-std-14
+++ b/graphics/appleseed/files/patch-oiio-cxx-std-14
@@ -4,7 +4,7 @@
  )
  
  set_target_properties (appleseed.studio PROPERTIES FOLDER "Applications")
-+set_target_properties (appleseed.studio PROPERTIES CXX_STANDARD 14)
++set_target_properties (appleseed.studio PROPERTIES CXX_STANDARD 17)
  
  if (WIN32)
      set_target_properties (appleseed.studio PROPERTIES
@@ -14,7 +14,7 @@
  )
  
  set_target_properties (appleseed PROPERTIES FOLDER "Core")
-+set_target_properties (appleseed PROPERTIES CXX_STANDARD 14)
++set_target_properties (appleseed PROPERTIES CXX_STANDARD 17)
  
  if (USE_VISIBILITY_MAP)
      set_target_properties (appleseed PROPERTIES
diff --git a/graphics/appleseed/files/patch-oiiotexturesystem b/graphics/appleseed/files/patch-oiiotexturesystem
new file mode 100644
index 000000000000..f333cac5a371
--- /dev/null
+++ b/graphics/appleseed/files/patch-oiiotexturesystem
@@ -0,0 +1,123 @@
+--- src/appleseed/renderer/device/cpu/cpurenderdevice.cpp.orig
++++ src/appleseed/renderer/device/cpu/cpurenderdevice.cpp
+@@ -69,12 +69,12 @@
+ 
+     RENDERER_LOG_DEBUG("creating oiio texture system...");
+     m_texture_system = OIIOTextureSystemFactory::create(false);
+-    m_texture_system->attribute("automip", 0);
+-    m_texture_system->attribute("accept_untiled", 1);
+-    m_texture_system->attribute("accept_unmipped", 1);
+-    m_texture_system->attribute("gray_to_rgb", 1);
+-    m_texture_system->attribute("latlong_up", "y");
+-    m_texture_system->attribute("flip_t", 1);
++    (*m_texture_system)->attribute("automip", 0);
++    (*m_texture_system)->attribute("accept_untiled", 1);
++    (*m_texture_system)->attribute("accept_unmipped", 1);
++    (*m_texture_system)->attribute("gray_to_rgb", 1);
++    (*m_texture_system)->attribute("latlong_up", "y");
++    (*m_texture_system)->attribute("flip_t", 1);
+ 
+     m_renderer_services =
+         new RendererServices(
+@@ -116,7 +116,7 @@
+     m_shading_system->release();
+     delete m_renderer_services;
+ 
+-    const string stats = m_texture_system->getstats();
++    const string stats = (*m_texture_system)->getstats();
+     const string modified_stats = prefix_all_lines(trim_both(stats), "oiio: ");
+     RENDERER_LOG_DEBUG("%s", modified_stats.c_str());
+ 
+@@ -147,20 +147,20 @@
+         pretty_size(texture_cache_size_bytes).c_str());
+     const float texture_cache_size_mb =
+         static_cast<float>(texture_cache_size_bytes) / (1024 * 1024);
+-    m_texture_system->attribute("max_memory_MB", texture_cache_size_mb);
++    (*m_texture_system)->attribute("max_memory_MB", texture_cache_size_mb);
+ 
+     // Set OIIO search paths.
+     string prev_oiio_search_path;
+-    m_texture_system->getattribute("searchpath", prev_oiio_search_path);
++    (*m_texture_system)->getattribute("searchpath", prev_oiio_search_path);
+     if (prev_oiio_search_path != project_search_paths)
+     {
+         RENDERER_LOG_INFO("setting oiio search paths to %s", project_search_paths.c_str());
+-        m_texture_system->invalidate_all(true);
+-        m_texture_system->attribute("searchpath", project_search_paths);
++        (*m_texture_system)->invalidate_all(true);
++        (*m_texture_system)->attribute("searchpath", project_search_paths);
+     }
+ 
+     // Also use the project search paths to look for OpenImageIO plugins.
+-    m_texture_system->attribute("plugin_searchpath", project_search_paths);
++    (*m_texture_system)->attribute("plugin_searchpath", project_search_paths);
+ 
+     // Initialize OSL.
+     m_renderer_services->initialize(m_texture_store);
+--- src/appleseed/renderer/kernel/texturing/oiiotexturesystem.cpp.orig
++++ src/appleseed/renderer/kernel/texturing/oiiotexturesystem.cpp
+@@ -32,15 +32,18 @@
+ namespace renderer
+ {
+ 
++OIIOTextureSystem::OIIOTextureSystem(const bool shared)
++  : ts(OIIO::TextureSystem::create(shared)) {}
++
+ void OIIOTextureSystem::release()
+ {
+-    OIIO::TextureSystem::destroy(
+-        reinterpret_cast<OIIO::TextureSystem*>(this));
++    OIIO::TextureSystem::destroy(ts);
++    delete this;
+ }
+ 
+ OIIOTextureSystem* OIIOTextureSystemFactory::create(const bool shared)
+ {
+-    return reinterpret_cast<OIIOTextureSystem*>(OIIO::TextureSystem::create(shared));
++    return new OIIOTextureSystem(shared);
+ }
+ 
+ }   // namespace renderer
+--- src/appleseed/renderer/kernel/texturing/oiiotexturesystem.h.orig
++++ src/appleseed/renderer/kernel/texturing/oiiotexturesystem.h
+@@ -37,14 +37,15 @@
+ {
+ 
+ class OIIOTextureSystem
+-  : public OIIO::TextureSystem
+ {
+   public:
++    OIIOTextureSystem(const bool shared);
++    auto operator->() const noexcept { return ts.get(); }
++    auto get() const noexcept { return ts.get(); }
+     void release();
+ 
+   private:
+-    // Needed by gcc 8.
+-    void operator delete(void*) {}
++    std::shared_ptr<OIIO::TextureSystem> ts;
+ };
+ 
+ class OIIOTextureSystemFactory
+--- src/appleseed/renderer/meta/tests/test_environmentedf.cpp.orig
++++ src/appleseed/renderer/meta/tests/test_environmentedf.cpp
+@@ -195,7 +195,7 @@ TEST_SUITE(Renderer_Modeling_EnvironmentEDF)
+           , m_texture_system(
+                 OIIOTextureSystemFactory::create(),
+                 [](OIIOTextureSystem* object) { object->release(); })
+-          , m_renderer_services(Base::m_project, *m_texture_system)
++          , m_renderer_services(Base::m_project, *m_texture_system->get())
+           , m_shading_system(
+                 OSLShadingSystemFactory::create(&m_renderer_services, m_texture_system.get()),
+                 [](OSLShadingSystem* object) { object->release(); })
+--- src/appleseed/renderer/meta/tests/test_volume.cpp.orig
++++ src/appleseed/renderer/meta/tests/test_volume.cpp
+@@ -96,7 +96,7 @@ TEST_SUITE(Renderer_Modeling_Volume)
+           , m_texture_system(
+               OIIOTextureSystemFactory::create(),
+               [](OIIOTextureSystem* object) { object->release(); })
+-          , m_renderer_services(base.m_project, *m_texture_system)
++          , m_renderer_services(base.m_project, *m_texture_system->get())
+           , m_shading_system(
+               OSLShadingSystemFactory::create(&m_renderer_services, m_texture_system.get()),
+               [](OSLShadingSystem* object) { object->release(); })
diff --git a/graphics/appleseed/files/patch-src_appleseed_renderer_kernel_rendering_final_texturecontrolledpixelrenderer.cpp b/graphics/appleseed/files/patch-src_appleseed_renderer_kernel_rendering_final_texturecontrolledpixelrenderer.cpp
index 5f36bf4e1e28..16e40cfc654e 100644
--- a/graphics/appleseed/files/patch-src_appleseed_renderer_kernel_rendering_final_texturecontrolledpixelrenderer.cpp
+++ b/graphics/appleseed/files/patch-src_appleseed_renderer_kernel_rendering_final_texturecontrolledpixelrenderer.cpp
@@ -8,3 +8,12 @@
  #include "OpenImageIO/typedesc.h"
  #include "foundation/platform/_endoiioheaders.h"
  
+@@ -321,7 +322,7 @@ bool TextureControlledPixelRendererFactory::load_textu
+ {
+     // Create a new dedicated ImageCache instead of using the global ImageCache.
+     // This is to prevent errors during ImageBuf access if the file behind tex_path was overwritten on disk.
+-    ImageCache* image_cache = ImageCache::create();
++    auto image_cache = ImageCache::create();
+     std::unique_ptr<ImageBuf> texture(new ImageBuf(texture_path, 0, 0, image_cache));
+ 
+     // Force the read to immediately do the entire disk I/O for the file.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69ee2ffd.3f90f.6af3c9f7>