Commit 80236bb6 authored by Oz Linden's avatar Oz Linden

merge 6.3.2-release

parents 33821bd5 d89130c3
...@@ -2918,7 +2918,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> ...@@ -2918,7 +2918,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>license</key> <key>license</key>
<string>Mixed</string> <string>Mixed</string>
<key>license_file</key> <key>license_file</key>
<string>LICENSES/slvoice.txt</string> <string>LICENSES/vivox_licenses.txt</string>
<key>name</key> <key>name</key>
<string>slvoice</string> <string>slvoice</string>
<key>platforms</key> <key>platforms</key>
...@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> ...@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>a605ec940768c878527d3b8f2ff61288</string> <string>f824d586ab5de6edd14ef6828e9e4b66</string>
<key>url</key> <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> </map>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
...@@ -2976,9 +2976,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> ...@@ -2976,9 +2976,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>5a78539626b5f23522d0b466247f48b4</string> <string>1941c17c81905f23b4928288bcf719fb</string>
<key>url</key> <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> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
...@@ -2988,16 +2988,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> ...@@ -2988,16 +2988,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>1f8e09c053c00d9dc44ea74568e63dc1</string> <string>baa6cdc8e8762d5519996ed9faa0bf3f</string>
<key>url</key> <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> </map>
<key>name</key> <key>name</key>
<string>windows64</string> <string>windows64</string>
</map> </map>
</map> </map>
<key>version</key> <key>version</key>
<string>4.9.0002.30313.517593</string> <string>4.10.0000.32327.5fc3fe7c.531581</string>
</map> </map>
<key>tut</key> <key>tut</key>
<map> <map>
......
...@@ -17,17 +17,16 @@ if(WINDOWS) ...@@ -17,17 +17,16 @@ if(WINDOWS)
#******************************* #*******************************
# VIVOX - *NOTE: no debug version # VIVOX - *NOTE: no debug version
set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
set(vivox_files set(slvoice_src_dir "${ARCH_PREBUILT_BIN_RELEASE}")
SLVoice.exe set(slvoice_files SLVoice.exe )
)
if (ADDRESS_SIZE EQUAL 64) if (ADDRESS_SIZE EQUAL 64)
list(APPEND vivox_files list(APPEND vivox_libs
vivoxsdk_x64.dll vivoxsdk_x64.dll
ortp_x64.dll ortp_x64.dll
) )
else (ADDRESS_SIZE EQUAL 64) else (ADDRESS_SIZE EQUAL 64)
list(APPEND vivox_files list(APPEND vivox_libs
vivoxsdk.dll vivoxsdk.dll
ortp.dll ortp.dll
) )
...@@ -169,11 +168,10 @@ elseif(DARWIN) ...@@ -169,11 +168,10 @@ elseif(DARWIN)
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources") 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(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}/Release/Resources")
set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
set(vivox_files set(slvoice_files SLVoice)
SLVoice set(vivox_libs
libortp.dylib libortp.dylib
libvivoxplatform.dylib
libvivoxsdk.dylib libvivoxsdk.dylib
) )
set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
...@@ -206,15 +204,15 @@ elseif(LINUX) ...@@ -206,15 +204,15 @@ elseif(LINUX)
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}") set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}")
set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}") set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}")
set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
set(vivox_files set(vivox_libs
libsndfile.so.1 libsndfile.so.1
libortp.so libortp.so
libvivoxoal.so.1 libvivoxoal.so.1
libvivoxplatform.so
libvivoxsdk.so libvivoxsdk.so
SLVoice )
) set(slvoice_files SLVoice)
# *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
# or ARCH_PREBUILT_DIRS # or ARCH_PREBUILT_DIRS
set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
...@@ -251,8 +249,8 @@ elseif(LINUX) ...@@ -251,8 +249,8 @@ elseif(LINUX)
else(WINDOWS) else(WINDOWS)
message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...") 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_lib_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
set(vivox_files "") set(vivox_libs "")
# *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
# or ARCH_PREBUILT_DIRS # or ARCH_PREBUILT_DIRS
set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug") set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug")
...@@ -275,39 +273,36 @@ endif(WINDOWS) ...@@ -275,39 +273,36 @@ endif(WINDOWS)
################################################################ ################################################################
copy_if_different( copy_if_different(
${vivox_src_dir} ${vivox_lib_dir}
"${SHARED_LIB_STAGING_DIR_DEBUG}" "${SHARED_LIB_STAGING_DIR_DEBUG}"
out_targets out_targets
${vivox_files} ${vivox_libs}
) )
set(third_party_targets ${third_party_targets} ${out_targets}) set(third_party_targets ${third_party_targets} ${out_targets})
copy_if_different( 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}" "${SHARED_LIB_STAGING_DIR_RELEASE}"
out_targets out_targets
${vivox_files} ${vivox_libs}
) )
set(third_party_targets ${third_party_targets} ${out_targets}) set(third_party_targets ${third_party_targets} ${out_targets})
copy_if_different( copy_if_different(
${vivox_src_dir} ${vivox_lib_dir}
"${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}" "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
out_targets out_targets
${vivox_files} ${vivox_libs}
) )
set(third_party_targets ${third_party_targets} ${out_targets}) 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( copy_if_different(
${release_src_dir} ${release_src_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}" "${SHARED_LIB_STAGING_DIR_RELEASE}"
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
$/LicenseInfo$ $/LicenseInfo$
""" """
from collections import namedtuple, defaultdict
import commands import commands
import errno import errno
import filecmp import filecmp
...@@ -312,6 +313,8 @@ def __init__(cls, name, bases, dct): ...@@ -312,6 +313,8 @@ def __init__(cls, name, bases, dct):
if match: if match:
cls.manifests[match.group(1).lower()] = cls cls.manifests[match.group(1).lower()] = cls
MissingFile = namedtuple("MissingFile", ("pattern", "tried"))
class LLManifest(object): class LLManifest(object):
__metaclass__ = LLManifestRegistry __metaclass__ = LLManifestRegistry
manifests = {} manifests = {}
...@@ -333,7 +336,8 @@ def __init__(self, args): ...@@ -333,7 +336,8 @@ def __init__(self, args):
self.dst_prefix = [args['dest']] self.dst_prefix = [args['dest']]
self.created_paths = [] self.created_paths = []
self.package_name = "Unknown" self.package_name = "Unknown"
self.missing = []
def default_channel(self): def default_channel(self):
return self.args.get('channel', None) == RELEASE_CHANNEL return self.args.get('channel', None) == RELEASE_CHANNEL
...@@ -592,6 +596,40 @@ def copy_action(self, src, dst): ...@@ -592,6 +596,40 @@ def copy_action(self, src, dst):
def package_action(self, src, dst): def package_action(self, src, dst):
pass 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): def copy_finish(self):
pass pass
...@@ -825,17 +863,23 @@ def try_path(src): ...@@ -825,17 +863,23 @@ def try_path(src):
return count return count
try_prefixes = [self.get_src_prefix(), self.get_artwork_prefix(), self.get_build_prefix()] try_prefixes = [self.get_src_prefix(), self.get_artwork_prefix(), self.get_build_prefix()]
tried=[] for pfx in try_prefixes:
count=0
while not count and try_prefixes:
pfx = try_prefixes.pop(0)
try: try:
count = try_path(os.path.join(pfx, src)) count = try_path(os.path.join(pfx, src))
except MissingError: except MissingError:
tried.append(pfx) # if we produce MissingError, just try the next prefix
if not try_prefixes: continue
# no more prefixes left to try # If we actually found nonzero files, stop looking
print "unable to find '%s'; looked in:\n %s" % (src, '\n '.join(tried)) 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 print "%d files" % count
# Let caller check whether we processed as many files as expected. In # Let caller check whether we processed as many files as expected. In
...@@ -846,6 +890,8 @@ def do(self, *actions): ...@@ -846,6 +890,8 @@ def do(self, *actions):
self.actions = actions self.actions = actions
self.construct() self.construct()
# perform finish actions # perform finish actions
# generic finish first
self.finish()
for action in self.actions: for action in self.actions:
methodname = action + "_finish" methodname = action + "_finish"
method = getattr(self, methodname, None) method = getattr(self, methodname, None)
......
...@@ -824,6 +824,20 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon() ...@@ -824,6 +824,20 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
params.args.add("-lf"); params.args.add("-lf");
params.args.add(log_folder); 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"); std::string shutdown_timeout = gSavedSettings.getString("VivoxShutdownTimeout");
if (!shutdown_timeout.empty()) if (!shutdown_timeout.empty())
{ {
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
# Put it FIRST because some of our build hosts have an ancient install of # Put it FIRST because some of our build hosts have an ancient install of
# indra.util.llmanifest under their system Python! # indra.util.llmanifest under their system Python!
sys.path.insert(0, os.path.join(viewer_dir, os.pardir, "lib", "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 from llbase import llsd
class ViewerManifest(LLManifest): class ViewerManifest(LLManifest):
...@@ -145,13 +145,10 @@ def construct(self): ...@@ -145,13 +145,10 @@ def construct(self):
with self.prefix(src_dst="skins"): with self.prefix(src_dst="skins"):
# include the entire textures directory recursively # include the entire textures directory recursively
with self.prefix(src_dst="*/textures"): with self.prefix(src_dst="*/textures"):
self.path("*/*.tga")
self.path("*/*.j2c")
self.path("*/*.jpg") self.path("*/*.jpg")
self.path("*/*.png") self.path("*/*.png")
self.path("*.tga") self.path("*.tga")
self.path("*.j2c") self.path("*.j2c")
self.path("*.jpg")
self.path("*.png") self.path("*.png")
self.path("textures.xml") self.path("textures.xml")
self.path("*/xui/*/*.xml") self.path("*/xui/*/*.xml")
...@@ -171,14 +168,6 @@ def construct(self): ...@@ -171,14 +168,6 @@ def construct(self):
self.path("*/*/*.gif") 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 #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 #platform is computed above with other arg parsing
build_data_dict = {"Type":"viewer","Version":'.'.join(self.args['version']), build_data_dict = {"Type":"viewer","Version":'.'.join(self.args['version']),
...@@ -517,17 +506,6 @@ def construct(self): ...@@ -517,17 +506,6 @@ def construct(self):
with self.prefix(src=os.path.join(self.args['build'], os.pardir, with self.prefix(src=os.path.join(self.args['build'], os.pardir,
'sharedlibs', self.args['configuration'])): '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 # Mesh 3rd party libs needed for auto LOD and collada reading
try: try:
self.path("glod.dll") self.path("glod.dll")
...@@ -552,24 +530,21 @@ def construct(self): ...@@ -552,24 +530,21 @@ def construct(self):
if self.args['configuration'].lower() == 'debug': if self.args['configuration'].lower() == 'debug':
self.path("msvcr120d.dll") self.path("msvcr120d.dll")
self.path("msvcp120d.dll") self.path("msvcp120d.dll")
self.path("msvcr100d.dll")
self.path("msvcp100d.dll")
else: else:
self.path("msvcr120.dll") self.path("msvcr120.dll")
self.path("msvcp120.dll") self.path("msvcp120.dll")
self.path("msvcr100.dll")
self.path("msvcp100.dll")
# Vivox runtimes # SLVoice executable
self.path("SLVoice.exe") with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')):
self.path("SLVoice.exe")
# Vivox libraries
if (self.address_size == 64): if (self.address_size == 64):
self.path("vivoxsdk_x64.dll") self.path("vivoxsdk_x64.dll")
self.path("ortp_x64.dll") self.path("ortp_x64.dll")
else: else:
self.path("vivoxsdk.dll") self.path("vivoxsdk.dll")
self.path("ortp.dll") self.path("ortp.dll")
self.path("libsndfile-1.dll")
self.path("vivoxoal.dll")
# Security # Security
self.path("ssleay32.dll") self.path("ssleay32.dll")
...@@ -592,15 +567,6 @@ def construct(self): ...@@ -592,15 +567,6 @@ def construct(self):
self.path("BugSplat.dll") self.path("BugSplat.dll")
self.path("BugSplatRc.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(src="licenses-win32.txt", dst="licenses.txt")
self.path("featuretable.txt") self.path("featuretable.txt")
...@@ -990,7 +956,7 @@ def construct(self): ...@@ -990,7 +956,7 @@ def construct(self):
with self.prefix(src=relpkgdir, dst=""): with self.prefix(src=relpkgdir, dst=""):
self.path("libndofdev.dylib") self.path("libndofdev.dylib")
self.path("libhunspell-1.3.0.dylib") self.path("libhunspell-1.3.a")
with self.prefix(src_dst="cursors_mac"): with self.prefix(src_dst="cursors_mac"):
self.path("*.tif") self.path("*.tif")
...@@ -1037,11 +1003,15 @@ def path_optional(src, dst): ...@@ -1037,11 +1003,15 @@ def path_optional(src, dst):
# (source, dest) pair to self.file_list for every expanded # (source, dest) pair to self.file_list for every expanded
# file processed. Remember its size before the call. # file processed. Remember its size before the call.
oldlen = len(self.file_list) oldlen = len(self.file_list)
self.path(src, dst) try:
# The dest appended to self.file_list has been prepended self.path(src, dst)
# with self.get_dst_prefix(). Strip it off again. # The dest appended to self.file_list has been prepended
added = [os.path.relpath(d, self.get_dst_prefix()) # with self.get_dst_prefix(). Strip it off again.
for s, d in self.file_list[oldlen:]] 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: if not added:
print "Skipping %s" % dst print "Skipping %s" % dst
return added return added
...@@ -1051,18 +1021,10 @@ def path_optional(src, dst): ...@@ -1051,18 +1021,10 @@ def path_optional(src, dst):
# symlink from sub-app/Contents/Resources to the real .dylib. # symlink from sub-app/Contents/Resources to the real .dylib.
# Need to get the llcommon dll from any of the build directories as well. # Need to get the llcommon dll from any of the build directories as well.
libfile_parent = self.get_dst_prefix() libfile_parent = self.get_dst_prefix()
libfile = "libllcommon.dylib" dylibs=[]
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 ( for libfile in (
"libapr-1.0.dylib", "libapr-1.0.dylib",
"libaprutil-1.0.dylib", "libaprutil-1.0.dylib",
"libcollada14dom.dylib",
"libexpat.1.dylib", "libexpat.1.dylib",
"libexception_handler.dylib", "libexception_handler.dylib",
"libGLOD.dylib", "libGLOD.dylib",
...@@ -1073,14 +1035,14 @@ def path_optional(src, dst): ...@@ -1073,14 +1035,14 @@ def path_optional(src, dst):
): ):
dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile)