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