cros_bundle_firmware: allow building GBBs without bitmaps
Embedded chrome OS targets might not require bitmaps in the GBB, it is
useful to be able to build a bootimage without requiring bitmaps.
This patch adds an option (--skip-bmpblk), which makes sure that
futility is invoked in a manner not requiring inclusion of the bitmap.
BUG=chrome-os-partner:31438
TEST=ran 'cros_bundle_firmware' with options requiring and skipping
bitmap, both cases resulted in a valid firmware image
Change-Id: I3e109b4d256dd16e1f26597ee8c0caee26d2d098
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/232045
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
diff --git a/host/lib/bundle_firmware.py b/host/lib/bundle_firmware.py
index c597c98..afacb4b 100644
--- a/host/lib/bundle_firmware.py
+++ b/host/lib/bundle_firmware.py
@@ -161,7 +161,7 @@
coreboot_elf=None,
postload=None, seabios=None, exynos_bl1=None, exynos_bl2=None,
skeleton=None, ecrw=None, ecro=None, pdrw=None,
- kernel=None, blobs=None):
+ kernel=None, blobs=None, skip_bmpblk=False):
"""Set up files required for Bundle.
Args:
@@ -181,6 +181,7 @@
pdrw: The filename of the PD (PD embedded controller) read-write file.
kernel: The filename of the kernel file if any.
blobs: List of (type, filename) of arbitrary blobs.
+ skip_bmpblk: True if no bmpblk is required
"""
self._board = board
self.uboot_fname = uboot
@@ -198,6 +199,7 @@
self.pdrw_fname = pdrw
self.kernel_fname = kernel
self.blobs = dict(blobs or ())
+ self.skip_bmpblk = skip_bmpblk
def SetOptions(self, small, gbb_flags, force_rw=False, force_efs=False):
"""Set up options supported by Bundle.
@@ -410,15 +412,19 @@
sizes = ['%#x' % size for size in sizes]
gbb = 'gbb.bin'
keydir = self._tools.Filename(self._keydir)
+
+ gbb_set_command = ['-s',
+ '--hwid=%s' % hardware_id,
+ '--rootkey=%s/root_key.vbpubk' % keydir,
+ '--recoverykey=%s/recovery_key.vbpubk' % keydir,
+ '--flags=%d' % gbb_flags,
+ gbb]
+ if not self.skip_bmpblk:
+ gbb_set_command[-1:-1] = ['--bmpfv=%s' % self._tools.Filename(
+ self.bmpblk_fname),]
+
self._tools.Run('gbb_utility', ['-c', ','.join(sizes), gbb], cwd=odir)
- self._tools.Run('gbb_utility', ['-s',
- '--hwid=%s' % hardware_id,
- '--rootkey=%s/root_key.vbpubk' % keydir,
- '--recoverykey=%s/recovery_key.vbpubk' % keydir,
- '--bmpfv=%s' % self._tools.Filename(self.bmpblk_fname),
- '--flags=%d' % gbb_flags,
- gbb],
- cwd=odir)
+ self._tools.Run('gbb_utility', gbb_set_command, cwd=odir)
return os.path.join(odir, gbb)
def _SignBootstub(self, bct, bootstub, text_base):