[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