[Toaster] [review-request][PATCH] buildinfohelper: unset brbe variable when build finishes
Michael Wood
michael.g.wood at intel.com
Wed Feb 10 10:36:21 PST 2016
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 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