diff options
| -rwxr-xr-x | .hgtags | 1 | ||||
| -rw-r--r-- | autobuild.xml | 16 | ||||
| -rw-r--r-- | indra/cmake/Copy3rdPartyLibs.cmake | 61 | ||||
| -rwxr-xr-x | indra/lib/python/indra/util/llmanifest.py | 64 | ||||
| -rw-r--r-- | indra/newview/VIEWER_VERSION.txt | 2 | ||||
| -rw-r--r-- | indra/newview/llvoicevivox.cpp | 14 | ||||
| -rwxr-xr-x | indra/newview/viewer_manifest.py | 90 | 
7 files changed, 135 insertions, 113 deletions
| @@ -554,3 +554,4 @@ ab2ec5c5423b277d23fd0511ce50c15123ff2e03 6.2.3-release  9777aec6dc4a30a24537297ac040861ce16b82ae 6.3.0-release  ece699718f163921717bb95a6131e94af4c4138f 6.3.1-release  07f5d5bc9faebb45695853d40a9549773db816c0 6.3.2-release +d9a4bd15e2c852953d6c8e84d6f3b7ca442c0e7f 6.3.3-release diff --git a/autobuild.xml b/autobuild.xml index 3983e12313..88db33e317 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -2918,7 +2918,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>          <key>license</key>          <string>Mixed</string>          <key>license_file</key> -        <string>LICENSES/slvoice.txt</string> +        <string>LICENSES/vivox_licenses.txt</string>          <key>name</key>          <string>slvoice</string>          <key>platforms</key> @@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>              <key>archive</key>              <map>                <key>hash</key> -              <string>a605ec940768c878527d3b8f2ff61288</string> +              <string>f824d586ab5de6edd14ef6828e9e4b66</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/21421/157284/slvoice-4.9.0002.30313.517593-darwin64-517593.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44719/395040/slvoice-4.10.0000.32327.5fc3fe7c.531581-darwin64-531581.tar.bz2</string>              </map>              <key>name</key>              <string>darwin64</string> @@ -2976,9 +2976,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>              <key>archive</key>              <map>                <key>hash</key> -              <string>5a78539626b5f23522d0b466247f48b4</string> +              <string>1941c17c81905f23b4928288bcf719fb</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/21422/157291/slvoice-4.9.0002.30313.517593-windows-517593.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44720/395047/slvoice-4.10.0000.32327.5fc3fe7c.531581-windows-531581.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> @@ -2988,16 +2988,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>              <key>archive</key>              <map>                <key>hash</key> -              <string>1f8e09c053c00d9dc44ea74568e63dc1</string> +              <string>baa6cdc8e8762d5519996ed9faa0bf3f</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/21423/157298/slvoice-4.9.0002.30313.517593-windows64-517593.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44721/395056/slvoice-4.10.0000.32327.5fc3fe7c.531581-windows64-531581.tar.bz2</string>              </map>              <key>name</key>              <string>windows64</string>            </map>          </map>          <key>version</key> -        <string>4.9.0002.30313.517593</string> +        <string>4.10.0000.32327.5fc3fe7c.531581</string>        </map>        <key>tut</key>        <map> diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index dde53835fb..c73a1fdb47 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -17,17 +17,16 @@ if(WINDOWS)      #*******************************      # VIVOX - *NOTE: no debug version -    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") -    set(vivox_files -        SLVoice.exe -        ) +    set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") +    set(slvoice_src_dir "${ARCH_PREBUILT_BIN_RELEASE}")     +    set(slvoice_files SLVoice.exe )      if (ADDRESS_SIZE EQUAL 64) -        list(APPEND vivox_files +        list(APPEND vivox_libs              vivoxsdk_x64.dll              ortp_x64.dll              )      else (ADDRESS_SIZE EQUAL 64) -        list(APPEND vivox_files +        list(APPEND vivox_libs              vivoxsdk.dll              ortp.dll              ) @@ -169,11 +168,10 @@ elseif(DARWIN)      set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources")      set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release/Resources") -    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") -    set(vivox_files -        SLVoice +    set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") +    set(slvoice_files SLVoice) +    set(vivox_libs          libortp.dylib -        libvivoxplatform.dylib          libvivoxsdk.dylib         )      set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") @@ -206,15 +204,15 @@ elseif(LINUX)      set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}")      set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}") -    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") -    set(vivox_files +    set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") +    set(vivox_libs          libsndfile.so.1          libortp.so          libvivoxoal.so.1 -        libvivoxplatform.so          libvivoxsdk.so -        SLVoice -       ) +        ) +    set(slvoice_files SLVoice) +      # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables      # or ARCH_PREBUILT_DIRS      set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") @@ -251,8 +249,8 @@ elseif(LINUX)  else(WINDOWS)      message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...") -    set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux") -    set(vivox_files "") +    set(vivox_lib_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux") +    set(vivox_libs "")      # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables      # or ARCH_PREBUILT_DIRS      set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug") @@ -275,39 +273,36 @@ endif(WINDOWS)  ################################################################  copy_if_different( -    ${vivox_src_dir} +    ${vivox_lib_dir}      "${SHARED_LIB_STAGING_DIR_DEBUG}"      out_targets  -    ${vivox_files} +    ${vivox_libs}      )  set(third_party_targets ${third_party_targets} ${out_targets})  copy_if_different( -    ${vivox_src_dir} +    ${slvoice_src_dir} +    "${SHARED_LIB_STAGING_DIR_RELEASE}" +    out_targets +    ${slvoice_files} +    ) +copy_if_different( +    ${vivox_lib_dir}      "${SHARED_LIB_STAGING_DIR_RELEASE}"      out_targets -    ${vivox_files} +    ${vivox_libs}      ) +  set(third_party_targets ${third_party_targets} ${out_targets})  copy_if_different( -    ${vivox_src_dir} +    ${vivox_lib_dir}      "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"      out_targets -    ${vivox_files} +    ${vivox_libs}      )  set(third_party_targets ${third_party_targets} ${out_targets}) - - -#copy_if_different( -#    ${debug_src_dir} -#    "${SHARED_LIB_STAGING_DIR_DEBUG}" -#    out_targets -#    ${debug_files} -#    ) -#set(third_party_targets ${third_party_targets} ${out_targets}) -  copy_if_different(      ${release_src_dir}      "${SHARED_LIB_STAGING_DIR_RELEASE}" diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py index 2e6cf53912..4bc70b2ca4 100755 --- a/indra/lib/python/indra/util/llmanifest.py +++ b/indra/lib/python/indra/util/llmanifest.py @@ -27,6 +27,7 @@ THE SOFTWARE.  $/LicenseInfo$  """ +from collections import namedtuple, defaultdict  import commands  import errno  import filecmp @@ -312,6 +313,8 @@ class LLManifestRegistry(type):          if match:             cls.manifests[match.group(1).lower()] = cls +MissingFile = namedtuple("MissingFile", ("pattern", "tried")) +  class LLManifest(object):      __metaclass__ = LLManifestRegistry      manifests = {} @@ -333,7 +336,8 @@ class LLManifest(object):          self.dst_prefix = [args['dest']]          self.created_paths = []          self.package_name = "Unknown" -         +        self.missing = [] +      def default_channel(self):          return self.args.get('channel', None) == RELEASE_CHANNEL @@ -592,6 +596,40 @@ class LLManifest(object):      def package_action(self, src, dst):          pass +    def finish(self): +        """ +        generic finish, always called before the ${action}_finish() methods +        """ +        # Collecting MissingFile instances in self.missing, and checking that +        # here, is intended to minimize the number of (potentially lengthy) +        # build cycles a developer must run in order to fix missing-files +        # errors. The manifest processing is necessarily the last step in a +        # build, and if we only caught a single missing file error per run, +        # the developer would need to run a build for each additional missing- +        # file error until all were resolved. This way permits the developer +        # to resolve them all at once. +        if self.missing: +            print '*' * 72 +            print "Missing files:" +            # Instead of just dumping each missing file and all the places we +            # looked for it, group by common sets of places we looked. Use a +            # set to store the 'tried' directories, to avoid mismatches due to +            # reordering -- but since we intend to use the set of 'tried' +            # directories as a dict key, it must be a frozenset. +            organize = defaultdict(set) +            for missingfile in self.missing: +                organize[frozenset(missingfile.tried)].add(missingfile.pattern) +            # Now dump all the patterns sought in each group of 'tried' +            # directories. +            for tried, patterns in organize.items(): +                print "  Could not find in:" +                for dir in sorted(tried): +                    print "    %s" % dir +                for pattern in sorted(patterns): +                    print "      %s" % pattern +            print '*' * 72 +            raise MissingError('%s patterns could not be found' % len(self.missing)) +      def copy_finish(self):          pass @@ -825,17 +863,23 @@ class LLManifest(object):              return count          try_prefixes = [self.get_src_prefix(), self.get_artwork_prefix(), self.get_build_prefix()] -        tried=[] -        count=0 -        while not count and try_prefixes:  -            pfx = try_prefixes.pop(0) +        for pfx in try_prefixes:              try:                  count = try_path(os.path.join(pfx, src))              except MissingError: -                tried.append(pfx) -                if not try_prefixes: -                    # no more prefixes left to try -                    print "unable to find '%s'; looked in:\n  %s" % (src, '\n  '.join(tried)) +                # if we produce MissingError, just try the next prefix +                continue +            # If we actually found nonzero files, stop looking +            if count: +                break +        else: +            # no more prefixes left to try +            print("\nunable to find '%s'; looked in:\n  %s" % (src, '\n  '.join(try_prefixes))) +            self.missing.append(MissingFile(pattern=src, tried=try_prefixes)) +            # At this point 'count' might never have been successfully +            # assigned! Even if it was, though, we can be sure it is 0. +            return 0 +          print "%d files" % count          # Let caller check whether we processed as many files as expected. In @@ -846,6 +890,8 @@ class LLManifest(object):          self.actions = actions          self.construct()          # perform finish actions +        # generic finish first +        self.finish()          for action in self.actions:              methodname = action + "_finish"              method = getattr(self, methodname, None) diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 7849b73dc7..8ac3c44511 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.3.3 +6.3.4 diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index e10ba77e16..739f7bd47c 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -824,6 +824,20 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()              params.args.add("-lf");              params.args.add(log_folder); +            // set log file basename and .log +            params.args.add("-lp"); +            params.args.add("SLVoice"); +            params.args.add("-ls"); +            params.args.add(".log"); + +            // rotate any existing log +            std::string new_log = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "SLVoice.log"); +            std::string old_log = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "SLVoice.old"); +            if (gDirUtilp->fileExists(new_log)) +            { +                LLFile::rename(new_log, old_log); +            } +                          std::string shutdown_timeout = gSavedSettings.getString("VivoxShutdownTimeout");              if (!shutdown_timeout.empty())              { diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index fcb97ded8f..a4cda0ba78 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -46,7 +46,7 @@ viewer_dir = os.path.dirname(__file__)  # Put it FIRST because some of our build hosts have an ancient install of  # indra.util.llmanifest under their system Python!  sys.path.insert(0, os.path.join(viewer_dir, os.pardir, "lib", "python")) -from indra.util.llmanifest import LLManifest, main, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError +from indra.util.llmanifest import LLManifest, main, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError, MissingError  from llbase import llsd  class ViewerManifest(LLManifest): @@ -145,13 +145,10 @@ class ViewerManifest(LLManifest):              with self.prefix(src_dst="skins"):                      # include the entire textures directory recursively                      with self.prefix(src_dst="*/textures"): -                            self.path("*/*.tga") -                            self.path("*/*.j2c")                              self.path("*/*.jpg")                              self.path("*/*.png")                              self.path("*.tga")                              self.path("*.j2c") -                            self.path("*.jpg")                              self.path("*.png")                              self.path("textures.xml")                      self.path("*/xui/*/*.xml") @@ -171,14 +168,6 @@ class ViewerManifest(LLManifest):                              self.path("*/*/*.gif") -            # local_assets dir (for pre-cached textures) -            with self.prefix(src_dst="local_assets"): -                self.path("*.j2c") -                self.path("*.tga") - -            # File in the newview/ directory -            self.path("gpu_table.txt") -              #build_data.json.  Standard with exception handling is fine.  If we can't open a new file for writing, we have worse problems              #platform is computed above with other arg parsing              build_data_dict = {"Type":"viewer","Version":'.'.join(self.args['version']), @@ -517,17 +506,6 @@ class WindowsManifest(ViewerManifest):          with self.prefix(src=os.path.join(self.args['build'], os.pardir,                                            'sharedlibs', self.args['configuration'])): -            # Get llcommon and deps. If missing assume static linkage and continue. -            try: -                self.path('llcommon.dll') -                self.path('libapr-1.dll') -                self.path('libaprutil-1.dll') -                self.path('libapriconv-1.dll') -                 -            except RuntimeError as err: -                print err.message -                print "Skipping llcommon.dll (assuming llcommon was linked statically)" -              # Mesh 3rd party libs needed for auto LOD and collada reading              try:                  self.path("glod.dll") @@ -552,24 +530,21 @@ class WindowsManifest(ViewerManifest):              if self.args['configuration'].lower() == 'debug':                  self.path("msvcr120d.dll")                  self.path("msvcp120d.dll") -                self.path("msvcr100d.dll") -                self.path("msvcp100d.dll")              else:                  self.path("msvcr120.dll")                  self.path("msvcp120.dll") -                self.path("msvcr100.dll") -                self.path("msvcp100.dll") -            # Vivox runtimes -            self.path("SLVoice.exe") +            # SLVoice executable +            with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')): +                self.path("SLVoice.exe") + +            # Vivox libraries              if (self.address_size == 64):                  self.path("vivoxsdk_x64.dll")                  self.path("ortp_x64.dll")              else:                  self.path("vivoxsdk.dll")                  self.path("ortp.dll") -            self.path("libsndfile-1.dll") -            self.path("vivoxoal.dll")              # Security              self.path("ssleay32.dll") @@ -592,15 +567,6 @@ class WindowsManifest(ViewerManifest):                      self.path("BugSplat.dll")                      self.path("BugSplatRc.dll") -            # For google-perftools tcmalloc allocator. -            try: -                if self.args['configuration'].lower() == 'debug': -                    self.path('libtcmalloc_minimal-debug.dll') -                else: -                    self.path('libtcmalloc_minimal.dll') -            except: -                print "Skipping libtcmalloc_minimal.dll" -          self.path(src="licenses-win32.txt", dst="licenses.txt")          self.path("featuretable.txt") @@ -990,7 +956,7 @@ class DarwinManifest(ViewerManifest):                  with self.prefix(src=relpkgdir, dst=""):                      self.path("libndofdev.dylib") -                    self.path("libhunspell-1.3.0.dylib")    +                    self.path("libhunspell-1.3.a")                     with self.prefix(src_dst="cursors_mac"):                      self.path("*.tif") @@ -1037,11 +1003,15 @@ class DarwinManifest(ViewerManifest):                      # (source, dest) pair to self.file_list for every expanded                      # file processed. Remember its size before the call.                      oldlen = len(self.file_list) -                    self.path(src, dst) -                    # The dest appended to self.file_list has been prepended -                    # with self.get_dst_prefix(). Strip it off again. -                    added = [os.path.relpath(d, self.get_dst_prefix()) -                             for s, d in self.file_list[oldlen:]] +                    try: +                        self.path(src, dst) +                        # The dest appended to self.file_list has been prepended +                        # with self.get_dst_prefix(). Strip it off again. +                        added = [os.path.relpath(d, self.get_dst_prefix()) +                                 for s, d in self.file_list[oldlen:]] +                    except MissingError as err: +                        print >> sys.stderr, "Warning: "+err.msg +                        added = []                      if not added:                          print "Skipping %s" % dst                      return added @@ -1051,18 +1021,10 @@ class DarwinManifest(ViewerManifest):                  # symlink from sub-app/Contents/Resources to the real .dylib.                  # Need to get the llcommon dll from any of the build directories as well.                  libfile_parent = self.get_dst_prefix() -                libfile = "libllcommon.dylib" -                dylibs = path_optional(self.find_existing_file(os.path.join(os.pardir, -                                                               "llcommon", -                                                               self.args['configuration'], -                                                               libfile), -                                                               os.path.join(relpkgdir, libfile)), -                                       dst=libfile) - +                dylibs=[]                  for libfile in (                                  "libapr-1.0.dylib",                                  "libaprutil-1.0.dylib", -                                "libcollada14dom.dylib",                                  "libexpat.1.dylib",                                  "libexception_handler.dylib",                                  "libGLOD.dylib", @@ -1073,14 +1035,14 @@ class DarwinManifest(ViewerManifest):                                  ):                      dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile) -                # SLVoice and vivox lols, no symlinks needed +                # SLVoice executable +                with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')): +                    self.path("SLVoice") + +                # Vivox libraries                  for libfile in (                                  'libortp.dylib', -                                'libsndfile.dylib', -                                'libvivoxoal.dylib',                                  'libvivoxsdk.dylib', -                                'libvivoxplatform.dylib', -                                'SLVoice',                                  ):                      self.path2basename(relpkgdir, libfile) @@ -1575,7 +1537,6 @@ class Linux_i686_Manifest(LinuxManifest):              self.path("libsndfile.so.1")              #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib              self.path("libvivoxsdk.so") -            self.path("libvivoxplatform.so")          self.strip_binaries() @@ -1596,4 +1557,9 @@ if __name__ == "__main__":          dict(name='bugsplat', description="""BugSplat database to which to post crashes,               if BugSplat crash reporting is desired""", default=''),          ] -    main(extra=extra_arguments) +    try: +        main(extra=extra_arguments) +    except (ManifestError, MissingError) as err: +        sys.exit("\nviewer_manifest.py failed: "+err.msg) +    except: +        raise | 
