The latest version of gflags in portage is not compatible with blender 2.71. I get the following compiler errors around libmv: cd /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71_build/extern/libmv && /usr/lib64/ccache/bin/x86_64-pc-linux-gnu-g++ -DGOOGLE_GLOG_DLL_DECL="" -DHAVE_STDBOOL_H -DLIBMV_NO_FAST_DETECTOR="" -DWITH_LIBMV -DWITH_LIBMV_GUARDED_ALLOC -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ -D__MMX__ -D__SSE2__ -D__SSE__ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNDEBUG -Wall -Wno-invalid-offsetof -Wno-sign-compare -Wlogical-op -Winit-self -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits -Wuninitialized -Wmissing-declarations -O3 -pipe -march=core-avx-i -mtune=core-avx-i -fomit-frame-pointer -funsigned-char -D__STDC_CONSTANT_MACROS -fopenmp -msse2 -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing -Wno-deprecated-declarations -Wno-unused-parameter -Wno-error=unused-but-set-variable -I/scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv -I/scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/third_party/ceres/include -I/scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/intern/guardedalloc -isystem /usr/include/eigen3 -o CMakeFiles/extern_libmv.dir/libmv-capi.cc.o -c /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc: In function 'void libmv_initLogging(const char*)': /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:115:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:115:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:116:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:116:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:117:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:117:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:118:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:118:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc: In function 'void libmv_startDebugLogging()': /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:123:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:123:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:124:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:124:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:125:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:125:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:126:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:126:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc: In function 'void libmv_setLoggingVerbosity(int)': /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:134:2: error: 'SetCommandLineOption' is not a member of 'google' /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:134:2: note: suggested alternative: In file included from /usr/include/glog/logging.h:85:0, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv/logging/logging.h:24, from /scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71/extern/libmv/libmv-capi.cc:43: /usr/include/gflags/gflags.h:245:20: note: 'gflags::SetCommandLineOption' extern/libmv/CMakeFiles/extern_libmv.dir/build.make:57: recipe for target 'extern/libmv/CMakeFiles/extern_libmv.dir/libmv-capi.cc.o' failed make[2]: *** [extern/libmv/CMakeFiles/extern_libmv.dir/libmv-capi.cc.o] Error 1 make[2]: Leaving directory '/scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71_build' CMakeFiles/Makefile2:1678: recipe for target 'extern/libmv/CMakeFiles/extern_libmv.dir/all' failed make[1]: *** [extern/libmv/CMakeFiles/extern_libmv.dir/all] Error 2 make[1]: Leaving directory '/scratchdir/tmp/portage/media-gfx/blender-2.71/work/blender-2.71_build' Makefile:146: recipe for target 'all' failed make: *** [all] Error 2 Reproducible: Always Steps to Reproduce: 1. emerge -u blender Actual Results: fails to compile. Expected Results: compiles.
i can confirm it. https://bugs.gentoo.org/show_bug.cgi?id=517076
(In reply to tman from comment #1) > i can confirm it. > > https://bugs.gentoo.org/show_bug.cgi?id=517076 Same problem here, confirmed - but as the OP stated, the problem is with an API change, while bug 517076 is just that the .so symlink is missing.
Created attachment 380740 [details, diff] Fixes gflags namespace issue in libmv This should probably go upstream, eventually.
Ahh, for that patch to be used as is you'll need to modify the paths in it or else patch will fail to find the files.
Created attachment 380742 [details, diff] Fixes gflags namespace issue in libmv
Created attachment 380748 [details] New ebuild incorporating blender patch Obviously an ebuild digest is necessary but this seems to be working in my local overlay, at the moment. There is a linking error after this, the shared object being generated by the gflags ebuild doesn't seem to be exporting any symbols, another bug will need to be filed. e.g. adam@eggsbenedict ~ $ nm -gC /usr/lib64/libgflags.so.2.1.1 nm: /usr/lib64/libgflags.so.2.1.1: no symbols
The linking error is actually related to some missing CMake fu, I'm editing my patch right now.
Created attachment 380774 [details] Ebuild that incorporates conditional patching based on the gflags version
Created attachment 380776 [details, diff] Corrected patch that will modify CMakeFiles for correct linking.
*** Bug 517076 has been marked as a duplicate of this bug. ***
Created attachment 380786 [details] fix to gflag I also had to modify my gflag in portage to use the following ebuild. I'm not sure why, but if I specified BUILD_SHARED_LIBS and BUILD_STATIC_LIBS with cmake it worked, but if I let it build without specifying any (outputs both ar archives and .so shared object files), blender gave me a linking error about something being defined twice. If I had to guess the cmake file being written to /usr/lib/cmake/gflags*.cmake is specifying both the static and dynamic lib when neither are specified.
Works here and fixes both problems with dev-cpp/gflags-2.1.1 (.so installation, blender compilation/linking). Thanks!
a) I cannot patch gflags, that has to be reported to the gflags maintainers b) conditional patching is a no-go... either have conditional code in cmake or patch it unconditionally and adjust the dep
(In reply to Julian Ospald (hasufell) from comment #13) > a) I cannot patch gflags, that has to be reported to the gflags maintainers > b) conditional patching is a no-go... either have conditional code in cmake > or patch it unconditionally and adjust the dep Agreed on a, someone should file another bug report. The changes I made to the ebuild were really really minor. For b.), I'd prefer going with the latter option: have blender 2.71 require gflags 2.1.1. That's just my preference, though, just because it's easier than spending 15 minutes figuring out how to write a CMake macro to conditionally derive the gflags_LIBRARIES or the pkg-config derived libraries.
+*blender-2.71-r1 (16 Jul 2014) + + 16 Jul 2014; Julian Ospald <hasufell@gentoo.org> +blender-2.71-r1.ebuild, + +files/08-blender-2.71-gflags.patch: + fix opencolorio dep wrt #515606, fix building with gflags-2.1.1 and adjust + dep wrt #517134, add epatch_user
hah, thanks for the epatch_user, I use this quite a bit, actually.
Guess it hasn't sync'd to all the mirrors yet, still don't have it. How'd you address the ocolorio issue?
ebuild emerge failed: ###################### [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/view_map/ViewMap.cpp.o cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] [100%] [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/view_map/ViewMapBuilder.cpp.o Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/view_map/ViewMapIO.cpp.o cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/view_map/ViewMapTesselator.cpp.o cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/winged_edge/Curvature.cpp.o cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] Linking C static library ../../../../lib/libbf_rna.a [100%] Built target bf_rna [100%] [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/winged_edge/WEdge.cpp.o Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/winged_edge/WFillGrid.cpp.o cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/winged_edge/WSFillGrid.cpp.o cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/winged_edge/WXEdge.cpp.o cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/winged_edge/WXEdgeBuilder.cpp.o [100%] Building CXX object source/blender/freestyle/CMakeFiles/bf_freestyle.dir/intern/winged_edge/WingedEdgeBuilder.cpp.o cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] cc1plus: warning: /var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71/extern/glew/include: No such file or directory [enabled by default] Scanning dependencies of target bf_intern_cycles Scanning dependencies of target blenderplayer [100%] Building C object source/blenderplayer/CMakeFiles/blenderplayer.dir/bad_level_call_stubs/stubs.c.o Linking CXX executable ../../bin/blenderplayer [100%] [100%] Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_mesh.cpp.o [100%] Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_camera.cpp.o Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_object.cpp.o [100%] Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_particles.cpp.o [100%] Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_curves.cpp.o [100%] Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_python.cpp.o [100%] Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_session.cpp.o Linking CXX static library ../../../lib/libbf_freestyle.a [100%] Built target bf_freestyle [100%] Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_shader.cpp.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/../../../../lib64/libglog.so: undefined reference to `google::FlagRegisterer::FlagRegisterer(char const*, char const*, char const*, char const*, void*, void*)' collect2: error: ld returned 1 exit status source/blenderplayer/CMakeFiles/blenderplayer.dir/build.make:254: recipe for target 'bin/blenderplayer' failed make[2]: *** [bin/blenderplayer] Error 1 CMakeFiles/Makefile2:7038: recipe for target 'source/blenderplayer/CMakeFiles/blenderplayer.dir/all' failed make[1]: *** [source/blenderplayer/CMakeFiles/blenderplayer.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [100%] Building CXX object intern/cycles/blender/CMakeFiles/bf_intern_cycles.dir/blender_sync.cpp.o Linking CXX static library ../../../lib/libbf_intern_cycles.a [100%] Built target bf_intern_cycles Makefile:146: recipe for target 'all' failed make: *** [all] Error 2 * ERROR: media-gfx/blender-2.71-r1::gentoo failed (compile phase): * emake failed * * If you need support, post the output of `emerge --info '=media-gfx/blender-2.71-r1::gentoo'`, * the complete build log and the output of `emerge -pqv '=media-gfx/blender-2.71-r1::gentoo'`. * The complete build log is located at '/var/tmp/portage/media-gfx/blender-2.71-r1/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/media-gfx/blender-2.71-r1/temp/environment'. * Working directory: '/var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71_build' * S: '/var/tmp/portage/media-gfx/blender-2.71-r1/work/blender-2.71'
you have to rebuild glog, we don't have subslots on gflags yet to enforce it
ok solution: 1) emerge -C blender 2) emerge --depclean 3) emerge blender blender works now fine without the start error. probleme solved. thanks you all, and the maintainer for fast fix.
(In reply to tman from comment #20) As said... you just need to rebuild gflags and glog. There is no need for a depclean.