--- /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