improve keyboard error handling
[bitbake.git] / bin / commander / packages.py
1 #!/usr/bin/env python
2 # -*- coding: iso8859-15 -*-
3
4 from oe import data, event, parse, debug, build, make
5 import copy, glob, os, sys
6
7 class Packages:
8     """Provide a higher level API to the OE package data"""
9     __instance = None
10
11     def __init__( self, cfg = {} ):
12         print "Packages.__init__()"
13         make.cfg = cfg
14         make.pkgdata = {}
15         make.pkgs = {}
16         self.valid = False
17
18         try:
19             make.cfg = parse.handle("conf/oe.conf", make.cfg )
20         except IOError:
21             fatal("Unable to open oe.conf")
22
23     def instance():
24         if Packages.__instance is None:
25             Packages.__instance = Packages()
26         return Packages.__instance
27
28     instance = staticmethod( instance )
29
30     def numPackages( self ):
31         return len( make.pkgdata )
32
33     def names( self ):
34         return make.pkgdata.keys()
35
36     def isVirtual( self, package ):
37         return "virtual" in data.getVar( "PROVIDES", make.pkgdata[package], 1 ) # Python 2.3 only
38
39     def data( self, package, key ):
40         if package in make.pkgdata and key in make.pkgdata[package]:
41             return data.getVar( key, make.pkgdata[package], 1 )
42         else:
43             return "N/A"
44
45     def getVar( self, key ):
46         return data.getVar( key, make.cfg )
47
48     def scan( self, progressCallback ):
49         make.collect_oefiles( progressCallback )
50
51
52 #------------------------------------------------------------------------#
53 # main
54 #------------------------------------------------------------------------#
55
56 if __name__ == "__main__":
57     def function( *args, **kwargs ):
58         print args, kwargs
59
60     p = Packages( cfg )
61     p.scan( function )