Allow specifying element-plugin-wise default dependencies
- 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/1061)
In GitLab by [[Gitlab user @tlater]](https://gitlab.com/tlater) on Jun 28, 2019, 17:23
## Background
[//]: # (Provide a background or the root/source that justifies this task or action.)
The topic was discussed on the [mailing list](https://mail.gnome.org/archives/buildstream-list/2019-June/msg00015.html) last month - quick summary here:
It's annoying that we have to specify every dependency explicitly. Often, a certain type of build element will require an element from somewhere in the project throughout everything else, so we end up with a `autotools.bst` that's simply repeated everywhere.
This is a bit verbose, so we want to extend our composition format to allow specifying base dependencies for a plugin type on a project-wide level. The way we want to go about this is to add `project.conf` configuration to define this like so:
```yaml
elements:
autotools:
- autotools.bst
```
Element dependency syntax is then adjusted to *append* to the default list of elements, allowing us to more concisely define "default" dependencies.
## Task description
[//]: # (Short summary of the action to be executed)
* [ ] Make element dependencies part of YAML composition
* [ ] Introduce default dependency syntax
## Acceptance Criteria
[//]: # (Acceptance criteria should follow the S.M.A.R.T. principle https://en.wikipedia.org/wiki/SMART_criteria )
It is possible to define default dependencies for plugins on a project-level.
----
[//]: # (To review information about possible relevant labels for this issue please view the list of labels: https://gitlab.com/BuildStream/buildstream/labels)
Contributor guide
Research direction
Start by reading the project.conf configuration and YAML composition areas described in the issue, then trace how element dependencies are parsed. The work is done when a project can define plugin-specific default dependencies and element declarations append their own dependencies to those defaults.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, yaml
- Domain
- build-system
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100