diff options
author | Elliot Smith <elliot.smith@intel.com> | 2016-02-10 18:34:10 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-02-11 22:34:19 +0000 |
commit | 1f7f07746629a55e4efd5f505e84eb6c66567115 (patch) | |
tree | 210b0ddd930a41666c0960ce15554d26fbf5f5d6 | |
parent | 9a6cb10d4a611ed64700f9e9240c2958db7e2234 (diff) | |
download | poky-1f7f07746629a55e4efd5f505e84eb6c66567115.tar.gz |
bitbake: buildinfohelper: unset brbe variable when build finishes
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]
(Bitbake rev: 4a6a8d0074f62208d843b06344be31ae73d9b745)
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 19 | ||||
-rw-r--r-- | bitbake/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 c049b4a150..81abede803 100644 --- a/bitbake/lib/bb/ui/buildinfohelper.py +++ b/bitbake/lib/bb/ui/buildinfohelper.py | |||
@@ -832,8 +832,13 @@ class BuildInfoHelper(object): | |||
832 | self.orm_wrapper = ORMWrapper() | 832 | self.orm_wrapper = ORMWrapper() |
833 | self.has_build_history = has_build_history | 833 | self.has_build_history = has_build_history |
834 | self.tmp_dir = self.server.runCommand(["getVariable", "TMPDIR"])[0] | 834 | self.tmp_dir = self.server.runCommand(["getVariable", "TMPDIR"])[0] |
835 | self.brbe = self.server.runCommand(["getVariable", "TOASTER_BRBE"])[0] | 835 | |
836 | self.project = self.server.runCommand(["getVariable", "TOASTER_PROJECT"])[0] | 836 | # this is set for Toaster-triggered builds by localhostbecontroller |
837 | # via toasterui | ||
838 | self.brbe = None | ||
839 | |||
840 | self.project = None | ||
841 | |||
837 | logger.debug(1, "buildinfohelper: Build info helper inited %s" % vars(self)) | 842 | logger.debug(1, "buildinfohelper: Build info helper inited %s" % vars(self)) |
838 | 843 | ||
839 | 844 | ||
@@ -843,8 +848,6 @@ class BuildInfoHelper(object): | |||
843 | 848 | ||
844 | def _get_build_information(self, build_log_path): | 849 | def _get_build_information(self, build_log_path): |
845 | build_info = {} | 850 | build_info = {} |
846 | # Generate an identifier for each new build | ||
847 | |||
848 | build_info['machine'] = self.server.runCommand(["getVariable", "MACHINE"])[0] | 851 | build_info['machine'] = self.server.runCommand(["getVariable", "MACHINE"])[0] |
849 | build_info['distro'] = self.server.runCommand(["getVariable", "DISTRO"])[0] | 852 | build_info['distro'] = self.server.runCommand(["getVariable", "DISTRO"])[0] |
850 | build_info['distro_version'] = self.server.runCommand(["getVariable", "DISTRO_VERSION"])[0] | 853 | build_info['distro_version'] = self.server.runCommand(["getVariable", "DISTRO_VERSION"])[0] |
@@ -853,9 +856,7 @@ class BuildInfoHelper(object): | |||
853 | build_info['cooker_log_path'] = build_log_path | 856 | build_info['cooker_log_path'] = build_log_path |
854 | build_info['build_name'] = self.server.runCommand(["getVariable", "BUILDNAME"])[0] | 857 | build_info['build_name'] = self.server.runCommand(["getVariable", "BUILDNAME"])[0] |
855 | build_info['bitbake_version'] = self.server.runCommand(["getVariable", "BB_VERSION"])[0] | 858 | build_info['bitbake_version'] = self.server.runCommand(["getVariable", "BB_VERSION"])[0] |
856 | build_info['brbe'] = self.server.runCommand(["getVariable", "TOASTER_BRBE"])[0] | ||
857 | build_info['project'] = self.project = self.server.runCommand(["getVariable", "TOASTER_PROJECT"])[0] | 859 | build_info['project'] = self.project = self.server.runCommand(["getVariable", "TOASTER_PROJECT"])[0] |
858 | |||
859 | return build_info | 860 | return build_info |
860 | 861 | ||
861 | def _get_task_information(self, event, recipe): | 862 | def _get_task_information(self, event, recipe): |
@@ -967,7 +968,6 @@ class BuildInfoHelper(object): | |||
967 | build_information = self._get_build_information(build_log_path) | 968 | build_information = self._get_build_information(build_log_path) |
968 | 969 | ||
969 | # Update brbe and project as they can be changed for every build | 970 | # Update brbe and project as they can be changed for every build |
970 | self.brbe = build_information['brbe'] | ||
971 | self.project = build_information['project'] | 971 | self.project = build_information['project'] |
972 | 972 | ||
973 | build_obj = self.orm_wrapper.create_build_object(build_information, self.brbe, self.project) | 973 | build_obj = self.orm_wrapper.create_build_object(build_information, self.brbe, self.project) |
@@ -1487,3 +1487,8 @@ class BuildInfoHelper(object): | |||
1487 | 1487 | ||
1488 | if not connection.features.autocommits_when_autocommit_is_off: | 1488 | if not connection.features.autocommits_when_autocommit_is_off: |
1489 | transaction.set_autocommit(True) | 1489 | transaction.set_autocommit(True) |
1490 | |||
1491 | # unset the brbe; this is to prevent subsequent command-line builds | ||
1492 | # being incorrectly attached to the previous Toaster-triggered build; | ||
1493 | # see https://bugzilla.yoctoproject.org/show_bug.cgi?id=9021 | ||
1494 | self.brbe = None | ||
diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py index a7db1efc65..efd82c325b 100644 --- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py +++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py | |||
@@ -308,12 +308,17 @@ class LocalhostBEController(BuildEnvironmentController): | |||
308 | # get the bb server running with the build req id and build env id | 308 | # get the bb server running with the build req id and build env id |
309 | bbctrl = self.getBBController() | 309 | bbctrl = self.getBBController() |
310 | 310 | ||
311 | # set variables | 311 | # set variables; TOASTER_BRBE is not set on the server, as this |
312 | # causes events from command-line builds to be attached to the last | ||
313 | # Toaster-triggered build; instead, TOASTER_BRBE is fired as an event so | ||
314 | # that toasterui can set it on the buildinfohelper; | ||
315 | # see https://bugzilla.yoctoproject.org/show_bug.cgi?id=9021 | ||
312 | for var in variables: | 316 | for var in variables: |
313 | bbctrl.setVariable(var.name, var.value) | ||
314 | if var.name == 'TOASTER_BRBE': | 317 | if var.name == 'TOASTER_BRBE': |
315 | bbctrl.triggerEvent('bb.event.MetadataEvent("SetBRBE", "%s")' \ | 318 | bbctrl.triggerEvent('bb.event.MetadataEvent("SetBRBE", "%s")' \ |
316 | % var.value) | 319 | % var.value) |
320 | else: | ||
321 | bbctrl.setVariable(var.name, var.value) | ||
317 | 322 | ||
318 | # Add 'toaster' and 'buildhistory' to INHERIT variable | 323 | # Add 'toaster' and 'buildhistory' to INHERIT variable |
319 | inherit = {item.strip() for item in bbctrl.getVariable('INHERIT').split()} | 324 | inherit = {item.strip() for item in bbctrl.getVariable('INHERIT').split()} |