diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 6734f62137e1933cc094b1d1939619928a706028..64b7ff34f665ed4514574b59bba63d97f2f8893c 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1308,6 +1308,11 @@ set(viewer_HEADER_FILES
 source_group("CMake Rules" FILES ViewerInstall.cmake)
 
 #summary.json creation moved to viewer_manifest.py MAINT-6413
+# the viewer_version.txt file created here is for passing to viewer_manifest and autobuild
+add_custom_target(generate_viewer_version ALL
+                  COMMAND printf '${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}' > ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
+                  COMMENT Generating viewer_version.txt for manifest processing
+                  )
 
 set_source_files_properties(
    llversioninfo.cpp tests/llversioninfo_test.cpp 
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 6365de00244ad21d4fb107bdfef2897ffffe0bfb..f3d89bb8660388fe5a7b12821a976086631bf181 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -30,6 +30,7 @@
 import os.path
 import shutil
 import errno
+import json
 import re
 import tarfile
 import time
@@ -122,9 +123,6 @@ def construct(self):
                     settings_install['CmdLineGridChoice']['Value'] = self.grid()
                     print "Set CmdLineGridChoice in settings_install.xml to '%s'" % self.grid()
 
-                #COYOT: channel: self.channel_with_pkg_suffix()
-                print "COYOT: version %s" % '.'.join(self.args['version'])
-
                 # 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),
@@ -184,9 +182,16 @@ def construct(self):
                 self.path("*.tga")
                 self.end_prefix("local_assets")
 
-            # Files in the newview/ directory
+            # File in the newview/ directory
             self.path("gpu_table.txt")
-            # The summary.json file gets left in the build directory by newview/CMakeLists.txt.
+
+            #summary.json.  Standard with exception handling is fine.  If we can't open a new file for writing, we have worse problems
+            summary_dict = {"Type":"viewer","Version":'.'.join(self.args['version']),"Channel":self.channel_with_pkg_suffix()}
+            with open(os.path.join(os.pardir,'summary.json'), 'w') as summary_handle:
+                json.dump(summary_dict,summary_handle)
+
+            #we likely no longer need the test, since we will throw an exception above, but belt and suspenders and we get the
+            #return code for free.
             if not self.path2basename(os.pardir, "summary.json"):
                 print "No summary.json file"