[sldev] Could build v1.22.0RC0 yesterday, cannot build any v1.2x viewer today !

Henri Beauchamp sldev at free.fr
Sat Nov 22 05:55:28 PST 2008


Greetings,

Yesterday, shortly after v1.22.0RC0 was announced, I could download its sources (from the SVN: r103519, changest 1500) and the viewer built like a charm with gcc v4.2. I could even adapt all the Cool SL Viewer patches to it and I now have a custom build running (and running great so far).

I was about to compile it again for a public release (i.e. not using any of my system libraries but only LL's) and found out that I could not build the viewer any more today: it stops with hundreds of errors, the first ones being while linking the crash logger:

CMakeFiles/linux-crash-logger.dir/llcrashloggerlinux.o: In function `operator<< <std::char_traits<char> >':
/usr/lib/gcc/i586-manbo-linux-gnu/4.2.3/../../../../include/c++/4.2.3/ostream:517: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
/usr/src/SL/indra/viewer-linux-i686-release/llcrashlogger/libllcrashlogger.a(llcrashlogger.o): In function `operator<< <char, std::char_traits<char>, std::allocator<char> >':
/usr/lib/gcc/i586-manbo-linux-gnu/4.2.3/../../../../include/c++/4.2.3/bits/basic_string.h:2404: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'

Even if I disable the building for the crash-logger in CMakeLists.txt, the linking of the viewer itself fails with hundreds of undefined references. Example:

/usr/lib/gcc/i586-manbo-linux-gnu/4.2.3/../../../../include/c++/4.2.3/ostream:517: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
/usr/lib/gcc/i586-manbo-linux-gnu/4.2.3/../../../../include/c++/4.2.3/ostream:517: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
/usr/lib/gcc/i586-manbo-linux-gnu/4.2.3/../../../../include/c++/4.2.3/ostream:517: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'

The weird thing is that I get the same problems when compiling the viewer with the very same settings as yesterday, as well as when building the v1.21.6 viewer which compiled just fine before...

I also tried with gcc v4.3, but then I know this compiler doesn't like SL's sources at all and it indeed stops on:
cc1plus: warnings being treated as errors
/usr/src/SL/indra/llwindow/llwindowsdl.cpp: In member function 'virtual BOOL LLWindowSDL::dialog_color_picker(F32*, F32*, F32*)':
/usr/src/SL/indra/llwindow/llwindowsdl.cpp:2649: error: 'orig_color._GdkColor::pixel' may be used uninitialized in this function
make[2]: *** [llwindow/CMakeFiles/llwindow.dir/llwindowsdl.o] Error 1
make[2]: leaving directory « /usr/src/SL/indra/viewer-linux-i686-release »
make[1]: *** [llwindow/CMakeFiles/llwindow.dir/all] Erreur 2
(which at first glance doesn't look an uninitialzed variable at all... compiler bug ?).

I then tried to revert back to Mandriva 2007.1 (as it got gcc v4.1, which is not available under Mandriva 2009.0), but still no joy as it stops for v1.22RC0 on:
In file included from /usr/src/SL/indra/newview/llappviewerlinux.cpp:34:
/usr/src/SL/indra/newview/llappviewerlinux.h:39:29: error: dbus/dbus-glib.h: no such file or directory

and indeed, the dbus headers are not automatically downloaded for gcc v4.1 like they should (and are when using gcc v4.2). So I installed manually the dbus headers that cmake downloaded for gcc v4.2 and could compile the viewer to the end, but then got a problem on packaging the viewer:

Processing libapr-1.so.0 => None ... Traceback (most recent call last):
  File "/usr/src/SL/indra/newview/viewer_manifest.py", line 676, in <module>
    main()
  File "/usr/src/SL/indra/newview/../lib/python/indra/util/llmanifest.py", line 233, in main
    wm.do(*args['actions'])
  File "/usr/src/SL/indra/newview/../lib/python/indra/util/llmanifest.py", line 647, in do
    self.construct()
  File "/usr/src/SL/indra/newview/viewer_manifest.py", line 634, in construct
    self.path("libapr-1.so.0")
  File "/usr/src/SL/indra/newview/../lib/python/indra/util/llmanifest.py", line 642, in path
    count = try_path(os.path.join(self.get_build_prefix(), src))
  File "/usr/src/SL/indra/newview/../lib/python/indra/util/llmanifest.py", line 629, in try_path
    self.check_file_exists(src)
  File "/usr/src/SL/indra/newview/../lib/python/indra/util/llmanifest.py", line 598, in check_file_exists
    os.path.normpath(os.path.join(os.getcwd(), path)),))
RuntimeError: Path /usr/src/SL/indra/libraries/i686-linux/lib_release_client/libapr-1.so.0 doesn't exist

Strange, as this did not happen either yesterday (but it was under Mandriva 2009.0)...

To make absolutely sure it was not some corrupted file on my system (although very unlikely with a RAID5 array), I tried and built on another computer (same results) and can confirm that the good old v1.19.0.5 viewer still compiles just fine (with a small patch for gcc v4.2).

As using either gcc v4.1 or v4.2 results in different pre-built libraries to be downloaded from LL's servers at compile time, I guess that one of the libraries for compilation with gcc v4.2 got broken during the night (and the list of packages to download is wrong for gcc 4.1).


So, the first question is: who the Hell broke the pre-built packages tonight ???  (and of course, this is just before a week-end...).

The second question is: why not reverting to the old system of pre-built libraries distribution ?  At last, it was (and still is) possible to rebuild v1.19 and previous viewers as long as you got the libraries tarball on your disk, while with the newer system, when something breaks on LL's server, you can't rebuild the viewers !!!
Not to mention that it is impossible to build a v1.2x viewer while not connected to Internet...

Henri.


More information about the SLDev mailing list