apache / apache/buildstream

Allow specifying element-plugin-wise default dependencies

Open
#1,061 4 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.