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/, catalyst/targets/
Date: Fri, 29 Jan 2021 23:50:55
Message-Id: 1611799606.50ba8aadf5f7096e9079eafec9182d526956cd49.mattst88@gentoo
1 commit: 50ba8aadf5f7096e9079eafec9182d526956cd49
2 Author: Matt Turner <mattst88 <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jan 24 02:43:47 2021 +0000
4 Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org>
5 CommitDate: Thu Jan 28 02:06:46 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=50ba8aad
7
8 catalyst: Clean up exception handling
9
10 Use 'raise from' where sensible, but a lot of the CatalystErrors are
11 just trading one CatalystError for another, so remove them.
12
13 Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>
14
15 catalyst/base/stagebase.py | 110 ++++++++++++++------------------------
16 catalyst/main.py | 4 +-
17 catalyst/support.py | 4 +-
18 catalyst/targets/livecd_stage2.py | 4 +-
19 catalyst/targets/netboot.py | 33 ++++--------
20 catalyst/targets/snapshot.py | 2 +-
21 6 files changed, 57 insertions(+), 100 deletions(-)
22
23 diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
24 index 28ff8fd2..46cb1fda 100644
25 --- a/catalyst/base/stagebase.py
26 +++ b/catalyst/base/stagebase.py
27 @@ -906,7 +906,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
28 fstype=fstype, options=options)
29 cxt.mount()
30 except Exception as e:
31 - raise CatalystError(f"Couldn't mount: {source}, {e}")
32 + raise CatalystError(f"Couldn't mount: {source}, {e}") from e
33
34 def chroot_setup(self):
35 self.makeconf = read_makeconf(normpath(self.settings["chroot_path"] +
36 @@ -978,7 +978,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
37 except OSError as e:
38 raise CatalystError('Could not write %s: %s' % (
39 normpath(self.settings["chroot_path"] +
40 - self.settings["make_conf"]), e))
41 + self.settings["make_conf"]), e)) from e
42 self.resume.enable("chroot_setup")
43
44 def write_make_conf(self, setup=True):
45 @@ -1206,13 +1206,11 @@ class StageBase(TargetBase, ClearBase, GenBase):
46 # operations, so we get easy glob handling.
47 log.notice('%s: removing %s', self.settings["spec_prefix"], x)
48 clear_path(self.settings["stage_path"] + x)
49 - try:
50 - if os.path.exists(self.settings["controller_file"]):
51 - cmd([self.settings['controller_file'], 'clean'],
52 - env=self.env)
53 - self.resume.enable("remove")
54 - except:
55 - raise
56 +
57 + if os.path.exists(self.settings["controller_file"]):
58 + cmd([self.settings['controller_file'], 'clean'],
59 + env=self.env)
60 + self.resume.enable("remove")
61
62 def preclean(self):
63 if "autoresume" in self.settings["options"] \
64 @@ -1278,19 +1276,14 @@ class StageBase(TargetBase, ClearBase, GenBase):
65 log.notice('Resume point detected, skipping run_local operation...')
66 return
67
68 - try:
69 - if os.path.exists(self.settings["controller_file"]):
70 - log.info('run_local() starting controller script...')
71 - cmd([self.settings['controller_file'], 'run'],
72 - env=self.env)
73 - self.resume.enable("run_local")
74 - else:
75 - log.info('run_local() no controller_file found... %s',
76 - self.settings['controller_file'])
77 -
78 - except CatalystError:
79 - raise CatalystError("Stage build aborting due to error.",
80 - print_traceback=False)
81 + if os.path.exists(self.settings["controller_file"]):
82 + log.info('run_local() starting controller script...')
83 + cmd([self.settings['controller_file'], 'run'],
84 + env=self.env)
85 + self.resume.enable("run_local")
86 + else:
87 + log.info('run_local() no controller_file found... %s',
88 + self.settings['controller_file'])
89
90 def setup_environment(self):
91 log.debug('setup_environment(); settings = %r', self.settings)
92 @@ -1382,13 +1375,10 @@ class StageBase(TargetBase, ClearBase, GenBase):
93 [self.settings[self.settings["spec_prefix"] + "/unmerge"]]
94
95 # Before cleaning, unmerge stuff
96 - try:
97 - cmd([self.settings['controller_file'], 'unmerge'] +
98 - self.settings[self.settings['spec_prefix'] + '/unmerge'],
99 - env=self.env)
100 - log.info('unmerge shell script')
101 - except CatalystError:
102 - raise
103 + cmd([self.settings['controller_file'], 'unmerge'] +
104 + self.settings[self.settings['spec_prefix'] + '/unmerge'],
105 + env=self.env)
106 + log.info('unmerge shell script')
107 self.resume.enable("unmerge")
108
109 def target_setup(self):
110 @@ -1457,14 +1447,9 @@ class StageBase(TargetBase, ClearBase, GenBase):
111 command.append(self.settings[target_pkgs])
112 else:
113 command.extend(self.settings[target_pkgs])
114 - try:
115 - cmd(command, env=self.env)
116 - fileutils.touch(build_packages_resume)
117 - self.resume.enable("build_packages")
118 - except CatalystError:
119 - raise CatalystError(
120 - self.settings["spec_prefix"] +
121 - "build aborting due to error.")
122 + cmd(command, env=self.env)
123 + fileutils.touch(build_packages_resume)
124 + self.resume.enable("build_packages")
125
126 def build_kernel(self):
127 '''Build all configured kernels'''
128 @@ -1475,19 +1460,14 @@ class StageBase(TargetBase, ClearBase, GenBase):
129 return
130
131 if "boot/kernel" in self.settings:
132 - try:
133 - mynames = self.settings["boot/kernel"]
134 - if isinstance(mynames, str):
135 - mynames = [mynames]
136 - # Execute the script that sets up the kernel build environment
137 - cmd([self.settings['controller_file'], 'pre-kmerge'], env=self.env)
138 - for kname in [sanitize_name(name) for name in mynames]:
139 - self._build_kernel(kname=kname)
140 - self.resume.enable("build_kernel")
141 - except CatalystError:
142 - raise CatalystError(
143 - "build aborting due to kernel build error.",
144 - print_traceback=True)
145 + mynames = self.settings["boot/kernel"]
146 + if isinstance(mynames, str):
147 + mynames = [mynames]
148 + # Execute the script that sets up the kernel build environment
149 + cmd([self.settings['controller_file'], 'pre-kmerge'], env=self.env)
150 + for kname in [sanitize_name(name) for name in mynames]:
151 + self._build_kernel(kname=kname)
152 + self.resume.enable("build_kernel")
153
154 def _build_kernel(self, kname):
155 "Build a single configured kernel by name"
156 @@ -1531,12 +1511,8 @@ class StageBase(TargetBase, ClearBase, GenBase):
157 raise CatalystError("Can't find kernel config: %s" %
158 self.settings[key])
159
160 - try:
161 - shutil.copy(self.settings[key],
162 - self.settings['chroot_path'] + '/var/tmp/' + kname + '.config')
163 -
164 - except IOError:
165 - raise
166 + shutil.copy(self.settings[key],
167 + self.settings['chroot_path'] + '/var/tmp/' + kname + '.config')
168
169 def _copy_initramfs_overlay(self, kname):
170 key = 'boot/kernel/' + kname + '/initramfs_overlay'
171 @@ -1560,13 +1536,10 @@ class StageBase(TargetBase, ClearBase, GenBase):
172 'Resume point detected, skipping bootloader operation...')
173 return
174
175 - try:
176 - cmd([self.settings['controller_file'], 'bootloader',
177 - self.settings['target_path'].rstrip('/')],
178 - env=self.env)
179 - self.resume.enable("bootloader")
180 - except CatalystError:
181 - raise CatalystError("Script aborting due to error.")
182 + cmd([self.settings['controller_file'], 'bootloader',
183 + self.settings['target_path'].rstrip('/')],
184 + env=self.env)
185 + self.resume.enable("bootloader")
186
187 def livecd_update(self):
188 if "autoresume" in self.settings["options"] \
189 @@ -1575,14 +1548,9 @@ class StageBase(TargetBase, ClearBase, GenBase):
190 'Resume point detected, skipping build_packages operation...')
191 return
192
193 - try:
194 - cmd([self.settings['controller_file'], 'livecd-update'],
195 - env=self.env)
196 - self.resume.enable("livecd_update")
197 -
198 - except CatalystError:
199 - raise CatalystError(
200 - "build aborting due to livecd_update error.")
201 + cmd([self.settings['controller_file'], 'livecd-update'],
202 + env=self.env)
203 + self.resume.enable("livecd_update")
204
205 @staticmethod
206 def _debug_pause_():
207
208 diff --git a/catalyst/main.py b/catalyst/main.py
209 index b0d9015f..0de1040f 100644
210 --- a/catalyst/main.py
211 +++ b/catalyst/main.py
212 @@ -77,10 +77,10 @@ def build_target(addlargs):
213 target = addlargs["target"].replace('-', '_')
214 module = import_module(target)
215 target = getattr(module, target)(conf_values, addlargs)
216 - except AttributeError:
217 + except AttributeError as e:
218 raise CatalystError(
219 "Target \"%s\" not available." % target,
220 - print_traceback=True)
221 + print_traceback=True) from e
222 except CatalystError:
223 return False
224 return target.run()
225
226 diff --git a/catalyst/support.py b/catalyst/support.py
227 index fa652987..fc50fa34 100644
228 --- a/catalyst/support.py
229 +++ b/catalyst/support.py
230 @@ -140,9 +140,9 @@ def read_makeconf(mymakeconffile):
231 if os.path.exists(mymakeconffile):
232 try:
233 return read_bash_dict(mymakeconffile, sourcing_command="source")
234 - except Exception:
235 + except Exception as e:
236 raise CatalystError("Could not parse make.conf file " +
237 - mymakeconffile, print_traceback=True)
238 + mymakeconffile, print_traceback=True) from e
239 else:
240 makeconf = {}
241 return makeconf
242
243 diff --git a/catalyst/targets/livecd_stage2.py b/catalyst/targets/livecd_stage2.py
244 index e90e9f53..ff4ea62a 100644
245 --- a/catalyst/targets/livecd_stage2.py
246 +++ b/catalyst/targets/livecd_stage2.py
247 @@ -79,11 +79,11 @@ class livecd_stage2(StageBase):
248 "livecd/modblacklist"].split()
249 for x in self.settings["livecd/modblacklist"]:
250 myf.write("\nblacklist "+x)
251 - except:
252 + except Exception as e:
253 raise CatalystError("Couldn't open " +
254 self.settings["chroot_path"] +
255 "/etc/modprobe.d/blacklist.conf.",
256 - print_traceback=True)
257 + print_traceback=True) from e
258
259 def set_action_sequence(self):
260 self.build_sequence.extend([
261
262 diff --git a/catalyst/targets/netboot.py b/catalyst/targets/netboot.py
263 index a2a9fcb3..38d0cb45 100644
264 --- a/catalyst/targets/netboot.py
265 +++ b/catalyst/targets/netboot.py
266 @@ -30,17 +30,14 @@ class netboot(StageBase):
267 ])
268
269 def __init__(self, spec, addlargs):
270 - try:
271 - if "netboot/packages" in addlargs:
272 - if isinstance(addlargs['netboot/packages'], str):
273 - loopy = [addlargs["netboot/packages"]]
274 - else:
275 - loopy = addlargs["netboot/packages"]
276 + if "netboot/packages" in addlargs:
277 + if isinstance(addlargs['netboot/packages'], str):
278 + loopy = [addlargs["netboot/packages"]]
279 + else:
280 + loopy = addlargs["netboot/packages"]
281
282 - for x in loopy:
283 - self.valid_values |= {"netboot/packages/"+x+"/files"}
284 - except:
285 - raise CatalystError("configuration error in netboot/packages.")
286 + for x in loopy:
287 + self.valid_values |= {"netboot/packages/"+x+"/files"}
288
289 StageBase.__init__(self, spec, addlargs)
290 self.settings["merge_path"] = normpath("/tmp/image/")
291 @@ -89,12 +86,8 @@ class netboot(StageBase):
292 else:
293 myfiles.append(self.settings["netboot/extra_files"])
294
295 - try:
296 - cmd([self.settings['controller_file'], 'image'] +
297 - myfiles, env=self.env)
298 - except CatalystError:
299 - raise CatalystError("Failed to copy files to image!",
300 - print_traceback=True)
301 + cmd([self.settings['controller_file'], 'image'] +
302 + myfiles, env=self.env)
303
304 self.resume.enable("copy_files_to_image")
305
306 @@ -116,12 +109,8 @@ class netboot(StageBase):
307 # we're done, move the kernels to builds/*
308 # no auto resume here as we always want the
309 # freshest images moved
310 - try:
311 - cmd([self.settings['controller_file'], 'final'], env=self.env)
312 - log.notice('Netboot Build Finished!')
313 - except CatalystError:
314 - raise CatalystError("Failed to move kernel images!",
315 - print_traceback=True)
316 + cmd([self.settings['controller_file'], 'final'], env=self.env)
317 + log.notice('Netboot Build Finished!')
318
319 def remove(self):
320 if "autoresume" in self.settings["options"] \
321
322 diff --git a/catalyst/targets/snapshot.py b/catalyst/targets/snapshot.py
323 index 7732312c..6b727600 100644
324 --- a/catalyst/targets/snapshot.py
325 +++ b/catalyst/targets/snapshot.py
326 @@ -73,7 +73,7 @@ class snapshot(TargetBase):
327 except subprocess.CalledProcessError as e:
328 raise CatalystError(f'{e.cmd} failed with return code'
329 f'{e.returncode}\n'
330 - f'{e.output}\n')
331 + f'{e.output}\n') from e
332
333 def run(self):
334 if self.settings['snapshot_treeish'] == 'stable':