1 |
Signed-off-by: Matt Turner <mattst88@g.o> |
2 |
--- |
3 |
catalyst/base/stagebase.py | 521 +++++++++++++++++++------------------ |
4 |
1 file changed, 269 insertions(+), 252 deletions(-) |
5 |
|
6 |
diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py |
7 |
index 2e313bd8..48157837 100644 |
8 |
--- a/catalyst/base/stagebase.py |
9 |
+++ b/catalyst/base/stagebase.py |
10 |
@@ -330,9 +330,10 @@ class StageBase(TargetBase, ClearBase, GenBase): |
11 |
and self.resume.is_enabled("setup_target_path"): |
12 |
log.notice( |
13 |
'Resume point detected, skipping target path setup operation...') |
14 |
- else: |
15 |
- self.resume.enable("setup_target_path") |
16 |
- ensure_dirs(self.settings["storedir"] + "/builds") |
17 |
+ return |
18 |
+ |
19 |
+ self.resume.enable("setup_target_path") |
20 |
+ ensure_dirs(self.settings["storedir"] + "/builds") |
21 |
|
22 |
def set_fsscript(self): |
23 |
if self.settings["spec_prefix"] + "/fsscript" in self.settings: |
24 |
@@ -808,18 +809,19 @@ class StageBase(TargetBase, ClearBase, GenBase): |
25 |
and self.resume.is_enabled("setup_confdir"): |
26 |
log.notice( |
27 |
'Resume point detected, skipping setup_confdir operation...') |
28 |
- else: |
29 |
- if "portage_confdir" in self.settings: |
30 |
- log.info('Configuring %s...', self.settings['port_conf']) |
31 |
- dest = normpath( |
32 |
- self.settings['chroot_path'] + '/' + self.settings['port_conf']) |
33 |
- ensure_dirs(dest) |
34 |
- # The trailing slashes on both paths are important: |
35 |
- # We want to make sure rsync copies the dirs into each |
36 |
- # other and not as subdirs. |
37 |
- cmd(['rsync', '-a', self.settings['portage_confdir'] + '/', dest + '/'], |
38 |
- env=self.env) |
39 |
- self.resume.enable("setup_confdir") |
40 |
+ return |
41 |
+ |
42 |
+ if "portage_confdir" in self.settings: |
43 |
+ log.info('Configuring %s...', self.settings['port_conf']) |
44 |
+ dest = normpath( |
45 |
+ self.settings['chroot_path'] + '/' + self.settings['port_conf']) |
46 |
+ ensure_dirs(dest) |
47 |
+ # The trailing slashes on both paths are important: |
48 |
+ # We want to make sure rsync copies the dirs into each |
49 |
+ # other and not as subdirs. |
50 |
+ cmd(['rsync', '-a', self.settings['portage_confdir'] + '/', dest + '/'], |
51 |
+ env=self.env) |
52 |
+ self.resume.enable("setup_confdir") |
53 |
|
54 |
def portage_overlay(self): |
55 |
""" We copy the contents of our overlays to /usr/local/portage """ |
56 |
@@ -934,61 +936,62 @@ class StageBase(TargetBase, ClearBase, GenBase): |
57 |
and self.resume.is_enabled("chroot_setup"): |
58 |
log.notice( |
59 |
'Resume point detected, skipping chroot_setup operation...') |
60 |
- else: |
61 |
- log.notice('Setting up chroot...') |
62 |
+ return |
63 |
|
64 |
- shutil.copy('/etc/resolv.conf', |
65 |
- self.settings['chroot_path'] + '/etc/') |
66 |
+ log.notice('Setting up chroot...') |
67 |
|
68 |
- # Copy over the binary interpreter (qemu), if applicable; note that it's given |
69 |
- # as full path and goes to the same place in the chroot |
70 |
- if "interpreter" in self.settings: |
71 |
- if not os.path.exists(self.settings["interpreter"]): |
72 |
- raise CatalystError( |
73 |
- "Can't find interpreter " + |
74 |
- self.settings["interpreter"], |
75 |
- print_traceback=True) |
76 |
+ shutil.copy('/etc/resolv.conf', |
77 |
+ self.settings['chroot_path'] + '/etc/') |
78 |
|
79 |
- log.notice('Copying binary interpreter %s into chroot', |
80 |
- self.settings['interpreter']) |
81 |
+ # Copy over the binary interpreter (qemu), if applicable; note that it's given |
82 |
+ # as full path and goes to the same place in the chroot |
83 |
+ if "interpreter" in self.settings: |
84 |
+ if not os.path.exists(self.settings["interpreter"]): |
85 |
+ raise CatalystError( |
86 |
+ "Can't find interpreter " + |
87 |
+ self.settings["interpreter"], |
88 |
+ print_traceback=True) |
89 |
|
90 |
- if os.path.exists(self.settings['chroot_path'] + '/' + self.settings['interpreter']): |
91 |
- os.rename( |
92 |
- self.settings['chroot_path'] + |
93 |
- '/' + self.settings['interpreter'], |
94 |
- self.settings['chroot_path'] + '/' + self.settings['interpreter'] + '.catalyst') |
95 |
+ log.notice('Copying binary interpreter %s into chroot', |
96 |
+ self.settings['interpreter']) |
97 |
+ |
98 |
+ if os.path.exists(self.settings['chroot_path'] + '/' + self.settings['interpreter']): |
99 |
+ os.rename( |
100 |
+ self.settings['chroot_path'] + |
101 |
+ '/' + self.settings['interpreter'], |
102 |
+ self.settings['chroot_path'] + '/' + self.settings['interpreter'] + '.catalyst') |
103 |
|
104 |
- shutil.copy(self.settings['interpreter'], |
105 |
- self.settings['chroot_path'] + '/' + self.settings['interpreter']) |
106 |
+ shutil.copy(self.settings['interpreter'], |
107 |
+ self.settings['chroot_path'] + '/' + self.settings['interpreter']) |
108 |
|
109 |
- # Copy over the envscript, if applicable |
110 |
- if "envscript" in self.settings: |
111 |
- if not os.path.exists(self.settings["envscript"]): |
112 |
- raise CatalystError( |
113 |
- "Can't find envscript " + self.settings["envscript"], |
114 |
- print_traceback=True) |
115 |
- |
116 |
- log.warning( |
117 |
- 'env variables in catalystrc may cause catastrophic failure.\n' |
118 |
- 'If your build fails look here first as the possible problem.') |
119 |
- |
120 |
- shutil.copy(self.settings['envscript'], |
121 |
- self.settings['chroot_path'] + '/tmp/envscript') |
122 |
- |
123 |
- # Copy over /etc/hosts from the host in case there are any |
124 |
- # specialties in there |
125 |
- hosts_file = self.settings['chroot_path'] + '/etc/hosts' |
126 |
- if os.path.exists(hosts_file): |
127 |
- os.rename(hosts_file, hosts_file + '.catalyst') |
128 |
- shutil.copy('/etc/hosts', hosts_file) |
129 |
- # write out the make.conf |
130 |
- try: |
131 |
- self.write_make_conf(setup=True) |
132 |
- except OSError as e: |
133 |
- raise CatalystError('Could not write %s: %s' % ( |
134 |
- normpath(self.settings["chroot_path"] + |
135 |
- self.settings["make_conf"]), e)) |
136 |
- self.resume.enable("chroot_setup") |
137 |
+ # Copy over the envscript, if applicable |
138 |
+ if "envscript" in self.settings: |
139 |
+ if not os.path.exists(self.settings["envscript"]): |
140 |
+ raise CatalystError( |
141 |
+ "Can't find envscript " + self.settings["envscript"], |
142 |
+ print_traceback=True) |
143 |
+ |
144 |
+ log.warning( |
145 |
+ 'env variables in catalystrc may cause catastrophic failure.\n' |
146 |
+ 'If your build fails look here first as the possible problem.') |
147 |
+ |
148 |
+ shutil.copy(self.settings['envscript'], |
149 |
+ self.settings['chroot_path'] + '/tmp/envscript') |
150 |
+ |
151 |
+ # Copy over /etc/hosts from the host in case there are any |
152 |
+ # specialties in there |
153 |
+ hosts_file = self.settings['chroot_path'] + '/etc/hosts' |
154 |
+ if os.path.exists(hosts_file): |
155 |
+ os.rename(hosts_file, hosts_file + '.catalyst') |
156 |
+ shutil.copy('/etc/hosts', hosts_file) |
157 |
+ # write out the make.conf |
158 |
+ try: |
159 |
+ self.write_make_conf(setup=True) |
160 |
+ except OSError as e: |
161 |
+ raise CatalystError('Could not write %s: %s' % ( |
162 |
+ normpath(self.settings["chroot_path"] + |
163 |
+ self.settings["make_conf"]), e)) |
164 |
+ self.resume.enable("chroot_setup") |
165 |
|
166 |
def write_make_conf(self, setup=True): |
167 |
# Modify and write out make.conf (for the chroot) |
168 |
@@ -1097,22 +1100,24 @@ class StageBase(TargetBase, ClearBase, GenBase): |
169 |
if "autoresume" in self.settings["options"] \ |
170 |
and self.resume.is_enabled("fsscript"): |
171 |
log.notice('Resume point detected, skipping fsscript operation...') |
172 |
- else: |
173 |
- if "fsscript" in self.settings: |
174 |
- if os.path.exists(self.settings["controller_file"]): |
175 |
- cmd([self.settings['controller_file'], 'fsscript'], |
176 |
- env=self.env) |
177 |
- self.resume.enable("fsscript") |
178 |
+ return |
179 |
+ |
180 |
+ if "fsscript" in self.settings: |
181 |
+ if os.path.exists(self.settings["controller_file"]): |
182 |
+ cmd([self.settings['controller_file'], 'fsscript'], |
183 |
+ env=self.env) |
184 |
+ self.resume.enable("fsscript") |
185 |
|
186 |
def rcupdate(self): |
187 |
if "autoresume" in self.settings["options"] \ |
188 |
and self.resume.is_enabled("rcupdate"): |
189 |
log.notice('Resume point detected, skipping rcupdate operation...') |
190 |
- else: |
191 |
- if os.path.exists(self.settings["controller_file"]): |
192 |
- cmd([self.settings['controller_file'], 'rc-update'], |
193 |
- env=self.env) |
194 |
- self.resume.enable("rcupdate") |
195 |
+ return |
196 |
+ |
197 |
+ if os.path.exists(self.settings["controller_file"]): |
198 |
+ cmd([self.settings['controller_file'], 'rc-update'], |
199 |
+ env=self.env) |
200 |
+ self.resume.enable("rcupdate") |
201 |
|
202 |
def clean(self): |
203 |
if "autoresume" in self.settings["options"] \ |
204 |
@@ -1181,58 +1186,61 @@ class StageBase(TargetBase, ClearBase, GenBase): |
205 |
if "autoresume" in self.settings["options"] \ |
206 |
and self.resume.is_enabled("empty"): |
207 |
log.notice('Resume point detected, skipping empty operation...') |
208 |
- else: |
209 |
- if self.settings["spec_prefix"] + "/empty" in self.settings: |
210 |
- if isinstance( |
211 |
- self.settings[self.settings['spec_prefix'] + '/empty'], |
212 |
- str): |
213 |
- self.settings[self.settings["spec_prefix"] + "/empty"] = \ |
214 |
- self.settings[self.settings["spec_prefix"] + |
215 |
- "/empty"].split() |
216 |
- for x in self.settings[self.settings["spec_prefix"] + "/empty"]: |
217 |
- myemp = self.settings["destpath"] + x |
218 |
- if not os.path.isdir(myemp) or os.path.islink(myemp): |
219 |
- log.warning('not a directory or does not exist, ' |
220 |
- 'skipping "empty" operation: %s', x) |
221 |
- continue |
222 |
- log.info('Emptying directory %s', x) |
223 |
- clear_dir(myemp) |
224 |
- self.resume.enable("empty") |
225 |
+ return |
226 |
+ |
227 |
+ if self.settings["spec_prefix"] + "/empty" in self.settings: |
228 |
+ if isinstance( |
229 |
+ self.settings[self.settings['spec_prefix'] + '/empty'], |
230 |
+ str): |
231 |
+ self.settings[self.settings["spec_prefix"] + "/empty"] = \ |
232 |
+ self.settings[self.settings["spec_prefix"] + |
233 |
+ "/empty"].split() |
234 |
+ for x in self.settings[self.settings["spec_prefix"] + "/empty"]: |
235 |
+ myemp = self.settings["destpath"] + x |
236 |
+ if not os.path.isdir(myemp) or os.path.islink(myemp): |
237 |
+ log.warning('not a directory or does not exist, ' |
238 |
+ 'skipping "empty" operation: %s', x) |
239 |
+ continue |
240 |
+ log.info('Emptying directory %s', x) |
241 |
+ clear_dir(myemp) |
242 |
+ self.resume.enable("empty") |
243 |
|
244 |
def remove(self): |
245 |
if "autoresume" in self.settings["options"] \ |
246 |
and self.resume.is_enabled("remove"): |
247 |
log.notice('Resume point detected, skipping remove operation...') |
248 |
- else: |
249 |
- if self.settings["spec_prefix"] + "/rm" in self.settings: |
250 |
- for x in self.settings[self.settings["spec_prefix"] + "/rm"]: |
251 |
- # We're going to shell out for all these cleaning |
252 |
- # operations, so we get easy glob handling. |
253 |
- log.notice('%s: removing %s', self.settings["spec_prefix"], x) |
254 |
- clear_path(self.settings["destpath"] + x) |
255 |
- try: |
256 |
- if os.path.exists(self.settings["controller_file"]): |
257 |
- cmd([self.settings['controller_file'], 'clean'], |
258 |
- env=self.env) |
259 |
- self.resume.enable("remove") |
260 |
- except: |
261 |
- self.unbind() |
262 |
- raise |
263 |
+ return |
264 |
|
265 |
- def preclean(self): |
266 |
- if "autoresume" in self.settings["options"] \ |
267 |
- and self.resume.is_enabled("preclean"): |
268 |
- log.notice('Resume point detected, skipping preclean operation...') |
269 |
- else: |
270 |
+ if self.settings["spec_prefix"] + "/rm" in self.settings: |
271 |
+ for x in self.settings[self.settings["spec_prefix"] + "/rm"]: |
272 |
+ # We're going to shell out for all these cleaning |
273 |
+ # operations, so we get easy glob handling. |
274 |
+ log.notice('%s: removing %s', self.settings["spec_prefix"], x) |
275 |
+ clear_path(self.settings["destpath"] + x) |
276 |
try: |
277 |
if os.path.exists(self.settings["controller_file"]): |
278 |
- cmd([self.settings['controller_file'], 'preclean'], |
279 |
+ cmd([self.settings['controller_file'], 'clean'], |
280 |
env=self.env) |
281 |
- self.resume.enable("preclean") |
282 |
- |
283 |
+ self.resume.enable("remove") |
284 |
except: |
285 |
self.unbind() |
286 |
- raise CatalystError("Build failed, could not execute preclean") |
287 |
+ raise |
288 |
+ |
289 |
+ def preclean(self): |
290 |
+ if "autoresume" in self.settings["options"] \ |
291 |
+ and self.resume.is_enabled("preclean"): |
292 |
+ log.notice('Resume point detected, skipping preclean operation...') |
293 |
+ return |
294 |
+ |
295 |
+ try: |
296 |
+ if os.path.exists(self.settings["controller_file"]): |
297 |
+ cmd([self.settings['controller_file'], 'preclean'], |
298 |
+ env=self.env) |
299 |
+ self.resume.enable("preclean") |
300 |
+ |
301 |
+ except: |
302 |
+ self.unbind() |
303 |
+ raise CatalystError("Build failed, could not execute preclean") |
304 |
|
305 |
def capture(self): |
306 |
# initialize it here so it doesn't use |
307 |
@@ -1245,56 +1253,58 @@ class StageBase(TargetBase, ClearBase, GenBase): |
308 |
if "autoresume" in self.settings["options"] \ |
309 |
and self.resume.is_enabled("capture"): |
310 |
log.notice('Resume point detected, skipping capture operation...') |
311 |
- else: |
312 |
- log.notice('Capture target in a tarball') |
313 |
- # Remove filename from path |
314 |
- mypath = os.path.dirname(self.settings["target_path"].rstrip('/')) |
315 |
- |
316 |
- # Now make sure path exists |
317 |
- ensure_dirs(mypath) |
318 |
- |
319 |
- pack_info = self.compressor.create_infodict( |
320 |
- source=".", |
321 |
- basedir=self.settings["stage_path"], |
322 |
- filename=self.settings["target_path"].rstrip('/'), |
323 |
- mode=self.settings["compression_mode"], |
324 |
- auto_extension=True, |
325 |
- arch=self.settings["compressor_arch"], |
326 |
- other_options=self.settings["compressor_options"], |
327 |
- ) |
328 |
- target_filename = ".".join([self.settings["target_path"].rstrip('/'), |
329 |
- self.compressor.extension(pack_info['mode'])]) |
330 |
+ return |
331 |
|
332 |
- log.notice('Creating stage tarball... mode: %s', |
333 |
- self.settings['compression_mode']) |
334 |
+ log.notice('Capture target in a tarball') |
335 |
+ # Remove filename from path |
336 |
+ mypath = os.path.dirname(self.settings["target_path"].rstrip('/')) |
337 |
|
338 |
- if self.compressor.compress(pack_info): |
339 |
- self.gen_contents_file(target_filename) |
340 |
- self.gen_digest_file(target_filename) |
341 |
- self.resume.enable("capture") |
342 |
- else: |
343 |
- log.warning("Couldn't create stage tarball: %s", |
344 |
- target_filename) |
345 |
+ # Now make sure path exists |
346 |
+ ensure_dirs(mypath) |
347 |
+ |
348 |
+ pack_info = self.compressor.create_infodict( |
349 |
+ source=".", |
350 |
+ basedir=self.settings["stage_path"], |
351 |
+ filename=self.settings["target_path"].rstrip('/'), |
352 |
+ mode=self.settings["compression_mode"], |
353 |
+ auto_extension=True, |
354 |
+ arch=self.settings["compressor_arch"], |
355 |
+ other_options=self.settings["compressor_options"], |
356 |
+ ) |
357 |
+ target_filename = ".".join([self.settings["target_path"].rstrip('/'), |
358 |
+ self.compressor.extension(pack_info['mode'])]) |
359 |
+ |
360 |
+ log.notice('Creating stage tarball... mode: %s', |
361 |
+ self.settings['compression_mode']) |
362 |
+ |
363 |
+ if self.compressor.compress(pack_info): |
364 |
+ self.gen_contents_file(target_filename) |
365 |
+ self.gen_digest_file(target_filename) |
366 |
+ self.resume.enable("capture") |
367 |
+ else: |
368 |
+ log.warning("Couldn't create stage tarball: %s", |
369 |
+ target_filename) |
370 |
|
371 |
def run_local(self): |
372 |
if "autoresume" in self.settings["options"] \ |
373 |
and self.resume.is_enabled("run_local"): |
374 |
log.notice('Resume point detected, skipping run_local operation...') |
375 |
- else: |
376 |
- try: |
377 |
- if os.path.exists(self.settings["controller_file"]): |
378 |
- log.info('run_local() starting controller script...') |
379 |
- cmd([self.settings['controller_file'], 'run'], |
380 |
- env=self.env) |
381 |
- self.resume.enable("run_local") |
382 |
- else: |
383 |
- log.info('run_local() no controller_file found... %s', |
384 |
- self.settings['controller_file']) |
385 |
+ return |
386 |
|
387 |
- except CatalystError: |
388 |
- self.unbind() |
389 |
- raise CatalystError("Stage build aborting due to error.", |
390 |
- print_traceback=False) |
391 |
+ try: |
392 |
+ if os.path.exists(self.settings["controller_file"]): |
393 |
+ log.info('run_local() starting controller script...') |
394 |
+ cmd([self.settings['controller_file'], 'run'], |
395 |
+ env=self.env) |
396 |
+ self.resume.enable("run_local") |
397 |
+ else: |
398 |
+ log.info('run_local() no controller_file found... %s', |
399 |
+ self.settings['controller_file']) |
400 |
+ |
401 |
+ except CatalystError: |
402 |
+ self.unbind() |
403 |
+ raise CatalystError("Stage build aborting due to error.", |
404 |
+ print_traceback=False) |
405 |
|
406 |
def setup_environment(self): |
407 |
""" |
408 |
@@ -1390,63 +1400,67 @@ class StageBase(TargetBase, ClearBase, GenBase): |
409 |
if "autoresume" in self.settings["options"] \ |
410 |
and self.resume.is_enabled("unmerge"): |
411 |
log.notice('Resume point detected, skipping unmerge operation...') |
412 |
- else: |
413 |
- if self.settings["spec_prefix"] + "/unmerge" in self.settings: |
414 |
- if isinstance(self.settings[self.settings['spec_prefix'] + '/unmerge'], str): |
415 |
- self.settings[self.settings["spec_prefix"] + "/unmerge"] = \ |
416 |
- [self.settings[self.settings["spec_prefix"] + "/unmerge"]] |
417 |
+ return |
418 |
|
419 |
- # Before cleaning, unmerge stuff |
420 |
- try: |
421 |
- cmd([self.settings['controller_file'], 'unmerge'] + |
422 |
- self.settings[self.settings['spec_prefix'] + '/unmerge'], |
423 |
- env=self.env) |
424 |
- log.info('unmerge shell script') |
425 |
- except CatalystError: |
426 |
- self.unbind() |
427 |
- raise |
428 |
- self.resume.enable("unmerge") |
429 |
+ if self.settings["spec_prefix"] + "/unmerge" in self.settings: |
430 |
+ if isinstance(self.settings[self.settings['spec_prefix'] + '/unmerge'], str): |
431 |
+ self.settings[self.settings["spec_prefix"] + "/unmerge"] = \ |
432 |
+ [self.settings[self.settings["spec_prefix"] + "/unmerge"]] |
433 |
+ |
434 |
+ # Before cleaning, unmerge stuff |
435 |
+ try: |
436 |
+ cmd([self.settings['controller_file'], 'unmerge'] + |
437 |
+ self.settings[self.settings['spec_prefix'] + '/unmerge'], |
438 |
+ env=self.env) |
439 |
+ log.info('unmerge shell script') |
440 |
+ except CatalystError: |
441 |
+ self.unbind() |
442 |
+ raise |
443 |
+ self.resume.enable("unmerge") |
444 |
|
445 |
def target_setup(self): |
446 |
if "autoresume" in self.settings["options"] \ |
447 |
and self.resume.is_enabled("target_setup"): |
448 |
log.notice( |
449 |
'Resume point detected, skipping target_setup operation...') |
450 |
- else: |
451 |
- log.notice('Setting up filesystems per filesystem type') |
452 |
- cmd([self.settings['controller_file'], 'target_image_setup', |
453 |
- self.settings['target_path']], env=self.env) |
454 |
- self.resume.enable("target_setup") |
455 |
+ return |
456 |
+ |
457 |
+ log.notice('Setting up filesystems per filesystem type') |
458 |
+ cmd([self.settings['controller_file'], 'target_image_setup', |
459 |
+ self.settings['target_path']], env=self.env) |
460 |
+ self.resume.enable("target_setup") |
461 |
|
462 |
def setup_overlay(self): |
463 |
if "autoresume" in self.settings["options"] \ |
464 |
and self.resume.is_enabled("setup_overlay"): |
465 |
log.notice( |
466 |
'Resume point detected, skipping setup_overlay operation...') |
467 |
- else: |
468 |
- if self.settings["spec_prefix"] + "/overlay" in self.settings: |
469 |
- for x in self.settings[self.settings["spec_prefix"] + "/overlay"]: |
470 |
- if os.path.exists(x): |
471 |
- cmd(['rsync', '-a', x + '/', self.settings['target_path']], |
472 |
- env=self.env) |
473 |
- self.resume.enable("setup_overlay") |
474 |
+ return |
475 |
+ |
476 |
+ if self.settings["spec_prefix"] + "/overlay" in self.settings: |
477 |
+ for x in self.settings[self.settings["spec_prefix"] + "/overlay"]: |
478 |
+ if os.path.exists(x): |
479 |
+ cmd(['rsync', '-a', x + '/', self.settings['target_path']], |
480 |
+ env=self.env) |
481 |
+ self.resume.enable("setup_overlay") |
482 |
|
483 |
def create_iso(self): |
484 |
if "autoresume" in self.settings["options"] \ |
485 |
and self.resume.is_enabled("create_iso"): |
486 |
log.notice( |
487 |
'Resume point detected, skipping create_iso operation...') |
488 |
+ return |
489 |
+ |
490 |
+ # Create the ISO |
491 |
+ if "iso" in self.settings: |
492 |
+ cmd([self.settings['controller_file'], 'iso', self.settings['iso']], |
493 |
+ env=self.env) |
494 |
+ self.gen_contents_file(self.settings["iso"]) |
495 |
+ self.gen_digest_file(self.settings["iso"]) |
496 |
+ self.resume.enable("create_iso") |
497 |
else: |
498 |
- # Create the ISO |
499 |
- if "iso" in self.settings: |
500 |
- cmd([self.settings['controller_file'], 'iso', self.settings['iso']], |
501 |
- env=self.env) |
502 |
- self.gen_contents_file(self.settings["iso"]) |
503 |
- self.gen_digest_file(self.settings["iso"]) |
504 |
- self.resume.enable("create_iso") |
505 |
- else: |
506 |
- log.warning('livecd/iso was not defined. ' |
507 |
- 'An ISO Image will not be created.') |
508 |
+ log.warning('livecd/iso was not defined. ' |
509 |
+ 'An ISO Image will not be created.') |
510 |
|
511 |
def build_packages(self): |
512 |
build_packages_resume = pjoin(self.settings["autoresume_path"], |
513 |
@@ -1455,29 +1469,30 @@ class StageBase(TargetBase, ClearBase, GenBase): |
514 |
and self.resume.is_enabled("build_packages"): |
515 |
log.notice( |
516 |
'Resume point detected, skipping build_packages operation...') |
517 |
- else: |
518 |
- if self.settings["spec_prefix"] + "/packages" in self.settings: |
519 |
- target_pkgs = self.settings["spec_prefix"] + '/packages' |
520 |
- if "autoresume" in self.settings["options"] \ |
521 |
- and self.resume.is_enabled("build_packages"): |
522 |
- log.notice('Resume point detected, skipping build_packages ' |
523 |
- 'operation...') |
524 |
+ return |
525 |
+ |
526 |
+ if self.settings["spec_prefix"] + "/packages" in self.settings: |
527 |
+ target_pkgs = self.settings["spec_prefix"] + '/packages' |
528 |
+ if "autoresume" in self.settings["options"] \ |
529 |
+ and self.resume.is_enabled("build_packages"): |
530 |
+ log.notice('Resume point detected, skipping build_packages ' |
531 |
+ 'operation...') |
532 |
+ else: |
533 |
+ command = [self.settings['controller_file'], |
534 |
+ 'build_packages'] |
535 |
+ if isinstance(self.settings[target_pkgs], str): |
536 |
+ command.append(self.settings[target_pkgs]) |
537 |
else: |
538 |
- command = [self.settings['controller_file'], |
539 |
- 'build_packages'] |
540 |
- if isinstance(self.settings[target_pkgs], str): |
541 |
- command.append(self.settings[target_pkgs]) |
542 |
- else: |
543 |
- command.extend(self.settings[target_pkgs]) |
544 |
- try: |
545 |
- cmd(command, env=self.env) |
546 |
- fileutils.touch(build_packages_resume) |
547 |
- self.resume.enable("build_packages") |
548 |
- except CatalystError: |
549 |
- self.unbind() |
550 |
- raise CatalystError( |
551 |
- self.settings["spec_prefix"] + |
552 |
- "build aborting due to error.") |
553 |
+ command.extend(self.settings[target_pkgs]) |
554 |
+ try: |
555 |
+ cmd(command, env=self.env) |
556 |
+ fileutils.touch(build_packages_resume) |
557 |
+ self.resume.enable("build_packages") |
558 |
+ except CatalystError: |
559 |
+ self.unbind() |
560 |
+ raise CatalystError( |
561 |
+ self.settings["spec_prefix"] + |
562 |
+ "build aborting due to error.") |
563 |
|
564 |
def build_kernel(self): |
565 |
'''Build all configured kernels''' |
566 |
@@ -1485,23 +1500,23 @@ class StageBase(TargetBase, ClearBase, GenBase): |
567 |
and self.resume.is_enabled("build_kernel"): |
568 |
log.notice( |
569 |
'Resume point detected, skipping build_kernel operation...') |
570 |
- else: |
571 |
- if "boot/kernel" in self.settings: |
572 |
- try: |
573 |
- mynames = self.settings["boot/kernel"] |
574 |
- if isinstance(mynames, str): |
575 |
- mynames = [mynames] |
576 |
- # Execute the script that sets up the kernel build environment |
577 |
- cmd([self.settings['controller_file'], 'pre-kmerge'], |
578 |
- env=self.env) |
579 |
- for kname in mynames: |
580 |
- self._build_kernel(kname=kname) |
581 |
- self.resume.enable("build_kernel") |
582 |
- except CatalystError: |
583 |
- self.unbind() |
584 |
- raise CatalystError( |
585 |
- "build aborting due to kernel build error.", |
586 |
- print_traceback=True) |
587 |
+ return |
588 |
+ |
589 |
+ if "boot/kernel" in self.settings: |
590 |
+ try: |
591 |
+ mynames = self.settings["boot/kernel"] |
592 |
+ if isinstance(mynames, str): |
593 |
+ mynames = [mynames] |
594 |
+ # Execute the script that sets up the kernel build environment |
595 |
+ cmd([self.settings['controller_file'], 'pre-kmerge'], env=self.env) |
596 |
+ for kname in mynames: |
597 |
+ self._build_kernel(kname=kname) |
598 |
+ self.resume.enable("build_kernel") |
599 |
+ except CatalystError: |
600 |
+ self.unbind() |
601 |
+ raise CatalystError( |
602 |
+ "build aborting due to kernel build error.", |
603 |
+ print_traceback=True) |
604 |
|
605 |
def _build_kernel(self, kname): |
606 |
"Build a single configured kernel by name" |
607 |
@@ -1579,31 +1594,33 @@ class StageBase(TargetBase, ClearBase, GenBase): |
608 |
and self.resume.is_enabled("bootloader"): |
609 |
log.notice( |
610 |
'Resume point detected, skipping bootloader operation...') |
611 |
- else: |
612 |
- try: |
613 |
- cmd([self.settings['controller_file'], 'bootloader', |
614 |
- self.settings['target_path'].rstrip('/')], |
615 |
- env=self.env) |
616 |
- self.resume.enable("bootloader") |
617 |
- except CatalystError: |
618 |
- self.unbind() |
619 |
- raise CatalystError("Script aborting due to error.") |
620 |
+ return |
621 |
+ |
622 |
+ try: |
623 |
+ cmd([self.settings['controller_file'], 'bootloader', |
624 |
+ self.settings['target_path'].rstrip('/')], |
625 |
+ env=self.env) |
626 |
+ self.resume.enable("bootloader") |
627 |
+ except CatalystError: |
628 |
+ self.unbind() |
629 |
+ raise CatalystError("Script aborting due to error.") |
630 |
|
631 |
def livecd_update(self): |
632 |
if "autoresume" in self.settings["options"] \ |
633 |
and self.resume.is_enabled("livecd_update"): |
634 |
log.notice( |
635 |
'Resume point detected, skipping build_packages operation...') |
636 |
- else: |
637 |
- try: |
638 |
- cmd([self.settings['controller_file'], 'livecd-update'], |
639 |
- env=self.env) |
640 |
- self.resume.enable("livecd_update") |
641 |
+ return |
642 |
|
643 |
- except CatalystError: |
644 |
- self.unbind() |
645 |
- raise CatalystError( |
646 |
- "build aborting due to livecd_update error.") |
647 |
+ try: |
648 |
+ cmd([self.settings['controller_file'], 'livecd-update'], |
649 |
+ env=self.env) |
650 |
+ self.resume.enable("livecd_update") |
651 |
+ |
652 |
+ except CatalystError: |
653 |
+ self.unbind() |
654 |
+ raise CatalystError( |
655 |
+ "build aborting due to livecd_update error.") |
656 |
|
657 |
@staticmethod |
658 |
def _debug_pause_(): |
659 |
-- |
660 |
2.26.2 |