apache / apache/buildstream

Plugin type to allow multiple elements to be declared in a single .bst file

Open
#1,327 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
140
Forks
45
Avg merge
1d 3h
Merged PRs (30d)
6

Description

[See original issue on GitLab](https://gitlab.com/BuildStream/buildstream/-/issues/1327)
In GitLab by [[Gitlab user @tristanvb]](https://gitlab.com/tristanvb) on May 28, 2020, 11:40

In order to support reusability of more advanced constructs, we need a way to support express multiple elements in a single `.bst` file, so far the best idea for this is to introduce a new `Plugin` subclass allowing third parties to implement a `Composite` plugin type (or a differently named thing), which has it's own YAML configuration surface and allows expressing multiple elements which might have implied dependency relationships with one another.

This was discussed [a long time ago](https://mail.gnome.org/archives/buildstream-list/2018-October/msg00077.html) in the context of *"testing elements"*, and elaborated in a Manchester BeaverCon, and has recently been [brought up again](https://mail.gnome.org/archives/buildstream-list/2020-May/msg00016.html).

Note that this is on the `2.0` milestone list for now but can be removed from the milestone:

* If a well thought out proposal is brought to the mailing list and linked to this issue
* If it is agreed that an implementation of the proposal is both suitable, and can be done without breaking API.

Contributor guide

Open the contributing guide

Research direction

Start with the linked GitLab issue and the referenced mailing-list discussions from October 2018 and May 2020. Develop a concrete proposal for a Plugin subclass that can express multiple elements and their implied dependencies, then seek agreement that the design is suitable and does not break the API; an accepted proposal or implementation would define done.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.