[RSB 5 PATCH 2/3] sb/set-bulder: Fix installing builds when a single buildset

chrisj at rtems.org chrisj at rtems.org
Fri Sep 30 07:15:14 UTC 2022


From: Chris Johns <chrisj at rtems.org>

- Always stage a build

- Install if installable and outter most buildset instance

Closes #4731
---
 source-builder/sb/setbuilder.py | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/source-builder/sb/setbuilder.py b/source-builder/sb/setbuilder.py
index db9446f..41f5589 100644
--- a/source-builder/sb/setbuilder.py
+++ b/source-builder/sb/setbuilder.py
@@ -227,7 +227,7 @@ class buildset:
         return self.install_mode() == 'installing'
 
     def installable(self):
-        return not self.opts.no_install() or self.staging()
+        return not self.opts.no_install() and self.installing()
 
     def staging(self):
         return not self.installing()
@@ -436,7 +436,7 @@ class buildset:
         # If installing switch to staging. Not sure if this is still
         # needed.
         #
-        if self.installing():
+        if nesting_count > 1 and self.installing():
             self.macros['install_mode'] = 'staging'
 
         try:
@@ -538,10 +538,10 @@ class buildset:
             #
             # Installing or staging ...
             #
-            log.trace('_bset: %2d: %s: deps:%r no-install:%r' % \
+            log.trace('_bset: %2d: mode: %s: deps:%r no-install:%r' % \
                       (nesting_count, self.install_mode(),
                        deps is None, self.opts.no_install()))
-            log.trace('_bset: %2d: %s: builds: %s' % \
+            log.trace('_bset: %2d: mode: %s: builds: %s' % \
                       (nesting_count, self.install_mode(),
                        ', '.join([b.name() for b in builds])))
             if deps is None and not have_errors:
@@ -551,10 +551,9 @@ class buildset:
                     if b.installable():
                         prefix = b.config.expand('%{_prefix}')
                         buildroot = path.join(b.config.expand('%{buildroot}'), prefix)
-                        if self.staging():
-                            prefix = b.config.expand('%{stagingroot}')
+                        self.install('staging', b.name(), buildroot, b.config.expand('%{stagingroot}'))
                         if self.installable():
-                            self.install(self.install_mode(), b.name(), buildroot, prefix)
+                            self.install('installing', b.name(), buildroot, prefix)
             #
             # Sizes ...
             #
@@ -610,7 +609,7 @@ class buildset:
             #
             # If builds have been staged install into the final prefix.
             #
-            if not have_errors:
+            if self.installing() and not have_errors:
                 stagingroot = macro_expand(self.macros, '%{stagingroot}')
                 have_stagingroot = path.exists(stagingroot)
                 do_install = not self.opts.no_install()
-- 
2.37.1



More information about the devel mailing list