From 296480d552e36f6aae9d94129386d984781da2ef Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Mon, 16 Sep 2019 12:50:30 -0400
Subject: SL-11598: viewer_manifest.py should fail if a viewer file is missing

---
 indra/lib/python/indra/util/llmanifest.py |  3 ++-
 indra/newview/viewer_manifest.py          | 34 ++++++++++++++++++-------------
 2 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py
index 2e6cf53912..57788f6099 100755
--- a/indra/lib/python/indra/util/llmanifest.py
+++ b/indra/lib/python/indra/util/llmanifest.py
@@ -835,7 +835,8 @@ class LLManifest(object):
                 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))
+                    raise MissingError("unable to find '%s'; looked in:\n  %s" % (src, '\n  '.join(tried)))
+                    
         print "%d files" % count
 
         # Let caller check whether we processed as many files as expected. In
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index fcb97ded8f..3f6a7124a4 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):
@@ -176,9 +176,6 @@ class ViewerManifest(LLManifest):
                 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']),
@@ -524,7 +521,7 @@ class WindowsManifest(ViewerManifest):
                 self.path('libaprutil-1.dll')
                 self.path('libapriconv-1.dll')
                 
-            except RuntimeError as err:
+            except MissingError as err:
                 print err.message
                 print "Skipping llcommon.dll (assuming llcommon was linked statically)"
 
@@ -990,7 +987,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 +1034,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
@@ -1076,8 +1077,8 @@ class DarwinManifest(ViewerManifest):
                 # SLVoice and vivox lols, no symlinks needed
                 for libfile in (
                                 'libortp.dylib',
-                                'libsndfile.dylib',
-                                'libvivoxoal.dylib',
+                                #'libsndfile.dylib',
+                                #'libvivoxoal.dylib',
                                 'libvivoxsdk.dylib',
                                 'libvivoxplatform.dylib',
                                 'SLVoice',
@@ -1596,4 +1597,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
-- 
cgit v1.2.3


From 637b13cf74341c25d1c0cdc565efdbee2694dac9 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 18 Sep 2019 10:26:27 -0400
Subject: SL-11598: Remove from viewer_manifest.py pointless Windows wildcards.

By "pointless" we mean filenames or patterns in the Windows platform
specification that always match 0 files.

Add logic to llmanifest.py to collect and report all missing files, instead of
stopping at the first.
---
 indra/lib/python/indra/util/llmanifest.py | 65 ++++++++++++++++++++++++++-----
 indra/newview/viewer_manifest.py          | 34 ----------------
 2 files changed, 55 insertions(+), 44 deletions(-)

diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py
index 57788f6099..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,18 +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
-                    raise MissingError("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
@@ -847,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_manifest.py b/indra/newview/viewer_manifest.py
index 3f6a7124a4..9976c49ca5 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -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,11 +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")
-
             #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']),
@@ -514,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 MissingError 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")
@@ -549,13 +530,9 @@ 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")
@@ -565,8 +542,6 @@ class WindowsManifest(ViewerManifest):
             else:
                 self.path("vivoxsdk.dll")
                 self.path("ortp.dll")
-            self.path("libsndfile-1.dll")
-            self.path("vivoxoal.dll")
             
             # Security
             self.path("ssleay32.dll")
@@ -589,15 +564,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")
 
-- 
cgit v1.2.3


From 5aff3dfaf950c16ca6ea5708026f917602021dcb Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Wed, 18 Sep 2019 12:51:03 -0400
Subject: more Mac manifest cleanup

---
 indra/newview/viewer_manifest.py | 16 +---------------
 1 file changed, 1 insertion(+), 15 deletions(-)

diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 9976c49ca5..caf7815497 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1018,33 +1018,19 @@ 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)
-
                 for libfile in (
                                 "libapr-1.0.dylib",
                                 "libaprutil-1.0.dylib",
-                                "libcollada14dom.dylib",
                                 "libexpat.1.dylib",
                                 "libexception_handler.dylib",
                                 "libGLOD.dylib",
-                                # libnghttp2.dylib is a symlink to
-                                # libnghttp2.major.dylib, which is a symlink to
-                                # libnghttp2.version.dylib. Get all of them.
                                 "libnghttp2.*dylib",
                                 ):
-                    dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile)
+                    dylibs = path_optional(os.path.join(relpkgdir, libfile), libfile)
 
                 # SLVoice and vivox lols, no symlinks needed
                 for libfile in (
                                 'libortp.dylib',
-                                #'libsndfile.dylib',
-                                #'libvivoxoal.dylib',
                                 'libvivoxsdk.dylib',
                                 'libvivoxplatform.dylib',
                                 'SLVoice',
-- 
cgit v1.2.3


From f87e1a43b803d8d84ab0ff6683985c0f604522ff Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 20 Sep 2019 04:35:15 -0400
Subject: remove obsolete llcommon dylib for Mac

---
 indra/newview/viewer_manifest.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index caf7815497..f56dd461d8 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1018,15 +1018,19 @@ 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()
+                dylibs=[]
                 for libfile in (
                                 "libapr-1.0.dylib",
                                 "libaprutil-1.0.dylib",
                                 "libexpat.1.dylib",
                                 "libexception_handler.dylib",
                                 "libGLOD.dylib",
+                                # libnghttp2.dylib is a symlink to
+                                # libnghttp2.major.dylib, which is a symlink to
+                                # libnghttp2.version.dylib. Get all of them.
                                 "libnghttp2.*dylib",
                                 ):
-                    dylibs = path_optional(os.path.join(relpkgdir, libfile), libfile)
+                    dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile)
 
                 # SLVoice and vivox lols, no symlinks needed
                 for libfile in (
-- 
cgit v1.2.3


From 4cbef35f503bb7ee8f489b354e4afb2350085709 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Tue, 16 Jul 2019 18:17:23 -0400
Subject: update Vivox for VOICE-56

---
 autobuild.xml                      | 14 +++++++-------
 indra/cmake/Copy3rdPartyLibs.cmake |  2 --
 indra/newview/viewer_manifest.py   |  2 --
 3 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 5f072512c1..3ab233a733 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a605ec940768c878527d3b8f2ff61288</string>
+              <string>fff83736e4dc4b22218cdd24aaada680</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/40868/353426/slvoice-4.9.0002.32137.529403-darwin64-529403.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>f900bce6ac33056b817e0dd8e6ec0e1c</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/40870/353440/slvoice-4.9.0002.32137.529403-windows-529403.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>57800dbaa45d10d7886689113edbad59</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/40869/353433/slvoice-4.9.0002.32137.529403-windows64-529403.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>4.9.0002.30313.517593</string>
+        <string>4.9.0002.32137.529403</string>
       </map>
       <key>tut</key>
       <map>
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index dde53835fb..808b4601fb 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -173,7 +173,6 @@ elseif(DARWIN)
     set(vivox_files
         SLVoice
         libortp.dylib
-        libvivoxplatform.dylib
         libvivoxsdk.dylib
        )
     set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
@@ -211,7 +210,6 @@ elseif(LINUX)
         libsndfile.so.1
         libortp.so
         libvivoxoal.so.1
-        libvivoxplatform.so
         libvivoxsdk.so
         SLVoice
        )
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index f56dd461d8..8a38f3a742 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1036,7 +1036,6 @@ class DarwinManifest(ViewerManifest):
                 for libfile in (
                                 'libortp.dylib',
                                 'libvivoxsdk.dylib',
-                                'libvivoxplatform.dylib',
                                 'SLVoice',
                                 ):
                     self.path2basename(relpkgdir, libfile)
@@ -1532,7 +1531,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()
 
-- 
cgit v1.2.3


From b74f698caaaa6ac8d498ea0461c354bb9cbb2b95 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 6 Sep 2019 11:51:36 -0400
Subject: handle slvoice executable separately from the vivox libraries, and
 update mac slvoice package

---
 autobuild.xml                      |  8 +++---
 indra/cmake/Copy3rdPartyLibs.cmake | 59 ++++++++++++++++++--------------------
 indra/newview/viewer_manifest.py   | 14 ++++++---
 3 files changed, 42 insertions(+), 39 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 3ab233a733..4ff79f17d2 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>fff83736e4dc4b22218cdd24aaada680</string>
+              <string>44bc68dbfe3f4b77817e80cb32845bed</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/40868/353426/slvoice-4.9.0002.32137.529403-darwin64-529403.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/42782/379901/slvoice-4.9.0002.32137.3410b595.530683-darwin64-530683.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin64</string>
@@ -2997,7 +2997,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
           </map>
         </map>
         <key>version</key>
-        <string>4.9.0002.32137.529403</string>
+        <string>4.9.0002.32137.3410b595.530683</string>
       </map>
       <key>tut</key>
       <map>
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index 808b4601fb..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,9 +168,9 @@ 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
         libvivoxsdk.dylib
        )
@@ -205,14 +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
         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}")
@@ -249,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")
@@ -273,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/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 8a38f3a742..c5cf237f63 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -534,8 +534,11 @@ class WindowsManifest(ViewerManifest):
                 self.path("msvcr120.dll")
                 self.path("msvcp120.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")
@@ -1032,11 +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.exe")
+
+                # Vivox libraries
                 for libfile in (
                                 'libortp.dylib',
                                 'libvivoxsdk.dylib',
-                                'SLVoice',
                                 ):
                     self.path2basename(relpkgdir, libfile)
 
-- 
cgit v1.2.3


From eccc8f67212b5240bb518a201b319839b95f0e5b Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 13 Sep 2019 09:43:28 -0400
Subject: update Mac slvoice build

---
 autobuild.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 4ff79f17d2..f02ba3b1fa 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>44bc68dbfe3f4b77817e80cb32845bed</string>
+              <string>9e47f686671fd6b019983a0d1c94165f</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/42782/379901/slvoice-4.9.0002.32137.3410b595.530683-darwin64-530683.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43234/383706/slvoice-4.9.0002.32137.3410b595.530909-darwin64-530909.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin64</string>
@@ -2997,7 +2997,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
           </map>
         </map>
         <key>version</key>
-        <string>4.9.0002.32137.3410b595.530683</string>
+        <string>4.9.0002.32137.3410b595.530909</string>
       </map>
       <key>tut</key>
       <map>
-- 
cgit v1.2.3


From 1ed2cfaaf6b33014febbe2232fe31b5e9bd90aed Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 13 Sep 2019 15:21:47 -0400
Subject: correct Mac SLVoice executable name

---
 indra/newview/viewer_manifest.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index c5cf237f63..a4cda0ba78 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1037,7 +1037,7 @@ class DarwinManifest(ViewerManifest):
 
                 # SLVoice executable
                 with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')):
-                    self.path("SLVoice.exe")
+                    self.path("SLVoice")
 
                 # Vivox libraries
                 for libfile in (
-- 
cgit v1.2.3


From c9bb7833313e34934b33db6ddbc417a0bc472a5e Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Tue, 17 Sep 2019 14:40:25 -0400
Subject: update to SLVoice version 4.9.0002.32137.3410b595.531025

---
 autobuild.xml | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index f02ba3b1fa..00bf59baf6 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9e47f686671fd6b019983a0d1c94165f</string>
+              <string>d7272b6827d3c2c784364a83cb6013da</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43234/383706/slvoice-4.9.0002.32137.3410b595.530909-darwin64-530909.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43410/386135/slvoice-4.9.0002.32137.3410b595.531025-darwin64-531025.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>f900bce6ac33056b817e0dd8e6ec0e1c</string>
+              <string>43276ddc4b94e26a12499b9bf847f734</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/40870/353440/slvoice-4.9.0002.32137.529403-windows-529403.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43411/386177/slvoice-4.9.0002.32137.3410b595.531025-windows-531025.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>57800dbaa45d10d7886689113edbad59</string>
+              <string>36c216956b144a83296d3bb02fa6acb2</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/40869/353433/slvoice-4.9.0002.32137.529403-windows64-529403.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43412/386186/slvoice-4.9.0002.32137.3410b595.531025-windows64-531025.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>4.9.0002.32137.3410b595.530909</string>
+        <string>4.9.0002.32137.3410b595.531025</string>
       </map>
       <key>tut</key>
       <map>
-- 
cgit v1.2.3


From da560ac644d5a12468f29e0e28c85a6ada501287 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 20 Sep 2019 14:33:57 -0400
Subject: VOICE-80: suppress output to console on Windows

---
 autobuild.xml | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 00bf59baf6..ddf5cfd278 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>d7272b6827d3c2c784364a83cb6013da</string>
+              <string>544f5c5258f48fb14826c0859eb81e15</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43410/386135/slvoice-4.9.0002.32137.3410b595.531025-darwin64-531025.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43558/387616/slvoice-4.9.0002.32137.3410b595.531122-darwin64-531122.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>43276ddc4b94e26a12499b9bf847f734</string>
+              <string>56575ef333528d1af3f21fa1cbd948e5</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43411/386177/slvoice-4.9.0002.32137.3410b595.531025-windows-531025.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43560/387628/slvoice-4.9.0002.32137.3410b595.531122-windows-531122.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>36c216956b144a83296d3bb02fa6acb2</string>
+              <string>bf5e2aa1114998307ceed5a9f1af3c3a</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43412/386186/slvoice-4.9.0002.32137.3410b595.531025-windows64-531025.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43559/387627/slvoice-4.9.0002.32137.3410b595.531122-windows64-531122.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>4.9.0002.32137.3410b595.531025</string>
+        <string>4.9.0002.32137.3410b595.531122</string>
       </map>
       <key>tut</key>
       <map>
-- 
cgit v1.2.3


From 00d7698999defa3716a2f683e346d16ff80f920e Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Wed, 25 Sep 2019 15:54:40 -0400
Subject: upgrade to SLVoice package after fix for ortp linking

---
 autobuild.xml | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index ddf5cfd278..31908375b3 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>544f5c5258f48fb14826c0859eb81e15</string>
+              <string>1e643858d86329df68e4ede9c945968b</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43558/387616/slvoice-4.9.0002.32137.3410b595.531122-darwin64-531122.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43844/390206/slvoice-4.9.0002.32137.3410b595.531271-darwin64-531271.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>56575ef333528d1af3f21fa1cbd948e5</string>
+              <string>42d52e81d3fe05310d215128e2e81ece</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43560/387628/slvoice-4.9.0002.32137.3410b595.531122-windows-531122.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43846/390218/slvoice-4.9.0002.32137.3410b595.531271-windows-531271.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>bf5e2aa1114998307ceed5a9f1af3c3a</string>
+              <string>e5fdb9160585e259fe68a2c4597a838c</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43559/387627/slvoice-4.9.0002.32137.3410b595.531122-windows64-531122.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43845/390217/slvoice-4.9.0002.32137.3410b595.531271-windows64-531271.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>4.9.0002.32137.3410b595.531122</string>
+        <string>4.9.0002.32137.3410b595.531271</string>
       </map>
       <key>tut</key>
       <map>
-- 
cgit v1.2.3


From f7d6fa677cf14a6e4b5768b4421c59ef8f6535e3 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 27 Sep 2019 11:49:39 -0400
Subject: update to SLVoice build 4.9.0002.32137.3410b595.531271

---
 autobuild.xml | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 31908375b3..86fc9fb508 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>1e643858d86329df68e4ede9c945968b</string>
+              <string>2852af3a96f0267231ae8f8858dcbfad</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43844/390206/slvoice-4.9.0002.32137.3410b595.531271-darwin64-531271.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44138/390924/slvoice-4.9.0002.32137.3410b595.531323-darwin64-531323.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>42d52e81d3fe05310d215128e2e81ece</string>
+              <string>4db71fa6c4fb6bf3fc33413fed862960</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43846/390218/slvoice-4.9.0002.32137.3410b595.531271-windows-531271.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44139/390932/slvoice-4.9.0002.32137.3410b595.531323-windows-531323.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>e5fdb9160585e259fe68a2c4597a838c</string>
+              <string>d583294eec6183db62f2b5a4e94a432c</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43845/390217/slvoice-4.9.0002.32137.3410b595.531271-windows64-531271.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44140/390938/slvoice-4.9.0002.32137.3410b595.531323-windows64-531323.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>4.9.0002.32137.3410b595.531271</string>
+        <string>4.9.0002.32137.3410b595.531323</string>
       </map>
       <key>tut</key>
       <map>
-- 
cgit v1.2.3


From 7e494d402dfd39b2561c5309161763433f62bde1 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Tue, 1 Oct 2019 13:08:55 -0400
Subject: experimental 4.10 win64 package

---
 autobuild.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 86fc9fb508..96b5f074cd 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2988,16 +2988,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>d583294eec6183db62f2b5a4e94a432c</string>
+              <string>2e7b4afeac45cf8c2126833fc94ae9d9</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44140/390938/slvoice-4.9.0002.32137.3410b595.531323-windows64-531323.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44530/393171/slvoice-4.9.0002.32137.3410b595.531460-windows64-531460.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>4.9.0002.32137.3410b595.531323</string>
+        <string>4.9.0002.32137.3410b595.531460</string>
       </map>
       <key>tut</key>
       <map>
-- 
cgit v1.2.3


From 1cb5ec90233e631bd1133bf79631b9cf6d834311 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 4 Oct 2019 11:12:38 -0400
Subject: upgrade SLVoice to 4.10.0000.32327.5fc3fe7c.531581

---
 autobuild.xml | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 96b5f074cd..7f9801ea5b 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>2852af3a96f0267231ae8f8858dcbfad</string>
+              <string>f824d586ab5de6edd14ef6828e9e4b66</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44138/390924/slvoice-4.9.0002.32137.3410b595.531323-darwin64-531323.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>4db71fa6c4fb6bf3fc33413fed862960</string>
+              <string>1941c17c81905f23b4928288bcf719fb</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44139/390932/slvoice-4.9.0002.32137.3410b595.531323-windows-531323.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>2e7b4afeac45cf8c2126833fc94ae9d9</string>
+              <string>baa6cdc8e8762d5519996ed9faa0bf3f</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/44530/393171/slvoice-4.9.0002.32137.3410b595.531460-windows64-531460.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.32137.3410b595.531460</string>
+        <string>4.10.0000.32327.5fc3fe7c.531581</string>
       </map>
       <key>tut</key>
       <map>
-- 
cgit v1.2.3


From d89130c32ab73f87f57c5294be3e7fe1cb856258 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 4 Oct 2019 15:16:24 -0400
Subject: rename SLVoice log file and rotate the way we do for SecondLife.log

---
 indra/newview/llvoicevivox.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

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())
             {
-- 
cgit v1.2.3


From 3fb47a820bbded434f11d7d555613c17345f974a Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 23 Oct 2019 11:13:04 -0400
Subject: OPEN-347: Remove ineffective, disabled 'hdiutil internet-enable'.

macOS Catalina no longer even recognizes that subcommand. Remove it.
---
 indra/newview/viewer_manifest.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index fcb97ded8f..c490b58914 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1370,7 +1370,6 @@ class DarwinManifest(ViewerManifest):
         print "Converting temp disk image to final disk image"
         self.run_command(['hdiutil', 'convert', sparsename, '-format', 'UDZO',
                           '-imagekey', 'zlib-level=9', '-o', finalname])
-        self.run_command(['hdiutil', 'internet-enable', '-yes', finalname])
         # get rid of the temp file
         self.package_file = finalname
         self.remove(sparsename)
-- 
cgit v1.2.3


From 94512b0a7781a48b2aeed435d5dd8ac1178419c2 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 29 Oct 2019 12:31:52 -0400
Subject: Added tag 6.3.3-release for changeset d9a4bd15e2c8

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index 75ece0c9b4..c1b268bf2b 100755
--- a/.hgtags
+++ b/.hgtags
@@ -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
-- 
cgit v1.2.3


From 197cb2654cb6e7891322c113666e656684e8c6c3 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 29 Oct 2019 12:31:52 -0400
Subject: increment viewer version to 6.3.4

---
 indra/newview/VIEWER_VERSION.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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
-- 
cgit v1.2.3