Thread overview
D infrastructure: make/cmake -> Meson ?
Mar 17
Ben Jones
March 17
Hi!

Will community accept PRs for switching build of druntime, Phobos, maybe DMD and maybe LDC from make/cmake to Meson build system?

An important condition: current build system should be abandoned immediately after sucessful testing of new build system. This should not be a parallel existence of several build systems, because it will not give any advantages but will strengthen disadvantages.

Related:
https://forum.dlang.org/post/oyuxvperqmddgndvmlyx@forum.dlang.org

March 17
On Tue, Mar 17, 2020 at 05:53:46PM +0000, Denis Feklushkin via Digitalmars-d wrote:
> Hi!
> 
> Will community accept PRs for switching build of druntime, Phobos, maybe DMD and maybe LDC from make/cmake to Meson build system?
[...]

The problem with replacement build systems is that everyone agrees that `make` sux, but everyone has a different opinion about what's the best replacement.  So while I applaud the effort to abandon make, unless you can get unanimous agreement on which replacement build system to use, it's probably not going to happen.  Unfortunately.


T

-- 
The fact that anyone still uses AOL shows that even the presence of options doesn't stop some people from picking the pessimal one. - Mike Ellis
March 17
On Tuesday, 17 March 2020 at 18:14:50 UTC, H. S. Teoh wrote:
> On Tue, Mar 17, 2020 at 05:53:46PM +0000, Denis Feklushkin via Digitalmars-d wrote:
>> Hi!
>> 
>> Will community accept PRs for switching build of druntime, Phobos, maybe DMD and maybe LDC from make/cmake to Meson build system?
> [...]
>
> The problem with replacement build systems is that everyone agrees that `make` sux, but everyone has a different opinion about what's the best replacement.  So while I applaud the effort to abandon make, unless you can get unanimous agreement on which replacement build system to use, it's probably not going to happen.  Unfortunately.

Strictly, Meson can use make to build, so, make will be presented, but its role will be decreased.

The current situation with make is dead end: everyone sees that there is a lot of copy-pasted code inside of make scripts, but no one wants to deal with it. I believe that this suggests that it is time to get rid of make.

Against cmake community "voted": if we would have liked cmake it would already have been merged from LDC branches.

March 17
On Tuesday, 17 March 2020 at 18:21:43 UTC, Denis Feklushkin wrote:
> On Tuesday, 17 March 2020 at 18:14:50 UTC, H. S. Teoh wrote:
>> On Tue, Mar 17, 2020 at 05:53:46PM +0000, Denis Feklushkin via Digitalmars-d wrote:
>>> Hi!
>>> 
>>> Will community accept PRs for switching build of druntime, Phobos, maybe DMD and maybe LDC from make/cmake to Meson build system?
>> [...]
>>
>> The problem with replacement build systems is that everyone agrees that `make` sux, but everyone has a different opinion about what's the best replacement.  So while I applaud the effort to abandon make, unless you can get unanimous agreement on which replacement build system to use, it's probably not going to happen.  Unfortunately.
>
> Strictly, Meson can use make to build, so, make will be presented, but its role will be decreased.
>
> The current situation with make is dead end: everyone sees that there is a lot of copy-pasted code inside of make scripts, but no one wants to deal with it. I believe that this suggests that it is time to get rid of make.
>
> Against cmake community "voted": if we would have liked cmake it would already have been merged from LDC branches.

Most of the Makefiles from dmd have been put into build.d and I think for all targets now, the makefile just forwards to build.d.

Might be worth doing something similar for druntime?  Seems easiest to convince people here to switch to D rather than something else.
March 17
On Tuesday, 17 March 2020 at 19:07:53 UTC, Ben Jones wrote:

>> Strictly, Meson can use make to build, so, make will be presented, but its role will be decreased.
>>
>> The current situation with make is dead end: everyone sees that there is a lot of copy-pasted code inside of make scripts, but no one wants to deal with it. I believe that this suggests that it is time to get rid of make.
>>
>> Against cmake community "voted": if we would have liked cmake it would already have been merged from LDC branches.
>
> Most of the Makefiles from dmd have been put into build.d and I think for all targets now, the makefile just forwards to build.d.
>
> Might be worth doing something similar for druntime?  Seems easiest to convince people here to switch to D rather than something else.

Mmmm. build.d contains 1692 lines of code...

By the way, I think it will be more productive to rewrite Meson whole on D.
March 17
On Tuesday, 17 March 2020 at 19:14:07 UTC, Denis Feklushkin wrote:
> Mmmm. build.d contains 1692 lines of code...

To put this in perspective:

The actual target definitions need <500 LOC (comments included) and work for Posix + Windows.

March 17
On Tuesday, 17 March 2020 at 19:43:48 UTC, MoonlightSentinel wrote:
> The actual target definitions need <500 LOC (comments included) and work for Posix + Windows.

EDIT: lines, not LOC
March 18
On Tuesday, 17 March 2020 at 17:53:46 UTC, Denis Feklushkin wrote:
> Hi!
>
> Will community accept PRs for switching build of druntime, Phobos, maybe DMD and maybe LDC from make/cmake to Meson build system?
>
> An important condition: current build system should be abandoned immediately after sucessful testing of new build system. This should not be a parallel existence of several build systems, because it will not give any advantages but will strengthen disadvantages.
>
> Related:
> https://forum.dlang.org/post/oyuxvperqmddgndvmlyx@forum.dlang.org

The community has put a lot of effort over the year to transition to `build.d` and friends. While it originally felt very NIH, it works and the situation is much better than it used to be, so I came to like it more and more. We actually ended up doing the same thing in dub a few months ago (https://github.com/dlang/dub/commit/3115922a933b7a00a85e112d1ebb18529f3919cb), and when it comes to cross-platform, it felt like a big step up. To me it seems like the contributors have already voted on this way.

Also abandoning the current build system *immediately* is out of the question. There is too much out there that depends on it. Packages, digger, other kind of tools. It's just a big nuisance for everyone involved. The benefit of switching to a (allegedly) better build system would be dwarfed by the amount of breakage it'd cause.
March 18
On Wednesday, 18 March 2020 at 05:01:24 UTC, Mathias Lang wrote:
> On Tuesday, 17 March 2020 at 17:53:46 UTC, Denis Feklushkin wrote:
>> Hi!
>>
>> Will community accept PRs for switching build of druntime, Phobos, maybe DMD and maybe LDC from make/cmake to Meson build system?
>>
>> An important condition: current build system should be abandoned immediately after sucessful testing of new build system. This should not be a parallel existence of several build systems, because it will not give any advantages but will strengthen disadvantages.
>>
>> Related:
>> https://forum.dlang.org/post/oyuxvperqmddgndvmlyx@forum.dlang.org
>
> The community has put a lot of effort over the year to transition to `build.d` and friends. While it originally felt very NIH, it works and the situation is much better than it used to be, so I came to like it more and more.

Anyway, we build it not directly but calling make with makefiles.

> We actually ended up doing the same thing in dub a few months ago (https://github.com/dlang/dub/commit/3115922a933b7a00a85e112d1ebb18529f3919cb), and when it comes to cross-platform, it felt like a big step up. To me it seems like the contributors have already voted on this way.

DUB becomes to substitute make for druntime and phobos?

> Also abandoning the current build system *immediately*

Of course we give time to maintainers. Just during this time we will forced to support two build systems and this will complicate codebase changes even more.

> is out of the question. There is too much out there that depends on it. Packages, digger, other kind of tools. It's just a big nuisance for everyone involved. The benefit of switching to a (allegedly) better build system would be dwarfed by the amount of breakage it'd cause.

Not the fact that such a breakdown will happen. As a result file Meson is able to generate a Makefile that running by usual way, but some of the targets may change their name of course, and env options also will be changed.
March 18
On Wednesday, 18 March 2020 at 05:01:24 UTC, Mathias Lang wrote:
>
> The community has put a lot of effort over the year to transition to `build.d` and friends.

This is used not for something like simplification of compiler bootstrapping?