CentOS 7 (manylinux) - Build Difficulties

Hi Blender Dev talk forum!

I have been trying to build Blender on a Docker image and things have been progressing up until this point where I am stuck.

Essentially, I am building Blender from sources on the manylinux Docker image. This is a somewhat outdated version of CentOS that does not come with yum install-able Blender dependencies.

When I get to building Blender, I run into an OpenImageIO error, stating that the dist directory created when I built OpenImageIO from sources does not contain the expected header files.

[ 20%] Built target bf_freestyle
Scanning dependencies of target extern_cuew
[ 20%] Building C object extern/cuew/CMakeFiles/extern_cuew.dir/src/cuew.c.o
[ 20%] Linking C static library ../../lib/libextern_cuew.a
[ 20%] Built target extern_cuew
Scanning dependencies of target cycles_subd
[ 20%] Building CXX object intern/cycles/subd/CMakeFiles/cycles_subd.dir/subd_dice.cpp.o
cc1plus: warning: /blenderpy/blender/build/oiio/dist/linux64/include: No such file or directory [- 
Wmissing-include-dirs]
cc1plus: warning: /blenderpy/blender/build/oiio/dist/linux64/include/OpenImageIO: No such file or directory [-Wmissing-include-dirs]
             from /blenderpy/blender/intern/cycles/subd/subd_dice.cpp:17:
/blenderpy/blender/intern/cycles/subd/../util/util_param.h:23:10: fatal error: OpenImageIO/paramlist.h: No such file or directory
23 | #include <OpenImageIO/paramlist.h>
  |          ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [intern/cycles/subd/CMakeFiles/cycles_subd.dir/subd_dice.cpp.o] Error 1
make[1]: *** [intern/cycles/subd/CMakeFiles/cycles_subd.dir/all] Error 2
make: *** [all] Error 2

When I use the OpenImageIO available from yum, I get an error that an OpenImageIO type is not literal, so I figure that the version available on yum is probably pretty outdated.

If someone could help me with this it would be much appreciated since I have been struggling with this one for a while.

Here is my Dockerfile, thanks in advance!

Why write your own code to install and build dependencies? It’s much simpler to use the existing precompiled libraries as recommended by the build instructions.
https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro

Some system libraries will indeed be outdated, some will give build errors, others may fail at runtime, cause renders to be slightly different, or have poor performance. Getting this all correct is hard, I would not recommend even trying unless you have a very specific reason.

1 Like

You’re correct, the precompiled libs are the way to go. My mistake.

The build is still not without its errors though. For some reason I am getting a compilation error still about a quarter of the way in. I guess that is part of the reason that I have been so eager to build some of the pieces myself just on the off chance that it resolves these intermittent issues.

Scanning dependencies of target bf_intern_opensubdiv
[ 28%] Building CXX object intern/opensubdiv/CMakeFiles/bf_intern_opensubdiv.dir/internal/opensubdiv.cc.o
In file included from /blenderpy/blender/intern/opensubdiv/internal/opensubdiv.cc:23:
/blenderpy/blender/extern/glew/include/GL/glew.h:1205:14: fatal error: GL/glu.h: No such file or directory
 1205 | #    include <GL/glu.h>
      |              ^~~~~~~~~~
compilation terminated.
make[3]: *** [intern/opensubdiv/CMakeFiles/bf_intern_opensubdiv.dir/internal/opensubdiv.cc.o] Error 1
make[2]: *** [intern/opensubdiv/CMakeFiles/bf_intern_opensubdiv.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
[ 28%] Building CXX object intern/opencolorio/CMakeFiles/bf_intern_opencolorio.dir/ocio_impl.cc.o
[ 28%] Building CXX object intern/opencolorio/CMakeFiles/bf_intern_opencolorio.dir/ocio_impl_glsl.cc.o
[ 28%] Building C object intern/opencolorio/CMakeFiles/bf_intern_opencolorio.dir/gpu_shader_display_transform.glsl.c.o
[ 28%] Building C object intern/opencolorio/CMakeFiles/bf_intern_opencolorio.dir/gpu_shader_display_transform_vertex.glsl.c.o
[ 28%] Linking CXX static library ../../lib/libbf_intern_opencolorio.a
[ 28%] Built target bf_intern_opencolorio
make[1]: *** [all] Error 2
make: *** [all] Error 2

Maybe related to this?

Quite possible, since you are building 2.82 in the Dockerfile and that fix was committed after 2.82 was released.

This OpenGL header must come from the system in any case, so either the relevant package is not installed, or Blender doesn’t find it.

Ah, okay. When you originally said

I based my script again on the “Generic_Distro” build instructions and only placed in the dependencies listed on the “Building Blender Wiki page”. glew-devel is not listed among the required dependencies. It may be good to list that on the wiki.

Now, the project builds! Thanks so much for your help and guidance @brecht! However, linking the shared module fails, due to the -fpic flag error. I recall getting this all the time when trying to build the Python module.

Click to expand
[100%] Built target bf_intern_cycles
Scanning dependencies of target blender
[100%] Building C object source/creator/CMakeFiles/blender.dir/creator.c.o
[100%] Building C object source/creator/CMakeFiles/blender.dir/creator_args.c.o
[100%] Building C object source/creator/CMakeFiles/blender.dir/creator_signals.c.o
[100%] Building C object source/creator/CMakeFiles/blender.dir/buildinfo.c.o
[100%] Linking CXX shared module ../../bin/bpy.so
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(icv.o): requires dynamic R_X86_64_32 reloc against 'gomp_global_icv' which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(loop.o): requires dynamic R_X86_64_32 reloc against 'gomp_global_icv' which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(parallel.o): requires dynamic R_X86_64_32 reloc against 'gomp_global_icv' which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(task.o): requires unsupported dynamic reloc 11; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): requires dynamic R_X86_64_32 reloc against 'gomp_global_icv' which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): unsupported reloc 23 against global symbol gomp_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(team.o): requires dynamic R_X86_64_32 reloc against 'gomp_free_thread' which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(proc.o): requires dynamic R_X86_64_32 reloc against 'gomp_global_icv' which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(affinity.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(target.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(splay-tree.o): requires dynamic R_X86_64_32 reloc which may 
overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(priority_queue.o): requires dynamic R_X86_64_32 reloc which 
may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(affinity-fmt.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(affinity-fmt.o): requires dynamic R_X86_64_PC32 reloc against 'stderr' which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(alloc.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(env.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(error.o): requires dynamic R_X86_64_PC32 reloc against 'stderr' which may overflow at runtime; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): requires unsupported dynamic reloc 11; recompile with -fPIC
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): unsupported reloc 23 against global symbol goacc_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): unsupported reloc 23 against global symbol goacc_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): unsupported reloc 23 against global symbol goacc_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): unsupported reloc 23 against global symbol goacc_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): unsupported reloc 23 against global symbol goacc_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): unsupported reloc 23 against global symbol goacc_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): unsupported reloc 23 against global symbol goacc_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-init.o): unsupported reloc 23 against global symbol goacc_tls_data
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld.gold: error: /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libgomp.a(oacc-host.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC
collect2: error: ld returned 1 exit status
make[3]: *** [bin/bpy.so] Error 1
make[2]: *** [source/creator/CMakeFiles/blender.dir/all] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2
The command '/bin/sh -c cd blender &&     make bpy' returned a non-zero code: 2

Every time that I check out the Blender libraries from svn I get the ld.gold error.

That usually leads me to try and build all the dependencies directly on the development system, which usually resolves that error but results in more complicated builds.

Is there any way to resolve the ld.gold error on my end?

Thanks in advance!

I’ll add it.

We statically linked OpenMP and other libraries as much as possible for compatibility. But it appears the static OpenMP library from Redhat does not worked in a shared library like bpy, only in executables. Which makes some sense as you would not usually want multiple copies of that library in the same application.

A patch like this may resolve the issue, disabling static OpenMP for the Python module.

diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index 0ef1804..83c4f10 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -57,7 +57,9 @@ if(EXISTS ${LIBDIR})
   # do need to use the official one.
   set(CMAKE_PREFIX_PATH ${LIBDIR}/zlib ${LIB_SUBDIRS})
   set(WITH_STATIC_LIBS ON)
-  set(WITH_OPENMP_STATIC ON)
+  if(NOT WITH_PYTHON_MODULE)
+    set(WITH_OPENMP_STATIC ON)
+  endif()
   set(Boost_NO_BOOST_CMAKE ON)
   set(BOOST_ROOT ${LIBDIR}/boost)
   set(BOOST_LIBRARYDIR ${LIBDIR}/boost/lib)
``
1 Like

HI @brecht ,

With the inclusion of the check for the Python module disabling the linking of OpenMP, there are no more omp link errors, thank you!

However, on Ubuntu, CentOS7 (manylinux), Fedora and Debian I am getting the following error:

Click to expand
[100%] Built target cycles_bvh
Scanning dependencies of target blender
[100%] Building C object source/creator/CMakeFiles/blender.dir/creator.c.o
[100%] Building C object source/creator/CMakeFiles/blender.dir/creator_args.c.o
[100%] Building C object source/creator/CMakeFiles/blender.dir/creator_signals.c.o
[100%] Building C object source/creator/CMakeFiles/blender.dir/buildinfo.c.o
[100%] Linking CXX shared module ../../bin/bpy.so
/usr/bin/ld.gold: error: /blenderpy/lib/linux_centos7_x86_64/mesa/lib/libGL.so:1:6: syntax error, unexpected STRING
/usr/bin/ld.gold: error: /blenderpy/lib/linux_centos7_x86_64/mesa/lib/libGL.so: not an object or archive
collect2: error: ld returned 1 exit status
make[3]: *** [source/creator/CMakeFiles/blender.dir/build.make:413: bin/bpy.so] Error 1
make[2]: *** [CMakeFiles/Makefile2:6419: source/creator/CMakeFiles/blender.dir/all] Error 2
make[1]: *** [Makefile:163: all] Error 2
make: *** [GNUmakefile:313: all] Error 2
The command '/bin/sh -c cd blender &&     make bpy' returned a non-zero code: 2

The closest thing to me that stood out as similar was this error on bugzilla detailing an error with ld itself.

Unfortunately, I don’t really follow the discussion that occurs there… to the point where I think it is probably unrelated but I can’t really be sure.

Thanks for all your help, I really hope over the next few days of me looking at this maybe I can get this last error to go away, too.

Something like this might work.

diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index c5e8893..099d359 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -52,6 +52,9 @@ if(EXISTS ${LIBDIR})
   message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
 
   file(GLOB LIB_SUBDIRS ${LIBDIR}/*)
+  # Ignore Mesa software OpenGL libraries, they are not intended to be
+  # linked against but to optionally override at runtime.
+  list(REMOVE_ITEM LIB_SUBDIRS ${LIBDIR}/mesa)
   # NOTE: Make sure "proper" compiled zlib comes first before the one
   # which is a part of OpenCollada. They have different ABI, and we
   # do need to use the official one.

Note that you need to have OpenGL libraries installed when compiling Blender (libGL.so etc.).

@brecht Thank you, the suggestions are working quite well!

One of the issues that I’m still having though is that when importing bpy on Debian flavored OS I still get an error.

ImportError: /usr/local/lib/python3.7/site-packages/bpy.so: cannot allocate memory in static TLS block

I recall this being a JEMALLOC related thing (?) It’s been a long time since looking at this one admittedly.

This seems to fix it, but I’m not sure what the best methodology for this one is. Do you have any suggestions?

if(WITH_MEM_JEMALLOC)
  find_package_wrapper(JeMalloc)
  if(NOT JEMALLOC_FOUND)
    set(WITH_MEM_JEMALLOC OFF)
  endif()
  if(WITH_PYTHON_MODULE)
    set(WITH_MEM_JEMALLOC OFF)
  endif()
endif()

My understanding is that this could also be circumvented by setting the LD_PRELOAD environment variable but that seems kind of like kludge. I’ll have to look into some other way to get the JEMMALLOC support in there.

Additionally, something strange happens at the end of make bpy, where it installs the 2.91 directory into the location of the pre-compiled libs.

[100%] Linking CXX shared module ../../bin/bpy.so
now run: "make install" to copy runtime files and scripts to /blenderpy/lib/linux_centos7_x86_64/python/lib/python3.7/site-packages/2.91
[100%] Built target blender
Install the project...
-- Install configuration: "Release"
-- Installing: /blenderpy/lib/linux_centos7_x86_64/python/lib/python3.7/site-packages/2.91/scripts
-- Installing: /blenderpy/lib/linux_centos7_x86_64/python/lib/python3.7/site-packages/2.91/scripts/freestyle
-- Installing: /blenderpy/lib/linux_centos7_x86_64/python/lib/python3.7/site-packages/2.91/scripts/freestyle/styles

Is there any way to change that? It would be better for it to not move the 2.91 folder instead of moving it to the wrong place.

The default make bpy configuration disables jemalloc. It’s really up to the host application to define the memory allocator. Shared libraries using different allocators can crash or leak memory, and I don’t think anyone has verified that it’s safe for bpy.

There are docs on the bpy installation here, by default it installs into the Python site packages which is indeed a bit strange with precompiled libraries. I think you can just specify a different location to install to.
https://wiki.blender.org/wiki/Building_Blender/Other/BlenderAsPyModule#Installation

Yes, I saw that in the makefile for bpy but the strange thing is that when doing make bpy default on my Docker container I was still getting the error about static allocation unless I did the change I posted in the previous reply in the Cmake platforms unix file.

For some reason I was not able to avoid getting the “static allocation TLS block” error unless I added what I showed in the previous message, at least not on my Docker images.

@brecht By the way, what would be the best way to add these changes into Blender?

Would posting the diff be sufficient? It seemed to work in my tests.

I am very inexperienced in the development process for Blender but I want to help!

Would posting my testing dockerfiles be of any help?

Posting a diff works. You can link to the docker files for reference, but they should not be submitted as a diff since we wouldn’t integrate them into the Blender source.