Cleanup output
[bitbake.git] / bin / classes / base.oeclass
1 PATCHES_DIR="${S}"
2
3 python base_do_clean() {
4         """clear the build and temp directories"""
5         from oe import note
6         import os
7
8         note("Executing task 'clean'")
9
10         dir = data.expand("${TMPDIR}/${CATEGORY}/${PF}", d)
11         if dir == '//': fatal("wrong DATADIR")
12         note("removing " + dir)
13         os.system('rm -rf ' + dir)
14
15         dir = "%s.*" % data.expand(data.getVar('STAMP', d), d)
16         note("removing " + dir)
17         os.system('rm -f '+ dir)
18 }
19
20 python base_do_mrproper() {
21         """clear downloaded sources, build and temp directories"""
22         from oe import note, debug, build
23         import os
24
25         note("Executing task 'mrproper'")
26
27         dir = data.expand("${DL_DIR}", d)
28         if dir == '/': fatal("wrong DATADIR")
29         debug(2, "removing " + dir)
30         os.system('rm -rf ' + dir)
31         build.exec_task('do_clean', d)
32 }
33
34 python base_do_patch () {
35         import re
36         from oe import decodeurl
37
38         src_uri = data.getVar('SRC_URI', d)
39         if not src_uri:
40                 raise Exception("SRC_URI not defined")
41         src_uri = data.expand(src_uri, d)
42         for url in src_uri.split():
43 #               print "url: %s" % url
44                 (type, host, path, user, pswd, parm) = decodeurl(url)
45                 if not parm.has_key("patch"):
46                         continue
47                 from oe.fetch import init, localpath
48                 init([url])
49                 local = localpath(url)
50                 # patch!
51                 dots = local.split(".")
52                 if dots[-2] in ['tar']:
53                         continue
54                 efile = os.path.join(data.getVar('WORKDIR', d),os.path.basename(re.sub(r"\.%s$" % dots[-1],"",local)))
55                 os.chdir(data.getVar('PATCHES_DIR', d))
56                 cmd = "patcher"
57                 if parm.has_key("pnum"):
58                         cmd += " -p %s" % parm["pnum"]
59                 cmd += " -i %s" % efile
60                 ret = os.system(cmd)
61                 if ret != 0:
62                         raise Exception("Patch execution failed")
63 }
64
65 python base_do_fetch() {
66         import sys
67
68         src_uri = data.getVar('SRC_URI', d)
69         if not src_uri:
70                 note("No SRC_URI variable, nothing to be done")
71                 return 1
72         src_uri = data.expand(src_uri, d)
73
74         try:
75                 fetch.init(src_uri.split())
76         except fetch.NoMethodError:
77                 (type, value, traceback) = sys.exc_info()
78                 error("No method: %s" % value)
79                 raise FuncFailed()
80
81         try:
82                 fetch.go(d)
83         except fetch.MissingParameterError:
84                 (type, value, traceback) = sys.exc_info()
85                 error("Missing parameters: %s" % value)
86                 raise FuncFailed()
87         except fetch.FetchError:
88                 (type, value, traceback) = sys.exc_info()
89                 error("Fetch failed: %s" % value)
90                 raise FuncFailed()
91 }
92
93 base_do_unpack() {
94         if test -z "${A}"; then
95                 oenote "nothing to extract"
96                 return
97         fi
98         unpack "${A}" || die "unpack failure"
99 }
100
101
102 base_do_compile() {
103         if [ -x ./configure ] ; then
104                 oeconf 
105         fi
106         if [ -e Makefile -o -e makefile ]; then
107                 oemake || die "oemake failed"
108         else
109                 oenote "nothing to compile"
110         fi
111 }
112
113
114
115 base_do_stage() {
116         oenote "nothing to install into stage area"
117 }
118
119
120 base_do_install() {
121         oenote "nothing to install"
122 }
123
124 base_do_package() {
125         oenote "nothing to package"
126 }
127
128 base_do_build() {
129         oenote "nothing to do"
130 }
131
132 python base_eventhandler() {
133         from oe import note, error, data
134         from oe.event import Handled, NotHandled, getName
135         import os, string
136
137         name = getName(e)
138         if name in ["PkgSucceeded", "PkgStarted"]:
139                 note("package %s: build %s" % (e.pkg, string.lower(name[3:])))
140         elif name in ["PkgFailed"]:
141                 error("package %s: build %s" % (e.pkg, string.lower(name[3:])))
142         elif name in ["TaskSucceeded", "TaskStarted"]:
143                 note("package %s: task %s %s" % (data.expand(data.getVar("PF", e.data), e.data), e.task, string.lower(name[4:])))
144         elif name in ["TaskFailed"]:
145                 error("package %s: task %s %s" % (data.expand(data.getVar("PF", e.data), e.data), e.task, string.lower(name[4:])))
146         elif name in ["UnsatisfiedDep"]:
147                 note("package %s: dependency %s %s" % (e.pkg, e.dep, string.lower(name[:-3])))
148         return NotHandled
149 }
150 addhandler base_eventhandler
151
152 # setup the initial task stack
153 EXPORT_FUNCTIONS do_clean do_mrproper do_fetch do_unpack do_compile do_stage do_install do_package do_patch do_build
154
155 addtask clean
156 addtask mrproper
157 addtask fetch
158 addtask unpack after do_fetch
159 addtask patch after do_unpack
160 addtask compile after do_unpack
161 addtask stage after do_compile
162 addtask install after do_stage
163 addtask build after do_install