Skip to content

feat: Migrate to OpenImageIO 3.x and build it with OpenColorIO#1087

Open
mcoliver wants to merge 1 commit intoAcademySoftwareFoundation:mainfrom
mcoliver:oiio3
Open

feat: Migrate to OpenImageIO 3.x and build it with OpenColorIO#1087
mcoliver wants to merge 1 commit intoAcademySoftwareFoundation:mainfrom
mcoliver:oiio3

Conversation

@mcoliver
Copy link
Contributor

@mcoliver mcoliver commented Jan 27, 2026

OIIO development has moved to v3. Also adding ocio support with oiio.

Linked issues

fixes #893

Summarize your change.

Upgrade OIIO to v3 and build with OCIO

Describe the reason for the change.

OIIO v2 is considered obsolete: https://github.com/AcademySoftwareFoundation/OpenImageIO/releases/tag/v2.5.19.1

Note that this is a patch release for the obsolete 2.5 branch that merely repairs its ability to build under new versions of some dependencies. You need not upgrade if you are not encountering build problems. Except for legacy constraints, everybody should currently be using OIIO 3.0 and testing the beta for 3.1 which will become the new supported branch very soon.

Describe what you have tested and on which operating system.

built locally and tested on macos for 2024 and 2025. Need the Academy's CICD to build for other configs

Add a list of changes, and note any that might need special attention during the review.

It appears OIIO implementation is pretty minimal so I think we should be good but testing on other distros to validate would be appreciated.

If possible, provide screenshots.

OIIO development has moved to v3.  Also adding ocio support with oiio.

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
@mcoliver mcoliver marked this pull request as ready for review January 28, 2026 00:57

# OCIO apps are not needed.
LIST(APPEND _configure_options "-DOCIO_BUILD_APPS=OFF")
LIST(APPEND _configure_options "-DOCIO_INSTALL_EXT_PACKAGES=MISSING")
Copy link
Contributor

@cedrik-fuoco-adsk cedrik-fuoco-adsk Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you add this? Is there a missing dependencies? I don't think it should be needed since OCIO version hasn't changed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html#automated-installation

MISSING is the default so this line is not needed. I was debugging some things on my local machine (issues specifically with yaml-cpp) and had added the line so I could set it to NONE or ALL. Would recommend leaving it for debugging purposes but also understand not adding unnecessary lines.

I defer to your judgement here on what to do. Please let me know which direction you would like to go with.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, that's right. I forgot that it was the default value. We can keep it. It will make the OCIO build more transparent.

@cedrik-fuoco-adsk cedrik-fuoco-adsk added the do not merge Do not merge the PR label Jan 28, 2026
@cedrik-fuoco-adsk
Copy link
Contributor

cedrik-fuoco-adsk commented Jan 28, 2026

Thank you @mcoliver! I added the do not merge label because we won't merge this before mid-february at the very least. We don't want to change dependencies versions before the incoming release.

@cedrik-fuoco-adsk cedrik-fuoco-adsk removed the do not merge Do not merge the PR label Feb 12, 2026
@cedrik-fuoco-adsk
Copy link
Contributor

cedrik-fuoco-adsk commented Feb 12, 2026

Hi @mcoliver,

You will need to add the following to oiio.cmake to fix the issue with OpenJPEG:
LIST(APPEND _configure_options "-DOPENJPEG_VERSION=${RV_DEPS_OPENJPEG_VERSION}")

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the project’s OIIO integration to the v3 series and enables OpenColorIO support in the OIIO dependency build.

Changes:

  • Updated OIIO C++ integration for v3 namespace/API changes (notably read_image and error namespace).
  • Enabled OCIO support in the OIIO external dependency build and wired in the OCIO dependency target.
  • Bumped the pinned OIIO version and download hash in default dependency settings.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

File Description
src/lib/image/IOoiio/IOoiio.cpp Adjusts OIIO namespace usage and updates read_image call for OIIO v3 API.
cmake/dependencies/oiio.cmake Enables OCIO in OIIO build configuration and adds OCIO to dependency list.
cmake/dependencies/ocio.cmake Tweaks OCIO install behavior for external packages.
cmake/defaults/CYCOMMON.cmake Updates pinned OIIO version and associated download hash.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -148,6 +148,7 @@ LIST(APPEND _configure_options "-DZLIB_ROOT=${RV_DEPS_ZLIB_ROOT_DIR}")

# OCIO apps are not needed.
LIST(APPEND _configure_options "-DOCIO_BUILD_APPS=OFF")
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This option can materially change what gets installed/bundled (and may affect licensing/footprint and build reproducibility). Please add a short inline comment explaining why MISSING is required for this project (vs NONE/default), and what external packages are expected to be pulled in under typical CI environments.

Suggested change
LIST(APPEND _configure_options "-DOCIO_BUILD_APPS=OFF")
LIST(APPEND _configure_options "-DOCIO_BUILD_APPS=OFF")
# Use MISSING so OCIO vendors its own third-party deps when not already provided by RV_DEPS (vs NONE/default),
# pinning versions and avoiding ABI/licensing drift with system libs; typical CI pulls in Imath/OpenEXR components,
# yaml-cpp, pystring, expat, lcms2, zlib, and related OCIO external packages.

Copilot uses AI. Check for mistakes.
@cedrik-fuoco-adsk cedrik-fuoco-adsk added the community Contribution from the Open RV Community label Feb 17, 2026
@cedrik-fuoco-adsk
Copy link
Contributor

Hi @mcoliver,

You will need to add the following to oiio.cmake to fix the issue with OpenJPEG: LIST(APPEND _configure_options "-DOPENJPEG_VERSION=${RV_DEPS_OPENJPEG_VERSION}")

Hi @mcoliver, do you have time to fix the issues in the CI? Depending on the platforms, OIIO can not find OCIO or OPENJPEG_VERSION.

@cedrik-fuoco-adsk cedrik-fuoco-adsk changed the title Migrate to OIIO3 and build with OCIO feat: Migrate to OIIO3 and build with OCIO Feb 19, 2026
LIST(APPEND _configure_options "-DBUILD_TESTING=OFF")
LIST(APPEND _configure_options "-DUSE_PYTHON=0") # this on would requireextra pybind11 package
LIST(APPEND _configure_options "-DUSE_OCIO=0")
LIST(APPEND _configure_options "-DUSE_OCIO=ON")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we are using OCIO with OpenRV, is there a reason to add OCIO to OIIO? Is there a specific feature that you needed? @mcoliver

@cedrik-fuoco-adsk cedrik-fuoco-adsk changed the title feat: Migrate to OIIO3 and build with OCIO feat: Migrate to OpenImageIO 3.x and build it with OpenColorIO Feb 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community Contribution from the Open RV Community tracked

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update OIIO to version 3.x

3 participants