cros_bundle_firmware: Tidy up selection of defaults
At present the code to setup default filenames is called from SelectFdt(),
so cros_write_firmware ends up calling it twice. Untangle this.
BUG=chromium-os:38684
TEST=FEATURES=test sudo -E emerge cros-devutils
Change-Id: Ieaa25930b38fc4eb96e77c856666acfb1cd0292e
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/43003
diff --git a/host/lib/bundle_firmware.py b/host/lib/bundle_firmware.py
index c411fc0..eab7369 100644
--- a/host/lib/bundle_firmware.py
+++ b/host/lib/bundle_firmware.py
@@ -251,13 +251,32 @@
self._gbb_flags = gbb_flags
self._force_rw = force_rw
- def CheckOptions(self):
- """Check provided options and select defaults."""
+ def _GetBuildRoot(self):
+ """Get the path to this board's 'firmware' directory.
+
+ Returns:
+ Path to firmware directory, with ## representing the path to the
+ chroot.
+ """
if not self._board:
raise ValueError('No board defined - please define a board to use')
- build_root = os.path.join('##', 'build', self._board, 'firmware')
+ return os.path.join('##', 'build', self._board, 'firmware')
+
+ def _CheckFdtFilename(self, fname):
+ """Check provided FDT filename and return the correct name if needed.
+
+ Where the filename lacks a path, add a default path for this board.
+ Where no FDT filename is provided, select a default one for this board.
+
+ Args:
+ fname: Proposed FDT filename.
+
+ Returns:
+ Selected FDT filename, after validation.
+ """
+ build_root = self._GetBuildRoot()
dir_name = os.path.join(build_root, 'dts')
- if not self._fdt_fname:
+ if not fname:
# Figure out where the file should be, and the name we expect.
base_name = re.sub('_', '-', self._board)
@@ -265,15 +284,20 @@
wildcard = os.path.join(dir_name, '*%s*.dts' % base_name)
found_list = glob.glob(self._tools.Filename(wildcard))
if len(found_list) == 1:
- self._fdt_fname = found_list[0]
+ fname = found_list[0]
else:
# We didn't find anything definite, so set up our expected name.
- self._fdt_fname = os.path.join(dir_name, '%s.dts' % base_name)
+ fname = os.path.join(dir_name, '%s.dts' % base_name)
# Convert things like 'exynos5250-daisy' into a full path.
- root, ext = os.path.splitext(self._fdt_fname)
+ root, ext = os.path.splitext(fname)
if not ext and not os.path.dirname(root):
- self._fdt_fname = os.path.join(dir_name, '%s.dts' % root)
+ fname = os.path.join(dir_name, '%s.dts' % root)
+ return fname
+
+ def CheckOptions(self):
+ """Check provided options and select defaults."""
+ build_root = self._GetBuildRoot()
if not self.uboot_fname:
self.uboot_fname = os.path.join(build_root, 'u-boot.bin')
@@ -1099,9 +1123,11 @@
We make a copy of this which will include any on-the-fly changes we want
to make.
"""
+ fdt_fname = self._CheckFdtFilename(fdt_fname)
+ if not fdt_fname:
+ raise ValueError('Please provide an FDT filename')
+ fdt = Fdt(self._tools, fdt_fname)
self._fdt_fname = fdt_fname
- self.CheckOptions()
- fdt = Fdt(self._tools, self._fdt_fname)
# For upstream, select the correct architecture .dtsi manually.
if self._board == 'link' or 'x86' in self._board: