[Bf-committers] 2.78a won't build on ppc64le

Mamoru TASAKA mtasaka at fedoraproject.org
Sat Nov 12 16:52:34 CET 2016


Hello, all:
My name is Mamoru TASAKA from Japan. This is the first post to
this mailing list. I see that "compile or build issues should be
reported to this list", so I post to this list.

Well, recently Fedora project ( https://fedoraproject.org/ ) began
to build packages on ppc64le (powerpc 64 bit, little endian) on rawhide
(development branch), and blender 2.78a won't build on ppc64le.

Downstream report:
https://bugzilla.redhat.com/show_bug.cgi?id=1393157

gcc: 6.2.1
compiler flags:
-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mcpu=power8 -mtune=power8 -fPIC -funsigned-char -fno-strict-aliasing -std=c++11
full build log (with make -k VERBOSE=1):
https://mtasaka.fedorapeople.org/Bugfix/blender/blender-2.78a-on-ppc64le.log

The errors are summarized into 2 types.


A. There are lots of errros like:
cd /builddir/build/BUILD/blender-2.78a/cmake-make/intern/audaspace && /usr/bin/c++   -DNDEBUG -DWITH_JACK -DWITH_OPENAL -DWITH_PYTHON -DWITH_SDL -DWITH_SNDFILE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ -I/builddir/build/BUILD/blender-2.78a/intern/audaspace -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/FX -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/intern -I/builddir/build/BUILD/blender-2.78a/intern/ffmpeg -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/SDL -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/OpenAL -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/jack -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/sndfile -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/Python -isystem /usr/include/SDL2 -isystem /usr/include/AL -isystem /usr/include/jack -isystem /usr/include/python3.5m  -Wredundant-decls -Wall -Wno-invalid-offsetof -Wno-sign-compare -Wlogical-op -Winit-self -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits -Werror=return-type -Werror=implicit-function-declaration -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith  -Wwrite-strings -Wundef -Wformat-signedness -Wuninitialized -Wundef -Wmissing-declarations -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mcpu=power8 -mtune=power8 -fPIC -funsigned-char -fno-strict-aliasing -std=c++11 -fopenmp -std=c++11 -pipe -fPIC -funsigned-char -fno-strict-aliasing -O2 -DNDEBUG   -o CMakeFiles/bf_intern_audaspace.dir/intern/AUD_C-API.cpp.o -c /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp
In file included from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp:82:0:
/builddir/build/BUILD/blender-2.78a/intern/audaspace/OpenAL/AUD_OpenALDevice.h:113:16: error: conflicting return type specified for 'virtual __vector(4) __bool int AUD_OpenALDevice::AUD_OpenALHandle::pause()'
    virtual bool pause();
                 ^~~~~
In file included from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_IDevice.h:36:0,
                  from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_NULLDevice.h:34,
                  from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp:50:
/builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_IHandle.h:54:15: error:   overriding 'virtual bool AUD_IHandle::pause()'
   virtual bool pause()=0;

                ^~~~~
In file included from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp:82:0:
/builddir/build/BUILD/blender-2.78a/intern/audaspace/OpenAL/AUD_OpenALDevice.h:114:16: error: conflicting return type specified for 'virtual __vector(4) __bool int AUD_OpenALDevice::AUD_OpenALHandle::resume()'
    virtual bool resume();
                 ^~~~~~
In file included from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_IDevice.h:36:0,
                  from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_NULLDevice.h:34,
                  from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp:50:
/builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_IHandle.h:62:15: error:   overriding 'virtual bool AUD_IHandle::resume()'
   virtual bool resume()=0;

... and other messages, and same messages on other files.

Here -mcpu=power8 automatically enables -maltivec , and with -maltivec (which adds -D__ALTIVEC__), when
including SDL2 related header, it includes altivec.h (via /usr/include/SDL2/SDL_cpuinfo.h)
(see preprocessed source for AUD_C-API.cpp here:
  https://mtasaka.fedorapeople.org/Bugfix/blender/ppc64le-AUD_C-API.cpp-preprocessed.log )
And including altivec.h changes "bool" definition, for example. See:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58241

Currently I have to add -mno-altivec to compilation flags.

2. One other build error is here:
cd /builddir/build/BUILD/blender-2.78a/cmake-make/extern/glog && /usr/bin/c++   -DGFLAGS_DLL_DECL="" -DGFLAGS_DLL_DECLARE_FLAG="" -DGFLAGS_DLL_DEFINE_FLAG="" -DGOOGLE_GLOG_DLL_DECL="" -DNDEBUG -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ -I/builddir/build/BUILD/blender-2.78a/extern/glog/src -I/builddir/build/BUILD/blender-2.78a/extern/gflags/src  -Wall -Wno-invalid-offsetof -Wno-sign-compare -Wlogical-op -Winit-self -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits   -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith    -Wformat-signedness -Wuninitialized   -O2 -g -pipe -Wall  -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mcpu=power8 -mtune=power8 -fPIC -funsigned-char -fno-strict-aliasing -std=c++11 -fopenmp -std=c++11 -pipe -fPIC -funsigned-char -fno-strict-aliasing  -O2 -DNDEBUG   -o CMakeFiles/extern_glog.dir/src/utilities.cc.o -c /builddir/build/BUILD/blender-2.78a/extern/glog/src/utilities.cc
In file included from /builddir/build/BUILD/blender-2.78a/extern/glog/src/utilities.cc:351:0:
/builddir/build/BUILD/blender-2.78a/extern/glog/src/stacktrace_powerpc-inl.h:121:2: error: #error Need to specify the PPC ABI for your archiecture.
  #error Need to specify the PPC ABI for your archiecture.
   ^~~~~

Surprisingly, __linux is not defined on powerpc:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28314
In extern/glog/src/stacktrace_powerpc-inl.h, __linux must be changed to __linux__ .


For the issue A, currently I don't know proper fix for this.

Regards,
Mamoru TASAKA <mtasaka at fedoraproject.org>


More information about the Bf-committers mailing list