summaryrefslogtreecommitdiffstats
path: root/lib/bb/parse/__init__.py
diff options
context:
space:
mode:
authorMartin Jansa <martin.jansa@gmail.com>2013-08-23 19:06:26 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-24 09:54:23 +0100
commitb0bbd89a4f0b98fa1ab28b8e0526cd9ddb76fa57 (patch)
tree89a3208f111f91b7526ccb3b4dd57760668c749f /lib/bb/parse/__init__.py
parentc696a16c8200c31c52750037eeafe07e065b6517 (diff)
downloadbitbake-contrib-b0bbd89a4f0b98fa1ab28b8e0526cd9ddb76fa57.tar.gz
parse: Return IOError when including file with absolute path
* resolve_file was behaving different when relative and absolute paths were passed to it * include relative-path/non-existent-file.inc works correctly resolve_file throws IOError, BBHandler.py:handle() doesn't catch it, ConfHandler.py:include() catches IOError and shows: DEBUG: CONF file 'relative-path/non-existent-file.inc' not found * include /absolute-path/non-existent-file.inc was failing, because resolve_file just returns fn, BBHandler.py:handle() calls bb.parse.mark_dependency(d, abs_fn) which throws: OSError: [Errno 2] No such file or directory: '/absolute-path/non-existent-file.inc' and parsing fails. Ad isfile() test for absolute fn and throw IOError to make resolve_file behavior consistent for both paths. * I know we had some issues with -b relative-path-to-recipe.bb and absolute path, so consider this patch only as RFC and documentation of this problem * Catch OSError too in ConfHandler.py:include() e.g. in case the file exists, but user cannot read it or something like that. Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/parse/__init__.py')
-rw-r--r--lib/bb/parse/__init__.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/bb/parse/__init__.py b/lib/bb/parse/__init__.py
index 3f93ad2e6..c973f6fdb 100644
--- a/lib/bb/parse/__init__.py
+++ b/lib/bb/parse/__init__.py
@@ -107,6 +107,9 @@ def resolve_file(fn, d):
raise IOError("file %s not found in %s" % (fn, bbpath))
fn = newfn
+ if not os.path.isfile(fn):
+ raise IOError("file %s not found" % fn)
+
logger.debug(2, "LOAD %s", fn)
return fn