dub -> meson

Petar Petar
Wed Apr 17 06:43:35 UTC 2019


On Tuesday, 16 April 2019 at 16:42:24 UTC, H. S. Teoh wrote:
> On Tue, Apr 16, 2019 at 06:13:30AM +0000, JN via Digitalmars-d 
> wrote: [...]
>
> What we really need is a dub replacement that has a different, 
> more flexible design that can accomodate things that people 
> want to do, that the current dub simply cannot due to its 
> design limitations.  There are some promising ideas in the 
> other thread about improving dub, and I hope that discussion 
> will eventually lead to a redesign / revamp of dub that makes 
> it more viable for my use case.
>
>
> T

IMO, the best course of action is:
1.0. Create a generic foundation based on DAG for describing 
targets and their relations.
This can start as a completely independent project with zero 
dependencies.

1.1. On top of this core functionality we can add an 
interoperability layer that allows exporting this abstract 
representation to other build system formats.

1.2. We can reuse the existing build systems written in D as a 
build backend.

2.0. Integrate the new build system foundation in Dub 2.0:

2.1 Replace dub's current execution code with this new core while 
keeping backwards compatibility with existing dub projects

2.2 `dub build` consists of two general steps: 1) fetching 
dependencies 2) building each project in the set { 
dependencies..., top-level project } in topological order. (Of 
course there are many other (sub)steps, which I'm mentioning here 
for simplicity.) Now that in 2.1 we replaced Dub's existing 
execution code with the new build foundation we have the option 
to not execute those steps directly, but instead use Dub as a 
meta build-system which can generate build description for other 
build systems to execute.

2.3 Allow describing complex builds based on the foundation 
layer. This can be done either declaratively, directly in 
dub.json / dub.sdl, or dub can call to a D script that generates 
a JSON describing the build dependencies that the core described 
in 1.1 can read.

What do you think? Are you willing to help with the design and/or 
implemention on this initiative?


More information about the Digitalmars-d mailing list