Dont run configure commands more than once for incremental workspace builds

These are the steps that were identified in order for us to be able to skip configure-commands in case of workspaced builds. These steps also include slight refactoring of how workspaces work in general:

  • Make workspaces element-wide (at present we have per-source workspaces): !257 (closed)
  • Update .workspaces.yml format to include version numbers and make it more extensible, similar to changes proposed in !191 (closed). Update: now complete, see !313 (merged)
  • Add new element.prepare() method (that defaults to pass). BuildElement can override it by running configure-commands in this step.
  • BuildStream should call element.prepare() unless its a workspace build and prepare hasn't run before
  • Early exit in cases where we don't support .workspaces.yml format, introduced in step 2.
Edited by Tristan Maat