Skip to content

Conversation

@mcoliver
Copy link
Contributor

@mcoliver mcoliver commented Nov 12, 2025

Summarize your change.

Moved hardcoded versions for various dependendencies out of individual cmake files and into a centralized file based on CY year. There were also changes made to allow for years beyond 2024 rather than having to hardcode values for each year in various build files throughout the repo.

Describe the reason for the change.

The current codebase has checks for 2023 or 2024 littered across many files and it makes it difficult to understand what needs to be updated for each CY year and where you do it. The code was also difficult to follow with macros defining vars for various years.

With this setup you can create a new CYYEAR.cmake file, copy the old one, update version numbers and even diff between them. It makes it much easier to understand where to go to update packages. Additionally it allows for things like CY2099.cmake which can have the most current releases of packages (perhaps ahead of a CY official designation) for people who like to run the latest dependencies with performance improvements and bug fixes.

Describe what you have tested and on which operating system.

Builds 2023, 2024, and 2025 have been verified on macOS.

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

  • Recently there was an OTIO commit that may conflict with this PR.
  • CY2026 is still experimental. QtWebEngine no longer is packaged with 6.8.3 so we have to go get it.
  • patch files still need to be generated for new versions of openexr and python (though I would love to discuss why the patch file for openexr exists. Covering up bad data in a file with black seems like it could result in confusion for users. The file should be invalid if part of it is invalid.)
  • I also added a helper function to rvcmds to select the CY year you want to build.
  • Finding Qt logic was updated in rvcmds
  • My commit history is messy. I can clean it up if necessary prior to merge but wanted to get this out there before more merge conflicts arise.
  • I did not address CI for building 2025 and 2026. That still needs to be configured.

Other discoveries

RV builds on macOS still want to find things in /opt/homebrew. This can easily cause build errors for users that have things like openexr installed through homebrew. You can see this by greping for /opt/homebrew in the _build directory. I tried various cmake vars to tell cmake to ignore /opt/homebrew but could never seem to get any to work. Additionally there are things in homebrew that the build relies on like xz so you don't want to ignore everything. The problem is if something like openexr4.3.0 is installed with homebrew, cmake for 2024 will attempt to link to that rather than the 3.2 that was compiled for that CY year. For me I had to uninstall a bunch to get the build to work properly

brew uninstall jpeg-xl libheif imagemagick aom openexr openexr openssl boost ffmpeg imath libtiff

The resulting size of the RV.app build is quite large. I believe it can be significantly trimmed down and will do that in a different PR.

If possible, provide screenshots.

@mcoliver mcoliver force-pushed the maint-cmake-move-vars-to-cy-files branch from 943ee25 to b33ee20 Compare November 12, 2025 23:10
Helps clarify and centralize changes between CY years and what each year needs.  Future CY years can be more easily supported by adding a new cmake file for the CY year.

Signed-off-by: Michael Oliver <[email protected]>
Updated the docs to reference the dependencies as listed by the vfx platform

Signed-off-by: Michael Oliver <[email protected]>
Moved numpy version to an env var to conform to vfxplatform.com CY needs.  Minor formating updates as well for readability

Signed-off-by: Michael Oliver <[email protected]>
Makes adding future years easier.  Will need to change when/if qt7 is announced.

Signed-off-by: Michael Oliver <[email protected]>
OpenEXR build will now reference env vars from the CYYEAR.cmake file.  Put in stub files for the patches for each openexr year so the patch command does not fail.  TODO: need to manually go through and create the patches.  After briefly looking at the patch I wonder if using black is the right call here and if we would be better off invalidating the entire frame rather than putting in black for invalid lines.

Signed-off-by: Michael Oliver <[email protected]>
boost, imath, ocio, oiio, abd openssl will now be built based on env vars from the CYYEAR.cmake file

Signed-off-by: Michael Oliver <[email protected]>
Moved some patch files to a subdirectory and put in stub patches for newer versions of python.
TODO: Update the patch files for each python version.

Signed-off-by: Michael Oliver <[email protected]>
standardize with other dependencies that rely on .zip like openexr

Signed-off-by: Michael Oliver <[email protected]>
do not need to set vars that are already established now that we read them from a CY cmake file.

Signed-off-by: Michael Oliver <[email protected]>
TODO Need to generate patch files for newer versions of python to work.  Rolling back for now.

Signed-off-by: Michael Oliver <[email protected]>
added vars for imath version libs

Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
using SET is fine

Signed-off-by: Michael Oliver <[email protected]>
RV was 7.5GB on Release build.  Trying to slim it down.

Signed-off-by: Michael Oliver <[email protected]>
Currently it was setting RV_VFX_PLATFORM based on finding Qt.  The logic should be to set the Qt version based on the CY requirements.  We also need to support 6.8 for CY2026 and the current logic prevented that.  Also added a supporting function to ask for the CY year when sourcing rvcmds if RV_VFX_PLATFORM has not been previously set.

Signed-off-by: Michael Oliver <[email protected]>
need to explicitly pass the env to the python process

Signed-off-by: Michael Oliver <[email protected]>
NumPy from vfxplatform conflicts with PySide2 requirements of < 1.23.  Commenting for future reference

Signed-off-by: Michael Oliver <[email protected]>
fix quoting for patch file

Signed-off-by: Michael Oliver <[email protected]>
Build paths were empty as they were echod before rvrelease was run.  Updating paths ahead of time shows the proper output

Signed-off-by: Michael Oliver <[email protected]>
TODO need to generate these but for now let's leave them out to prevent a "file not found" error when they exist but are empty

Signed-off-by: Michael Oliver <[email protected]>
QT5 or QT6 in env vars is messy and probably not necessary.  We should just be able to set a single location for Qt.  But I'm leaving the others for now just in case.  Should probably get cleaned up though.

Signed-off-by: Michael Oliver <[email protected]>
Probably not needed down the road but adding for now pending future cleanup

Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
…atements. Used QT65 in the event we need different code for QT68

Signed-off-by: Michael Oliver <[email protected]>
… Should probably updated the variable name to be more indicative of the fact that it's specific to the Qt version but for now will leave it.

Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
These are pretty common vars needed for setting library names.  Could use more robust logic here as sometimes versions are passed that have underscores X_X or non standard X.X.X version numbering schemes.

Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
@mcoliver
Copy link
Contributor Author

mcoliver commented Nov 14, 2025 via email

Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
@cedrik-fuoco-adsk
Copy link
Contributor

Personally, I think it is manageable and I like having everything in one go. What do you think @eloisebrosseau

@mcoliver Can you really do that for FFmpeg? We have special logic to set the right names for all the FFmpeg librairies. How are you going to handle that with any FFmpeg version?

We'd like the specific CYXXX.cmake to overwrite the versions in CYCOMMON.cmake if needed.

Signed-off-by: Michael Oliver <[email protected]>
Signed-off-by: Michael Oliver <[email protected]>
copy and paste got me again

Signed-off-by: Michael Oliver <[email protected]>
Cleans up the ffmpeg.cmake file and moves lib versions to cycommon

Signed-off-by: Michael Oliver <[email protected]>
needs a v

Signed-off-by: Michael Oliver <[email protected]>
@mcoliver
Copy link
Contributor Author

I believe this should resolve #821 #822 #823

@cedrik-fuoco-adsk
Copy link
Contributor

cedrik-fuoco-adsk commented Nov 26, 2025

Hi @mcoliver,

Do you have time to resolved the conflict? It's due to a recent commit that changed python3.cmake (ce64696)

We should have time to test this internally soon.

@cedrik-fuoco-adsk
Copy link
Contributor

We tested it locally, and we are ready to merge it. It would be great if you have time to fix the conflicts. @mcoliver

If you don't have time, I can take care of it, but I'll need to create a new PR since I won't be able to write in your branch.

@mcoliver
Copy link
Contributor Author

We tested it locally, and we are ready to merge it. It would be great if you have time to fix the conflicts. @mcoliver

If you don't have time, I can take care of it, but I'll need to create a new PR since I won't be able to write in your branch.

Conflicts resolved

Copy link
Contributor

@cedrik-fuoco-adsk cedrik-fuoco-adsk left a comment

Choose a reason for hiding this comment

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

Thank you @mcoliver for the great contribution!

Copy link
Contributor

@bernie-laberge bernie-laberge left a comment

Choose a reason for hiding this comment

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

LGTM

@cedrik-fuoco-adsk cedrik-fuoco-adsk merged commit 29db6a5 into AcademySoftwareFoundation:main Nov 27, 2025
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants