CoreValidation: Modified build scripts for python 3.
diff --git a/CMSIS/CoreValidation/Tests/build.py b/CMSIS/CoreValidation/Tests/build.py
index 85458a0..4f5b46e 100644
--- a/CMSIS/CoreValidation/Tests/build.py
+++ b/CMSIS/CoreValidation/Tests/build.py
@@ -178,12 +178,12 @@
 
 def execute(steps, args):
   for step in steps:
-    print step['name']
+    print(step['name'])
     if step['build'] and not args.execute_only:
       for b in step['build']:
         b.run()
     else:
-      print "Skipping build"
+      print("Skipping build")
       # step['build'].skip()
       
     if step['test'] and not args.build_only:
@@ -191,21 +191,21 @@
       step['result'] = TestResult(step['test'].getOutput())
       step['result'].saveXml("result_{0}_{1}.xml".format(step['prefix'], datetime.now().strftime("%Y%m%d%H%M%S")))
     else:
-      print "Skipping test"
+      print("Skipping test")
       step['test'].skip()
       
 def printSummary(steps):
-  print ""
-  print "Test Summary"
-  print "============"
-  print
-  print "Test run                       Total Exec  Pass  Fail  "
-  print "-------------------------------------------------------"
+  print("")
+  print("Test Summary")
+  print("============")
+  print()
+  print("Test run                       Total Exec  Pass  Fail  ")
+  print("-------------------------------------------------------")
   for step in steps:
     try:
-      print "{0:30} {1:>4}  {2:>4}  {3:>4}  {4:>4}".format(step['name'], *step['result'].getSummary())
+      print("{0:30} {1:>4}  {2:>4}  {3:>4}  {4:>4}".format(step['name'], *step['result'].getSummary()))
     except:
-      print "{0:30} ------ NO RESULTS ------".format(step['name'])
+      print("{0:30} ------ NO RESULTS ------".format(step['name']))
 
 def main(argv):
   parser = ArgumentParser()
@@ -221,7 +221,7 @@
     for dev in args.devices:
       model = FVP_MODELS[dev]
       cmd = [ model['cmd'], '-l', '-o', model['args']['config'] ]
-      print " ".join(cmd)
+      print(" ".join(cmd))
       call(cmd)
     return 1
     
diff --git a/CMSIS/CoreValidation/Tests/buildutils/buildcmd.py b/CMSIS/CoreValidation/Tests/buildutils/buildcmd.py
index 0f6cb12..350a81c 100644
--- a/CMSIS/CoreValidation/Tests/buildutils/buildcmd.py
+++ b/CMSIS/CoreValidation/Tests/buildutils/buildcmd.py
@@ -25,19 +25,19 @@
 
   def run(self):  
     cmd = [ self.getCommand() ] + self.getArguments()
-    print "Running: " + ' '.join(cmd)
+    print("Running: " + ' '.join(cmd))
     try:
       self._result = call(cmd, stdout = self._output)
     except:
-      print "Fatal error!"
+      print("Fatal error!")
     self._output.seek(0)
-    print self._output.read()
+    print(self._output.read())
     
     logfile = self.getLog()
     if logfile != None:
-      print logfile.read()
+      print(logfile.read())
       
-    print "Command returned: {0}".format(self._result)
+    print("Command returned: {0}".format(self._result))
       
     return self._result
     
diff --git a/CMSIS/CoreValidation/Tests/buildutils/fvpcmd.py b/CMSIS/CoreValidation/Tests/buildutils/fvpcmd.py
index 47eabd7..026d224 100644
--- a/CMSIS/CoreValidation/Tests/buildutils/fvpcmd.py
+++ b/CMSIS/CoreValidation/Tests/buildutils/fvpcmd.py
@@ -15,9 +15,9 @@
     
   def getArguments(self):
     args = []
-    if self._args.has_key('limit'):  args += [ "--cyclelimit", self._args['limit'] ] 
-    if self._args.has_key('config'): args += [ "-f", self._args['config'] ]
-    if self._args.has_key('target'):
+    if 'limit' in self._args:  args += [ "--cyclelimit", self._args['limit'] ] 
+    if 'config' in self._args: args += [ "-f", self._args['config'] ]
+    if 'target' in self._args:
       for a in self._app:
         args += [ "-a", "{0}={1}".format(self._args['target'], a ) ]
     else:
diff --git a/CMSIS/CoreValidation/Tests/buildutils/iarcmd.py b/CMSIS/CoreValidation/Tests/buildutils/iarcmd.py
index dabf58f..77ffa81 100644
--- a/CMSIS/CoreValidation/Tests/buildutils/iarcmd.py
+++ b/CMSIS/CoreValidation/Tests/buildutils/iarcmd.py
@@ -1,7 +1,6 @@
 #! python
 
 from buildcmd import BuildCmd
-from string import maketrans
 from datetime import datetime
 import mmap
 
diff --git a/CMSIS/CoreValidation/Tests/buildutils/testresult.py b/CMSIS/CoreValidation/Tests/buildutils/testresult.py
index 98646a3..be71cfc 100644
--- a/CMSIS/CoreValidation/Tests/buildutils/testresult.py
+++ b/CMSIS/CoreValidation/Tests/buildutils/testresult.py
@@ -1,7 +1,7 @@
 #! python
 
 import shutil
-from StringIO import StringIO
+from io import StringIO
 from xml.etree import ElementTree
 
 class TestResult:
diff --git a/CMSIS/CoreValidation/Tests/buildutils/uv4cmd.py b/CMSIS/CoreValidation/Tests/buildutils/uv4cmd.py
index 4788365..a8491e4 100644
--- a/CMSIS/CoreValidation/Tests/buildutils/uv4cmd.py
+++ b/CMSIS/CoreValidation/Tests/buildutils/uv4cmd.py
@@ -2,7 +2,6 @@
 
 import os
 from buildcmd import BuildCmd
-from string import maketrans
 from datetime import datetime
 import mmap
 
@@ -13,8 +12,9 @@
     self._project = project
     self._config = config
     cwd = os.getcwd()
-    self._log = cwd + "\UV4_{0}_{1}.log".format(self._config.translate(maketrans(" ", "_"), "()[],"), datetime.now().strftime("%Y%m%d%H%M%S"))
-    
+    trans = { " " : "_", "(" : None, ")" : None, "[" : None, "]" : None, "," : None }
+    self._log = cwd + "\\UV4_{0}_{1}.log".format(self._config.translate(trans), datetime.now().strftime("%Y%m%d%H%M%S"))
+
   def getCommand(self):
     return "UV4.exe"
     
diff --git a/manifest b/manifest
new file mode 100644
index 0000000..25423d0
--- /dev/null
+++ b/manifest
@@ -0,0 +1,43 @@
+pdsc: ARM.CMSIS.pdsc
+preproc:
+ - clean: CMSIS/Documentation/(Core,Core_A,DAP,Driver,DSP,General,Pack,RTOS,RTOS2,SVD,Zone)
+ - doxygen: CMSIS/DoxyGen/Core/core.dxy
+ - doxygen: CMSIS/DoxyGen/Core_A/core_A.dxy
+ - doxygen: CMSIS/DoxyGen/DAP/dap.dxy
+ - doxygen: CMSIS/DoxyGen/Driver/Driver.dxy
+ - doxygen: CMSIS/DoxyGen/DSP/dsp.dxy
+ - doxygen: CMSIS/DoxyGen/General/general.dxy
+ - doxygen: CMSIS/DoxyGen/Pack/Pack.dxy
+ - doxygen: CMSIS/DoxyGen/RTOS/rtos.dxy
+ - doxygen: CMSIS/DoxyGen/RTOS2/rtos.dxy
+ - doxygen: CMSIS/DoxyGen/SVD/SVD.dxy
+ - doxygen: CMSIS/DoxyGen/Zone/zone.dxy
+glob:
+ - LICENSE.txt
+ - Device/**/*
+ - CMSIS/Core/Include/**/*: CMSIS/Include/
+ - CMSIS/Core/Template/**/*
+ - CMSIS/Core_A/**/*
+ - CMSIS/DAP/**/*
+ - CMSIS/Driver/**/*
+ - CMSIS/DSP/Include/**/*: CMSIS/Include/
+ - CMSIS/DSP/Source/**/*: CMSIS/DSP_Lib/Source/
+ - CMSIS/DSP/Projects/**/*: CMSIS/DSP_Lib/Source/
+ - CMSIS/DSP/Examples/**/*: CMSIS/DSP_Lib/Examples/
+ - CMSIS/Lib/**/*
+ - CMSIS/Pack/**/*
+ - CMSIS/RTOS/**/*
+ - CMSIS/RTOS2/**/*
+ - CMSIS/Utilities/ARM_Example.*: CMSIS/SVD/
+ - CMSIS/Utilities/CMSIS-SVD.xsd
+ - CMSIS/Utilities/PACK.xsd
+ - CMSIS/Utilities/Win32/**/*
+ - CMSIS/Utilities/Linux-gcc-4.4.4/**/*
+ - CMSIS/Utilities/Linux-gcc-4.8.3/**/* 
+ - CMSIS/Documentation/**/*
+ - CMSIS/DoxyGen/Doxygen_Templates/search.css: CMSIS/Documentation/Core/html/search/search.css
+ - CMSIS/DoxyGen/Doxygen_Templates/search.css: CMSIS/Documentation/Core_A/html/search/search.css
+ - CMSIS/DoxyGen/Doxygen_Templates/search.css: CMSIS/Documentation/Driver/html/search/search.css
+ - CMSIS/DoxyGen/Doxygen_Templates/search.css: CMSIS/Documentation/Pack/html/search/search.css
+ - CMSIS/DoxyGen/Doxygen_Templates/search.css: CMSIS/Documentation/DSP/html/search/search.css
+ - CMSIS/DoxyGen/Doxygen_Templates/search.css: CMSIS/Documentation/DAP/html/search/search.css