diff options
-rw-r--r-- | indra/lib/python/indra/util/llmanifest.py | 5 | ||||
-rwxr-xr-x | indra/newview/viewer_manifest.py | 22 |
2 files changed, 21 insertions, 6 deletions
diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py index a73fc6c293..814e1c9f95 100644 --- a/indra/lib/python/indra/util/llmanifest.py +++ b/indra/lib/python/indra/util/llmanifest.py @@ -128,8 +128,11 @@ ARGUMENTS=[ value for this parameter.""", default=""), dict(name='channel', - description="""The channel to use for updates.""", + description="""The channel to use for updates, packaging, settings name, etc.""", default=get_channel), + dict(name='login_channel', + description="""The channel to use for login handshake/updates only.""", + default=None), dict(name='installer_name', description=""" The name of the file that the installer should be packaged up into. Only used on Linux at the moment.""", diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 40acde28a1..a030a64401 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -93,8 +93,16 @@ class ViewerManifest(LLManifest): self.path("lsl_guide.html") self.path("gpu_table.txt") + def login_channel(self): + """Channel reported for login and upgrade purposes ONLY; used for A/B testing""" + # NOTE: Do not return the normal channel if login_channel is not specified, as + # some code may branch depending on whether or not this is present + return self.args['login_channel'] + + def channel(self): + return self.args['channel'] def channel_unique(self): - return self.args['channel'].replace("Second Life", "").strip() + return self.channel().replace("Second Life", "").strip() def channel_oneword(self): return "".join(self.channel_unique().split()) def channel_lowerword(self): @@ -112,7 +120,11 @@ class ViewerManifest(LLManifest): if not self.default_channel(): # some channel on some grid - channel_flags = '-settings settings_%s.xml -channel "%s"' % (self.channel_lowerword(), self.args['channel']) + channel_flags = '-settings settings_%s.xml -channel "%s"' % (self.channel_lowerword(), self.channel()) + elif self.login_channel(): + # Report a special channel during login, but use default channel elsewhere + channel_flags = '-channel "%s"' % (self.login_channel()) + return " ".join((channel_flags, grid_flags)).strip() def login_url(self): @@ -144,7 +156,7 @@ class WindowsManifest(ViewerManifest): else: return "SecondLifePreview.exe" else: - return ''.join(self.args['channel'].split()) + '.exe' + return ''.join(self.channel().split()) + '.exe' def construct(self): @@ -273,7 +285,7 @@ class WindowsManifest(ViewerManifest): 'grid_caps':self.args['grid'].upper(), # escape quotes becase NSIS doesn't handle them well 'flags':self.flags_list().replace('"', '$\\"'), - 'channel':self.args['channel'], + 'channel':self.channel(), 'channel_oneword':self.channel_oneword(), 'channel_unique':self.channel_unique(), } @@ -395,7 +407,7 @@ class DarwinManifest(ViewerManifest): def package_finish(self): channel_standin = 'Second Life' # hah, our default channel is not usable on its own if not self.default_channel(): - channel_standin = self.args['channel'] + channel_standin = self.channel() imagename="SecondLife_" + '_'.join(self.args['version']) if self.default_channel(): |