[tools] Fix link2bin with long command line
This commit is contained in:
@@ -40,6 +40,9 @@ def env_add_defaults(env, platform, board):
|
||||
LINK2BIN='"${PYTHONEXE}" "${LT_DIR}/tools/link2bin.py"',
|
||||
UF2OTA_PY='"${PYTHONEXE}" "${LT_DIR}/tools/uf2ota/uf2ota.py"',
|
||||
UF2UPLOAD_PY='"${PYTHONEXE}" "${LT_DIR}/tools/upload/uf2upload.py"',
|
||||
# Fix for link2bin to get tmpfile name in argv
|
||||
LINKCOM="${LINK} ${LINKARGS}",
|
||||
LINKARGS="${TEMPFILE('-o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS', '$LINKCOMSTR')}",
|
||||
)
|
||||
env.Replace(**vars)
|
||||
# Store family parameters as environment variables
|
||||
|
||||
@@ -5,6 +5,7 @@ from os.path import dirname, join
|
||||
|
||||
sys.path.append(join(dirname(__file__), ".."))
|
||||
|
||||
import shlex
|
||||
from argparse import ArgumentParser
|
||||
from enum import Enum
|
||||
from os import stat, unlink
|
||||
@@ -13,7 +14,7 @@ from shutil import copyfile
|
||||
from subprocess import PIPE, Popen
|
||||
from typing import IO, Dict, List, Tuple
|
||||
|
||||
from tools.util.fileio import chext, isnewer
|
||||
from tools.util.fileio import chext, isnewer, readtext
|
||||
from tools.util.models import Family
|
||||
from tools.util.obj import get
|
||||
from tools.util.platform import get_board_manifest, get_family
|
||||
@@ -194,7 +195,7 @@ if __name__ == "__main__":
|
||||
parser = ArgumentParser(
|
||||
prog="link2bin",
|
||||
description="Link to BIN format",
|
||||
prefix_chars="@",
|
||||
prefix_chars="#",
|
||||
)
|
||||
parser.add_argument("board", type=str, help="Target board name")
|
||||
parser.add_argument("ota1", type=str, help=".LD file OTA1 pattern")
|
||||
@@ -218,6 +219,17 @@ if __name__ == "__main__":
|
||||
if not args.args:
|
||||
print(f"Linker arguments must not be empty")
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
while True:
|
||||
i = next(i for i, a in enumerate(args.args) if a.startswith("@"))
|
||||
arg = args.args.pop(i)
|
||||
argv = readtext(arg[1:])
|
||||
argv = shlex.split(argv)
|
||||
args.args = args.args[0:i] + argv + args.args[i:]
|
||||
except StopIteration:
|
||||
pass
|
||||
|
||||
link2bin(
|
||||
soc,
|
||||
family,
|
||||
|
||||
Reference in New Issue
Block a user