diff options
Diffstat (limited to 'lib/bb/parse/parse_c/BBHandler.py')
-rw-r--r-- | lib/bb/parse/parse_c/BBHandler.py | 86 |
1 files changed, 46 insertions, 40 deletions
diff --git a/lib/bb/parse/parse_c/BBHandler.py b/lib/bb/parse/parse_c/BBHandler.py index 771a7a0d8..d9f48db17 100644 --- a/lib/bb/parse/parse_c/BBHandler.py +++ b/lib/bb/parse/parse_c/BBHandler.py @@ -1,32 +1,43 @@ # ex:ts=4:sw=4:sts=4:et # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- -# -# Copyright (C) 2006 Holger Hans Peter Freyther -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -# SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -# THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# +"""class for handling .bb files (using a C++ parser) + + Reads a .bb file and obtains its metadata (using a C++ parser) + + Copyright (C) 2006 Tim Robert Ansell + Copyright (C) 2006 Holger Hans Peter Freyther + + This program is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any later + version. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" + +import os # The Module we will use here -from bb import data, parse -from bb.parse import ParseError import bb +from bitbakec import parsefile + # # This is the Python Part of the Native Parser Implementation. # We will only parse .bbclass, .inc and .bb files but no @@ -36,11 +47,6 @@ import bb # # The rest of the methods are internal implementation details. - - -# -# internal -# def _init(fn, d): """ Initialize the data implementation with values of @@ -52,32 +58,34 @@ def _init(fn, d): # public # def supports(fn, data): - return fn[-3:] == ".bb" or fn[-8:] == ".bbclass" or fn[-4:] == ".inc" + return fn[-3:] == ".bb" or fn[-8:] == ".bbclass" or fn[-4:] == ".inc" or fn[-5:] == ".conf" def init(fn, data): - if not bb.data.getVar('TOPDIR', data): + if not data.getVar('TOPDIR'): bb.error('TOPDIR is not set') - if not bb.data.getVar('BBPATH', data): + if not data.getVar('BBPATH'): bb.error('BBPATH is not set') def handle(fn, d, include): print "" print "fn: %s" % fn - print "data: %s" % data + print "data: %s" % d + print dir(d) + print d.getVar.__doc__ print "include: %s" % include # check if we include or are the beginning if include: - oldfile = data.getVar('FILE', d) + oldfile = d.getVar('FILE') else: - data.inheritFromOS(d) + #d.inheritFromOS() oldfile = None # find the file if not os.path.isabs(fn): bb.error("No Absolute FILE name") - abs_fn = bb.which(data.getVar('BBPATH',d), fn) + abs_fn = bb.which(d.getVar('BBPATH'), fn) else: abs_fn = fn @@ -85,20 +93,18 @@ def handle(fn, d, include): if not os.path.exists(abs_fn): raise IOError("file '%(fn)' not found" % locals() ) - fn = file(abs_fn, 'r') - # now we know the file is around mark it as dep if include: parse.mark_dependency(d, abs_fn) # now parse this file - by defering it to C++ - + parsefile(fn, d) # restore the original FILE if oldfile: - data.setVar('FILE', oldfile, data) + d.setVar('FILE', oldfile) - return data + return d # Inform bitbake that we are a parser # We need to define all three |