Unable to run blender 2.80 in RHEL/CentOS 7


#1

I can no longer test Blender 2.80 because of the glibc update. Now I try to compile and it works badly :slight_smile: I’m not going to give up, but it would be nice if anyone could tell if it’s possible at all?

This is my comment from Blender Today on YouTube (https://youtu.be/dkWMSiCAK3I?t=3m48s)
“Very, very, very old Linux”? Like the latest release from Red Hat? :slight_smile: We use RHEL 7.5 and CentOS 7.5 and can no longer test Blender 2.80 because of the glibc update. Can anyone guide us to a bug, wiki or similar with the goal of getting Blender 2.80 (from buildbot/latest builds) to work in the latest RHEL/CentOS (precompiled or from source)?


#2

Blender is intended to compile on RHEL 7.5, but perhaps something is broken or a package is missing or so.

I suggest to follow the build instructions, and then if there are any errors along the way to show the build logs with the errors in this thread.
https://wiki.blender.org/wiki/Building_Blender/Linux


#3

Thx! I’m using CentOS 7.5 and run this command.

./blender/build_files/build_environment/install_deps.sh

Here is the error message.

[...]
Unpacking ILMBase-2.3.0
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

BUILD_SHARED_LIBS
NAMESPACE_VERSIONING


-- Build files have been written to: /home/administrator/src/blender-deps/ILMBase-2.3.0/build
Scanning dependencies of target toFloat
Scanning dependencies of target eLut
[ 50%] Building CXX object Half/CMakeFiles/eLut.dir/eLut.cpp.o
[ 50%] Building CXX object Half/CMakeFiles/toFloat.dir/toFloat.cpp.o
[ 75%] Linking CXX executable eLut
[100%] Linking CXX executable toFloat
[100%] Built target eLut
[100%] Built target toFloat
[ 50%] Built target toFloat
[100%] Built target eLut
Install the project...
-- Install configuration: "Release"
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IlmBaseConfig.h
-- Installing: /tmp/ilmbase-2.3.0/lib/pkgconfig/IlmBase.pc
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/half.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/halfFunction.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/halfExport.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/halfLimits.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexBaseExc.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexMathExc.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexThrowErrnoExc.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexErrnoExc.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexMacros.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/Iex.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexNamespace.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexExport.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexForward.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexMathFloatExc.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexMathFpu.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IexMathIeeeExc.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathBoxAlgo.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathBox.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathColorAlgo.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathColor.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathEuler.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathExc.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathExport.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathForward.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathFrame.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathFrustum.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathFrustumTest.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathFun.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathGL.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathGLU.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathHalfLimits.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathInt64.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathInterval.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathLimits.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathLineAlgo.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathLine.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathMath.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathMatrixAlgo.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathMatrix.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathNamespace.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathPlane.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathPlatform.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathQuat.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathRandom.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathRoots.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathShear.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathSphere.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathVecAlgo.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/ImathVec.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IlmThreadPool.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IlmThread.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IlmThreadSemaphore.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IlmThreadMutex.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IlmThreadNamespace.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IlmThreadExport.h
-- Installing: /tmp/ilmbase-2.3.0/include/OpenEXR/IlmThreadForward.h
Done compiling ILMBase-2.3.0!

Building OpenEXR-2.3.0
Ensuring /opt/lib exists and is writable by us
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
ILMBASE_PACKAGE_PREFIX = /tmp/ilmbase
-- Performing Test HAVE_GCC_INLINE_ASM_AVX
-- Performing Test HAVE_GCC_INLINE_ASM_AVX - Success
-- Performing Test HAVE_SYSCONF_NPROCESSORS_ONLN
-- Performing Test HAVE_SYSCONF_NPROCESSORS_ONLN - Success
-- Configuring done
CMake Error at IlmImf/CMakeLists.txt:51 (ADD_EXECUTABLE):
  Target "dwaLookups" links to target "IlmBase::Half" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?


CMake Error at IlmImf/CMakeLists.txt:51 (ADD_EXECUTABLE):
  Target "dwaLookups" links to target "IlmBase::IlmThread" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at IlmImf/CMakeLists.txt:51 (ADD_EXECUTABLE):
  Target "dwaLookups" links to target "IlmBase::Iex" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?


CMake Error at IlmImf/CMakeLists.txt:19 (ADD_EXECUTABLE):
  Target "b44ExpLogTable" links to target "IlmBase::Half" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at IlmImf/CMakeLists.txt:19 (ADD_EXECUTABLE):
  Target "b44ExpLogTable" links to target "IlmBase::IlmThread" but the target
  was not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at IlmImf/CMakeLists.txt:19 (ADD_EXECUTABLE):
  Target "b44ExpLogTable" links to target "IlmBase::Iex" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at IlmImfExamples/CMakeLists.txt:3 (ADD_EXECUTABLE):
  Target "IlmImfExamples" links to target "OpenEXR::IlmImf" but the target
  was not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at IlmImfExamples/CMakeLists.txt:3 (ADD_EXECUTABLE):
  Target "IlmImfExamples" links to target "IlmBase::Half" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at IlmImfExamples/CMakeLists.txt:3 (ADD_EXECUTABLE):
  Target "IlmImfExamples" links to target "IlmBase::Iex" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at IlmImfExamples/CMakeLists.txt:3 (ADD_EXECUTABLE):
  Target "IlmImfExamples" links to target "IlmBase::Imath" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at IlmImfExamples/CMakeLists.txt:3 (ADD_EXECUTABLE):
  Target "IlmImfExamples" links to target "IlmBase::IlmThread" but the target
  was not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

BUILD_SHARED_LIBS
NAMESPACE_VERSIONING


-- Build files have been written to: /home/administrator/src/blender-deps/OpenEXR-2.3.0/build
Scanning dependencies of target b44ExpLogTable
Scanning dependencies of target dwaLookups
Scanning dependencies of target IlmImfExamples
[  7%] Building CXX object IlmImf/CMakeFiles/b44ExpLogTable.dir/b44ExpLogTable.cpp.o
[ 15%] Building CXX object IlmImf/CMakeFiles/dwaLookups.dir/dwaLookups.cpp.o
/home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImf/b44ExpLogTable.cpp:52:18: fatal error: half.h: No such file or directory
 #include <half.h>
              ^
compilation terminated.
[ 23%] Building CXX object IlmImfExamples/CMakeFiles/IlmImfExamples.dir/drawImage.cpp.o
[ 30%] Building CXX object IlmImfExamples/CMakeFiles/IlmImfExamples.dir/generalInterfaceExamples.cpp.o
make[2]: *** [IlmImf/CMakeFiles/b44ExpLogTable.dir/b44ExpLogTable.cpp.o] Error 1
make[1]: *** [IlmImf/CMakeFiles/b44ExpLogTable.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
In file included from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfHeader.h:50:0,
             from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfRgbaFile.h:50,
             from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/drawImage.h:37,
             from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/drawImage.cpp:48:
/home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfInt64.h:44:24: fatal error: ImathInt64.h: No such file or directory
 #include "ImathInt64.h"
                    ^
[ 38%] Building CXX object IlmImfExamples/CMakeFiles/IlmImfExamples.dir/generalInterfaceTiledExamples.cpp.o
compilation terminated.
In file included from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfHeader.h:50:0,
             from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfOutputFile.h:46,
             from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/generalInterfaceExamples.cpp:45:
/home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfInt64.h:44:24: fatal error: ImathInt64.h: No such file or directory
 #include "ImathInt64.h"
                    ^
compilation terminated.
/home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImf/dwaLookups.cpp:51:18: fatal error: half.h: No such file or directory
 #include <half.h>
              ^
compilation terminated.
In file included from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfHeader.h:50:0,
             from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfTiledOutputFile.h:45,
             from /home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/generalInterfaceTiledExamples.cpp:44:
/home/administrator/src/blender-deps/OpenEXR-2.3.0/IlmImfExamples/../IlmImf/ImfInt64.h:44:24: fatal error: ImathInt64.h: No such file or directory
 #include "ImathInt64.h"
                    ^
compilation terminated.
make[2]: *** [IlmImfExamples/CMakeFiles/IlmImfExamples.dir/drawImage.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [IlmImfExamples/CMakeFiles/IlmImfExamples.dir/generalInterfaceExamples.cpp.o] Error 1
make[2]: *** [IlmImfExamples/CMakeFiles/IlmImfExamples.dir/generalInterfaceTiledExamples.cpp.o] Error 1
make[1]: *** [IlmImfExamples/CMakeFiles/IlmImfExamples.dir/all] Error 2
make[2]: *** [IlmImf/CMakeFiles/dwaLookups.dir/dwaLookups.cpp.o] Error 1
make[1]: *** [IlmImf/CMakeFiles/dwaLookups.dir/all] Error 2
make: *** [all] Error 2

I can compile IlmBase and OpenEXR “manually” without problems on my computer.

I have cmake version 3.12.2. Otherwise, it’s a completely clean and updated CentOS 7.5.


#4

@brecht openexr broke their cmake support this release, make_deps.sh is using cmake so that won’t build, i dropped @mont29 an email about that last week, but i don’t think he had time to look at it yet.

Our cmake based dependency builder which uses autotools for openexr has some issues on centos as well some libs end up in lib64 instead of lib, confusing the script a tinybit, needs some minor tweaks, I hope to get around to that this week.

and to finish it all off there’s a cycles build issue on centos due to the way their intrinsics headers are setup see D3696 for details.

So yeah unless you know what you are doing centos is not a good place for building currently.


#5

Hi @jaker, Thanks for raising this, I’ve been hitting the same issue on CentOS Linux release 7.5.1804 (Core) while trying to locally compile to avoid this issue: Blender builds glibc

I’m looking on having a docker container to try to have a standard build for C7, do you know if there’s anything available on this regard ?


#6

@mont29 just commited a install_deps fix for openexr, give it another go guys!


#7

I fixed the last few remaining issues with building on centos.

tested on a pristine 7.5.1804 install

sudo yum-config-manager --add-repo http://www.nasm.us/nasm.repo
sudo yum install cmake3 tcl mesa-libGLU-devel libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel nasm yasm python36
sudo ln -s /bin/cmake3 /bin/cmake
sudo ln -s /bin/python36 /bin/python3
make deps
make full

Will give a binary similar of what the buildbot outputs (ie runs on ‘all’ distro’s) but based on glibc 2.17. There’s problably a better way to side step those ln -s things, but hey i’m the windows maintainer :slight_smile:

make release will also build the cuda kernels, but i have’t gotten around to installing cuda yet


#8

Ta, @LazyDodo (not that lazy I would say though!).
I’ll give this a shot in a container asap.

Cheers.
L.


#9

Thanks! I see great progress after your changes, @LazyDodo

Now, however, I have this problem which I do not get on with:

make lite
[...]
/root/blender-git/blender/source/blender/depsgraph/intern/depsgraph_query_filter.cc:147:49: error: no matching function for call to 'std::vector<DEG::OperationDepsNode*>::erase(std::vector<DEG::OperationDepsNode*>::const_iterator&)'
    it_opnode = graph->operations.erase(it_opnode);
[...]
/usr/include/c++/4.8.2/bits/vector.tcc:146:5: note:   candidate expects 2 arguments, 1 provided
/root/blender-git/blender/source/blender/depsgraph/intern/depsgraph_query_filter.cc:172:39: error: no matching function for call to 'std::vector<DEG::IDDepsNode*>::erase(std::vector<DEG::IDDepsNode*>::const_iterator&)'
    it_id = graph->id_nodes.erase(it_id);
[...]
make[1]: *** [all] Error 2
make: *** [all] Error 2

#10

Don’t have time to look at it right now, but i gave the buildbot a kick and the current code in git seems to be building. i’d try a git pull and if that doesn’t work maybe give make full a go?


#11

can confirm make lite is the problem , @sergey.vfx mind taking a peek here?

edit: actually it seems like 2.8 issue, even on full i can’t get it to build.


#12

seems to be some kind of quirk in the language specification, this makes it build,

edit: looks like it’s a quirk in C++98, C++11 added the const_iterator versions of erase but because the gcc centos ships is 5+ years old this is still missing in 4.8.2.

diff --git a/source/blender/depsgraph/intern/depsgraph_query_filter.cc b/source/blender/depsgraph/intern/depsgraph_query_filter.cc
index 11858bd..83963e7 100644
--- a/source/blender/depsgraph/intern/depsgraph_query_filter.cc
+++ b/source/blender/depsgraph/intern/depsgraph_query_filter.cc
@@ -137,7 +137,7 @@ static void deg_filter_remove_unwanted_ids(Depsgraph *graph, GSet *retained_ids)
        }
 
        /* 2) Remove unwanted operations from graph->operations */
-       for (Depsgraph::OperationNodes::const_iterator it_opnode = graph->operations.begin();
+       for (Depsgraph::OperationNodes::iterator it_opnode = graph->operations.begin();
             it_opnode != graph->operations.end();
             )
        {
@@ -157,7 +157,7 @@ static void deg_filter_remove_unwanted_ids(Depsgraph *graph, GSet *retained_ids)
         * However, we don't worry about the conditional freeing for physics
         * stuff, since it's rarely needed currently.
         */
-       for (Depsgraph::IDDepsNodes::const_iterator it_id = graph->id_nodes.begin();
+       for (Depsgraph::IDDepsNodes::iterator it_id = graph->id_nodes.begin();
             it_id != graph->id_nodes.end();
             )

#13

Hi thanks for keep working on this and caring,

I’ve started looking into the docker container to do scoped test builds:
https://bitbucket.org/snippets/efestolab/GeREgb

is just an early test, and is breaking:

git/build_linux/deps/Release/boost/include/boost/compatibility/cpp_c_headers/cassert
...updated 14952 targets...
[ 21%] Performing install step for 'external_boost'
.
[ 22%] Completed 'external_boost'
[ 22%] Built target external_boost
make[1]: *** [all] Error 2
make: *** [deps] Error 2
The command '/bin/sh -c cd /root/blender-git/blender &&     make deps &&     make full' returned a non-zero code: 2

but if you see some obvious missing or mistake please let me know.
(I’ll soon move the code to a proper repo)

cheers.
L.


#14

The actual error is not in that short snippet, you need to show the complete log.

That docker script doesn’t seem to install all the packages @LazyDodo mentioned though:

cmake3 tcl mesa-libGLU-devel libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel nasm yasm python36

#15

Hi Brecht, I know, I have not looked in the details yet.
I’ve been missing these due to a stupid copy and paste.
I’ll update and test again.
Cheers.
L.


#16

Blender successfully built, run from: /root/blender-git/build_linux_full/bin/blender

@brecht , @LazyDodo once the dependency are updated, the build goes well.
the docker has been updated accordingly.

Thanks all for the support.
Cheers.
L.


#17

Hi guys, need some help without bugging you too much.
the last build I did try was of 2.79 , as this was successful I’ve now updated the docker to try to build to 2.8, but i’m not sure I’m doing the right thing.

 RUN mkdir /root/blender-git/ && \
    git clone https://git.blender.org/blender.git /root/blender-git/blender && \
    cd /root/blender-git/blender/ && \
    git checkout blender2.8 &&\
    git submodule update --init --recursive && \
    git submodule foreach git checkout master && \
    git submodule foreach git pull --rebase origin master

Is this correct to pull the 2.8 branch correctly ?
I’ve been trying to look around but a google search didn’t bring me anywhere.
Thanks.
L.


#18

lgtm, you’re probably gonna have to apply the patch listed above to deal with the broken c++ headers.


#19

Cheers @LazyDodo , I’m planning to add a folder for patches (so you can sneak in some) at build time.
this might be the first to test with, thanks :slight_smile:

is this patch just for the 2.8 branch ?
2.79 seems to be compiling fine without on the same docker.

Thanks!


#20

yeah it’s just for 2.8 branch