Gentoo Archives: gentoo-catalyst

From: dilfridge@g.o
To: gentoo-catalyst@l.g.o
Cc: "Andreas K. Hüttel" <dilfridge@g.o>
Subject: [gentoo-catalyst] [PATCH] Allow "interpreter" parameter as space-separated list of files
Date: Fri, 04 Sep 2020 20:23:40
Message-Id: 20200904202324.31508-1-dilfridge@gentoo.org
1 From: Andreas K. Hüttel <dilfridge@g.o>
2
3 Signed-off-by: Andreas K. Hüttel <dilfridge@g.o>
4 ---
5 catalyst/base/stagebase.py | 44 +++++++++++++++++++++++++-------------
6 1 file changed, 29 insertions(+), 15 deletions(-)
7
8 diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
9 index afeda722..0cf3495a 100644
10 --- a/catalyst/base/stagebase.py
11 +++ b/catalyst/base/stagebase.py
12 @@ -1061,21 +1061,28 @@ class StageBase(TargetBase, ClearBase, GenBase):
13
14 shutil.copy('/etc/resolv.conf', self.settings['chroot_path'] + '/etc/')
15
16 - # Copy over the binary interpreter (qemu), if applicable; note that it's given
17 - # as full path and goes to the same place in the chroot
18 + # Copy over the binary interpreter(s) (qemu), if applicable; note that they are given
19 + # as space-separated list of full paths and go to the same place in the chroot
20 if "interpreter" in self.settings:
21 - if not os.path.exists(self.settings["interpreter"]):
22 - raise CatalystError(
23 - "Can't find interpreter " + self.settings["interpreter"],
24 - print_traceback=True)
25
26 - log.notice('Copying binary interpreter %s into chroot', self.settings['interpreter'])
27 + if isinstance(self.settings["interpreter"], str):
28 + myints = [self.settings["interpreter"]]
29 + else:
30 + myints = self.settings["interpreter"]
31 +
32 + for myi in myints:
33 + if not os.path.exists(myi):
34 + raise CatalystError(
35 + "Can't find interpreter " + myi,
36 + print_traceback=True)
37
38 - if os.path.exists(self.settings['chroot_path'] + '/' + self.settings['interpreter']):
39 - os.rename(self.settings['chroot_path'] + '/' + self.settings['interpreter'], self.settings['chroot_path'] + '/' + self.settings['interpreter'] + '.catalyst')
40 + log.notice('Copying binary interpreter %s into chroot', myi)
41
42 - shutil.copy(self.settings['interpreter'],
43 - self.settings['chroot_path'] + '/' + self.settings['interpreter'])
44 + if os.path.exists(self.settings['chroot_path'] + '/' + myi):
45 + os.rename(self.settings['chroot_path'] + '/' + myi, self.settings['chroot_path'] + '/' + myi + '.catalyst')
46 +
47 + shutil.copy(myi,
48 + self.settings['chroot_path'] + '/' + myi)
49
50 # Copy over the envscript, if applicable
51 if "envscript" in self.settings:
52 @@ -1242,12 +1249,19 @@ class StageBase(TargetBase, ClearBase, GenBase):
53 if os.path.exists(hosts_file + '.catalyst'):
54 os.rename(hosts_file + '.catalyst', hosts_file)
55
56 - # optionally clean up binary interpreter
57 + # optionally clean up binary interpreter(s)
58 if "interpreter" in self.settings:
59 - if os.path.exists(self.settings['chroot_path'] + '/' + self.settings['interpreter'] + '.catalyst'):
60 - os.rename(self.settings['chroot_path'] + '/' + self.settings['interpreter'] + '.catalyst', self.settings['chroot_path'] + '/' + self.settings['interpreter'])
61 +
62 + if isinstance(self.settings["interpreter"], str):
63 + myints = [self.settings["interpreter"]]
64 else:
65 - os.remove(self.settings['chroot_path'] + '/' + self.settings['interpreter'])
66 + myints = self.settings["interpreter"]
67 +
68 + for myi in myints:
69 + if os.path.exists(self.settings['chroot_path'] + '/' + myi + '.catalyst'):
70 + os.rename(self.settings['chroot_path'] + '/' + myi + '.catalyst', self.settings['chroot_path'] + '/' + myi)
71 + else:
72 + os.remove(self.settings['chroot_path'] + '/' + myi)
73
74 # optionally clean up portage configs
75 if ("portage_prefix" in self.settings and
76 --
77 2.26.2