summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2017-02-07 09:45:43 +1300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-02-07 14:50:09 +0000
commite8f4e06e762670c6e451dc4028be7c3cccd71c46 (patch)
tree6d21e2eef3ca6a14d8e3a33d9d32956b3502dbd6
parente0a94f2e1fe1e3f6f169ac4eaee6fe5dbfc7eaa2 (diff)
downloadpoky-e8f4e06e762670c6e451dc4028be7c3cccd71c46.tar.gz
devtool: improve parse failure handling
With the move to tinfoil2, the behaviour when parsing failed has changed a bit - exceptions are now raised, so handle these appropriately. Specifically when if parsing the recipe created when running devtool add fails, rename it to .bb.parsefailed so that the user can run bitbake afterwards without parsing being interrupted. (From OE-Core rev: b9592bd3c1ab2155b9f62d18ce593b9c88eff279) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--scripts/lib/devtool/__init__.py7
-rw-r--r--scripts/lib/devtool/standard.py11
2 files changed, 16 insertions, 2 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index fd2f042ba5..91111e1109 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -135,7 +135,12 @@ def parse_recipe(config, tinfoil, pn, appends, filter_workspace=True):
135 not path.startswith(config.workspace_path)] 135 not path.startswith(config.workspace_path)]
136 else: 136 else:
137 append_files = None 137 append_files = None
138 return tinfoil.parse_recipe_file(recipefile, appends, append_files) 138 try:
139 rd = tinfoil.parse_recipe_file(recipefile, appends, append_files)
140 except Exception as e:
141 logger.error(str(e))
142 return None
143 return rd
139 144
140def check_workspace_recipe(workspace, pn, checksrc=True, bbclassextend=False): 145def check_workspace_recipe(workspace, pn, checksrc=True, bbclassextend=False):
141 """ 146 """
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 30b247fa74..5bd498c933 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -224,8 +224,17 @@ def add(args, config, basepath, workspace):
224 224
225 tinfoil = setup_tinfoil(config_only=True, basepath=basepath) 225 tinfoil = setup_tinfoil(config_only=True, basepath=basepath)
226 try: 226 try:
227 rd = tinfoil.parse_recipe_file(recipefile, False) 227 try:
228 rd = tinfoil.parse_recipe_file(recipefile, False)
229 except Exception as e:
230 logger.error(str(e))
231 rd = None
228 if not rd: 232 if not rd:
233 # Parsing failed. We just created this recipe and we shouldn't
234 # leave it in the workdir or it'll prevent bitbake from starting
235 movefn = '%s.parsefailed' % recipefile
236 logger.error('Parsing newly created recipe failed, moving recipe to %s for reference. If this looks to be caused by the recipe itself, please report this error.' % movefn)
237 shutil.move(recipefile, movefn)
229 return 1 238 return 1
230 239
231 if args.fetchuri and not args.no_git: 240 if args.fetchuri and not args.no_git: