Page MenuHome

Build: upgrade to OpenEXR 2.4.0, OpenVDB 7.0.0 and Boost 1.70.0
ClosedPublic

Authored by Brecht Van Lommel (brecht) on Jan 15 2020, 6:36 PM.

Details

Summary

This aligns with the VFX reference platform 2020, see T68774.

Only tested on Linux and even there are some link errors related to IlmBase
namespace, but this is all I have time for today. For OpenEXR this switches
from autoconf to CMake since the latter was removed, doing the same for IlmBase
may help. I can try that tomorrow.

Diff Detail

Repository
rB Blender

Event Timeline

Ray molenkamp (LazyDodo) updated this revision to Diff 20872.EditedJan 15 2020, 11:22 PM
  • Various windows build fixes
  • Add env var to skip building debug libs on windows (just to speed up testing cmake changes)
  • Fix hard-coded version boost include dir
  • Fix/cleanup openexr/ilmbase building, cleaned up a ton of unused variables there and added some others that were missing.

Haven't gotten around to actually linking this with blender yet, but I'm out of time for the day and I very much like to not duplicate our efforts here given it is a wee bit of a time vampire.

known issues: openvdb still has issues finding ilmbase

For future lib updates perhaps a temp branch may be easier to manage rather than having a shared diff between the platform devs?

CMake Warning at openvdb/CMakeLists.txt:89 (message):
  The version of Blosc located is greater than 1.5.  There have been reported
  issues with using later versions of Blosc with OpenVDB.  OpenVDB has been
  tested fully against Blosc 1.5, it is recommended that you use this version
  where possible.
`

Do we want to downgrade to 1.5? (Release date November 2014) ?

Ray molenkamp (LazyDodo) updated this revision to Diff 20875.EditedJan 16 2020, 4:09 AM

Some OpenVDB updates, getitng closer to actually building on windows, main isuses

  1. The headers ilmbase outputs do not have version information in them, the ones in the openexr folder do - fixed by looking in the openexr folder
  2. the libraries live in the openexr folder anyhow - fixed by setting path to them directly
  3. the findopenexr/ilmbase cmake files, did not expect the _s postfix for the libs - fixed with patch
  4. It Really really really really wants to build a shared lib, I remedied some of it but they scattered add_definitions(-DOPENVDB_DLL) all over the place like it's candy more will need to be done there. - not fixed yet.
CMake Warning at openvdb/CMakeLists.txt:89 (message):
  The version of Blosc located is greater than 1.5.  There have been reported
  issues with using later versions of Blosc with OpenVDB.  OpenVDB has been
  tested fully against Blosc 1.5, it is recommended that you use this version
  where possible.
`

Do we want to downgrade to 1.5? (Release date November 2014) ?

Oh, I misread that as 1.15. It seems we should downgrade to 1.5 indeed.

  • Build IlmBase and OpenEXR together, simplifies things a lot.
  • Downgrade Blosc to 1.5.

Dependencies now build for me, but I'm still getting linking errors when building
Blender: error: undefined reference to 'uncompress'.

@Ray molenkamp (LazyDodo), feel free to make further edits as needed, the fix for the Blender linking issue is unlikely to conflict with what you need to do.

Maybe a branch would have been easier, though I also find it nice to have discussion and code all together here.

Ray molenkamp (LazyDodo) updated this revision to Diff 20905.EditedJan 16 2020, 8:02 PM
  • fixes: openxr adds it's own _d to debug libs, confusing every consumer we had
  • cleanup: no need to build the openvdb binaries
  • cleanup: openvdb removed unused cmake variables.
  • fixes: openvdb replaced -DOPENVDB_DLL with -DOPENVDB_STATICLIB this was hard-coded in the cmake files, lovely.
  • fixes: blender updates to the windows platform file for the new boost version
  • fixes: extern mantaflow integration in blender needed a -DDOPENVDB_STATICLIB
  • fixes: intern openvdb integration in blender needed M_PI to be available, added -D_USE_MATH_DEFINES
  • added: dependencies.dot to keep track of what depends on what, given when a dep changes for safety we rebuild/update all that depends on it (we ran into issues with a mismatch between libpng and oiio once) and by my math with this update the following libs should be updated for all platforms in svn.

*OpenExr
*OpenImageIO
*OSL
*OpenVDB
*Boost
*USD
*Alembic
*OpenColorIO

since USD is in there I'd like to land D6563 first, so I don't have to update the lib twice.

builds and passes tests with vs2019/msvc, I still need to validate clang/ninja/2017 support in all it's wonderful permutations before this can land.

here's the dot file in image form (didn't want to add a binary to git)

  • Merge remote-tracking branch 'origin/master' into arcpatch-D6593_1

Got 1 failing test on clang but that is unrelated to the lib update. lgtm however some coordination may be required so that when this lands the libs get to svn around the same time so people don't have build errors.

This revision is now accepted and ready to land.Jan 17 2020, 5:37 AM
  • Update install_deps.sh script to match expected dependencies versions.

Updated also install_deps.sh, things look good for me here.

Fix OpenVDB build on macOS.

I can commit this Monday morning to blender-v2.82-release, but leaving out the change to platform_win32.cmake so Windows still builds with the old libraries.

Then @Ray molenkamp (LazyDodo) can commit the new Windows libraries together with the platform_win32.cmake change.