Stack trace when integrating a local plugin

Summary

A stack trace is produced when trying to build with a local plugin installed.

Steps to reproduce

Install collect_manifest.bst from bst-external

What is the current bug behavior?

Produces a stack trace.

What is the expected correct behavior?

Fail with a helpful error message

Relevant logs and/or screenshots

Failure Summary
  platform-manifest.bst:
    [00:00:01][06efeae7][build:platform-manifest.bst         ] BUG     Build

        An unhandled exception occured:

        Traceback (most recent call last):
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_scheduler/jobs/job.py", line 415, in _child_action
            result = self.child_process()
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_scheduler/jobs/elementjob.py", line 94, in child_process
            return self._action_cb(self._element)
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_scheduler/queues/buildqueue.py", line 35, in process
            return element._assemble()
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/element.py", line 1498, in _assemble
            collect = self.assemble(sandbox)
          File "/home/adds68/git-repos/freedesktop-sdk/plugins/elements/collect_manifest.py", line 145, in assemble
            self.set_public_data('cpe-manifest', manifest)
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/element.py", line 855, in set_public_data
            data = _yaml.node_copy(data)
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 1082, in node_copy
            copy[key] = list_copy(value)
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 1097, in list_copy
            copy.append(node_copy(item))
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 1080, in node_copy
            copy[key] = node_copy(value)
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 1084, in node_copy
            copy[key] = value.clone()
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 105, in clone
            for member_name, member in self.members.items()
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 105, in <dictcomp>
            for member_name, member in self.members.items()
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 130, in clone
            provenance.elements = [e.clone() for e in self.elements]
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 130, in <listcomp>
            provenance.elements = [e.clone() for e in self.elements]
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 155, in clone
            provenance.elements = [e.clone for e in self.elements]
          File "/home/adds68/.local/lib/python3.7/site-packages/buildstream/_yaml.py", line 155, in <listcomp>
            provenance.elements = [e.clone for e in self.elements]
        AttributeError: 'function' object has no attribute 'clone'

Possible fixes

Other relevant information

.bst file where is fails

kind: collect_manifest

config:
  path: "%{prefix}/manifest.json"

depends:
  - filename: desktop-platform.bst
    type: build
  - filename: bootstrap-manifest.bst
    junction: bootstrap-junction.bst
    type: build
  • BuildStream version affected: /milestone %BuildStream_v1.2.3