Gentoo Archives: gentoo-commits

From: Matt Turner <mattst88@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/catalyst:wip/mattst88 commit in: catalyst/base/, catalyst/targets/
Date: Fri, 29 Jan 2021 23:50:54
Message-Id: 1611418747.440a379ae94e6d7df26291bf83657288d1406e98.mattst88@gentoo
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()