SignatureGenerator: Add empty implementation for dump_sigs
[bitbake.git] / parse_c / BBHandler.py
1 # ex:ts=4:sw=4:sts=4:et
2 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
3 #
4 # Copyright (C) 2006 Holger Hans Peter Freyther
5 #
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included in all
14 # copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
19 # SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
21 # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
22 # THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 #
24
25 # The Module we will use here
26 from bb import data, parse
27 from bb.parse import ParseError
28 import bb
29
30 #
31 # This is the Python Part of the Native Parser Implementation.
32 # We will only parse .bbclass, .inc and .bb files but no
33 # configuration files.
34 # supports, init and handle are the public methods used by
35 # parser module
36 #
37 # The rest of the methods are internal implementation details.
38
39
40
41 #
42 # internal
43 #
44 def _init(fn, d):
45     """
46     Initialize the data implementation with values of
47     the environment and data from the file.
48     """
49     pass
50
51 #
52 # public
53 #
54 def supports(fn, data):
55     return fn[-3:] == ".bb" or fn[-8:] == ".bbclass" or fn[-4:] == ".inc"
56
57 def init(fn, data):
58     if not bb.data.getVar('TOPDIR', data):
59         bb.error('TOPDIR is not set')
60     if not bb.data.getVar('BBPATH', data):
61         bb.error('BBPATH is not set')
62
63
64 def handle(fn, d, include):
65     print ""
66     print "fn: %s" % fn
67     print "data: %s" % data
68     print "include: %s" % include
69
70     # check if we include or are the beginning
71     if include:
72         oldfile = data.getVar('FILE', d)
73     else:
74         data.inheritFromOS(d)
75         oldfile = None
76
77     # find the file
78     if not os.path.isabs(fn):
79         bb.error("No Absolute FILE name")
80         abs_fn = bb.which(data.getVar('BBPATH',d), fn)
81     else:
82         abs_fn = fn
83
84     # check if the file exists
85     if not os.path.exists(abs_fn):
86         raise IOError("file '%(fn)' not found" % locals() )
87
88     fn = file(abs_fn, 'r')
89
90     # now we know the file is around mark it as dep
91     if include:
92         parse.mark_dependency(d, abs_fn)
93
94     # now parse this file - by defering it to C++
95
96
97     # restore the original FILE
98     if oldfile:
99         data.setVar('FILE', oldfile, data)
100
101     return data
102
103 # Inform bitbake that we are a parser
104 # We need to define all three
105 from bb.parse import handlers
106 handlers.append( {'supports' : supports, 'handle': handle, 'init' : init})
107 del handlers