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)
This commit is contained in:
Simon Glass
2019-08-24 07:22:44 -06:00
parent b986b3bb19
commit 8dbb7444eb
9 changed files with 44 additions and 13 deletions

View File

@@ -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)