Following Mano Marks' docker recipe, I started a build on Ubuntu 16.04.2 LTS. It looks like the build goes to some effort to use a back-dated GCC, but then falls back to a native G++ in the fusion dir. Unfortunately, it uses -Wall -Werror which is a basically toxic combination in the wild. New warnings get added to GCC All The Time and making all warnings into errors means the build fails for some non-trivial number of version combinations.
The fatal cases all happen in fusion/ and are the (quite benign) "defined, but not used" variety:
fusion/gepublish/PublisherClient.cpp:107:6: error: 'void {anonymous}::AppendMultiPartStringsParam(const string&, const std::vector<std::__cxx11::basic_string >&, std::__cxx11::string*)' defined but not used [-Werror=unused-function]
void AppendMultiPartStringsParam(const std::string ¶m_prefix,
^
cc1plus: all warnings being treated as errors
scons: *** [NATIVE-OPT-x86_64/fusion/gepublish/PublisherClient.os] Error 1
fusion/gepublish/geserveradmin.cpp:245:6: error: 'void {anonymous}::CreateApacheFile(std::__cxx11::string, std::__cxx11::string)' defined but not used [-Werror=unused-function]
void CreateApacheFile(std::string path, std::string data) {
^
cc1plus: all warnings being treated as errors
scons: *** [NATIVE-OPT-x86_64/fusion/gepublish/geserveradmin.o] Error 1
fusion/gecrawler/comparevector.cpp:34:6: error: 'bool {anonymous}::CompareDataHeaders(const etDataHeader&, const etDataHeader&)' declared 'static' but never defined [-Werror=unused-function]
bool CompareDataHeaders(const etDataHeader& header_a,
^
fusion/gecrawler/comparevector.cpp:36:6: error: 'bool {anonymous}::ComparePolyLinePackets(etPolyLinePacketData*, etPolyLinePacketData*)' declared 'static' but never defined [-Werror=unused-function]
bool ComparePolyLinePackets(etPolyLinePacketData* pak_a,
^
fusion/gecrawler/comparevector.cpp:38:6: error: 'bool {anonymous}::CompareStreetPackets(etStreetPacketData*, etStreetPacketData*)' declared 'static' but never defined [-Werror=unused-function]
bool CompareStreetPackets(etStreetPacketData* pak_a,
^
fusion/gecrawler/comparevector.cpp:40:6: error: 'bool {anonymous}::CompareLandmarkPackets(etLandmarkPacketData*, etLandmarkPacketData*)' declared 'static' but never defined [-Werror=unused-function]
bool CompareLandmarkPackets(etLandmarkPacketData* pak_a,
^
fusion/gecrawler/comparevector.cpp:42:6: error: 'bool {anonymous}::ComparePolygonPackets(etPolygonPacketData*, etPolygonPacketData*)' declared 'static' but never defined [-Werror=unused-function]
bool ComparePolygonPackets(etPolygonPacketData* pak_a,
^
cc1plus: all warnings being treated as errors
fusion/dbmanifest/dbmanifest.cpp:70:6: error: 'void {anonymous}::AddStringToProto(const string&, keyhole::dbroot::StringIdOrValueProto*)' defined but not used [-Werror=unused-function]
void AddStringToProto(const std::string& str,
^
cc1plus: all warnings being treated as errors
g++ -o NATIVE-OPT-x86_64/fusion/gemaptilegen/Generator.o -c -O2 -pipe -pthread -Wall -Werror -Wno-parentheses -Wno-error=unused-result -Wno-error=unused-local-typedefs -Wno-error=unused-but-set-variable -I/usr/include/libpng12 -D_LARGEFILE64_SOURCE -DQT_THREAD_SUPPORT -DQT_NO_ASCII_CAST -DQT_CLEAN_NAMESPACE -D_REENTRANT -DGUNIT_NO_GOOGLE3 -DKH_MAX_NUM_JOBS_COEFF=16 -DSK_RELEASE -DGR_RELEASE -DSkDebugf="(void)" -DSK_R32_SHIFT=16 -DSK_G32_SHIFT=8 -DSK_B32_SHIFT=0 -DSK_A32_SHIFT=24 -DSK_SCALAR_IS_FLOAT -DSkUserConfig_DEFINED -I/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/config -I/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core -I/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/effects -I/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/images -I/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/lazy -INATIVE-OPT-x86_64/include -INATIVE-OPT-x86_64 -I. -INATIVE-OPT-x86_64/common -Icommon -Icommon/khmisc -Ikeyhole -INATIVE-OPT-x86_64/fusion -Ifusion -Ifusion/gst fusion/gemaptilegen/Generator.cpp
scons: building associated VariantDir targets: NATIVE-OPT-x86_64
scons: *** [NATIVE-OPT-x86_64/fusion/gecrawler/comparevector.os] Error 1
scons: *** [NATIVE-OPT-x86_64/fusion/dbmanifest/dbmanifest.os] Error 1
In file included from /googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkFixed.h:13:0,
from /googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkScalar.h:13,
from /googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkColor.h:13,
from fusion/gst/maprender/Renderer.h:21,
from ./fusion/gemaptilegen/Generator.h:29,
from fusion/gemaptilegen/Generator.cpp:16:
/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkPath.h: In static member function 'static bool SkPath::IsInverseFillType(SkPath::FillType)':
/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkPath.h:531:58: warning: typedef 'fill_type_mismatch' locally defined but not used [-Wunused-local-typedefs]
SK_COMPILE_ASSERT(3 == kInverseEvenOdd_FillType, fill_type_mismatch);
^
/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkTypes.h:130:43: note: in definition of macro 'SK_COMPILE_ASSERT'
typedef SkCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
^
/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkPath.h: In static member function 'static SkPath::FillType SkPath::ConvertToNonInverseFillType(SkPath::FillType)':
/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkPath.h:547:58: warning: typedef 'fill_type_mismatch' locally defined but not used [-Wunused-local-typedefs]
SK_COMPILE_ASSERT(3 == kInverseEvenOdd_FillType, fill_type_mismatch);
^
/googleclient/geo/earth_enterprise/src/NATIVE-OPT-x86_64/third_party/skia/include/core/SkTypes.h:130:43: note: in definition of macro 'SK_COMPILE_ASSERT'
typedef SkCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
^
fusion/gemaptilegen/Generator.cpp: At global scope:
fusion/gemaptilegen/Generator.cpp:36:6: error: 'void {anonymous}::WritePngFileDebug(char*, uint, const string&)' defined but not used [-Werror=unused-function]
void WritePngFileDebug(char* pixel_buffer, uint tile_size,