diff options
author | Chris Larson <clarson@kergoth.com> | 2004-12-07 20:55:41 +0000 |
---|---|---|
committer | Chris Larson <clarson@kergoth.com> | 2004-12-07 20:55:41 +0000 |
commit | d91e57c44e923b6b65396515ff878199d43763a1 (patch) | |
tree | c891ef94238989d3efb004cc3d22a280b642260b /lib/bb/parse/__init__.py | |
parent | 9633dc85c57a0a6de1b088b49e589513087c2720 (diff) | |
download | bitbake-contrib-d91e57c44e923b6b65396515ff878199d43763a1.tar.gz |
Initial import.
Diffstat (limited to 'lib/bb/parse/__init__.py')
-rw-r--r-- | lib/bb/parse/__init__.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/bb/parse/__init__.py b/lib/bb/parse/__init__.py new file mode 100644 index 000000000..a61630478 --- /dev/null +++ b/lib/bb/parse/__init__.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +""" +BitBake Parsers + +File parsers for the BitBake build tools. + +Copyright (C) 2003, 2004 Chris Larson +Copyright (C) 2003, 2004 Phil Blundell + +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. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA. + +Based on functions from the base bb module, Copyright 2003 Holger Schurig +""" +__version__ = '1.0' + +__all__ = [ 'handlers', 'supports', 'handle', 'init', 'ConfHandler', 'BBHandler', 'ParseError' ] +handlers = [] + +class ParseError(Exception): + """Exception raised when parsing fails""" + +class SkipPackage(Exception): + """Exception raised to skip this package""" + +import ConfHandler +ConfHandler.ParseError = ParseError +import BBHandler +BBHandler.ParseError = ParseError + +__mtime_cache = {} + +def cached_mtime(f): + import os + if not __mtime_cache.has_key(f): + __mtime_cache[f] = os.stat(f)[8] + return __mtime_cache[f] + +def mark_dependency(d, f): + import bb, os + if f.startswith('./'): + f = "%s/%s" % (os.getcwd(), f[2:]) + deps = (bb.data.getVar('__depends', d) or "").split() + deps.append("%s@%s" % (f, cached_mtime(f))) + bb.data.setVar('__depends', " ".join(deps), d) + +def supports(fn, data): + """Returns true if we have a handler for this file, false otherwise""" + for h in handlers: + if h['supports'](fn, data): + return 1 + return 0 + +def handle(fn, data, include = 0): + """Call the handler that is appropriate for this file""" + for h in handlers: + if h['supports'](fn, data): + return h['handle'](fn, data, include) + return None + +def init(fn, data): + for h in handlers: + if h['supports'](fn): + return h['init'](data) |