From 9c5332b301c0e17cd0133944670f79fd485cf7fe Mon Sep 17 00:00:00 2001
From: Glenn Glazer <coyot@lindenlab.com>
Date: Mon, 6 Mar 2017 14:43:57 -0800
Subject: [PATCH] SL-321: reintegration of autobuild as package, build changes
 for mac integration

---
 autobuild.xml                              | 46 ++++++++++++++++++++++
 indra/newview/CMakeLists.txt               |  1 +
 indra/newview/llversioninfo.cpp            |  1 +
 indra/newview/tests/llversioninfo_test.cpp |  6 ++-
 indra/newview/viewer_manifest.py           | 46 ++++++++--------------
 5 files changed, 70 insertions(+), 30 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index a655c7cae2f..2f7ad05ecdc 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -3023,6 +3023,52 @@
         <key>version</key>
         <string>0.8.0.1</string>
       </map>
+      <key>viewer-manager</key>
+      <map>
+        <key>copyright</key>
+        <string>Copyright (c) 2000-2012, Linden Research, Inc.</string>
+        <key>description</key>
+        <string>Linden Lab Viewer Management Process suite.</string>
+        <key>license</key>
+        <string>Proprietary</string>
+        <key>license_file</key>
+        <string>LICENSE</string>
+        <key>name</key>
+        <string>viewer-manager</string>
+        <key>platforms</key>
+        <map>
+          <key>darwin64</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>b7a7d155a70413bce9a7a25ad54c37e7</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/3073/7235/viewer_manager-1.0-darwin64-503061.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin64</string>
+          </map>
+          <key>windows</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>0c1a369a3e5ed6363a306e6135797851</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/3074/7241/viewer_manager-1.0-windows-503061.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows</string>
+          </map>
+        </map>
+        <key>source</key>
+        <string>https://bitbucket.org/lindenlab/vmp-standalone</string>
+        <key>source_type</key>
+        <string>hg</string>
+        <key>version</key>
+        <string>1.0</string>
+      </map>
       <key>vlc-bin</key>
       <map>
         <key>copyright</key>
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index fe360171fb7..7a62d8baec1 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -47,6 +47,7 @@ include(TemplateCheck)
 include(UI)
 include(UnixInstall)
 include(ViewerMiscLibs)
+include(ViewerManager)
 include(VisualLeakDetector)
 include(ZLIB)
 include(URIPARSER)
diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp
index 375dce485d7..bf9d98ee91f 100644
--- a/indra/newview/llversioninfo.cpp
+++ b/indra/newview/llversioninfo.cpp
@@ -64,6 +64,7 @@ S32 LLVersionInfo::getPatch()
 //static
 S32 LLVersionInfo::getBuild()
 {
+    std::cout << "What we have IN llversioninfo: " << LL_VIEWER_VERSION_BUILD << std::endl;
 	return LL_VIEWER_VERSION_BUILD;
 }
 
diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp
index f1f69f33f19..2f7a4e96012 100644
--- a/indra/newview/tests/llversioninfo_test.cpp
+++ b/indra/newview/tests/llversioninfo_test.cpp
@@ -29,6 +29,8 @@
 
 #include "../llversioninfo.h"
 
+ #include <iostream>
+
 // LL_VIEWER_CHANNEL is a macro defined on the compiler command line. The
 // macro expands to the string name of the channel, but without quotes. We
 // need to turn it into a quoted string. This macro trick does that.
@@ -81,7 +83,9 @@ namespace tut
 
 	template<> template<>
 	void versioninfo_object_t::test<1>()
-	{
+	{   
+		std::cout << "What we parsed from CMake: " << LL_VIEWER_VERSION_BUILD << std::endl;
+		std::cout << "What we get from llversioninfo: " << LLVersionInfo::getBuild() << std::endl;
 		ensure_equals("Major version", 
 					  LLVersionInfo::getMajor(), 
 					  LL_VIEWER_VERSION_MAJOR);
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 35d63c33fc8..1dc178dcf88 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -223,7 +223,7 @@ def channel_type(self): # returns 'release', 'beta', 'project', or 'test'
         return channel_type
 
     def channel_variant_app_suffix(self):
-        # get any part of the compiled channel name after the CHANNEL_VENDOR_BASE
+        # get any part of the channel name after the CHANNEL_VENDOR_BASE
         suffix=self.channel_variant()
         # by ancient convention, we don't use Release in the app name
         if self.channel_type() == 'release':
@@ -346,15 +346,12 @@ def construct(self):
         if self.is_packaging_viewer():
             # Find secondlife-bin.exe in the 'configuration' dir, then rename it to the result of final_exe.
             self.path(src='%s/secondlife-bin.exe' % self.args['configuration'], dst=self.final_exe())
-            # include the compiled launcher script so that it gets included in the file_list
-            self.path(src='%s/SL_Launcher.exe' % self.args['configuration'], dst="SL_Launcher.exe")
 
         # Plugin host application
         self.path2basename(os.path.join(os.pardir,
                                         'llplugin', 'slplugin', self.args['configuration']),
                            "slplugin.exe")
         
-        #note, launcher and friends do not need viewer_manifest in Windows as the scripts are compiled into executables
         # Get shared libs from the shared libs staging directory
         if self.prefix(src=os.path.join(os.pardir, 'sharedlibs', self.args['configuration']),
                        dst=""):
@@ -709,28 +706,29 @@ def construct(self):
         pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')
         relpkgdir = os.path.join(pkgdir, "lib", "release")
         debpkgdir = os.path.join(pkgdir, "lib", "debug")
-        llbasedir = os.path.join(pkgdir, os.pardir)
+        vmpdir = os.path.join(pkgdir, "VMP")
+        llbasedir = os.path.join(pkgdir, "VMP")
 
         if self.prefix(src="", dst="Contents"):  # everything goes in Contents
             self.path("Info.plist", dst="Info.plist")
 
             # copy additional libs in <bundle>/Contents/MacOS/
             self.path(os.path.join(relpkgdir, "libndofdev.dylib"), dst="Resources/libndofdev.dylib")
-            self.path(os.path.join(relpkgdir, "libhunspell-1.3.0.dylib"), dst="Resources/libhunspell-1.3.0.dylib")
+            self.path(os.path.join(relpkgdir, "libhunspell-1.3.0.dylib"), dst="Resources/libhunspell-1.3.0.dylib")   
 
             if self.prefix(dst="MacOS"):
-                self.path2basename("../viewer_components/updater/scripts/darwin", "*.py")
                 #this copies over the python wrapper script, associated utilities and required libraries, see SL-321, SL-322 and SL-323
-                self.path2basename("../viewer_components/manager","SL_Launcher")
-                self.path2basename("../viewer_components/manager","*.py")
+                self.path2basename(vmpdir,"SL_Launcher")
+                self.path2basename(vmpdir,"*.py")
                 llbase_path = os.path.join(self.get_dst_prefix(),'llbase')
                 if not os.path.exists(llbase_path):
                     os.makedirs(llbase_path)
+                #before, we only needed llbase at build time.  With VMP, we need it at run time.
                 if self.prefix(dst="llbase"):
-                    self.path2basename("../packages/llbase","*.py")
-                    self.path2basename("../packages/llbase","_cllsd.so")
+                    self.path2basename(llbasedir,"*.py")
+                    self.path2basename(llbasedir,"_cllsd.so")
                     self.end_prefix()
-                self.end_prefix()         
+                self.end_prefix()  
 
             # most everything goes in the Resources directory
             if self.prefix(src="", dst="Resources"):
@@ -749,6 +747,12 @@ def construct(self):
                     self.path("secondlife.icns")
                     self.end_prefix(icon_path)
 
+                #VMP Tkinter icons
+                if self.prefix("vmp_icons"):
+                    self.path("*.png")
+                    self.path("*.gif")
+                    self.end_prefix("vmp_icons")
+
                 self.path("SecondLife.nib")
                 
                 # Translations
@@ -773,12 +777,6 @@ def construct(self):
                 self.path("uk.lproj")
                 self.path("zh-Hans.lproj")
 
-                #VMP icons
-                if self.prefix("vmp_icons"):
-                    self.path("*.png")
-                    self.path("*.gif")
-                    self.end_prefix("vmp_icons")
-
                 def path_optional(src, dst):
                     """
                     For a number of our self.path() calls, not only do we want
@@ -1145,17 +1143,7 @@ def construct(self):
         if self.prefix(src="", dst="bin"):
             self.path("secondlife-bin","do-not-directly-run-secondlife-bin")
             self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin")
-            self.path2basename("../llplugin/slplugin", "SLPlugin")
-            #this copies over the python wrapper script, associated utilities and required libraries, see SL-321, SL-322 and SL-323
-            self.path2basename("../viewer_components/manager","SL_Launcher")
-            self.path2basename("../viewer_components/manager","*.py")
-            llbase_path = os.path.join(self.get_dst_prefix(),'llbase')
-            if not os.path.exists(llbase_path):
-                os.makedirs(llbase_path)
-            if self.prefix(dst="llbase"):
-                self.path2basename("../packages/llbase","*.py")
-                self.path2basename("../packages/llbase","_cllsd.so")
-                self.end_prefix()            
+            self.path2basename("../llplugin/slplugin", "SLPlugin")          
             self.end_prefix("bin")
 
         if self.prefix("res-sdl"):
-- 
GitLab