commit:     52b7235e399444247adf3d9c24a20dd57db50f20
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Fri Sep  4 16:34:54 2020 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri Sep  4 20:18:17 2020 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=52b7235e

Allow "interpreter" parameter as space-separated list of files

Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 catalyst/base/stagebase.py | 44 +++++++++++++++++++++++++++++---------------
 1 file changed, 29 insertions(+), 15 deletions(-)

diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index afeda722..0cf3495a 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -1061,21 +1061,28 @@ class StageBase(TargetBase, ClearBase, GenBase):
 
                        shutil.copy('/etc/resolv.conf', 
self.settings['chroot_path'] + '/etc/')
 
-                       # Copy over the binary interpreter (qemu), if 
applicable; note that it's given
-                       # as full path and goes to the same place in the chroot
+                       # Copy over the binary interpreter(s) (qemu), if 
applicable; note that they are given
+                       # as space-separated list of full paths and go to the 
same place in the chroot
                        if "interpreter" in self.settings:
-                               if not 
os.path.exists(self.settings["interpreter"]):
-                                       raise CatalystError(
-                                               "Can't find interpreter " + 
self.settings["interpreter"],
-                                               print_traceback=True)
 
-                               log.notice('Copying binary interpreter %s into 
chroot', self.settings['interpreter'])
+                               if isinstance(self.settings["interpreter"], 
str):
+                                       myints = [self.settings["interpreter"]]
+                               else:
+                                       myints = self.settings["interpreter"]
+
+                               for myi in myints:
+                                       if not os.path.exists(myi):
+                                               raise CatalystError(
+                                                       "Can't find interpreter 
" + myi,
+                                                       print_traceback=True)
 
-                               if os.path.exists(self.settings['chroot_path'] 
+ '/' + self.settings['interpreter']):
-                                       os.rename(self.settings['chroot_path'] 
+ '/' + self.settings['interpreter'], self.settings['chroot_path'] + '/' + 
self.settings['interpreter'] + '.catalyst')
+                                       log.notice('Copying binary interpreter 
%s into chroot', myi)
 
-                               shutil.copy(self.settings['interpreter'],
-                                       self.settings['chroot_path'] + '/' + 
self.settings['interpreter'])
+                                       if 
os.path.exists(self.settings['chroot_path'] + '/' + myi):
+                                               
os.rename(self.settings['chroot_path'] + '/' + myi, 
self.settings['chroot_path'] + '/' + myi + '.catalyst')
+
+                                       shutil.copy(myi,
+                                               self.settings['chroot_path'] + 
'/' + myi)
 
                        # Copy over the envscript, if applicable
                        if "envscript" in self.settings:
@@ -1242,12 +1249,19 @@ class StageBase(TargetBase, ClearBase, GenBase):
                if os.path.exists(hosts_file + '.catalyst'):
                        os.rename(hosts_file + '.catalyst', hosts_file)
 
-               # optionally clean up binary interpreter
+               # optionally clean up binary interpreter(s)
                if "interpreter" in self.settings:
-                       if os.path.exists(self.settings['chroot_path'] + '/' + 
self.settings['interpreter'] + '.catalyst'):
-                               os.rename(self.settings['chroot_path'] + '/' + 
self.settings['interpreter'] + '.catalyst', self.settings['chroot_path'] + '/' 
+ self.settings['interpreter'])
+
+                       if isinstance(self.settings["interpreter"], str):
+                               myints = [self.settings["interpreter"]]
                        else:
-                               os.remove(self.settings['chroot_path'] + '/' + 
self.settings['interpreter'])
+                               myints = self.settings["interpreter"]
+
+                       for myi in myints:
+                               if os.path.exists(self.settings['chroot_path'] 
+ '/' + myi + '.catalyst'):
+                                       os.rename(self.settings['chroot_path'] 
+ '/' + myi + '.catalyst', self.settings['chroot_path'] + '/' + myi)
+                               else:
+                                       os.remove(self.settings['chroot_path'] 
+ '/' + myi)
 
                # optionally clean up portage configs
                if ("portage_prefix" in self.settings and

Reply via email to