diff -r 044383f39525 -r be27ed110b50 buildframework/helium/tools/rombuild/dryrun_parser.py --- /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