[Toaster] [review-request][PATCH] buildinfohelper: unset brbe variable when build finishes
Barros Pena, Belen
belen.barros.pena at intel.com
Thu Feb 4 03:29:04 PST 2016
On 03/02/2016 12:54, "toaster-bounces at yoctoproject.org on behalf of Elliot
Smith" <toaster-bounces at yoctoproject.org on behalf of
elliot.smith at intel.com> wrote:
>The brbe variable is set on the bitbake server when the Toaster
>UI starts. This enables Toaster to associate events with the
>correct build and build environment.
>
>However, the brbe variable is also used when a build starts to
>identify whether a new build needs to be created, or an existing
>one looked up. This causes a bug for command-line builds which
>happen after a Toaster-triggered build: because the brbe variable
>is never unset on the server or the buildinfohelper, the new
>command-line build events are treated as originating from the
>previous build.
>
>Ensure the brbe variable is reset when the buildinfohelper "closes"
>a build, so that each build then either sets the brbe variable
>(Toaster-triggered builds) or leaves it blank (command-line builds).
>
>Also modify the localhostbecontroller so that the brbe variable
>is not set on the server and not looked up from the server. This
>ensures that it is only set when the triggerBuild() method is
>called, and that it remains as None for command-line builds.
>
>[YOCTO #9021]
This fixes the problem for me.
Thanks!
Belén
>
>Signed-off-by: Elliot Smith <elliot.smith at intel.com>
>---
> bitbake/lib/bb/ui/buildinfohelper.py | 19
>++++++++++++-------
> .../lib/toaster/bldcontrol/localhostbecontroller.py | 9 +++++++--
> 2 files changed, 19 insertions(+), 9 deletions(-)
>
>diff --git a/bitbake/lib/bb/ui/buildinfohelper.py
>b/bitbake/lib/bb/ui/buildinfohelper.py
>index 0cb6f68..9469cbb 100644
>--- a/bitbake/lib/bb/ui/buildinfohelper.py
>+++ b/bitbake/lib/bb/ui/buildinfohelper.py
>@@ -778,8 +778,13 @@ class BuildInfoHelper(object):
> self.orm_wrapper = ORMWrapper()
> self.has_build_history = has_build_history
> self.tmp_dir = self.server.runCommand(["getVariable",
>"TMPDIR"])[0]
>- self.brbe = self.server.runCommand(["getVariable",
>"TOASTER_BRBE"])[0]
>- self.project = self.server.runCommand(["getVariable",
>"TOASTER_PROJECT"])[0]
>+
>+ # this is set for Toaster-triggered builds by
>localhostbecontroller
>+ # via toasterui
>+ self.brbe = None
>+
>+ self.project = None
>+
> logger.debug(1, "buildinfohelper: Build info helper inited %s" %
>vars(self))
>
>
>@@ -789,8 +794,6 @@ class BuildInfoHelper(object):
>
> def _get_build_information(self, build_log_path):
> build_info = {}
>- # Generate an identifier for each new build
>-
> build_info['machine'] = self.server.runCommand(["getVariable",
>"MACHINE"])[0]
> build_info['distro'] = self.server.runCommand(["getVariable",
>"DISTRO"])[0]
> build_info['distro_version'] =
>self.server.runCommand(["getVariable", "DISTRO_VERSION"])[0]
>@@ -799,9 +802,7 @@ class BuildInfoHelper(object):
> build_info['cooker_log_path'] = build_log_path
> build_info['build_name'] =
>self.server.runCommand(["getVariable", "BUILDNAME"])[0]
> build_info['bitbake_version'] =
>self.server.runCommand(["getVariable", "BB_VERSION"])[0]
>- build_info['brbe'] = self.server.runCommand(["getVariable",
>"TOASTER_BRBE"])[0]
> build_info['project'] = self.project =
>self.server.runCommand(["getVariable", "TOASTER_PROJECT"])[0]
>-
> return build_info
>
> def _get_task_information(self, event, recipe):
>@@ -913,7 +914,6 @@ class BuildInfoHelper(object):
> build_information = self._get_build_information(build_log_path)
>
> # Update brbe and project as they can be changed for every build
>- self.brbe = build_information['brbe']
> self.project = build_information['project']
>
> build_obj =
>self.orm_wrapper.create_build_object(build_information, self.brbe,
>self.project)
>@@ -1425,3 +1425,8 @@ class BuildInfoHelper(object):
>
> if not connection.features.autocommits_when_autocommit_is_off:
> transaction.set_autocommit(True)
>+
>+ # unset the brbe; this is to prevent subsequent command-line
>builds
>+ # being incorrectly attached to the previous Toaster-triggered
>build;
>+ # see https://bugzilla.yoctoproject.org/show_bug.cgi?id=9021
>+ self.brbe = None
>diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
>b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
>index 2215d7af2..0c2dede 100644
>--- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
>+++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
>@@ -290,12 +290,17 @@ class
>LocalhostBEController(BuildEnvironmentController):
> # get the bb server running with the build req id and build env
>id
> bbctrl = self.getBBController()
>
>- # set variables
>+ # set variables; TOASTER_BRBE is not set on the server, as this
>+ # causes events from command-line builds to be attached to the
>last
>+ # Toaster-triggered build; instead, TOASTER_BRBE is fired as an
>event so
>+ # that toasterui can set it on the buildinfohelper;
>+ # see https://bugzilla.yoctoproject.org/show_bug.cgi?id=9021
> for var in variables:
>- bbctrl.setVariable(var.name, var.value)
> if var.name == 'TOASTER_BRBE':
> bbctrl.triggerEvent('bb.event.MetadataEvent("SetBRBE",
>"%s")' \
> % var.value)
>+ else:
>+ bbctrl.setVariable(var.name, var.value)
>
> # Add 'toaster' and 'buildhistory' to INHERIT variable
> inherit = {item.strip() for item in
>bbctrl.getVariable('INHERIT').split()}
>--
>Elliot Smith
>Software Engineer
>Intel OTC
>
>---------------------------------------------------------------------
>Intel Corporation (UK) Limited
>Registered No. 1134945 (England)
>Registered Office: Pipers Way, Swindon SN3 1RJ
>VAT No: 860 2173 47
>
>This e-mail and any attachments may contain confidential material for
>the sole use of the intended recipient(s). Any review or distribution
>by others is strictly prohibited. If you are not the intended
>recipient, please contact the sender and delete all copies.
>
>--
>_______________________________________________
>toaster mailing list
>toaster at yoctoproject.org
>https://lists.yoctoproject.org/listinfo/toaster
More information about the toaster
mailing list