buildstream-migration / bst-staging

GNU Lesser General Public License v2.1
0 stars 0 forks source link

Buildstream should provide a way to define an API for embedding targets #1353

Open Cynical-Optimist opened 3 years ago

Cynical-Optimist commented 3 years ago

See original issue on GitLab In GitLab by [Gitlab user @tcanabrava] on Jul 8, 2020, 11:18

Currently if you are using buildstream with a imported target, eg. freedesktop-sdk, you need to know freedesktop-sdk internals to use a package from it in your project.

See this excerpt from the port of KDE's Dolphin to buildstream:

- filename: public-stacks/buildsystem-cmake.bst
  junction: freedesktop-sdk.bst
  type: build
- filename: components/curl.bst
  junction: freedesktop-sdk.bst
- filename: platform.bst
  junction: kf5.bst
- filename: kf5/Not-in-manifest/baloo.bst
  junction: kf5.bst

To do this port I had download freedekstop-sdk, create a junction named freedesktop-sdk.bst, setup this junction, but I also had to download the sources of the original freedekstop-sdk defined in my junction just to find out where the cmake.bst and curl.bst are inside of the folder hierarchy. and the kf5/Not-in-manifest/baloo.bst.

We need a way to export the importable targets that offers API Stability, so when we move files in a project, we don't break others. Bonus point if we can export documentation from a bst tree so it's easy to import / use the specific in your own project.

Cynical-Optimist commented 3 years ago

In GitLab by [Gitlab user @tristanvb] on Jul 8, 2020, 12:47

marked this issue as related to #1356

Cynical-Optimist commented 3 years ago

In GitLab by [Gitlab user @tristanvb] on Jul 8, 2020, 12:51

This is quite related to your similar issue #1356, linking these.

We need a way to export the importable targets that offers API Stability, so when we move files in a project, we don't break others. Bonus point if we can export documentation from a bst tree so it's easy to import / use the specific in your own project.

We agree on this, as mentioned in #1356, I'm not convinced that this should be BuildStream's job to define what is part of the stable API of a given project, and would expect freedesktop-sdk to be pioneering the space of defining sane conventions (like possibly using _ prefixes or private/ subdirectories to delineate what is public and private).

Cynical-Optimist commented 3 years ago

In GitLab by [Gitlab user @tristanvb] on Jul 8, 2020, 13:08

To do this port I had download freedekstop-sdk, create a junction named freedesktop-sdk.bst, setup this junction, but I also had to download the sources of the original freedekstop-sdk defined in my junction just to find out where the cmake.bst and curl.bst are inside of the folder hierarchy.

A bit off topic for the issue but I should point out that opening a workspace on a junction element is very useful (these are my favorite workspaces :D):

bst workspace open freedesktop-sdk.bst