1 |
commit: 440a379ae94e6d7df26291bf83657288d1406e98 |
2 |
Author: Matt Turner <mattst88 <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Jan 17 23:53:21 2021 +0000 |
4 |
Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jan 23 16:19:07 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=440a379a |
7 |
|
8 |
catalyst: Store references to functions |
9 |
|
10 |
... rather than their names. This makes it possible for tooling to |
11 |
understand the code structure better. |
12 |
|
13 |
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org> |
14 |
|
15 |
catalyst/base/stagebase.py | 69 ++++++++++++++++++++------------------- |
16 |
catalyst/targets/embedded.py | 34 +++++++++---------- |
17 |
catalyst/targets/livecd_stage1.py | 18 +++++----- |
18 |
catalyst/targets/livecd_stage2.py | 46 +++++++++++++------------- |
19 |
catalyst/targets/netboot.py | 34 +++++++++---------- |
20 |
catalyst/targets/stage1.py | 12 +++---- |
21 |
catalyst/targets/stage4.py | 36 ++++++++++---------- |
22 |
7 files changed, 125 insertions(+), 124 deletions(-) |
23 |
|
24 |
diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py |
25 |
index ed4d1227..447e073d 100644 |
26 |
--- a/catalyst/base/stagebase.py |
27 |
+++ b/catalyst/base/stagebase.py |
28 |
@@ -30,6 +30,23 @@ from catalyst.fileops import ensure_dirs, clear_dir, clear_path |
29 |
from catalyst.base.resume import AutoResume |
30 |
|
31 |
|
32 |
+def run_sequence(sequence): |
33 |
+ for func in sequence: |
34 |
+ log.notice('--- Running action sequence: %s', func.__name__) |
35 |
+ sys.stdout.flush() |
36 |
+ try: |
37 |
+ func() |
38 |
+ except LockInUse: |
39 |
+ log.error('Unable to aquire the lock...') |
40 |
+ return False |
41 |
+ except Exception: |
42 |
+ log.error('Exception running action sequence %s', |
43 |
+ func.__name__, exc_info=True) |
44 |
+ return False |
45 |
+ |
46 |
+ return True |
47 |
+ |
48 |
+ |
49 |
class StageBase(TargetBase, ClearBase, GenBase): |
50 |
""" |
51 |
This class does all of the chroot setup, copying of files, etc. It is |
52 |
@@ -475,39 +492,39 @@ class StageBase(TargetBase, ClearBase, GenBase): |
53 |
Or it calls the normal set_action_sequence() for the target stage. |
54 |
""" |
55 |
if "purgeonly" in self.settings["options"]: |
56 |
- self.build_sequence.append("remove_chroot") |
57 |
+ self.build_sequence.append(self.remove_chroot) |
58 |
return |
59 |
self.set_action_sequence() |
60 |
|
61 |
def set_action_sequence(self): |
62 |
"""Set basic stage1, 2, 3 action sequences""" |
63 |
self.prepare_sequence.extend([ |
64 |
- "unpack", |
65 |
- "setup_confdir", |
66 |
- "portage_overlay", |
67 |
+ self.unpack, |
68 |
+ self.setup_confdir, |
69 |
+ self.portage_overlay, |
70 |
]) |
71 |
self.build_sequence.extend([ |
72 |
- "bind", |
73 |
- "chroot_setup", |
74 |
- "setup_environment", |
75 |
- "run_local", |
76 |
- "preclean", |
77 |
+ self.bind, |
78 |
+ self.chroot_setup, |
79 |
+ self.setup_environment, |
80 |
+ self.run_local, |
81 |
+ self.preclean, |
82 |
]) |
83 |
self.finish_sequence.extend([ |
84 |
- "clean", |
85 |
+ self.clean, |
86 |
]) |
87 |
self.set_completion_action_sequences() |
88 |
|
89 |
def set_completion_action_sequences(self): |
90 |
if "fetch" not in self.settings["options"]: |
91 |
- self.finish_sequence.append("capture") |
92 |
+ self.finish_sequence.append(self.capture) |
93 |
if "keepwork" in self.settings["options"]: |
94 |
- self.finish_sequence.append("clear_autoresume") |
95 |
+ self.finish_sequence.append(self.clear_autoresume) |
96 |
elif "seedcache" in self.settings["options"]: |
97 |
- self.finish_sequence.append("remove_autoresume") |
98 |
+ self.finish_sequence.append(self.remove_autoresume) |
99 |
else: |
100 |
- self.finish_sequence.append("remove_autoresume") |
101 |
- self.finish_sequence.append("remove_chroot") |
102 |
+ self.finish_sequence.append(self.remove_autoresume) |
103 |
+ self.finish_sequence.append(self.remove_chroot) |
104 |
|
105 |
def set_use(self): |
106 |
use = self.settings["spec_prefix"] + "/use" |
107 |
@@ -1308,22 +1325,6 @@ class StageBase(TargetBase, ClearBase, GenBase): |
108 |
|
109 |
log.debug('setup_environment(); env = %r', self.env) |
110 |
|
111 |
- def run_sequence(self, sequence): |
112 |
- for func in sequence: |
113 |
- log.notice('--- Running action sequence: %s', func) |
114 |
- sys.stdout.flush() |
115 |
- try: |
116 |
- getattr(self, func)() |
117 |
- except LockInUse: |
118 |
- log.error('Unable to aquire the lock...') |
119 |
- return False |
120 |
- except Exception: |
121 |
- log.error('Exception running action sequence %s', |
122 |
- func, exc_info=True) |
123 |
- return False |
124 |
- |
125 |
- return True |
126 |
- |
127 |
def run(self): |
128 |
self.chroot_lock.write_lock() |
129 |
|
130 |
@@ -1342,14 +1343,14 @@ class StageBase(TargetBase, ClearBase, GenBase): |
131 |
log.info('StageBase: run() purge') |
132 |
self.purge() |
133 |
|
134 |
- if not self.run_sequence(self.prepare_sequence): |
135 |
+ if not run_sequence(self.prepare_sequence): |
136 |
return False |
137 |
|
138 |
with namespace(mount=True): |
139 |
- if not self.run_sequence(self.build_sequence): |
140 |
+ if not run_sequence(self.build_sequence): |
141 |
return False |
142 |
|
143 |
- if not self.run_sequence(self.finish_sequence): |
144 |
+ if not run_sequence(self.finish_sequence): |
145 |
return False |
146 |
|
147 |
return True |
148 |
|
149 |
diff --git a/catalyst/targets/embedded.py b/catalyst/targets/embedded.py |
150 |
index 918b36bf..7d328808 100644 |
151 |
--- a/catalyst/targets/embedded.py |
152 |
+++ b/catalyst/targets/embedded.py |
153 |
@@ -42,27 +42,27 @@ class embedded(StageBase): |
154 |
|
155 |
def set_action_sequence(self): |
156 |
self.prepare_sequence.extend([ |
157 |
- "unpack", |
158 |
- "config_profile_link", |
159 |
- "setup_confdir", |
160 |
- "portage_overlay", |
161 |
+ self.unpack, |
162 |
+ self.config_profile_link, |
163 |
+ self.setup_confdir, |
164 |
+ self.portage_overlay, |
165 |
]) |
166 |
self.build_sequence.extend([ |
167 |
- "bind", |
168 |
- "chroot_setup", |
169 |
- "setup_environment", |
170 |
- "build_kernel", |
171 |
- "build_packages", |
172 |
- "root_overlay", |
173 |
- "fsscript", |
174 |
- "unmerge", |
175 |
+ self.bind, |
176 |
+ self.chroot_setup, |
177 |
+ self.setup_environment, |
178 |
+ self.build_kernel, |
179 |
+ self.build_packages, |
180 |
+ self.root_overlay, |
181 |
+ self.fsscript, |
182 |
+ self.unmerge, |
183 |
]) |
184 |
self.finish_sequence.extend([ |
185 |
- "remove", |
186 |
- "empty", |
187 |
- "clean", |
188 |
- "capture", |
189 |
- "clear_autoresume", |
190 |
+ self.remove, |
191 |
+ self.empty, |
192 |
+ self.clean, |
193 |
+ self.capture, |
194 |
+ self.clear_autoresume, |
195 |
]) |
196 |
|
197 |
def set_root_path(self): |
198 |
|
199 |
diff --git a/catalyst/targets/livecd_stage1.py b/catalyst/targets/livecd_stage1.py |
200 |
index 5c5e9f58..eb6bb0f0 100644 |
201 |
--- a/catalyst/targets/livecd_stage1.py |
202 |
+++ b/catalyst/targets/livecd_stage1.py |
203 |
@@ -24,19 +24,19 @@ class livecd_stage1(StageBase): |
204 |
|
205 |
def set_action_sequence(self): |
206 |
self.prepare_sequence.extend([ |
207 |
- "unpack", |
208 |
- "config_profile_link", |
209 |
- "setup_confdir", |
210 |
- "portage_overlay", |
211 |
+ self.unpack, |
212 |
+ self.config_profile_link, |
213 |
+ self.setup_confdir, |
214 |
+ self.portage_overlay, |
215 |
]) |
216 |
self.build_sequence.extend([ |
217 |
- "bind", |
218 |
- "chroot_setup", |
219 |
- "setup_environment", |
220 |
- "build_packages", |
221 |
+ self.bind, |
222 |
+ self.chroot_setup, |
223 |
+ self.setup_environment, |
224 |
+ self.build_packages, |
225 |
]) |
226 |
self.finish_sequence.extend([ |
227 |
- "clean", |
228 |
+ self.clean, |
229 |
]) |
230 |
self.set_completion_action_sequences() |
231 |
|
232 |
|
233 |
diff --git a/catalyst/targets/livecd_stage2.py b/catalyst/targets/livecd_stage2.py |
234 |
index 3606047f..5fecff85 100644 |
235 |
--- a/catalyst/targets/livecd_stage2.py |
236 |
+++ b/catalyst/targets/livecd_stage2.py |
237 |
@@ -87,34 +87,34 @@ class livecd_stage2(StageBase): |
238 |
|
239 |
def set_action_sequence(self): |
240 |
self.prepare_sequence.extend([ |
241 |
- "unpack", |
242 |
- "config_profile_link", |
243 |
- "setup_confdir", |
244 |
- "portage_overlay", |
245 |
+ self.unpack, |
246 |
+ self.config_profile_link, |
247 |
+ self.setup_confdir, |
248 |
+ self.portage_overlay, |
249 |
]) |
250 |
self.build_sequence.extend([ |
251 |
- "bind", |
252 |
- "chroot_setup", |
253 |
- "setup_environment", |
254 |
- "run_local", |
255 |
- "build_kernel" |
256 |
+ self.bind, |
257 |
+ self.chroot_setup, |
258 |
+ self.setup_environment, |
259 |
+ self.run_local, |
260 |
+ self.build_kernel |
261 |
]) |
262 |
if "fetch" not in self.settings["options"]: |
263 |
self.build_sequence.extend([ |
264 |
- "bootloader", |
265 |
- "preclean", |
266 |
- "livecd_update", |
267 |
- "root_overlay", |
268 |
- "fsscript", |
269 |
- "rcupdate", |
270 |
- "unmerge", |
271 |
+ self.bootloader, |
272 |
+ self.preclean, |
273 |
+ self.livecd_update, |
274 |
+ self.root_overlay, |
275 |
+ self.fsscript, |
276 |
+ self.rcupdate, |
277 |
+ self.unmerge, |
278 |
]) |
279 |
self.finish_sequence.extend([ |
280 |
- "remove", |
281 |
- "empty", |
282 |
- "clean", |
283 |
- "target_setup", |
284 |
- "setup_overlay", |
285 |
- "create_iso", |
286 |
+ self.remove, |
287 |
+ self.empty, |
288 |
+ self.clean, |
289 |
+ self.target_setup, |
290 |
+ self.setup_overlay, |
291 |
+ self.create_iso, |
292 |
]) |
293 |
- self.finish_sequence.append("clear_autoresume") |
294 |
+ self.finish_sequence.append(self.clear_autoresume) |
295 |
|
296 |
diff --git a/catalyst/targets/netboot.py b/catalyst/targets/netboot.py |
297 |
index 55f4dff1..9a7e59e5 100644 |
298 |
--- a/catalyst/targets/netboot.py |
299 |
+++ b/catalyst/targets/netboot.py |
300 |
@@ -159,25 +159,25 @@ class netboot(StageBase): |
301 |
|
302 |
def set_action_sequence(self): |
303 |
self.prepare_sequence.extend([ |
304 |
- "unpack", |
305 |
- "config_profile_link", |
306 |
- "setup_confdir", |
307 |
- "portage_overlay", |
308 |
+ self.unpack, |
309 |
+ self.config_profile_link, |
310 |
+ self.setup_confdir, |
311 |
+ self.portage_overlay, |
312 |
]) |
313 |
self.build_sequence.extend([ |
314 |
- "bind", |
315 |
- "chroot_setup", |
316 |
- "setup_environment", |
317 |
- "build_packages", |
318 |
- "root_overlay", |
319 |
- "copy_files_to_image", |
320 |
- "setup_overlay", |
321 |
- "build_kernel", |
322 |
- "move_kernels", |
323 |
- "remove", |
324 |
- "empty", |
325 |
+ self.bind, |
326 |
+ self.chroot_setup, |
327 |
+ self.setup_environment, |
328 |
+ self.build_packages, |
329 |
+ self.root_overlay, |
330 |
+ self.copy_files_to_image, |
331 |
+ self.setup_overlay, |
332 |
+ self.build_kernel, |
333 |
+ self.move_kernels, |
334 |
+ self.remove, |
335 |
+ self.empty, |
336 |
]) |
337 |
self.finish_sequence.extend([ |
338 |
- "clean", |
339 |
- "clear_autoresume", |
340 |
+ self.clean, |
341 |
+ self.clear_autoresume, |
342 |
]) |
343 |
|
344 |
diff --git a/catalyst/targets/stage1.py b/catalyst/targets/stage1.py |
345 |
index 5aa27bb9..5a154e76 100644 |
346 |
--- a/catalyst/targets/stage1.py |
347 |
+++ b/catalyst/targets/stage1.py |
348 |
@@ -82,15 +82,15 @@ class stage1(StageBase): |
349 |
chroot for re-use in stage2 without the need to unpack it. |
350 |
''' |
351 |
if "fetch" not in self.settings["options"]: |
352 |
- self.finish_sequence.append("capture") |
353 |
+ self.finish_sequence.append(self.capture) |
354 |
if "keepwork" in self.settings["options"]: |
355 |
- self.finish_sequence.append("clear_autoresume") |
356 |
+ self.finish_sequence.append(self.clear_autoresume) |
357 |
elif "seedcache" in self.settings["options"]: |
358 |
- self.finish_sequence.append("remove_autoresume") |
359 |
- self.finish_sequence.append("clean_stage1") |
360 |
+ self.finish_sequence.append(self.remove_autoresume) |
361 |
+ self.finish_sequence.append(self.clean_stage1) |
362 |
else: |
363 |
- self.finish_sequence.append("remove_autoresume") |
364 |
- self.finish_sequence.append("remove_chroot") |
365 |
+ self.finish_sequence.append(self.remove_autoresume) |
366 |
+ self.finish_sequence.append(self.remove_chroot) |
367 |
|
368 |
def clean_stage1(self): |
369 |
'''seedcache is enabled, so salvage the /tmp/stage1root, |
370 |
|
371 |
diff --git a/catalyst/targets/stage4.py b/catalyst/targets/stage4.py |
372 |
index b7f74b01..997139a5 100644 |
373 |
--- a/catalyst/targets/stage4.py |
374 |
+++ b/catalyst/targets/stage4.py |
375 |
@@ -40,27 +40,27 @@ class stage4(StageBase): |
376 |
|
377 |
def set_action_sequence(self): |
378 |
self.prepare_sequence.extend([ |
379 |
- "unpack", |
380 |
- "config_profile_link", |
381 |
- "setup_confdir", |
382 |
- "portage_overlay", |
383 |
+ self.unpack, |
384 |
+ self.config_profile_link, |
385 |
+ self.setup_confdir, |
386 |
+ self.portage_overlay, |
387 |
]) |
388 |
self.build_sequence.extend([ |
389 |
- "bind", |
390 |
- "chroot_setup", |
391 |
- "setup_environment", |
392 |
- "build_packages", |
393 |
- "build_kernel", |
394 |
- "bootloader", |
395 |
- "root_overlay", |
396 |
- "fsscript", |
397 |
- "preclean", |
398 |
- "rcupdate", |
399 |
- "unmerge", |
400 |
+ self.bind, |
401 |
+ self.chroot_setup, |
402 |
+ self.setup_environment, |
403 |
+ self.build_packages, |
404 |
+ self.build_kernel, |
405 |
+ self.bootloader, |
406 |
+ self.root_overlay, |
407 |
+ self.fsscript, |
408 |
+ self.preclean, |
409 |
+ self.rcupdate, |
410 |
+ self.unmerge, |
411 |
]) |
412 |
self.finish_sequence.extend([ |
413 |
- "remove", |
414 |
- "empty", |
415 |
- "clean", |
416 |
+ self.remove, |
417 |
+ self.empty, |
418 |
+ self.clean, |
419 |
]) |
420 |
self.set_completion_action_sequences() |