mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
binman: Move state information into a new module
At present the control module has state information in it, since it is the primary user of this. But it is a bit odd to have entries and other modules importing control to obtain this information. It seems better to have a dedicated state module, which control can use as well. Create a new module using code from control and update other modules to use it. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
77
tools/binman/state.py
Normal file
77
tools/binman/state.py
Normal file
@@ -0,0 +1,77 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
# Copyright 2018 Google, Inc
|
||||
# Written by Simon Glass <sjg@chromium.org>
|
||||
#
|
||||
# Holds and modifies the state information held by binman
|
||||
#
|
||||
|
||||
import re
|
||||
from sets import Set
|
||||
|
||||
import os
|
||||
import tools
|
||||
|
||||
# Records the device-tree files known to binman, keyed by filename (e.g.
|
||||
# 'u-boot-spl.dtb')
|
||||
fdt_files = {}
|
||||
|
||||
# Arguments passed to binman to provide arguments to entries
|
||||
entry_args = {}
|
||||
|
||||
def GetFdt(fname):
|
||||
"""Get the Fdt object for a particular device-tree filename
|
||||
|
||||
Binman keeps track of at least one device-tree file called u-boot.dtb but
|
||||
can also have others (e.g. for SPL). This function looks up the given
|
||||
filename and returns the associated Fdt object.
|
||||
|
||||
Args:
|
||||
fname: Filename to look up (e.g. 'u-boot.dtb').
|
||||
|
||||
Returns:
|
||||
Fdt object associated with the filename
|
||||
"""
|
||||
return fdt_files[fname]
|
||||
|
||||
def GetFdtPath(fname):
|
||||
"""Get the full pathname of a particular Fdt object
|
||||
|
||||
Similar to GetFdt() but returns the pathname associated with the Fdt.
|
||||
|
||||
Args:
|
||||
fname: Filename to look up (e.g. 'u-boot.dtb').
|
||||
|
||||
Returns:
|
||||
Full path name to the associated Fdt
|
||||
"""
|
||||
return fdt_files[fname]._fname
|
||||
|
||||
def SetEntryArgs(args):
|
||||
"""Set the value of the entry args
|
||||
|
||||
This sets up the entry_args dict which is used to supply entry arguments to
|
||||
entries.
|
||||
|
||||
Args:
|
||||
args: List of entry arguments, each in the format "name=value"
|
||||
"""
|
||||
global entry_args
|
||||
|
||||
entry_args = {}
|
||||
if args:
|
||||
for arg in args:
|
||||
m = re.match('([^=]*)=(.*)', arg)
|
||||
if not m:
|
||||
raise ValueError("Invalid entry arguemnt '%s'" % arg)
|
||||
entry_args[m.group(1)] = m.group(2)
|
||||
|
||||
def GetEntryArg(name):
|
||||
"""Get the value of an entry argument
|
||||
|
||||
Args:
|
||||
name: Name of argument to retrieve
|
||||
|
||||
Returns:
|
||||
String value of argument
|
||||
"""
|
||||
return entry_args.get(name)
|
Reference in New Issue
Block a user