Hi all,
As recently
raised by Tristan [1], there are numerous related issues &
hanging
merge
requests revolving around improvements & new functionality
for BuildStream
workspaces.
As such it make sense to address them in a common proposal
which
hopefully
addresses & highlights any overlapping or common changes
needed to
meet the
respective goals. Tackling & grouping related requests
together also
means that
if we have to conclude that a CLI change is needed [2], then it
can
be done once
to minimise & hopefully mitigate further changes. It's also
important to
understand how any changes to the CLI could be
consumed, in the
sense of a
user (porcelain) or in automation (machine readable) so any
feedback
from those
perspectives is welcome.
Overview
========
We want to
enhance the usability of workspaces in BuildStream. This
includes
increasing
the flexibility of the existing implementation (such as
supporting
new defaults
for workspace location & names [3]), QoL changes (such as
the
ability to
use relevant bst commands inside workspaces, and bst commands
targeting
multiple elements, [4][5]) and new additions for aiding
development
&
debugging (such as cached workspaces & multiple workspaces
in shell, [6][7]).
Some of the
issues raised in the call for proposal are months old and as
such
some of the
included comments have now been rectified or made redundant; as
such
consolidation is needed.
When
reviewing the state of the tickets that extend the support for
debugging
&
development within the shell, it has been highlighted that
cached build trees
may be the
more appropriate option instead of extending workspaces. As such
it
may be more
appropriate to create a new bst command for this workflow &
consider
it outside
of this scope. Remote execution should also take advantage of
build
trees (for
failed build artifact debugging [8]) and not need any new API
changes
to
workspaces, however if there is disagreement we should capture
those changes
in this
proposal. Once a change has been developed in a workspace it
would be
desirable to
have an easy way to get this information into the respective
upstream/vcs
(or even just locally for the projects consuming it); we think
this
may need to
expand the workspace API but not change any existing features
e.g.
`bst
workspace patch create` (or a documented patch/quilt workflow)
or similar.
Proposal
========
These are
the workspace related features to be considered together:
* run bst
commands in workspace directories, including defaulting command
to
said
workspace element.
* Make
workspace creation easier.
-
Automatic names.
- Default
location.
- From
cached build.
- Make
multiple workspaces.
-
Relative paths outside of project.