sb/set-bulder: Fix installing builds when a single buildset

- Always stage a build

- Install if installable and outter most buildset instance

Closes #4730
This commit is contained in:
Chris Johns
2022-09-30 17:07:10 +10:00
parent e04c84191b
commit 953b8391c0

View File

@@ -227,7 +227,7 @@ class buildset:
return self.install_mode() == 'installing' return self.install_mode() == 'installing'
def installable(self): def installable(self):
return not self.opts.no_install() or self.staging() return not self.opts.no_install() and self.installing()
def staging(self): def staging(self):
return not self.installing() return not self.installing()
@@ -436,7 +436,7 @@ class buildset:
# If installing switch to staging. Not sure if this is still # If installing switch to staging. Not sure if this is still
# needed. # needed.
# #
if self.installing(): if nesting_count > 1 and self.installing():
self.macros['install_mode'] = 'staging' self.macros['install_mode'] = 'staging'
try: try:
@@ -538,10 +538,10 @@ class buildset:
# #
# Installing or staging ... # 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(), (nesting_count, self.install_mode(),
deps is None, self.opts.no_install())) 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(), (nesting_count, self.install_mode(),
', '.join([b.name() for b in builds]))) ', '.join([b.name() for b in builds])))
if deps is None and not have_errors: if deps is None and not have_errors:
@@ -551,10 +551,9 @@ class buildset:
if b.installable(): if b.installable():
prefix = b.config.expand('%{_prefix}') prefix = b.config.expand('%{_prefix}')
buildroot = path.join(b.config.expand('%{buildroot}'), prefix) buildroot = path.join(b.config.expand('%{buildroot}'), prefix)
if self.staging(): self.install('staging', b.name(), buildroot, b.config.expand('%{stagingroot}'))
prefix = b.config.expand('%{stagingroot}')
if self.installable(): if self.installable():
self.install(self.install_mode(), b.name(), buildroot, prefix) self.install('installing', b.name(), buildroot, prefix)
# #
# Sizes ... # Sizes ...
# #
@@ -610,7 +609,7 @@ class buildset:
# #
# If builds have been staged install into the final prefix. # 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}') stagingroot = macro_expand(self.macros, '%{stagingroot}')
have_stagingroot = path.exists(stagingroot) have_stagingroot = path.exists(stagingroot)
do_install = not self.opts.no_install() do_install = not self.opts.no_install()