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/12] catalyst: Split action_sequence into prepare/build/finish
Date: Thu, 29 Oct 2020 16:16:48
Message-Id: 20201029161632.146732-6-mattst88@gentoo.org
In Reply to: [gentoo-catalyst] [PATCH 01/12] catalyst: Replace pathcompare() by Matt Turner
1 We want to run the "build" sequence in a different mount namespace from
2 the "prepare" and "finish" sequences, so this splits action_sequence
3 into those groupings.
4
5 Signed-off-by: Matt Turner <mattst88@g.o>
6 ---
7 catalyst/base/stagebase.py | 24 +++++++++++++++---------
8 catalyst/targets/embedded.py | 6 +++++-
9 catalyst/targets/livecd_stage1.py | 6 +++++-
10 catalyst/targets/livecd_stage2.py | 10 +++++++---
11 catalyst/targets/netboot.py | 6 +++++-
12 catalyst/targets/stage1.py | 12 ++++++------
13 catalyst/targets/stage4.py | 6 +++++-
14 7 files changed, 48 insertions(+), 22 deletions(-)
15
16 diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
17 index 46b7c59c..75c84baa 100644
18 --- a/catalyst/base/stagebase.py
19 +++ b/catalyst/base/stagebase.py
20 @@ -64,7 +64,9 @@ class StageBase(TargetBase, ClearBase, GenBase):
21 "portage_overlay",
22 "portage_prefix",
23 ])
24 - self.action_sequence = []
25 + self.prepare_sequence = []
26 + self.build_sequence = []
27 + self.finish_sequence = []
28
29 self.set_valid_build_kernel_vars(addlargs)
30 TargetBase.__init__(self, myspec, addlargs)
31 @@ -478,36 +480,40 @@ class StageBase(TargetBase, ClearBase, GenBase):
32 Or it calls the normal set_action_sequence() for the target stage.
33 """
34 if "purgeonly" in self.settings["options"]:
35 - self.action_sequence.append("remove_chroot")
36 + self.build_sequence.append("remove_chroot")
37 return
38 self.set_action_sequence()
39
40 def set_action_sequence(self):
41 """Set basic stage1, 2, 3 action sequences"""
42 - self.action_sequence.extend([
43 + self.prepare_sequence.extend([
44 "unpack",
45 "setup_confdir",
46 "portage_overlay",
47 + ])
48 + self.build_sequence.extend([
49 "bind",
50 "chroot_setup",
51 "setup_environment",
52 "run_local",
53 "preclean",
54 "unbind",
55 + ])
56 + self.finish_sequence.extend([
57 "clean",
58 ])
59 self.set_completion_action_sequences()
60
61 def set_completion_action_sequences(self):
62 if "fetch" not in self.settings["options"]:
63 - self.action_sequence.append("capture")
64 + self.finish_sequence.append("capture")
65 if "keepwork" in self.settings["options"]:
66 - self.action_sequence.append("clear_autoresume")
67 + self.finish_sequence.append("clear_autoresume")
68 elif "seedcache" in self.settings["options"]:
69 - self.action_sequence.append("remove_autoresume")
70 + self.finish_sequence.append("remove_autoresume")
71 else:
72 - self.action_sequence.append("remove_autoresume")
73 - self.action_sequence.append("remove_chroot")
74 + self.finish_sequence.append("remove_autoresume")
75 + self.finish_sequence.append("remove_chroot")
76
77 def set_use(self):
78 use = self.settings["spec_prefix"] + "/use"
79 @@ -1381,7 +1387,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
80 self.purge()
81
82 failure = False
83 - for x in self.action_sequence:
84 + for x in self.prepare_sequence + self.build_sequence + self.finish_sequence:
85 log.notice('--- Running action sequence: %s', x)
86 sys.stdout.flush()
87 try:
88 diff --git a/catalyst/targets/embedded.py b/catalyst/targets/embedded.py
89 index 75eb68e4..1314ce7c 100644
90 --- a/catalyst/targets/embedded.py
91 +++ b/catalyst/targets/embedded.py
92 @@ -41,11 +41,13 @@ class embedded(StageBase):
93 StageBase.__init__(self, spec, addlargs)
94
95 def set_action_sequence(self):
96 - self.action_sequence.extend([
97 + self.prepare_sequence.extend([
98 "unpack",
99 "config_profile_link",
100 "setup_confdir",
101 "portage_overlay",
102 + ])
103 + self.build_sequence.extend([
104 "bind",
105 "chroot_setup",
106 "setup_environment",
107 @@ -55,6 +57,8 @@ class embedded(StageBase):
108 "fsscript",
109 "unmerge",
110 "unbind",
111 + ])
112 + self.finish_sequence.extend([
113 "remove",
114 "empty",
115 "clean",
116 diff --git a/catalyst/targets/livecd_stage1.py b/catalyst/targets/livecd_stage1.py
117 index 9dbfa506..81367053 100644
118 --- a/catalyst/targets/livecd_stage1.py
119 +++ b/catalyst/targets/livecd_stage1.py
120 @@ -23,16 +23,20 @@ class livecd_stage1(StageBase):
121 StageBase.__init__(self, spec, addlargs)
122
123 def set_action_sequence(self):
124 - self.action_sequence.extend([
125 + self.prepare_sequence.extend([
126 "unpack",
127 "config_profile_link",
128 "setup_confdir",
129 "portage_overlay",
130 + ])
131 + self.build_sequence.extend([
132 "bind",
133 "chroot_setup",
134 "setup_environment",
135 "build_packages",
136 "unbind",
137 + ])
138 + self.finish_sequence.extend([
139 "clean",
140 ])
141 self.set_completion_action_sequences()
142 diff --git a/catalyst/targets/livecd_stage2.py b/catalyst/targets/livecd_stage2.py
143 index c9b5ce08..f6c14919 100644
144 --- a/catalyst/targets/livecd_stage2.py
145 +++ b/catalyst/targets/livecd_stage2.py
146 @@ -87,11 +87,13 @@ class livecd_stage2(StageBase):
147 print_traceback=True)
148
149 def set_action_sequence(self):
150 - self.action_sequence.extend([
151 + self.prepare_sequence.extend([
152 "unpack",
153 "config_profile_link",
154 "setup_confdir",
155 "portage_overlay",
156 + ])
157 + self.build_sequence.extend([
158 "bind",
159 "chroot_setup",
160 "setup_environment",
161 @@ -99,7 +101,7 @@ class livecd_stage2(StageBase):
162 "build_kernel"
163 ])
164 if "fetch" not in self.settings["options"]:
165 - self.action_sequence.extend([
166 + self.build_sequence.extend([
167 "bootloader",
168 "preclean",
169 "livecd_update",
170 @@ -108,6 +110,8 @@ class livecd_stage2(StageBase):
171 "rcupdate",
172 "unmerge",
173 "unbind",
174 + ])
175 + self.finish_sequence.extend([
176 "remove",
177 "empty",
178 "clean",
179 @@ -115,4 +119,4 @@ class livecd_stage2(StageBase):
180 "setup_overlay",
181 "create_iso",
182 ])
183 - self.action_sequence.append("clear_autoresume")
184 + self.finish_sequence.append("clear_autoresume")
185 diff --git a/catalyst/targets/netboot.py b/catalyst/targets/netboot.py
186 index e5c6d43c..9a0a4156 100644
187 --- a/catalyst/targets/netboot.py
188 +++ b/catalyst/targets/netboot.py
189 @@ -160,11 +160,13 @@ class netboot(StageBase):
190 self.resume.enable("empty")
191
192 def set_action_sequence(self):
193 - self.action_sequence.extend([
194 + self.prepare_sequence.extend([
195 "unpack",
196 "config_profile_link",
197 "setup_confdir",
198 "portage_overlay",
199 + ])
200 + self.build_sequence.extend([
201 "bind",
202 "chroot_setup",
203 "setup_environment",
204 @@ -177,6 +179,8 @@ class netboot(StageBase):
205 "remove",
206 "empty",
207 "unbind",
208 + ])
209 + self.finish_sequence.extend([
210 "clean",
211 "clear_autoresume",
212 ])
213 diff --git a/catalyst/targets/stage1.py b/catalyst/targets/stage1.py
214 index 89b30fe1..be3eae93 100644
215 --- a/catalyst/targets/stage1.py
216 +++ b/catalyst/targets/stage1.py
217 @@ -87,15 +87,15 @@ class stage1(StageBase):
218 chroot for re-use in stage2 without the need to unpack it.
219 '''
220 if "fetch" not in self.settings["options"]:
221 - self.action_sequence.append("capture")
222 + self.finish_sequence.append("capture")
223 if "keepwork" in self.settings["options"]:
224 - self.action_sequence.append("clear_autoresume")
225 + self.finish_sequence.append("clear_autoresume")
226 elif "seedcache" in self.settings["options"]:
227 - self.action_sequence.append("remove_autoresume")
228 - self.action_sequence.append("clean_stage1")
229 + self.finish_sequence.append("remove_autoresume")
230 + self.finish_sequence.append("clean_stage1")
231 else:
232 - self.action_sequence.append("remove_autoresume")
233 - self.action_sequence.append("remove_chroot")
234 + self.finish_sequence.append("remove_autoresume")
235 + self.finish_sequence.append("remove_chroot")
236
237 def clean_stage1(self):
238 '''seedcache is enabled, so salvage the /tmp/stage1root,
239 diff --git a/catalyst/targets/stage4.py b/catalyst/targets/stage4.py
240 index bb20be79..78a5c780 100644
241 --- a/catalyst/targets/stage4.py
242 +++ b/catalyst/targets/stage4.py
243 @@ -39,11 +39,13 @@ class stage4(StageBase):
244 self.settings["cleanables"].remove('/etc/resolv.conf')
245
246 def set_action_sequence(self):
247 - self.action_sequence.extend([
248 + self.prepare_sequence.extend([
249 "unpack",
250 "config_profile_link",
251 "setup_confdir",
252 "portage_overlay",
253 + ])
254 + self.build_sequence.extend([
255 "bind",
256 "chroot_setup",
257 "setup_environment",
258 @@ -56,6 +58,8 @@ class stage4(StageBase):
259 "rcupdate",
260 "unmerge",
261 "unbind",
262 + ])
263 + self.finish_sequence.extend([
264 "remove",
265 "empty",
266 "clean",
267 --
268 2.26.2