Whitespace changes. Reformat things to better match the usual python indentation...
[bitbake.git] / bin / oeimage
1 #!/usr/bin/env python
2
3 import sys, os, oe
4 from oe import *
5
6 __version__ = 1.0
7 type = "jffs2"
8 cfg_oe = data.init()
9 cfg_oespawn = data.init()
10
11
12 def usage():
13     print "Usage: oeimage [options ...]"
14     print "Creates an image for a target device from a root filesystem,"
15     print "obeying configuration parameters from the OpenEmbedded"
16     print "configuration files, thereby easing handling of deviceisms."
17     print ""
18     print "  %s\t\t%s" % ("-r [arg], --root [arg]", "root directory (default=${IMAGE_ROOTFS})")
19     print "  %s\t\t%s" % ("-t [arg], --type [arg]", "image type (jffs2[default], cramfs)")
20     print "  %s\t\t%s" % ("-v, --version", "output version information and exit")
21     sys.exit(0)
22
23 def version():
24     print "OpenEmbedded Build Infrastructure Core version %s" % oe.__version__
25     print "OEImage version %s" % __version__
26
27 def emit_oe(d, base_d = {}):
28     for v in d.keys():
29         if d[v] != base_d[v]:
30             data.emit_var(v, d)
31
32 def getopthash(l):
33     h = {}
34     for (opt, val) in l:
35         h[opt] = val
36     return h
37
38 import getopt
39 try:
40     (opts, args) = getopt.getopt(sys.argv[1:], 'vr:t:e:', [ 'version', 'root=', 'type=', 'oefile=' ])
41 except getopt.GetoptError:
42     usage()
43
44 # handle opts
45 opthash = getopthash(opts)
46
47 if '--version' in opthash or '-v' in opthash:
48     version()
49     sys.exit(0)
50
51 try:
52     cfg_oe = parse.handle("conf/oe.conf", cfg_oe)
53 except IOError:
54     fatal("Unable to open oe.conf")
55
56 # sanity check
57 if cfg_oe is None:
58     fatal("Unable to open/parse conf/oe.conf")
59     usage(1)
60
61 rootfs = None
62 extra_files = []
63
64 if '--root' in opthash:
65     rootfs = opthash['--root']
66 if '-r' in opthash:
67     rootfs = opthash['-r']
68
69 if '--type' in opthash:
70     type = opthash['--type']
71 if '-t' in opthash:
72     type = opthash['-t']
73
74 if '--oefile' in opthash:
75     extra_files.append(opthash['--oefile'])
76 if '-e' in opthash:
77     extra_files.append(opthash['-e'])
78
79 for f in extra_files:
80     try:
81         cfg_oe = parse.handle(f, cfg_oe)
82     except IOError:
83         print "unable to open %s" % f
84     
85 if not rootfs:
86     rootfs = data.getVar('IMAGE_ROOTFS', cfg_oe, 1)
87
88 if not rootfs:
89     oe.fatal("IMAGE_ROOTFS not defined")
90
91 data.setVar('IMAGE_ROOTFS', rootfs, cfg_oe)
92
93 from copy import copy, deepcopy
94 localdata = deepcopy(cfg_oe)
95
96 overrides = data.getVar('OVERRIDES', localdata)
97 if not overrides:
98     oe.fatal("OVERRIDES not defined.")
99 data.setVar('OVERRIDES', '%s:%s' % (overrides, type), localdata)
100 data.update_data(localdata)
101 data.setVar('OVERRIDES', overrides, localdata)
102
103 topdir = data.getVar('TOPDIR', localdata, 1) or os.getcwd()
104
105 cmd = data.getVar('IMAGE_CMD', localdata, 1)
106 if not cmd:
107     oe.fatal("IMAGE_CMD not defined")
108
109 outdir = data.getVar('DEPLOY_DIR_IMAGE', localdata, 1)
110 if not outdir:
111     oe.fatal('DEPLOY_DIR_IMAGE not defined')
112 mkdirhier(outdir)
113
114 #depends = data.getVar('IMAGE_DEPENDS', localdata, 1) or ""
115 #if depends:
116 #       oe.note("Spawning oemake to satisfy dependencies: %s" % depends)
117 #       ret = os.system('oemake %s' % depends)
118 #       if ret != 0:
119 #               oe.error("executing oemake to satisfy dependencies")
120
121 oe.note("Executing %s" % cmd)
122 data.setVar('T', '${TMPDIR}', localdata)
123 data.setVar('image_cmd', cmd, localdata)
124 data.setVarFlag('image_cmd', 'func', 1, localdata)
125 try:
126     oe.build.exec_func('image_cmd', localdata)
127 except oe.build.FuncFailed:
128     sys.exit(1)
129 #ret = os.system(cmd)
130 #sys.exit(ret)