buildframework/helium/tools/rombuild/dryrun_parser.py
changeset 1 be27ed110b50
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/rombuild/dryrun_parser.py	Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,216 @@
+#============================================================================ 
+#Name        : dryrun_parser.py 
+#Part of     : Helium 
+
+#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+#All rights reserved.
+#This component and the accompanying materials are made available
+#under the terms of the License "Eclipse Public License v1.0"
+#which accompanies this distribution, and is available
+#at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+#Initial Contributors:
+#Nokia Corporation - initial contribution.
+#
+#Contributors:
+#
+#Description:
+#===============================================================================
+
+""" parse a python file in a given environment, and get out some results """
+import re
+import os
+import sys
+
+if __name__ == '__main__':
+    if len(sys.argv)<3:
+        print("dryrun requires input txt file and output make file and the target to run")
+        sys.exit(-1)
+
+    #input arguments    
+    input_file = sys.argv[1]
+    output_file = sys.argv[2]
+    make_target = sys.argv[3]
+    
+    
+    variation_commands = {}
+    regional_commands = []
+
+    #parse imaker output
+    fin = open(input_file, "r")
+    imaker_pattern = '^imaker'
+    foti_fota_pattern = ' fot[ia]'
+    core_pattern = 'core|rofs3|flash$'
+    workdir_pattern = 'WORKDIR='
+    regional_pattern = '^unzip'
+    regional_key = ""
+    new_regional_key = ""
+    regional_keys = []
+    temporary_list = []
+    unzip_commands = []
+    workdir_string = ""
+    
+    for line in fin:
+#       """ First look for unzip command. """
+        if(re.search(regional_pattern, line)):
+            temporary_list = line.split(' ')
+            unzip_commands.append(line)
+            new_regional_key = temporary_list[-1]
+            #print regional_key
+            if(not len(regional_key) == 0):
+#                """ Will be processing next region, so store the commands for this region."""
+                if(variation_commands.has_key(regional_key)):
+                    variation_commands[regional_key] = regional_commands
+                regional_key = new_regional_key
+                if(variation_commands.has_key(new_regional_key)):
+                    regional_commands = variation_commands[new_regional_key]
+                else:
+                    regional_commands = []
+                    variation_commands[new_regional_key] = regional_commands
+            else:
+                variation_commands[new_regional_key] = regional_commands
+                regional_key = new_regional_key
+        if(re.search(imaker_pattern, line)):
+            workdir_list = re.split(workdir_pattern, line)
+            if(len(workdir_list) > 1):
+                #print workdir_list
+                workdir_string = re.split("\"", workdir_list[1])[0]
+                #print "workdir_string"
+                #print workdir_string
+                if(not os.path.exists(workdir_string)):
+                    os.makedirs(workdir_string)
+            regional_commands.append(line)
+    fin.close()
+    variation_commands[regional_key] = regional_commands
+    
+#    """ Group the commands for the region and write the commands into a makefile."""
+    fin = open(output_file, "w")
+    all_string = "%s: foti_fota_all \\\n\tcore_rofs_image_all \\\n\trest_of_all" % make_target
+    core_rofs_all_string = "core_rofs_image_all:"
+    variation_image_all_string = "variation_all:"
+    variation_image_string = ""
+    core_rofs_string = ""
+    core_image_id = 0
+    e2flash_id = 0
+    e2flash_all_string = "#pragma runlocal\ne2flash_target_all:\n"
+    variation_image_id = 0
+    variation_e2f_id = 0
+    variation_id = 0
+    
+    foti_fota_all_string = "#pragma runlocal\nfoti_fota_all:"
+    foti_fota_all_string += "\n\t"+unzip_commands[variation_id]
+    rest_of_all_target_string = "rest_of_all:"
+    rest_of_target_string = ""
+    rest_of_target_id = 0
+
+    count = 0
+    dict_list = variation_commands.keys()
+    for key in dict_list:
+        print "before reverse key"
+        print key
+        print len(variation_commands.get(key))
+    
+    dict_list.reverse()
+
+    for key in dict_list:
+        print "key"
+        print key
+        print len(variation_commands.get(key))
+    #    for command in commands:
+    #        print command
+
+    unzip_var_string = ""
+    variation_image_all_string = ""
+    variation_dependency = "variation0"
+    for key in dict_list:
+        commands = variation_commands.get(key)
+        if(variation_id != 0):
+            unzip_var_string += "unzip_var%d:%s" % (variation_id, variation_dependency)
+            variation_dependency ="variation%d " % (variation_id)
+            unzip_var_string += "\n\t"+unzip_commands[variation_id]
+        all_string += "\\\n\tvariation%d " % variation_id
+        variation_image_all_string +="variation%d: " % variation_id
+        #print "no. of comands"
+        #print len(commands)
+        for command in commands:
+            #print variation_id
+            #print command
+            if(re.search(foti_fota_pattern, command)):
+                #print "foti command"
+                #print command
+                foti_fota_all_string += "\t"+command
+            elif(re.search('flash$',command)):
+                #print "flash command"
+                #print command
+                core_rofs_string += ("core_rofs_image%d:foti_fota_all" % (core_image_id))
+                temp_string = re.sub('flash$', 'core-image rofs2-image rofs3-image', command)
+                core_rofs_string += "\n\t"+temp_string+"\n"
+                temp_string = re.sub('flash$', 'core-e2flash rofs2-e2flash rofs3-e2flash', command)
+                e2flash_all_string += "\t"+temp_string
+                core_rofs_all_string += " \\\n\t core_rofs_image%d" % core_image_id
+                core_image_id += 1
+            elif(re.search('core$',command)):
+                #print "core command"
+                #print command
+                core_rofs_string += ("core_rofs_image%d:foti_fota_all" % (core_image_id))
+                temp_string = re.sub('core$', 'core-image', command)
+                core_rofs_string += "\n\t"+temp_string + "\n"
+                temp_string = re.sub('core$', 'core-e2flash', command)
+                e2flash_all_string += "\t"+temp_string
+                core_rofs_all_string += " \\\n\t core_rofs_image%d" % core_image_id
+                core_image_id += 1
+            elif(re.search('rofs3$', command)):
+                #print "rofs3 command"
+                #print command
+                core_rofs_string += ("core_rofs_image%d:foti_fota_all" % (core_image_id))
+                temp_string = re.sub('rofs3$', 'rofs3-image', command)
+                core_rofs_string += "\n\t"+temp_string + "\n"
+                temp_string = re.sub('rofs3$', 'rofs3-e2flash', command)
+                e2flash_all_string += "\t"+temp_string
+                core_rofs_all_string += " \\\n\t core_rofs_image%d" % core_image_id
+                core_image_id += 1
+            elif(re.search('rofs2$',command)):
+                #print "rofs2 command"
+                #print variation_id
+                #print command
+                if(variation_id == 0):
+                    variation_image_string += ("variation_image%d:rest_of_all")  %(variation_image_id)
+                else:
+                    variation_image_string += ("variation_image%d:unzip_var%d")  %(variation_image_id, variation_id)
+                temp_string = re.sub('rofs2$', 'rofs2-image', command)
+                variation_image_string += "\n\t"+temp_string+"\n"
+                temp_string = re.sub('rofs2$', 'rofs2-e2flash', command)
+                e2flash_all_string += "\t"+temp_string
+                variation_image_all_string += " \\\n\tvariation_image%d" % variation_image_id
+                variation_image_id += 1
+            else:
+                rest_of_target_string += ("\nrest_%d:core_rofs_image_all" % (rest_of_target_id))
+                rest_of_target_string += "\n\t"+command+"\n"
+                rest_of_all_target_string += " \\\n\t rest_%d" % rest_of_target_id
+                rest_of_target_id += 1
+        variation_id += 1
+        unzip_var_string += "\n\n"
+        variation_image_all_string += "\n\n"
+
+    all_string += "\\\n\te2flash_target_all\n\n"
+    #print core_rofs_all_string
+    core_rofs_all_string += "\n\n"
+    rest_of_all_target_string += "\n\n"
+    e2flash_all_string += "\n\n"
+    foti_fota_all_string += "\n\n"
+    core_rofs_string += "\n\n"
+    rest_of_target_string += "\n\n"
+    unzip_var_string += "\n\n"
+    variation_image_all_string += "\n\n"
+    e2flash_all_string += "\n\n"
+    fin.write(all_string)
+    fin.write(core_rofs_all_string)
+    fin.write(rest_of_all_target_string)
+    fin.write(unzip_var_string)
+    fin.write(variation_image_all_string)
+    fin.write(foti_fota_all_string)
+    fin.write(core_rofs_string)
+    fin.write(variation_image_string)
+    fin.write(rest_of_target_string)
+    fin.write(e2flash_all_string)
+    fin.close()
\ No newline at end of file