Problem compiling 2.83

When I try to compile v2.83 I get the following error from gcc:

blender-git/lib/linux_centos7_x86_64/usd/include/pxr/base/vt/dictionary.h:64:53: error: wrong number of template arguments (0, should be 1)
   64 |     typedef std::map<std::string, VtValue, std::less<>> _Map;

Followed by lots of similar errors.
I have the correct version of the lib dir checked out from svn (precompiled libs). I looked at the date of the v2.83 tag and checked out the corresponding libs from svn.

Does anybody have any experience with this? I’m a bit stumped.
Nothing has changed in that particular header file when I checkout the latest version, but master builds without problems. And I seem to remember having compiled v2.83 at the time without any problems as well. Could it be a compiler version problem?

This is gcc 9.3.0 on ubuntu 20.04.



Hm, after fully building master, then wiping the build dir, checking out 2.83 and rebuilding it suddenly does compile. I don’t understand, but at least I can go on bisecting :slight_smile:

To avoid linker errors from dependencies, turn off the features that you don’t need. Comprehensive list is in blender_lite.cmake and blender_full.cmake.

Assuming you checked the date of 2.83 tag in git:

Libraries are tagged with release versions too.

I have a script which checks the date of the current git HEAD and checks out the corresponding libs from svn for easy bisecting (actually from a local git-svn copy to prevent hammering the svn server).

I’ll check if it matches the the svn v2.83 tag, but I don’t see why it wouldn’t.

fwiw I don’t have any linker errors when compiling v2.83, just the template errors listed above. Which somehow resolved themselves by first doing a complete build of master and then wiping the build dir (?) and then building v2.83. I have no clue what happened there, I expect something with the CMakeCache file?

I do have linker errors when compiling v2.82 or v2.81.
The strange thing is I have all the dependencies installed, but they are somehow not added to the linker commandline in the makefile / ninja file. I can get it a bit further by manually editing the ninja file and adding -lz -lboost -lboos_system -lboost_filesystem to the link command, but there is still some stuff missing (pow_finite IRRC).

But I can do bisects from v2.83 onwards, that’s good enough for now.