diff options
author | Simon Glass <sjg@chromium.org> | 2019-08-24 07:22:44 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2019-10-15 08:40:02 -0600 |
commit | 8dbb7444ebaa499b753269c88cdd76f12f0fa875 (patch) | |
tree | a0686156cbdc102690cc019b5c7c5b3057a3a4cb /tools | |
parent | b986b3bb192f772a7c81c69aafe59094df7d4b81 (diff) | |
download | u-boot-8dbb7444ebaa499b753269c88cdd76f12f0fa875.zip u-boot-8dbb7444ebaa499b753269c88cdd76f12f0fa875.tar.gz u-boot-8dbb7444ebaa499b753269c88cdd76f12f0fa875.tar.bz2 |
binman: Allow use of help and entry-docs without libfdt
At present if libfdt is not available binman can't do anything much.
Improve the situation a little.
Ideally there should be a test to cover this, but I'm not quite sure how
to fake this.
Signed-off-by: Simon Glass <sjg@chromium.org>
(fixed up missing ReadChildData() enty test)
Diffstat (limited to 'tools')
-rw-r--r-- | tools/binman/control.py | 12 | ||||
-rw-r--r-- | tools/binman/entry.py | 5 | ||||
-rw-r--r-- | tools/binman/entry_test.py | 5 | ||||
-rw-r--r-- | tools/binman/etype/blob.py | 1 | ||||
-rw-r--r-- | tools/binman/etype/blob_dtb.py | 6 | ||||
-rw-r--r-- | tools/binman/etype/cbfs.py | 5 | ||||
-rw-r--r-- | tools/binman/etype/fdtmap.py | 13 | ||||
-rw-r--r-- | tools/binman/etype/files.py | 5 | ||||
-rw-r--r-- | tools/binman/etype/u_boot_dtb_with_ucode.py | 5 |
9 files changed, 44 insertions, 13 deletions
diff --git a/tools/binman/control.py b/tools/binman/control.py index cb51bc2..8268eda 100644 --- a/tools/binman/control.py +++ b/tools/binman/control.py @@ -15,8 +15,6 @@ import tools import cbfs_util import command import elf -from image import Image -import state import tout # List of images we plan to create @@ -113,6 +111,9 @@ def ReadEntry(image_fname, entry_path, decomp=True): Returns: data extracted from the entry """ + global Image + from image import Image + image = Image.FromFile(image_fname) entry = image.FindEntryPath(entry_path) return entry.ReadData(decomp) @@ -459,6 +460,9 @@ def Binman(args): Args: args: Command line arguments Namespace object """ + global Image + global state + if args.full_help: pager = os.getenv('PAGER') if not pager: @@ -468,6 +472,10 @@ def Binman(args): command.Run(pager, fname) return 0 + # Put these here so that we can import this module without libfdt + from image import Image + import state + if args.cmd in ['ls', 'extract', 'replace']: try: tout.Init(args.verbosity) diff --git a/tools/binman/entry.py b/tools/binman/entry.py index fe8e1dd..409c0dc 100644 --- a/tools/binman/entry.py +++ b/tools/binman/entry.py @@ -21,7 +21,6 @@ import os import sys import fdt_util -import state import tools from tools import ToHex, ToHexSize import tout @@ -71,6 +70,10 @@ class Entry(object): orig_size: Original size value read from node """ def __init__(self, section, etype, node, name_prefix=''): + # Put this here to allow entry-docs and help to work without libfdt + global state + import state + self.section = section self.etype = etype self._node = node diff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py index cc1fb79..13f5864 100644 --- a/tools/binman/entry_test.py +++ b/tools/binman/entry_test.py @@ -97,6 +97,11 @@ class TestEntry(unittest.TestCase): base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb') self.assertTrue(base.WriteChildData(base)) + def testReadChildData(self): + """Test the ReadChildData() method of the base class""" + base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb') + self.assertIsNone(base.ReadChildData(base)) + if __name__ == "__main__": unittest.main() diff --git a/tools/binman/etype/blob.py b/tools/binman/etype/blob.py index d15d078..d34c7b5 100644 --- a/tools/binman/etype/blob.py +++ b/tools/binman/etype/blob.py @@ -7,7 +7,6 @@ from entry import Entry import fdt_util -import state import tools import tout diff --git a/tools/binman/etype/blob_dtb.py b/tools/binman/etype/blob_dtb.py index 5b55996..b2afa06 100644 --- a/tools/binman/etype/blob_dtb.py +++ b/tools/binman/etype/blob_dtb.py @@ -5,8 +5,6 @@ # Entry-type module for U-Boot device tree files # -import state - from entry import Entry from blob import Entry_blob @@ -18,6 +16,10 @@ class Entry_blob_dtb(Entry_blob): 'state' module. """ def __init__(self, section, etype, node): + # Put this here to allow entry-docs and help to work without libfdt + global state + import state + Entry_blob.__init__(self, section, etype, node) def ObtainContents(self): diff --git a/tools/binman/etype/cbfs.py b/tools/binman/etype/cbfs.py index 28a9c81..35b7837 100644 --- a/tools/binman/etype/cbfs.py +++ b/tools/binman/etype/cbfs.py @@ -11,7 +11,6 @@ import cbfs_util from cbfs_util import CbfsWriter from entry import Entry import fdt_util -import state class Entry_cbfs(Entry): """Entry containing a Coreboot Filesystem (CBFS) @@ -164,6 +163,10 @@ class Entry_cbfs(Entry): both of size 1MB. """ def __init__(self, section, etype, node): + # Put this here to allow entry-docs and help to work without libfdt + global state + import state + Entry.__init__(self, section, etype, node) self._cbfs_arg = fdt_util.GetString(node, 'cbfs-arch', 'x86') self._cbfs_entries = OrderedDict() diff --git a/tools/binman/etype/fdtmap.py b/tools/binman/etype/fdtmap.py index b1810b9..5dc08b8 100644 --- a/tools/binman/etype/fdtmap.py +++ b/tools/binman/etype/fdtmap.py @@ -8,11 +8,7 @@ This handles putting an FDT into the image with just the information about the image. """ -import libfdt - from entry import Entry -from fdt import Fdt -import state import tools import tout @@ -80,6 +76,15 @@ class Entry_fdtmap(Entry): added as necessary. See the binman README. """ def __init__(self, section, etype, node): + # Put these here to allow entry-docs and help to work without libfdt + global libfdt + global state + global Fdt + + import libfdt + import state + from fdt import Fdt + Entry.__init__(self, section, etype, node) def _GetFdtmap(self): diff --git a/tools/binman/etype/files.py b/tools/binman/etype/files.py index 0068b30..3473a2b 100644 --- a/tools/binman/etype/files.py +++ b/tools/binman/etype/files.py @@ -11,7 +11,6 @@ import os from section import Entry_section import fdt_util -import state import tools @@ -29,6 +28,10 @@ class Entry_files(Entry_section): at run-time so you can obtain the file positions. """ def __init__(self, section, etype, node): + # Put this here to allow entry-docs and help to work without libfdt + global state + import state + Entry_section.__init__(self, section, etype, node) self._pattern = fdt_util.GetString(self._node, 'pattern') if not self._pattern: diff --git a/tools/binman/etype/u_boot_dtb_with_ucode.py b/tools/binman/etype/u_boot_dtb_with_ucode.py index cb6c373..6efd24a 100644 --- a/tools/binman/etype/u_boot_dtb_with_ucode.py +++ b/tools/binman/etype/u_boot_dtb_with_ucode.py @@ -7,7 +7,6 @@ from entry import Entry from blob_dtb import Entry_blob_dtb -import state import tools class Entry_u_boot_dtb_with_ucode(Entry_blob_dtb): @@ -25,6 +24,10 @@ class Entry_u_boot_dtb_with_ucode(Entry_blob_dtb): it available to u_boot_ucode. """ def __init__(self, section, etype, node): + # Put this here to allow entry-docs and help to work without libfdt + global state + import state + Entry_blob_dtb.__init__(self, section, etype, node) self.ucode_data = b'' self.collate = False |