1 |
commit: 62a252d096182147169f397f7bbea8330dfe3e1a |
2 |
Author: W. Trevor King <wking <AT> tremily <DOT> us> |
3 |
AuthorDate: Sat Feb 9 20:45:33 2013 +0000 |
4 |
Commit: Matt Turner <mattst88 <AT> gmail <DOT> com> |
5 |
CommitDate: Sat Feb 23 02:02:15 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=62a252d0 |
7 |
|
8 |
generic_stage_target: Split ._build_kernel() out of .build_kernel() |
9 |
|
10 |
The indentation was getting too deep ;). This also makes the |
11 |
single-kernel-building code more digestible, by removing the |
12 |
multiple-kernel looping and error handling from the function you're |
13 |
reading. |
14 |
|
15 |
Reviewed-by: Matt Turner <mattst88 <AT> gmail.com> |
16 |
|
17 |
--- |
18 |
modules/generic_stage_target.py | 196 ++++++++++++++++++++------------------- |
19 |
1 files changed, 99 insertions(+), 97 deletions(-) |
20 |
|
21 |
diff --git a/modules/generic_stage_target.py b/modules/generic_stage_target.py |
22 |
index 952fa4b..af7cbe7 100644 |
23 |
--- a/modules/generic_stage_target.py |
24 |
+++ b/modules/generic_stage_target.py |
25 |
@@ -1395,6 +1395,7 @@ class generic_stage_target(generic_target): |
26 |
"build aborting due to error." |
27 |
|
28 |
def build_kernel(self): |
29 |
+ "Build all configured kernels" |
30 |
if "AUTORESUME" in self.settings \ |
31 |
and os.path.exists(self.settings["autoresume_path"]+"build_kernel"): |
32 |
print "Resume point detected, skipping build_kernel operation..." |
33 |
@@ -1410,110 +1411,111 @@ class generic_stage_target(generic_target): |
34 |
cmd("/bin/bash "+self.settings["controller_file"]+\ |
35 |
" pre-kmerge ","Runscript pre-kmerge failed",\ |
36 |
env=self.env) |
37 |
- |
38 |
for kname in mynames: |
39 |
- if "AUTORESUME" in self.settings \ |
40 |
- and os.path.exists(self.settings["autoresume_path"]\ |
41 |
- +"build_kernel_"+kname): |
42 |
- print "Resume point detected, skipping build_kernel for "+kname+" operation..." |
43 |
- else: # TODO: make this not require a kernel config |
44 |
- try: |
45 |
- if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]): |
46 |
- self.unbind() |
47 |
- raise CatalystError,\ |
48 |
- "Can't find kernel config: "+\ |
49 |
- self.settings["boot/kernel/"+kname+\ |
50 |
- "/config"] |
51 |
- |
52 |
- except TypeError: |
53 |
- raise CatalystError,\ |
54 |
- "Required value boot/kernel/config not specified" |
55 |
- |
56 |
- try: |
57 |
- cmd("cp "+self.settings["boot/kernel/"+kname+\ |
58 |
- "/config"]+" "+\ |
59 |
- self.settings["chroot_path"]+"/var/tmp/"+\ |
60 |
- kname+".config",\ |
61 |
- "Couldn't copy kernel config: "+\ |
62 |
- self.settings["boot/kernel/"+kname+\ |
63 |
- "/config"],env=self.env) |
64 |
- |
65 |
- except CatalystError: |
66 |
- self.unbind() |
67 |
- |
68 |
- """ |
69 |
- If we need to pass special options to the bootloader |
70 |
- for this kernel put them into the environment |
71 |
- """ |
72 |
- if "boot/kernel/"+kname+"/kernelopts" in self.settings: |
73 |
- myopts=self.settings["boot/kernel/"+kname+\ |
74 |
- "/kernelopts"] |
75 |
- |
76 |
- if type(myopts) != types.StringType: |
77 |
- myopts = string.join(myopts) |
78 |
- self.env[kname+"_kernelopts"]=myopts |
79 |
- |
80 |
- else: |
81 |
- self.env[kname+"_kernelopts"]="" |
82 |
- |
83 |
- if "boot/kernel/"+kname+"/extraversion" not in self.settings: |
84 |
- self.settings["boot/kernel/"+kname+\ |
85 |
- "/extraversion"]="" |
86 |
- |
87 |
- self.env["clst_kextraversion"]=\ |
88 |
- self.settings["boot/kernel/"+kname+\ |
89 |
- "/extraversion"] |
90 |
- |
91 |
- if "boot/kernel/"+kname+"/initramfs_overlay" in self.settings: |
92 |
- if os.path.exists(self.settings["boot/kernel/"+\ |
93 |
- kname+"/initramfs_overlay"]): |
94 |
- print "Copying initramfs_overlay dir "+\ |
95 |
- self.settings["boot/kernel/"+kname+\ |
96 |
- "/initramfs_overlay"] |
97 |
- |
98 |
- cmd("mkdir -p "+\ |
99 |
- self.settings["chroot_path"]+\ |
100 |
- "/tmp/initramfs_overlay/"+\ |
101 |
- self.settings["boot/kernel/"+kname+\ |
102 |
- "/initramfs_overlay"],env=self.env) |
103 |
- |
104 |
- cmd("cp -R "+self.settings["boot/kernel/"+\ |
105 |
- kname+"/initramfs_overlay"]+"/* "+\ |
106 |
- self.settings["chroot_path"]+\ |
107 |
- "/tmp/initramfs_overlay/"+\ |
108 |
- self.settings["boot/kernel/"+kname+\ |
109 |
- "/initramfs_overlay"],env=self.env) |
110 |
- |
111 |
- """ Execute the script that builds the kernel """ |
112 |
- cmd("/bin/bash "+self.settings["controller_file"]+\ |
113 |
- " kernel "+kname,\ |
114 |
- "Runscript kernel build failed",env=self.env) |
115 |
- |
116 |
- if "boot/kernel/"+kname+"/initramfs_overlay" in self.settings: |
117 |
- if os.path.exists(self.settings["chroot_path"]+\ |
118 |
- "/tmp/initramfs_overlay/"): |
119 |
- print "Cleaning up temporary overlay dir" |
120 |
- cmd("rm -R "+self.settings["chroot_path"]+\ |
121 |
- "/tmp/initramfs_overlay/",env=self.env) |
122 |
- |
123 |
- touch(self.settings["autoresume_path"]+\ |
124 |
- "build_kernel_"+kname) |
125 |
- |
126 |
- """ |
127 |
- Execute the script that cleans up the kernel build |
128 |
- environment |
129 |
- """ |
130 |
- cmd("/bin/bash "+self.settings["controller_file"]+\ |
131 |
- " post-kmerge ", |
132 |
- "Runscript post-kmerge failed",env=self.env) |
133 |
- |
134 |
+ self._build_kernel(kname=kname) |
135 |
touch(self.settings["autoresume_path"]+"build_kernel") |
136 |
- |
137 |
except CatalystError: |
138 |
self.unbind() |
139 |
raise CatalystError,\ |
140 |
"build aborting due to kernel build error." |
141 |
|
142 |
+ def _build_kernel(self, kname): |
143 |
+ "Build a single configured kernel by name" |
144 |
+ if "AUTORESUME" in self.settings \ |
145 |
+ and os.path.exists(self.settings["autoresume_path"]\ |
146 |
+ +"build_kernel_"+kname): |
147 |
+ print "Resume point detected, skipping build_kernel for "+kname+" operation..." |
148 |
+ else: # TODO: make this not require a kernel config |
149 |
+ try: |
150 |
+ if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]): |
151 |
+ self.unbind() |
152 |
+ raise CatalystError,\ |
153 |
+ "Can't find kernel config: "+\ |
154 |
+ self.settings["boot/kernel/"+kname+\ |
155 |
+ "/config"] |
156 |
+ |
157 |
+ except TypeError: |
158 |
+ raise CatalystError,\ |
159 |
+ "Required value boot/kernel/config not specified" |
160 |
+ |
161 |
+ try: |
162 |
+ cmd("cp "+self.settings["boot/kernel/"+kname+\ |
163 |
+ "/config"]+" "+\ |
164 |
+ self.settings["chroot_path"]+"/var/tmp/"+\ |
165 |
+ kname+".config",\ |
166 |
+ "Couldn't copy kernel config: "+\ |
167 |
+ self.settings["boot/kernel/"+kname+\ |
168 |
+ "/config"],env=self.env) |
169 |
+ |
170 |
+ except CatalystError: |
171 |
+ self.unbind() |
172 |
+ |
173 |
+ """ |
174 |
+ If we need to pass special options to the bootloader |
175 |
+ for this kernel put them into the environment |
176 |
+ """ |
177 |
+ if "boot/kernel/"+kname+"/kernelopts" in self.settings: |
178 |
+ myopts=self.settings["boot/kernel/"+kname+\ |
179 |
+ "/kernelopts"] |
180 |
+ |
181 |
+ if type(myopts) != types.StringType: |
182 |
+ myopts = string.join(myopts) |
183 |
+ self.env[kname+"_kernelopts"]=myopts |
184 |
+ |
185 |
+ else: |
186 |
+ self.env[kname+"_kernelopts"]="" |
187 |
+ |
188 |
+ if "boot/kernel/"+kname+"/extraversion" not in self.settings: |
189 |
+ self.settings["boot/kernel/"+kname+\ |
190 |
+ "/extraversion"]="" |
191 |
+ |
192 |
+ self.env["clst_kextraversion"]=\ |
193 |
+ self.settings["boot/kernel/"+kname+\ |
194 |
+ "/extraversion"] |
195 |
+ |
196 |
+ if "boot/kernel/"+kname+"/initramfs_overlay" in self.settings: |
197 |
+ if os.path.exists(self.settings["boot/kernel/"+\ |
198 |
+ kname+"/initramfs_overlay"]): |
199 |
+ print "Copying initramfs_overlay dir "+\ |
200 |
+ self.settings["boot/kernel/"+kname+\ |
201 |
+ "/initramfs_overlay"] |
202 |
+ |
203 |
+ cmd("mkdir -p "+\ |
204 |
+ self.settings["chroot_path"]+\ |
205 |
+ "/tmp/initramfs_overlay/"+\ |
206 |
+ self.settings["boot/kernel/"+kname+\ |
207 |
+ "/initramfs_overlay"],env=self.env) |
208 |
+ |
209 |
+ cmd("cp -R "+self.settings["boot/kernel/"+\ |
210 |
+ kname+"/initramfs_overlay"]+"/* "+\ |
211 |
+ self.settings["chroot_path"]+\ |
212 |
+ "/tmp/initramfs_overlay/"+\ |
213 |
+ self.settings["boot/kernel/"+kname+\ |
214 |
+ "/initramfs_overlay"],env=self.env) |
215 |
+ |
216 |
+ """ Execute the script that builds the kernel """ |
217 |
+ cmd("/bin/bash "+self.settings["controller_file"]+\ |
218 |
+ " kernel "+kname,\ |
219 |
+ "Runscript kernel build failed",env=self.env) |
220 |
+ |
221 |
+ if "boot/kernel/"+kname+"/initramfs_overlay" in self.settings: |
222 |
+ if os.path.exists(self.settings["chroot_path"]+\ |
223 |
+ "/tmp/initramfs_overlay/"): |
224 |
+ print "Cleaning up temporary overlay dir" |
225 |
+ cmd("rm -R "+self.settings["chroot_path"]+\ |
226 |
+ "/tmp/initramfs_overlay/",env=self.env) |
227 |
+ |
228 |
+ touch(self.settings["autoresume_path"]+\ |
229 |
+ "build_kernel_"+kname) |
230 |
+ |
231 |
+ """ |
232 |
+ Execute the script that cleans up the kernel build |
233 |
+ environment |
234 |
+ """ |
235 |
+ cmd("/bin/bash "+self.settings["controller_file"]+\ |
236 |
+ " post-kmerge ", |
237 |
+ "Runscript post-kmerge failed",env=self.env) |
238 |
+ |
239 |
def bootloader(self): |
240 |
if "AUTORESUME" in self.settings \ |
241 |
and os.path.exists(self.settings["autoresume_path"]+"bootloader"): |