dev-db/mongodb-2.4.7[-spidermonkey] fails to build. >=dev-db/mongodb-2.4.6-r2[-spidermonkey] uses internal copy of v8, which uses -Werror. (Ebuilds of dev-lang/v8 pass -Dwerror= to its build system to disable -Werror.) Compilation failure of dev-db/mongodb occurs at least with GCC >=4.8, which enables many more warnings. ... x86_64-pc-linux-gnu-g++ -o build/linux2/cc_x86_64-pc-linux-gnu-gcc/cxx_x86_64-pc-linux-gnu-g++/ssl/use-system-boost/use-system-pcre/use-system-snappy/use-system-tcmalloc/usev8/third_party/v8/src/x64/assembler-x64.o -c -march=native -O2 -pipe -fPIC -fno-strict-aliasing -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -fno-builtin-memcmp -O3 -ansi -pedantic -Werror -W -Wno-unused-parameter -Woverloaded-virtual -Wnon-virtual-dtor -D_SCONS -DMONGO_EXPOSE_MACROS -DSUPPORT_UTF8 -D_FILE_OFFSET_BITS=64 -DMONGO_SSL -DMONGO_HAVE_HEADER_UNISTD_H -DMONGO_HAVE_EXECINFO_BACKTRACE -DV8_TARGET_ARCH_X64 -DENABLE_DEBUGGER_SUPPORT -Ibuild/linux2/cc_x86_64-pc-linux-gnu-gcc/cxx_x86_64-pc-linux-gnu-g++/ssl/use-system-boost/use-system-pcre/use-system-snappy/use-system-tcmalloc/usev8/third_party/v8/src -Isrc/third_party/v8/src -Ibuild/linux2/cc_x86_64-pc-linux-gnu-gcc/cxx_x86_64-pc-linux-gnu-g++/ssl/use-system-boost/use-system-pcre/use-system-snappy/use-system-tcmalloc/usev8/third_party/libstemmer_c/include -Isrc/third_party/libstemmer_c/include -Ibuild/linux2/cc_x86_64-pc-linux-gnu-gcc/cxx_x86_64-pc-linux-gnu-g++/ssl/use-system-boost/use-system-pcre/use-system-snappy/use-system-tcmalloc/usev8/third_party/s2 -Isrc/third_party/s2 -Ibuild/linux2/cc_x86_64-pc-linux-gnu-gcc/cxx_x86_64-pc-linux-gnu-g++/ssl/use-system-boost/use-system-pcre/use-system-snappy/use-system-tcmalloc/usev8 -Isrc -Ibuild/linux2/cc_x86_64-pc-linux-gnu-gcc/cxx_x86_64-pc-linux-gnu-g++/ssl/use-system-boost/use-system-pcre/use-system-snappy/use-system-tcmalloc/usev8/mongo -Isrc/mongo -Ibuild/linux2/cc_x86_64-pc-linux-gnu-gcc/cxx_x86_64-pc-linux-gnu-g++/ssl/use-system-boost/use-system-pcre/use-system-snappy/use-system-tcmalloc/usev8/third_party/s2 -Isrc/third_party/s2 src/third_party/v8/src/x64/assembler-x64.cc In file included from src/third_party/v8/src/v8globals.h:32:0, from src/third_party/v8/src/v8.h:53, from src/third_party/v8/src/x64/assembler-x64.cc:28: src/third_party/v8/src/v8utils.h: In function ‘void v8::internal::CopyWords(T*, T*, int)’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__128’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/v8utils.h:128:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(sizeof(T) == kPointerSize); ^ src/third_party/v8/src/objects-visiting.h: In member function ‘void v8::internal::VisitorDispatchTable<Callback>::RegisterSpecializations()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__188’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-visiting.h:187:5: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT( ^ src/third_party/v8/src/scanner.h: In member function ‘void v8::internal::Scanner::Init()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__450’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/scanner.h:450:5: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(kCharacterLookaheadBufferSize == 1); ^ src/third_party/v8/src/objects-inl.h: In member function ‘bool v8::internal::Object::IsSymbol()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__200’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:200:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(kSymbolTag != 0); ^ src/third_party/v8/src/objects-inl.h: In member function ‘bool v8::internal::StringShape::IsSymbol()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__285’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:285:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(kSymbolTag != 0); ^ src/third_party/v8/src/objects-inl.h: In member function ‘bool v8::internal::String::IsAsciiRepresentationUnderneath()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__304’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:304:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(kIsIndirectStringTag != 0); ^ src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__305’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:305:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT((kIsIndirectStringMask & kStringEncodingMask) == 0); ^ src/third_party/v8/src/objects-inl.h: In member function ‘bool v8::internal::String::IsTwoByteRepresentationUnderneath()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__320’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:320:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(kIsIndirectStringTag != 0); ^ src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__321’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:321:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT((kIsIndirectStringMask & kStringEncodingMask) == 0); ^ src/third_party/v8/src/objects-inl.h: In member function ‘bool v8::internal::Object::IsJSReceiver()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__493’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:493:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(LAST_JS_RECEIVER_TYPE == LAST_TYPE); ^ src/third_party/v8/src/objects-inl.h: In member function ‘bool v8::internal::Object::IsJSObject()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__500’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:500:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(LAST_JS_OBJECT_TYPE == LAST_TYPE); ^ src/third_party/v8/src/objects-inl.h: In member function ‘v8::internal::String* v8::internal::String::GetUnderlying()’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__2385’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:2385:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(ConsString::kFirstOffset == SlicedString::kParentOffset); ^ src/third_party/v8/src/objects-inl.h: In member function ‘void v8::internal::Code::set_flags(v8::internal::Code::Flags)’: src/third_party/v8/src/checks.h:251:22: error: typedef ‘__StaticAssertTypedef__3038’ locally defined but not used [-Werror=unused-local-typedefs] SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:241:39: note: in definition of macro ‘SEMI_STATIC_JOIN_HELPER’ #define SEMI_STATIC_JOIN_HELPER(a, b) a##b ^ src/third_party/v8/src/checks.h:251:5: note: in expansion of macro ‘SEMI_STATIC_JOIN’ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) ^ src/third_party/v8/src/checks.h:283:30: note: in expansion of macro ‘STATIC_CHECK’ #define STATIC_ASSERT(test) STATIC_CHECK(test) ^ src/third_party/v8/src/objects-inl.h:3038:3: note: in expansion of macro ‘STATIC_ASSERT’ STATIC_ASSERT(Code::NUMBER_OF_KINDS <= KindField::kMax + 1); ^ ... cc1plus: all warnings being treated as errors scons: *** [build/linux2/cc_x86_64-pc-linux-gnu-gcc/cxx_x86_64-pc-linux-gnu-g++/ssl/use-system-boost/use-system-pcre/use-system-snappy/use-system-tcmalloc/usev8/third_party/v8/src/x64/assembler-x64.o] Error 1 scons: building terminated because of errors. * ERROR: dev-db/mongodb-2.4.7::gentoo failed (compile phase): * escons failed.
*** Bug 488890 has been marked as a duplicate of this bug. ***
Suggested patch from duplicate bug is at: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=701324#14
(In reply to Mike Auty from comment #2) > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=701324#14 This is incomplete solution. -Werror should simply not be used. Users are allowed to add -Wall -Wextra -W${something_else} to CXXFLAGS.
*** This bug has been marked as a duplicate of bug 482576 ***