summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.hgtags1
-rwxr-xr-xBuildParams4
-rwxr-xr-xbuild.sh60
-rw-r--r--indra/newview/VIEWER_VERSION.txt2
-rwxr-xr-xindra/newview/installers/windows/installer_template.nsi21
-rwxr-xr-xindra/newview/viewer_manifest.py40
6 files changed, 98 insertions, 30 deletions
diff --git a/.hgtags b/.hgtags
index 07ddf93c11..0f67e5c3d3 100755
--- a/.hgtags
+++ b/.hgtags
@@ -471,3 +471,4 @@ d40c66e410741de7e90b1ed6dac28dd8a2d7e1f6 3.6.8-release
5b54b36862ff8bc3b6935673c9d1c1f22ee8d521 3.6.10-release
2feb70a4cfde43f2898d95ff8fcae3e67805c7c2 3.6.11-release
88bbfd7a6971033f3aa103f3a3500ceb4c73521b 3.6.12-release
+0d9b9e50f1a8880e05f15688a9ec7d09e0e81013 3.6.13-release
diff --git a/BuildParams b/BuildParams
index 6b63448c52..ede2595cd3 100755
--- a/BuildParams
+++ b/BuildParams
@@ -49,11 +49,13 @@ viewer_channel = "Second Life Test"
# Setup default packaging parameters.
sourceid = ""
-additional_packages = "Amazon Desura B C"
+additional_packages = "Amazon Desura A B C"
Amazon_sourceid = "1207v_Amazon"
Amazon_viewer_channel_suffix = "Amazon"
Desura_sourceid = "1208_desura"
Desura_viewer_channel_suffix = "Desura"
+A_sourceid = "1300_A"
+A_viewer_channel_suffix = "A"
B_sourceid = "1301_B"
B_viewer_channel_suffix = "B"
C_sourceid = "1302_C"
diff --git a/build.sh b/build.sh
index ccc8476cea..1fd2cd802b 100755
--- a/build.sh
+++ b/build.sh
@@ -36,24 +36,59 @@ build_dir_CYGWIN()
echo build-vc100
}
+viewer_channel_suffix()
+{
+ local package_name="$1"
+ local suffix_var="${package_name}_viewer_channel_suffix"
+ local suffix=$(eval "echo \$${suffix_var}")
+ if [ "$suffix"x = ""x ]
+ then
+ echo ""
+ else
+ echo "_$suffix"
+ fi
+}
+
installer_Darwin()
{
- ls -1tr "$(build_dir_Darwin ${last_built_variant:-Release})/newview/"*"$additional_package_name"*.dmg 2>/dev/null | sed 1q
+ local package_name="$1"
+ local package_dir="$(build_dir_Darwin ${last_built_variant:-Release})/newview/"
+ local pattern=".*$(viewer_channel_suffix ${package_name})_[0-9]+_[0-9]+_[0-9]+_[0-9]+_i386\\.dmg\$"
+ # since the additional packages are built after the base package,
+ # sorting oldest first ensures that the unqualified package is returned
+ # even if someone makes a qualified name that duplicates the last word of the base name
+ local package=$(ls -1tr "$package_dir" 2>/dev/null | grep -E "$pattern" | head -n 1)
+ test "$package"x != ""x && echo "$package_dir/$package"
}
installer_Linux()
{
- ls -1tr "$(build_dir_Linux ${last_built_variant:-Release})/newview/"*"$additional_package_name"*.tar.bz2 2>/dev/null | grep -v symbols | sed 1q
+ local package_name="$1"
+ local package_dir="$(build_dir_Linux ${last_built_variant:-Release})/newview/"
+ local pattern=".*$(viewer_channel_suffix ${package_name})_[0-9]+_[0-9]+_[0-9]+_[0-9]+_i686\\.tar\\.bz2\$"
+ # since the additional packages are built after the base package,
+ # sorting oldest first ensures that the unqualified package is returned
+ # even if someone makes a qualified name that duplicates the last word of the base name
+ package=$(ls -1tr "$package_dir" 2>/dev/null | grep -E "$pattern" | head -n 1)
+ test "$package"x != ""x && echo "$package_dir/$package"
}
installer_CYGWIN()
{
- v=${last_built_variant:-Release}
- d=$(build_dir_CYGWIN $v)
- if [ -r "$d/newview/$additional_package_name$v/touched.bat" ]
+ local package_name="$1"
+ local variant=${last_built_variant:-Release}
+ local build_dir=$(build_dir_CYGWIN ${variant})
+ local package_dir
+ if [ "$package_name"x = ""x ]
+ then
+ package_dir="${build_dir}/newview/${variant}"
+ else
+ package_dir="${build_dir}/newview/${package_name}/${variant}"
+ fi
+ if [ -r "${package_dir}/touched.bat" ]
then
- p=$(sed 's:.*=::' "$d/newview/$additional_package_name$v/touched.bat")
- echo "$d/newview/$additional_package_name$v/$p"
+ local package_file=$(sed 's:.*=::' "${package_dir}/touched.bat")
+ echo "${package_dir}/${package_file}"
fi
}
@@ -275,7 +310,7 @@ then
if $build_viewer_deb && [ "$last_built_variant" == "Release" ]
then
begin_section "Build Viewer Debian Package"
- local have_private_repo=false
+ have_private_repo=false
# mangle the changelog
dch --force-bad-version \
--distribution unstable \
@@ -362,19 +397,14 @@ then
# Upload additional packages.
for package_id in $additional_packages
do
- case $arch in
- CYGWIN) export additional_package_name="$package_id/" ;;
- *) export additional_package_name=$package_id ;;
- esac
- package=$(installer_$arch)
+ package=$(installer_$arch "$package_id")
if [ x"$package" != x ]
then
upload_item installer "$package" binary/octet-stream
else
- record_failure "Failed to upload $package_id package ($package::$additional_package_name)."
+ record_failure "Failed to find additional package for '$package_id'."
fi
done
- export additional_package_name=""
case "$last_built_variant" in
Release)
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index 3609cf7707..f5c2a4050b 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-3.6.13
+3.6.14
diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi
index dd316cdbdf..c4f503ef4e 100755
--- a/indra/newview/installers/windows/installer_template.nsi
+++ b/indra/newview/installers/windows/installer_template.nsi
@@ -301,6 +301,23 @@ Function CheckNetworkConnection
Return
FunctionEnd
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Function CheckOldExeName
+; Viewer versions < 3.6.12 used the name 'SecondLife.exe'
+; If that name is found in the install folder, delete it to invalidate any
+; old shortcuts to it that may be in non-standard locations, so that the user
+; does not end up running the old version (potentially getting caught in an
+; infinite update loop). See MAINT-3575
+; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+Function CheckOldExeName
+ IfFileExists "$INSTDIR\SecondLife.exe" CHECKOLDEXE_FOUND CHECKOLDEXE_DONE
+
+CHECKOLDEXE_FOUND:
+ Delete "$INSTDIR\SecondLife.exe"
+CHECKOLDEXE_DONE:
+FunctionEnd
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Function CheckWillUninstallV2
@@ -673,6 +690,9 @@ Delete "$INSTDIR\*.glsl"
Delete "$INSTDIR\motions\*.lla"
Delete "$INSTDIR\trial\*.html"
Delete "$INSTDIR\newview.exe"
+Delete "$INSTDIR\SecondLife.exe"
+;; MAINT-3099 workaround - prevent these log files, if present, from causing a user alert
+Delete "$INSTDIR\VivoxVoiceService-*.log"
;; Remove entire help directory
Delete "$INSTDIR\help\Advanced\*"
RMDir "$INSTDIR\help\Advanced"
@@ -920,6 +940,7 @@ Call CheckIfAlreadyCurrent ; Make sure that we haven't already installed this v
Call CloseSecondLife ; Make sure we're not running
Call CheckNetworkConnection ; ping secondlife.com
Call CheckWillUninstallV2 ; See if a V2 install exists and will be removed.
+Call CheckOldExeName ; Clean up a previous version of the exe
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
StrCmp $DO_UNINSTALL_V2 "" PRESERVE_DONE
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 9e8623c1f9..96b4c7268c 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -38,7 +38,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, proper_windows_path, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL
+from indra.util.llmanifest import LLManifest, main, proper_windows_path, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError
try:
from llbase import llsd
except ImportError:
@@ -136,13 +136,11 @@ class ViewerManifest(LLManifest):
settings_install['CmdLineGridChoice']['Value'] = self.grid()
print "Set CmdLineGridChoice in settings_install.xml to '%s'" % self.grid()
- # did we actually copy anything into settings_install dict?
- if settings_install:
- # put_in_file(src=) need not be an actual pathname; it
- # only needs to be non-empty
- self.put_in_file(llsd.format_pretty_xml(settings_install),
- "settings_install.xml",
- src="environment")
+ # put_in_file(src=) need not be an actual pathname; it
+ # only needs to be non-empty
+ self.put_in_file(llsd.format_pretty_xml(settings_install),
+ "settings_install.xml",
+ src="environment")
self.end_prefix("app_settings")
@@ -820,11 +818,27 @@ class Darwin_i386_Manifest(ViewerManifest):
keychain_pwd = open(keychain_pwd_path).read().rstrip()
self.run_command('security unlock-keychain -p "%s" "%s/Library/Keychains/viewer.keychain"' % ( keychain_pwd, home_path ) )
- self.run_command('codesign --verbose --force --keychain "%(home_path)s/Library/Keychains/viewer.keychain" --sign %(identity)r %(bundle)r' % {
- 'home_path' : home_path,
- 'identity': identity,
- 'bundle': self.get_dst_prefix()
- })
+ signed=False
+ sign_attempts=3
+ sign_retry_wait=15
+ while (not signed) and (sign_attempts > 0):
+ try:
+ sign_attempts-=1;
+ self.run_command(
+ 'codesign --verbose --force --keychain "%(home_path)s/Library/Keychains/viewer.keychain" --sign %(identity)r %(bundle)r' % {
+ 'home_path' : home_path,
+ 'identity': identity,
+ 'bundle': self.get_dst_prefix()
+ })
+ signed=True # if no exception was raised, the codesign worked
+ except ManifestError, err:
+ if sign_attempts:
+ print >> sys.stderr, "codesign failed, waiting %d seconds before retrying" % sign_retry_wait
+ time.sleep(sign_retry_wait)
+ sign_retry_wait*=2
+ else:
+ print >> sys.stderr, "Maximum codesign attempts exceeded; giving up"
+ raise
imagename="SecondLife_" + '_'.join(self.args['version'])