mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Fixing project.py -S printing problem
Printing too large of a string can fail in Windows, as detailed here: https://bugs.python.org/issue11395. This works around the problem by adding a print_large_string function that breaks up the string into smaller pieces before printing it.pull/3171/head
							parent
							
								
									8a9a246356
								
							
						
					
					
						commit
						67c2ea771a
					
				| 
						 | 
				
			
			@ -18,6 +18,7 @@ from tools.targets import TARGET_NAMES
 | 
			
		|||
from tools.utils import argparse_filestring_type, argparse_many, args_error
 | 
			
		||||
from tools.utils import argparse_force_lowercase_type
 | 
			
		||||
from tools.utils import argparse_force_uppercase_type
 | 
			
		||||
from tools.utils import print_large_string
 | 
			
		||||
from tools.project_api import export_project, get_exporter_toolchain
 | 
			
		||||
from tools.options import extract_profile
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -189,7 +190,7 @@ def main():
 | 
			
		|||
 | 
			
		||||
    # Only prints matrix of supported IDEs
 | 
			
		||||
    if options.supported_ides:
 | 
			
		||||
        print mcu_ide_matrix()
 | 
			
		||||
        print_large_string(mcu_ide_matrix())
 | 
			
		||||
        exit(0)
 | 
			
		||||
 | 
			
		||||
    # Only prints matrix of supported IDEs
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,7 @@ from shutil import copyfile
 | 
			
		|||
from os.path import isdir, join, exists, split, relpath, splitext, abspath
 | 
			
		||||
from os.path import commonprefix, normpath, dirname
 | 
			
		||||
from subprocess import Popen, PIPE, STDOUT, call
 | 
			
		||||
from math import ceil
 | 
			
		||||
import json
 | 
			
		||||
from collections import OrderedDict
 | 
			
		||||
import logging
 | 
			
		||||
| 
						 | 
				
			
			@ -486,3 +487,23 @@ def argparse_dir_not_parent(other):
 | 
			
		|||
        else:
 | 
			
		||||
            return not_parent
 | 
			
		||||
    return parse_type
 | 
			
		||||
 | 
			
		||||
def print_large_string(large_string):
 | 
			
		||||
    """ Breaks a string up into smaller pieces before print them
 | 
			
		||||
 | 
			
		||||
    This is a limitation within Windows, as detailed here:
 | 
			
		||||
    https://bugs.python.org/issue11395
 | 
			
		||||
 | 
			
		||||
    Positional arguments:
 | 
			
		||||
    large_string - the large string to print
 | 
			
		||||
    """
 | 
			
		||||
    string_limit = 1000
 | 
			
		||||
    large_string_len = len(large_string)
 | 
			
		||||
    num_parts = int(ceil(float(large_string_len) / float(string_limit)))
 | 
			
		||||
    for string_part in range(num_parts):
 | 
			
		||||
        start_index = string_part * string_limit
 | 
			
		||||
        if string_part == num_parts - 1:
 | 
			
		||||
            print large_string[start_index:]
 | 
			
		||||
        else:
 | 
			
		||||
            end_index = ((string_part + 1) * string_limit) - 1
 | 
			
		||||
            print large_string[start_index:end_index],
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue