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