commit:     22f59e6d758b3c4801a984ea6a3b4574407143c6
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 20 20:39:53 2020 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Mon Jul 20 20:39:53 2020 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=22f59e6d

Add "interpreter" parameter for qemu-user build support

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

 catalyst/base/stagebase.py | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index c2cc2c3e..0d3a418b 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -55,6 +55,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
             "fflags",
             "hostuse",
             "install_mask",
+            "interpreter",
             "kerncache_path",
             "ldflags",
             "makeopts",
@@ -938,6 +939,24 @@ 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
+                       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 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')
+
+                               shutil.copy(self.settings['interpreter'],
+                                       self.settings['chroot_path'] + '/' + 
self.settings['interpreter'])
+
             # Copy over the envscript, if applicable
             if "envscript" in self.settings:
                 if not os.path.exists(self.settings["envscript"]):
@@ -1105,6 +1124,15 @@ class StageBase(TargetBase, ClearBase, GenBase):
         if os.path.exists(hosts_file + '.catalyst'):
             os.rename(hosts_file + '.catalyst', hosts_file)
 
+               # optionally clean up binary interpreter
+               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'])
+                       else:
+                               os.remove(self.settings['chroot_path'] + '/' + 
self.settings['interpreter'])
+
         # optionally clean up portage configs
         if ("portage_prefix" in self.settings and
                 "sticky-config" not in self.settings["options"]):

Reply via email to