diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/llcrashlogger/llcrashlogger.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/newview/generate_breakpad_symbols.py | 25 | ||||
| -rwxr-xr-x | indra/newview/viewer_manifest.py | 19 | 
4 files changed, 33 insertions, 15 deletions
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index a91cf530b5..89ebf0eccb 100755 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -281,7 +281,7 @@ void LLCrashLogger::gatherFiles()  			trimSLLog(crash_info);  		} -		mCrashInfo[(*itr).first] = rawstr_to_utf8(crash_info); +		mCrashInfo[(*itr).first] = LLStringFn::strip_invalid_xml(rawstr_to_utf8(crash_info));  	}  	// Add minidump as binary. diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 8e608327d8..228d56001a 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1717,7 +1717,7 @@ if (LINUX)      )    add_custom_target(copy_l_viewer_manifest ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched)  -  add_dependencies(copy_l_viewer_manifest "${VIEWER_BINARY_NAME}") +  add_dependencies(copy_l_viewer_manifest "${VIEWER_BINARY_NAME}" linux-crash-logger-target linux-updater-target)  endif (LINUX)  if (DARWIN) diff --git a/indra/newview/generate_breakpad_symbols.py b/indra/newview/generate_breakpad_symbols.py index 3a5f34a5c3..21db9ce152 100644 --- a/indra/newview/generate_breakpad_symbols.py +++ b/indra/newview/generate_breakpad_symbols.py @@ -37,6 +37,7 @@ import fnmatch  import itertools  import os  import sys +import shlex  import subprocess  import tarfile  import StringIO @@ -44,11 +45,27 @@ import StringIO  def usage():      print >>sys.stderr, "usage: %s viewer_dir viewer_exes libs_suffix dump_syms_tool viewer_symbol_file" % sys.argv[0] +class MissingModuleError(Exception): +    def __init__(self, modules): +        Exception.__init__(self, "Failed to find required modules: %r" % modules) +        self.modules = modules +  def main(viewer_dir, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_file):      # print "generate_breakpad_symbols: %s" % str((viewer_dir, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_file)) +    # split up list of viewer_exes +    # "'Second Life' SLPlugin" becomes ['Second Life', 'SLPlugin'] +    viewer_exes = shlex.split(viewer_exes) + +    found_required = dict() +    for required in viewer_exes: +        found_required[required] = False +      def matches(f): -        return f in viewer_exes or fnmatch.fnmatch(f, libs_suffix) +        if f in viewer_exes: +            found_required[f] = True +            return True +        return fnmatch.fnmatch(f, libs_suffix)      def list_files():          for (dirname, subdirs, filenames) in os.walk(viewer_dir): @@ -81,6 +98,12 @@ def main(viewer_dir, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_fil          else:              print >>sys.stderr, "warning: failed to dump symbols for '%s': %s" % (filename, err) +    missing_modules = [m for (m,_) in +        itertools.ifilter(lambda (k,v): not v, found_required.iteritems()) +    ] +    if missing_modules: +        raise MissingModuleError(missing_modules) +      out.close()      return 0 diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 255995aea9..7639fcbe9b 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -41,9 +41,12 @@ from llmanifest import LLManifest, main, proper_windows_path, path_ancestors  class ViewerManifest(LLManifest):      def is_packaging_viewer(self): -        # This is overridden by the WindowsManifest sub-class, -        # which has different behavior if it is not packaging the viewer. -        return True +        # Some commands, files will only be included +        # if we are packaging the viewer on windows. +        # This manifest is also used to copy +        # files during the build (see copy_w_viewer_manifest +        # and copy_l_viewer_manifest targets) +        return 'package' in self.args['actions']      def construct(self):          super(ViewerManifest, self).construct() @@ -169,13 +172,6 @@ class WindowsManifest(ViewerManifest):          else:              return ''.join(self.channel().split()) + '.exe' -    def is_packaging_viewer(self): -        # Some commands, files will only be included -        # if we are packaging the viewer on windows. -        # This manifest is also used to copy -        # files during the build. -        return 'package' in self.args['actions'] -      def test_msvcrt_and_copy_action(self, src, dst):          # This is used to test a dll manifest.          # It is used as a temporary override during the construct method @@ -930,8 +926,7 @@ class Linux_i686Manifest(LinuxManifest):                      self.path("libvivoxplatform.so")                      self.end_prefix("lib") -        # *TODO switch this to use self.is_packaging_viewer() once I understand all the consequences -brad -        if self.args['buildtype'].lower() == 'release' and 'package' in self.args['actions']: +        if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():              print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"              self.run_command("find %(d)r/bin %(d)r/lib -type f | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure  | 
