diff options
author | Randy Witt <randy.e.witt@linux.intel.com> | 2016-05-10 10:46:27 +1200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-05-11 10:33:43 +0100 |
commit | 832029356f64da093472f55ce0447a6052400985 (patch) | |
tree | f3bba42824d4b9a4293dfec1f76225f1f7377102 | |
parent | 32d80fe25823268a640590a2a9de766ff85d217c (diff) | |
download | poky-832029356f64da093472f55ce0447a6052400985.tar.gz |
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)
Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-x | scripts/devtool | 5 | ||||
-rw-r--r-- | scripts/lib/devtool/build_image.py | 24 |
2 files changed, 24 insertions, 5 deletions
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): | |||
86 | with open(self.config_file, 'w') as f: | 86 | with open(self.config_file, 'w') as f: |
87 | self.config_obj.write(f) | 87 | self.config_obj.write(f) |
88 | 88 | ||
89 | def set(self, section, option, value): | ||
90 | if not self.config_obj.has_section(section): | ||
91 | self.config_obj.add_section(section) | ||
92 | self.config_obj.set(section, option, value) | ||
93 | |||
89 | class Context: | 94 | class Context: |
90 | def __init__(self, **kwargs): | 95 | def __init__(self, **kwargs): |
91 | self.__dict__.update(kwargs) | 96 | 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 @@ | |||
18 | """Devtool plugin containing the build-image subcommand.""" | 18 | """Devtool plugin containing the build-image subcommand.""" |
19 | 19 | ||
20 | import os | 20 | import os |
21 | import errno | ||
21 | import logging | 22 | import logging |
22 | 23 | ||
23 | from bb.process import ExecutionError | 24 | from bb.process import ExecutionError |
@@ -72,13 +73,17 @@ def build_image(args, config, basepath, workspace): | |||
72 | return result | 73 | return result |
73 | 74 | ||
74 | def build_image_task(config, basepath, workspace, image, add_packages=None, task=None, extra_append=None): | 75 | def build_image_task(config, basepath, workspace, image, add_packages=None, task=None, extra_append=None): |
75 | appendfile = os.path.join(config.workspace_path, 'appends', | ||
76 | '%s.bbappend' % image) | ||
77 | |||
78 | # remove <image>.bbappend to make sure setup_tinfoil doesn't | 76 | # remove <image>.bbappend to make sure setup_tinfoil doesn't |
79 | # break because of it | 77 | # break because of it |
80 | if os.path.isfile(appendfile): | 78 | target_basename = config.get('SDK', 'target_basename', '') |
81 | os.unlink(appendfile) | 79 | if target_basename: |
80 | appendfile = os.path.join(config.workspace_path, 'appends', | ||
81 | '%s.bbappend' % target_basename) | ||
82 | try: | ||
83 | os.unlink(appendfile) | ||
84 | except OSError as exc: | ||
85 | if exc.errno != errno.ENOENT: | ||
86 | raise | ||
82 | 87 | ||
83 | tinfoil = setup_tinfoil(basepath=basepath) | 88 | tinfoil = setup_tinfoil(basepath=basepath) |
84 | rd = parse_recipe(config, tinfoil, image, True) | 89 | rd = parse_recipe(config, tinfoil, image, True) |
@@ -88,6 +93,15 @@ def build_image_task(config, basepath, workspace, image, add_packages=None, task | |||
88 | if not bb.data.inherits_class('image', rd): | 93 | if not bb.data.inherits_class('image', rd): |
89 | raise TargetNotImageError() | 94 | raise TargetNotImageError() |
90 | 95 | ||
96 | # Get the actual filename used and strip the .bb and full path | ||
97 | target_basename = rd.getVar('FILE', True) | ||
98 | target_basename = os.path.splitext(os.path.basename(target_basename))[0] | ||
99 | config.set('SDK', 'target_basename', target_basename) | ||
100 | config.write() | ||
101 | |||
102 | appendfile = os.path.join(config.workspace_path, 'appends', | ||
103 | '%s.bbappend' % target_basename) | ||
104 | |||
91 | outputdir = None | 105 | outputdir = None |
92 | try: | 106 | try: |
93 | if workspace or add_packages: | 107 | if workspace or add_packages: |