From 41316293e442da24fbda5a18cc2f75a57f86ea53 Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Fri, 2 Oct 2015 10:25:21 -0500 Subject: lib/oe/image.py: Add image generation for companion debug filesystem The companion debug filesystem, enabled with IMAGE_GEN_DEBUGFS, was creating the companion filesystem but was missing the code to actually package it into a usable filesystem. The code (and associated documentation) will allow the debugfs to generate a companion tarball or other image. Signed-off-by: Mark Hatle Signed-off-by: Richard Purdie --- meta/lib/oe/image.py | 46 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) (limited to 'meta/lib/oe') diff --git a/meta/lib/oe/image.py b/meta/lib/oe/image.py index f9e9bfd587..b0d81a6b22 100644 --- a/meta/lib/oe/image.py +++ b/meta/lib/oe/image.py @@ -5,7 +5,7 @@ import multiprocessing def generate_image(arg): - (type, subimages, create_img_cmd) = arg + (type, subimages, create_img_cmd, sprefix) = arg bb.note("Running image creation script for %s: %s ..." % (type, create_img_cmd)) @@ -264,9 +264,9 @@ class Image(ImageDepGraph): return (alltypes, filtered_groups, cimages) - def _write_script(self, type, cmds): + def _write_script(self, type, cmds, sprefix=""): tempdir = self.d.getVar('T', True) - script_name = os.path.join(tempdir, "create_image." + type) + script_name = os.path.join(tempdir, sprefix + "create_image." + type) rootfs_size = self._get_rootfs_size() self.d.setVar('img_creation_func', '\n'.join(cmds)) @@ -284,7 +284,7 @@ class Image(ImageDepGraph): return script_name - def _get_imagecmds(self): + def _get_imagecmds(self, sprefix=""): old_overrides = self.d.getVar('OVERRIDES', 0) alltypes, fstype_groups, cimages = self._get_image_types() @@ -320,9 +320,9 @@ class Image(ImageDepGraph): else: subimages.append(type) - script_name = self._write_script(type, cmds) + script_name = self._write_script(type, cmds, sprefix) - image_cmds.append((type, subimages, script_name)) + image_cmds.append((type, subimages, script_name, sprefix)) image_cmd_groups.append(image_cmds) @@ -355,6 +355,27 @@ class Image(ImageDepGraph): image_cmd_groups = self._get_imagecmds() + # Process the debug filesystem... + debugfs_d = bb.data.createCopy(self.d) + if self.d.getVar('IMAGE_GEN_DEBUGFS', True) == "1": + bb.note("Processing debugfs image(s) ...") + orig_d = self.d + self.d = debugfs_d + + self.d.setVar('IMAGE_ROOTFS', orig_d.getVar('IMAGE_ROOTFS', True) + '-dbg') + self.d.setVar('IMAGE_NAME', orig_d.getVar('IMAGE_NAME', True) + '-dbg') + self.d.setVar('IMAGE_LINK_NAME', orig_d.getVar('IMAGE_LINK_NAME', True) + '-dbg') + + debugfs_image_fstypes = orig_d.getVar('IMAGE_FSTYPES_DEBUGFS', True) + if debugfs_image_fstypes: + self.d.setVar('IMAGE_FSTYPES', orig_d.getVar('IMAGE_FSTYPES_DEBUGFS', True)) + + self._remove_old_symlinks() + + image_cmd_groups += self._get_imagecmds("debugfs.") + + self.d = orig_d + self._write_wic_env() for image_cmds in image_cmd_groups: @@ -369,9 +390,16 @@ class Image(ImageDepGraph): if result is not None: bb.fatal(result) - for image_type, subimages, script in image_cmds: - bb.note("Creating symlinks for %s image ..." % image_type) - self._create_symlinks(subimages) + for image_type, subimages, script, sprefix in image_cmds: + if sprefix == 'debugfs.': + bb.note("Creating symlinks for %s debugfs image ..." % image_type) + orig_d = self.d + self.d = debugfs_d + self._create_symlinks(subimages) + self.d = orig_d + else: + bb.note("Creating symlinks for %s image ..." % image_type) + self._create_symlinks(subimages) execute_pre_post_process(self.d, post_process_cmds) -- cgit v1.2.3