* [review-request][PATCH] buildinfohelper: unset brbe variable when build finishes
@ 2016-02-03 12:54 Elliot Smith
2016-02-04 11:29 ` Barros Pena, Belen
0 siblings, 1 reply; 3+ messages in thread
From: Elliot Smith @ 2016-02-03 12:54 UTC (permalink / raw)
To: toaster
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]
Signed-off-by: Elliot Smith <elliot.smith@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.
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [review-request][PATCH] buildinfohelper: unset brbe variable when build finishes
2016-02-03 12:54 [review-request][PATCH] buildinfohelper: unset brbe variable when build finishes Elliot Smith
@ 2016-02-04 11:29 ` Barros Pena, Belen
2016-02-10 18:36 ` Michael Wood
0 siblings, 1 reply; 3+ messages in thread
From: Barros Pena, Belen @ 2016-02-04 11:29 UTC (permalink / raw)
To: Smith, Elliot, toaster@yoctoproject.org
On 03/02/2016 12:54, "toaster-bounces@yoctoproject.org on behalf of Elliot
Smith" <toaster-bounces@yoctoproject.org on behalf of
elliot.smith@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@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@yoctoproject.org
>https://lists.yoctoproject.org/listinfo/toaster
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [review-request][PATCH] buildinfohelper: unset brbe variable when build finishes
2016-02-04 11:29 ` Barros Pena, Belen
@ 2016-02-10 18:36 ` Michael Wood
0 siblings, 0 replies; 3+ messages in thread
From: Michael Wood @ 2016-02-10 18:36 UTC (permalink / raw)
To: toaster
Thanks sent upstream and to toaster-next
Michael
On 04/02/16 11:29, Barros Pena, Belen wrote:
>
> On 03/02/2016 12:54, "toaster-bounces@yoctoproject.org on behalf of Elliot
> Smith" <toaster-bounces@yoctoproject.org on behalf of
> elliot.smith@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@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@yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/toaster
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-02-10 18:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-03 12:54 [review-request][PATCH] buildinfohelper: unset brbe variable when build finishes Elliot Smith
2016-02-04 11:29 ` Barros Pena, Belen
2016-02-10 18:36 ` Michael Wood
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.