From 5d11ed7162074b1d64e9840210fa563a16f39018 Mon Sep 17 00:00:00 2001 From: Randy Witt Date: Tue, 10 May 2016 10:46:27 +1200 Subject: devtool: Fix build-sdk when pn doesn't match filename 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. (From OE-Core rev: d58a326b6960be14b8a049253559aec9582b7d0d) (From OE-Core rev: da9e793fd7497e63404c987d68e3b630a89fc1c2) Signed-off-by: Randy Witt Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie Signed-off-by: Armin Kuster Signed-off-by: Richard Purdie --- scripts/devtool | 5 +++++ scripts/lib/devtool/build_image.py | 24 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) (limited to 'scripts') diff --git a/scripts/devtool b/scripts/devtool index 4780390654..9ac6e798d2 100755 --- a/scripts/devtool +++ b/scripts/devtool @@ -86,6 +86,11 @@ class ConfigHandler(object): with open(self.config_file, 'w') as f: self.config_obj.write(f) + def set(self, section, option, value): + if not self.config_obj.has_section(section): + self.config_obj.add_section(section) + 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 e51d766474..1e5d09b39e 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 .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: -- cgit v1.2.3-54-g00ecf