diff options
Diffstat (limited to 'tools/binman/control.py')
-rw-r--r-- | tools/binman/control.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/binman/control.py b/tools/binman/control.py index ce57dc7efc..bfe63a1520 100644 --- a/tools/binman/control.py +++ b/tools/binman/control.py @@ -16,8 +16,9 @@ from patman import tools from binman import bintool from binman import cbfs_util -from binman import elf from patman import command +from binman import elf +from binman import entry from patman import tout # These are imported if needed since they import libfdt @@ -215,6 +216,7 @@ def ReadEntry(image_fname, entry_path, decomp=True): from binman.image import Image image = Image.FromFile(image_fname) + image.CollectBintools() entry = image.FindEntryPath(entry_path) return entry.ReadData(decomp) @@ -251,6 +253,7 @@ def ExtractEntries(image_fname, output_fname, outdir, entry_paths, List of EntryInfo records that were written """ image = Image.FromFile(image_fname) + image.CollectBintools() if alt_format == 'list': ShowAltFormats(image) @@ -370,6 +373,7 @@ def WriteEntry(image_fname, entry_path, data, do_compress=True, """ tout.info("Write entry '%s', file '%s'" % (entry_path, image_fname)) image = Image.FromFile(image_fname) + image.CollectBintools() entry = image.FindEntryPath(entry_path) WriteEntryToImage(image, entry, data, do_compress=do_compress, allow_resize=allow_resize, write_map=write_map) @@ -507,8 +511,8 @@ def PrepareImagesAndDtbs(dtb_fname, select_images, update_fdt, use_expanded): # without changing the device-tree size, thus ensuring that our # entry offsets remain the same. for image in images.values(): - image.CollectBintools() image.gen_entries() + image.CollectBintools() if update_fdt: image.AddMissingProperties(True) image.ProcessFdt(dtb) @@ -717,6 +721,13 @@ def Binman(args): bintool.Bintool.set_missing_list( args.force_missing_bintools.split(',') if args.force_missing_bintools else None) + + # Create the directory here instead of Entry.check_fake_fname() + # since that is called from a threaded context so different threads + # may race to create the directory + if args.fake_ext_blobs: + entry.Entry.create_fake_dir() + for image in images.values(): invalid |= ProcessImage(image, args.update_fdt, args.map, allow_missing=args.allow_missing, |