binman: Allow preserving the output dir when replacing
authorSimon Glass <sjg@chromium.org>
Fri, 3 Mar 2023 00:02:42 +0000 (17:02 -0700)
committerSimon Glass <sjg@chromium.org>
Wed, 8 Mar 2023 21:15:14 +0000 (13:15 -0800)
Add these flags for the 'replace' subcommand too, to aid debugging.

Signed-off-by: Simon Glass <sjg@chromium.org>
44 2023 -0700

tools/binman/binman.rst
tools/binman/cmdline.py
tools/binman/control.py

index a729b53..86a4b95 100644 (file)
@@ -1697,6 +1697,12 @@ Options:
 -m, --map
     Output a map file for the updated image
 
+-O OUTDIR, --outdir OUTDIR
+    Path to directory to use for intermediate and output files
+
+-p, --preserve
+    Preserve temporary output directory even if option -O is not given
+
 This replaces one or more entries in an existing image. See
 `Replacing files in an image`_.
 
index 54926ad..1b7bbe8 100644 (file)
@@ -73,6 +73,14 @@ def ParseArgs(argv):
             options provides access to the options (e.g. option.debug)
             args is a list of string arguments
     """
+    def _AddPreserve(pars):
+        pars.add_argument('-O', '--outdir', type=str,
+            action='store', help='Path to directory to use for intermediate '
+            'and output files')
+        pars.add_argument('-p', '--preserve', action='store_true',\
+            help='Preserve temporary output directory even if option -O is not '
+                 'given')
+
     if '-H' in argv:
         argv.append('build')
 
@@ -127,12 +135,7 @@ controlled by a description in the board device tree.'''
     build_parser.add_argument('-n', '--no-expanded', action='store_true',
             help="Don't use 'expanded' versions of entries where available; "
                  "normally 'u-boot' becomes 'u-boot-expanded', for example")
-    build_parser.add_argument('-O', '--outdir', type=str,
-        action='store', help='Path to directory to use for intermediate and '
-        'output files')
-    build_parser.add_argument('-p', '--preserve', action='store_true',\
-        help='Preserve temporary output directory even if option -O is not '
-             'given')
+    _AddPreserve(build_parser)
     build_parser.add_argument('-u', '--update-fdt', action='store_true',
         default=False, help='Update the binman node with offset/size info')
     build_parser.add_argument('--update-fdt-in-elf', type=str,
@@ -169,6 +172,7 @@ controlled by a description in the board device tree.'''
         help='Path to directory to use for input files')
     replace_parser.add_argument('-m', '--map', action='store_true',
         default=False, help='Output a map file for the updated image')
+    _AddPreserve(replace_parser)
     replace_parser.add_argument('paths', type=str, nargs='*',
                                 help='Paths within file to replace (wildcard)')
 
index 2900538..bd40f07 100644 (file)
@@ -661,7 +661,10 @@ def Binman(args):
     if args.cmd in ['ls', 'extract', 'replace', 'tool']:
         try:
             tout.init(args.verbosity)
-            tools.prepare_output_dir(None)
+            if args.cmd == 'replace':
+                tools.prepare_output_dir(args.outdir, args.preserve)
+            else:
+                tools.prepare_output_dir(None)
             if args.cmd == 'ls':
                 ListEntries(args.image, args.paths)