mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Removing dependency on StringIO, only change return type of table export
							parent
							
								
									0e4b841cb3
								
							
						
					
					
						commit
						39086722e8
					
				| 
						 | 
					@ -459,7 +459,10 @@ def build_project(src_paths, build_path, target, toolchain_name,
 | 
				
			||||||
        memap_table = ''
 | 
					        memap_table = ''
 | 
				
			||||||
        if memap_instance:
 | 
					        if memap_instance:
 | 
				
			||||||
            # Write output to stdout in text (pretty table) format
 | 
					            # Write output to stdout in text (pretty table) format
 | 
				
			||||||
            memap_table = memap_instance.generate_output('table', silent=silent)
 | 
					            memap_table = memap_instance.generate_output('table')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if not silent:
 | 
				
			||||||
 | 
					                print memap_table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Write output to file in JSON format
 | 
					            # Write output to file in JSON format
 | 
				
			||||||
            map_out = join(build_path, name + "_map.json")
 | 
					            map_out = join(build_path, name + "_map.json")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,6 @@ import csv
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
import argparse
 | 
					import argparse
 | 
				
			||||||
from prettytable import PrettyTable
 | 
					from prettytable import PrettyTable
 | 
				
			||||||
from StringIO import StringIO
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
from utils import argparse_filestring_type, \
 | 
					from utils import argparse_filestring_type, \
 | 
				
			||||||
    argparse_lowercase_hyphen_type, argparse_uppercase_type
 | 
					    argparse_lowercase_hyphen_type, argparse_uppercase_type
 | 
				
			||||||
| 
						 | 
					@ -386,7 +385,7 @@ class MemapParser(object):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    export_formats = ["json", "csv-ci", "table"]
 | 
					    export_formats = ["json", "csv-ci", "table"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def generate_output(self, export_format, file_output=None, silent=False):
 | 
					    def generate_output(self, export_format, file_output=None):
 | 
				
			||||||
        """ Generates summary of memory map data
 | 
					        """ Generates summary of memory map data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Positional arguments:
 | 
					        Positional arguments:
 | 
				
			||||||
| 
						 | 
					@ -394,12 +393,11 @@ class MemapParser(object):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Keyword arguments:
 | 
					        Keyword arguments:
 | 
				
			||||||
        file_desc - descriptor (either stdout or file)
 | 
					        file_desc - descriptor (either stdout or file)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Returns: generated string for the 'table' format, otherwise None
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            if silent:
 | 
					 | 
				
			||||||
                file_desc = None
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
            if file_output:
 | 
					            if file_output:
 | 
				
			||||||
                file_desc = open(file_output, 'wb')
 | 
					                file_desc = open(file_output, 'wb')
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
| 
						 | 
					@ -411,12 +409,12 @@ class MemapParser(object):
 | 
				
			||||||
        to_call = {'json': self.generate_json,
 | 
					        to_call = {'json': self.generate_json,
 | 
				
			||||||
                   'csv-ci': self.generate_csv,
 | 
					                   'csv-ci': self.generate_csv,
 | 
				
			||||||
                   'table': self.generate_table}[export_format]
 | 
					                   'table': self.generate_table}[export_format]
 | 
				
			||||||
        output_string = to_call(file_desc)
 | 
					        output = to_call(file_desc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if file_desc is not sys.stdout and file_desc is not None:
 | 
					        if file_desc is not sys.stdout:
 | 
				
			||||||
            file_desc.close()
 | 
					            file_desc.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return output_string
 | 
					        return output
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def generate_json(self, file_desc):
 | 
					    def generate_json(self, file_desc):
 | 
				
			||||||
        """Generate a json file from a memory map
 | 
					        """Generate a json file from a memory map
 | 
				
			||||||
| 
						 | 
					@ -424,12 +422,10 @@ class MemapParser(object):
 | 
				
			||||||
        Positional arguments:
 | 
					        Positional arguments:
 | 
				
			||||||
        file_desc - the file to write out the final report to
 | 
					        file_desc - the file to write out the final report to
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        output = json.dumps(self.mem_report, indent=4)
 | 
					        file_desc.write(json.dumps(self.mem_report, indent=4))
 | 
				
			||||||
        if file_desc:
 | 
					 | 
				
			||||||
            file_desc.write(output)
 | 
					 | 
				
			||||||
        file_desc.write('\n')
 | 
					        file_desc.write('\n')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return output
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def generate_csv(self, file_desc):
 | 
					    def generate_csv(self, file_desc):
 | 
				
			||||||
        """Generate a CSV file from a memoy map
 | 
					        """Generate a CSV file from a memoy map
 | 
				
			||||||
| 
						 | 
					@ -437,8 +433,7 @@ class MemapParser(object):
 | 
				
			||||||
        Positional arguments:
 | 
					        Positional arguments:
 | 
				
			||||||
        file_desc - the file to write out the final report to
 | 
					        file_desc - the file to write out the final report to
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        string_io = StringIO()
 | 
					        csv_writer = csv.writer(file_desc, delimiter=',',
 | 
				
			||||||
        csv_writer = csv.writer(string_io, delimiter=',',
 | 
					 | 
				
			||||||
                                quoting=csv.QUOTE_MINIMAL)
 | 
					                                quoting=csv.QUOTE_MINIMAL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        csv_module_section = []
 | 
					        csv_module_section = []
 | 
				
			||||||
| 
						 | 
					@ -472,16 +467,15 @@ class MemapParser(object):
 | 
				
			||||||
        csv_writer.writerow(csv_module_section)
 | 
					        csv_writer.writerow(csv_module_section)
 | 
				
			||||||
        csv_writer.writerow(csv_sizes)
 | 
					        csv_writer.writerow(csv_sizes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if file_desc:
 | 
					        return None
 | 
				
			||||||
            file_desc.write(string_io.getvalue())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return string_io.getvalue()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def generate_table(self, file_desc):
 | 
					    def generate_table(self, file_desc):
 | 
				
			||||||
        """Generate a table from a memoy map
 | 
					        """Generate a table from a memoy map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Positional arguments:
 | 
					        Positional arguments:
 | 
				
			||||||
        file_desc - the file to write out the final report to
 | 
					        file_desc - the file to write out the final report to
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Returns: string of the generated table
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        # Create table
 | 
					        # Create table
 | 
				
			||||||
        columns = ['Module']
 | 
					        columns = ['Module']
 | 
				
			||||||
| 
						 | 
					@ -539,9 +533,6 @@ class MemapParser(object):
 | 
				
			||||||
        output += "Total Flash memory (text + data + misc): %s bytes\n" % \
 | 
					        output += "Total Flash memory (text + data + misc): %s bytes\n" % \
 | 
				
			||||||
                        str(self.mem_summary['total_flash'])
 | 
					                        str(self.mem_summary['total_flash'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if file_desc:
 | 
					 | 
				
			||||||
            file_desc.write(output)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return output
 | 
					        return output
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    toolchains = ["ARM", "ARM_STD", "ARM_MICRO", "GCC_ARM", "IAR"]
 | 
					    toolchains = ["ARM", "ARM_STD", "ARM_MICRO", "GCC_ARM", "IAR"]
 | 
				
			||||||
| 
						 | 
					@ -666,11 +657,15 @@ def main():
 | 
				
			||||||
        if memap.parse(args.file, args.toolchain) is False:
 | 
					        if memap.parse(args.file, args.toolchain) is False:
 | 
				
			||||||
            sys.exit(0)
 | 
					            sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    returned_string = None
 | 
				
			||||||
    # Write output in file
 | 
					    # Write output in file
 | 
				
			||||||
    if args.output != None:
 | 
					    if args.output != None:
 | 
				
			||||||
        memap.generate_output(args.export, args.output)
 | 
					        returned_string = memap.generate_output(args.export, args.output)
 | 
				
			||||||
    else: # Write output in screen
 | 
					    else: # Write output in screen
 | 
				
			||||||
        memap.generate_output(args.export)
 | 
					        returned_string = memap.generate_output(args.export)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if args.export == 'table' and returned_string:
 | 
				
			||||||
 | 
					        print returned_string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sys.exit(0)
 | 
					    sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue