Gentoo Archives: gentoo-catalyst

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