Commit b70168b1 authored by andreykproductengine's avatar andreykproductengine
Browse files

Merged in viewer-release

parents af5c5562 197cb265
......@@ -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
......@@ -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>
......
......@@ -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}"
......
......@@ -27,6 +27,7 @@
$/LicenseInfo$
"""
from collections import namedtuple, defaultdict
import commands
import errno
import filecmp
......@@ -312,6 +313,8 @@ def __init__(cls, name, bases, dct):
if match:
cls.manifests[match.group(1).lower()] = cls
MissingFile = namedtuple("MissingFile", ("pattern", "tried"))
class LLManifest(object):
__metaclass__ = LLManifestRegistry
manifests = {}
......@@ -333,7 +336,8 @@ def __init__(self, args):
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 @@ def copy_action(self, src, dst):
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 @@ def try_path(src):
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 @@ def do(self, *actions):
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)
......
......@@ -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())
{
......
......@@ -46,7 +46,7 @@
# 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 @@ def construct(self):
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 @@ def construct(self):
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 @@ def construct(self):
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 @@ def construct(self):
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 @@ def construct(self):
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 @@ def construct(self):
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 @@ def path_optional(src, dst):
# (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 @@ def path_optional(src, dst):
# 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 @@ def path_optional(src, dst):
):
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 @@ def construct(self):
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 @@ def construct(self):
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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment