diff options
author | Martin Jansa <martin.jansa@gmail.com> | 2013-08-23 19:06:26 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-08-24 09:54:23 +0100 |
commit | b0bbd89a4f0b98fa1ab28b8e0526cd9ddb76fa57 (patch) | |
tree | 89a3208f111f91b7526ccb3b4dd57760668c749f /lib/bb/parse/__init__.py | |
parent | c696a16c8200c31c52750037eeafe07e065b6517 (diff) | |
download | bitbake-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__.py | 3 |
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 |