From: Randy Witt <randy.e.w...@linux.intel.com> If an image with the filename foo.bb could be built using the name "bar" instead, then build-sdk would fail to create the derivative sdk.
This was because the code assumed that the file name matched the target, which is not necessarily the case. Signed-off-by: Randy Witt <randy.e.w...@linux.intel.com> Signed-off-by: Paul Eggleton <paul.eggle...@linux.intel.com> --- Changes since v1: * Ignore bbappend not existing when attempting to delete it, since that will be the case if devtool build-sdk is run a second time * Call config.write() so setting gets written out at the right time * Use os.path.splitext() rather than rsplit() - no difference in operation but if there's a function to do this we should use it scripts/devtool | 3 +++ scripts/lib/devtool/build_image.py | 24 +++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/scripts/devtool b/scripts/devtool index 4780390..f090427 100755 --- a/scripts/devtool +++ b/scripts/devtool @@ -86,6 +86,9 @@ class ConfigHandler(object): with open(self.config_file, 'w') as f: self.config_obj.write(f) + def set(self, section, option, value): + self.config_obj.set(section, option, value) + class Context: def __init__(self, **kwargs): self.__dict__.update(kwargs) diff --git a/scripts/lib/devtool/build_image.py b/scripts/lib/devtool/build_image.py index e51d766..1e5d09b 100644 --- a/scripts/lib/devtool/build_image.py +++ b/scripts/lib/devtool/build_image.py @@ -18,6 +18,7 @@ """Devtool plugin containing the build-image subcommand.""" import os +import errno import logging from bb.process import ExecutionError @@ -72,13 +73,17 @@ def build_image(args, config, basepath, workspace): return result def build_image_task(config, basepath, workspace, image, add_packages=None, task=None, extra_append=None): - appendfile = os.path.join(config.workspace_path, 'appends', - '%s.bbappend' % image) - # remove <image>.bbappend to make sure setup_tinfoil doesn't # break because of it - if os.path.isfile(appendfile): - os.unlink(appendfile) + target_basename = config.get('SDK', 'target_basename', '') + if target_basename: + appendfile = os.path.join(config.workspace_path, 'appends', + '%s.bbappend' % target_basename) + try: + os.unlink(appendfile) + except OSError as exc: + if exc.errno != errno.ENOENT: + raise tinfoil = setup_tinfoil(basepath=basepath) rd = parse_recipe(config, tinfoil, image, True) @@ -88,6 +93,15 @@ def build_image_task(config, basepath, workspace, image, add_packages=None, task if not bb.data.inherits_class('image', rd): raise TargetNotImageError() + # Get the actual filename used and strip the .bb and full path + target_basename = rd.getVar('FILE', True) + target_basename = os.path.splitext(os.path.basename(target_basename))[0] + config.set('SDK', 'target_basename', target_basename) + config.write() + + appendfile = os.path.join(config.workspace_path, 'appends', + '%s.bbappend' % target_basename) + outputdir = None try: if workspace or add_packages: -- 2.5.5 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core