diff options
| -rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 23 | ||||
| -rw-r--r-- | bitbake/lib/toaster/bldcontrol/localhostbecontroller.py | 4 | ||||
| -rw-r--r-- | bitbake/lib/toaster/orm/models.py | 10 |
3 files changed, 22 insertions, 15 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py index 19ddd8e029..ae2ac9fee5 100644 --- a/bitbake/lib/bb/ui/buildinfohelper.py +++ b/bitbake/lib/bb/ui/buildinfohelper.py | |||
| @@ -270,15 +270,28 @@ class ORMWrapper(object): | |||
| 270 | else: | 270 | else: |
| 271 | # we are under managed mode; we must match the layer used in the Project Layer | 271 | # we are under managed mode; we must match the layer used in the Project Layer |
| 272 | from bldcontrol.models import BuildEnvironment, BuildRequest | 272 | from bldcontrol.models import BuildEnvironment, BuildRequest |
| 273 | br, be = brbe.split(":") | 273 | br_id, be_id = brbe.split(":") |
| 274 | 274 | ||
| 275 | buildrequest = BuildRequest.objects.get(pk = br) | 275 | # find layer by checkout path; |
| 276 | from bldcontrol import bbcontroller | ||
| 277 | bc = bbcontroller.getBuildEnvironmentController(pk = be_id) | ||
| 276 | 278 | ||
| 277 | # we might have a race condition here, as the project layers may change between the build trigger and the actual build execution | 279 | # we might have a race condition here, as the project layers may change between the build trigger and the actual build execution |
| 278 | # but we can only match on the layer name, so the worst thing can happen is a mis-identification of the layer, not a total failure | 280 | # but we can only match on the layer name, so the worst thing can happen is a mis-identification of the layer, not a total failure |
| 279 | layer_object = buildrequest.project.projectlayer_set.get(layercommit__layer__name=layer_information['name']).layercommit.layer | ||
| 280 | 281 | ||
| 281 | return layer_object | 282 | from pprint import pformat |
| 283 | # note that this is different | ||
| 284 | buildrequest = BuildRequest.objects.get(pk = br_id) | ||
| 285 | for brl in buildrequest.brlayer_set.all(): | ||
| 286 | localdirname = os.path.join(bc.getGitCloneDirectory(brl.giturl, brl.commit), brl.dirpath) | ||
| 287 | logger.warn("Matched %s to BRlayer %s" % (pformat(layer_information["local_path"]), localdirname)) | ||
| 288 | if localdirname.startswith(layer_information['local_path']): | ||
| 289 | # we matched the BRLayer, but we need the layer_version that generated this BR; reverse of the Project.schedule_build() | ||
| 290 | for pl in buildrequest.project.projectlayer_set.filter(layercommit__layer__name = brl.name): | ||
| 291 | if pl.layercommit.layer.vcs_url == brl.giturl : | ||
| 292 | return pl.layercommit.layer | ||
| 293 | |||
| 294 | raise Exception("Unidentified layer %s" % pformat(layer_information)) | ||
| 282 | 295 | ||
| 283 | 296 | ||
| 284 | def save_target_file_information(self, build_obj, target_obj, filedata): | 297 | def save_target_file_information(self, build_obj, target_obj, filedata): |
| @@ -683,7 +696,7 @@ class BuildInfoHelper(object): | |||
| 683 | 696 | ||
| 684 | # Heuristics: we match the path to where the layers have been checked out | 697 | # Heuristics: we match the path to where the layers have been checked out |
| 685 | for brl in sorted(BuildRequest.objects.get(pk = br_id).brlayer_set.all(), reverse = True, key = _slkey_managed): | 698 | for brl in sorted(BuildRequest.objects.get(pk = br_id).brlayer_set.all(), reverse = True, key = _slkey_managed): |
| 686 | localdirname = os.path.join(os.path.join(bc.be.sourcedir, bc.getGitCloneDirectory(brl.giturl, brl.commit)), brl.dirpath) | 699 | localdirname = os.path.join(bc.getGitCloneDirectory(brl.giturl, brl.commit), brl.dirpath) |
| 687 | if path.startswith(localdirname): | 700 | if path.startswith(localdirname): |
| 688 | #logger.warn("-- managed: matched path %s with layer %s " % (path, localdirname)) | 701 | #logger.warn("-- managed: matched path %s with layer %s " % (path, localdirname)) |
| 689 | # we matched the BRLayer, but we need the layer_version that generated this br | 702 | # we matched the BRLayer, but we need the layer_version that generated this br |
diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py index 25ce0522b5..aef9b60cba 100644 --- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py +++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py | |||
| @@ -180,7 +180,7 @@ class LocalhostBEController(BuildEnvironmentController): | |||
| 180 | base = components[-2] if components[-1] == "git" else components[-1] | 180 | base = components[-2] if components[-1] == "git" else components[-1] |
| 181 | 181 | ||
| 182 | if branch != "HEAD": | 182 | if branch != "HEAD": |
| 183 | return "_%s_%s.toaster_cloned" % (base, branch) | 183 | return os.path.join(self.be.sourcedir, "_%s_%s.toaster_cloned" % (base, branch)) |
| 184 | 184 | ||
| 185 | 185 | ||
| 186 | # word of attention; this is a localhost-specific issue; only on the localhost we expect to have "HEAD" releases | 186 | # word of attention; this is a localhost-specific issue; only on the localhost we expect to have "HEAD" releases |
| @@ -239,7 +239,7 @@ class LocalhostBEController(BuildEnvironmentController): | |||
| 239 | 239 | ||
| 240 | # 3. checkout the repositories | 240 | # 3. checkout the repositories |
| 241 | for giturl, commit in gitrepos.keys(): | 241 | for giturl, commit in gitrepos.keys(): |
| 242 | localdirname = os.path.join(self.be.sourcedir, self.getGitCloneDirectory(giturl, commit)) | 242 | localdirname = self.getGitCloneDirectory(giturl, commit) |
| 243 | logger.debug("localhostbecontroller: giturl %s:%s checking out in current directory %s" % (giturl, commit, localdirname)) | 243 | logger.debug("localhostbecontroller: giturl %s:%s checking out in current directory %s" % (giturl, commit, localdirname)) |
| 244 | 244 | ||
| 245 | # make sure our directory is a git repository | 245 | # make sure our directory is a git repository |
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index 4d1dcbc9f3..80e6d9288c 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py | |||
| @@ -195,14 +195,8 @@ class Project(models.Model): | |||
| 195 | dirpath = self.bitbake_version.dirpath) | 195 | dirpath = self.bitbake_version.dirpath) |
| 196 | 196 | ||
| 197 | for l in self.projectlayer_set.all().order_by("pk"): | 197 | for l in self.projectlayer_set.all().order_by("pk"): |
| 198 | commit = l.layercommit.commit | 198 | commit = l.layercommit.get_vcs_reference() |
| 199 | print("ii Building layer ", l.layercommit.layer.name, " at commit ", commit) | 199 | print("ii Building layer ", l.layercommit.layer.name, " at vcs point ", commit) |
| 200 | if l.layercommit.up_branch: | ||
| 201 | commit = l.layercommit.up_branch.name | ||
| 202 | print("ii Building layer ", l.layercommit.layer.name, " at upbranch ", commit) | ||
| 203 | if l.layercommit.branch: | ||
| 204 | commit = l.layercommit.branch | ||
| 205 | print("ii Building layer ", l.layercommit.layer.name, " at actual_branch ", commit) | ||
| 206 | BRLayer.objects.create(req = br, name = l.layercommit.layer.name, giturl = l.layercommit.layer.vcs_url, commit = commit, dirpath = l.layercommit.dirpath) | 200 | BRLayer.objects.create(req = br, name = l.layercommit.layer.name, giturl = l.layercommit.layer.vcs_url, commit = commit, dirpath = l.layercommit.dirpath) |
| 207 | for t in self.projecttarget_set.all(): | 201 | for t in self.projecttarget_set.all(): |
| 208 | BRTarget.objects.create(req = br, target = t.target, task = t.task) | 202 | BRTarget.objects.create(req = br, target = t.target, task = t.task) |
