www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - D infrastructure: make/cmake -> Meson ?

reply Denis Feklushkin <feklushkin.denis gmail.com> writes:
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
Mar 17 2020
next sibling parent reply "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
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
Mar 17 2020
parent reply Denis Feklushkin <feklushkin.denis gmail.com> writes:
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.
Mar 17 2020
parent reply Ben Jones <fake fake.fake> writes:
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.
Mar 17 2020
parent reply Denis Feklushkin <feklushkin.denis gmail.com> writes:
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.
Mar 17 2020
parent reply MoonlightSentinel <moonlightsentinel disroot.org> writes:
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.
Mar 17 2020
parent MoonlightSentinel <moonlightsentinel disroot.org> writes:
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
Mar 17 2020
prev sibling parent reply Mathias Lang <pro.mathias.lang gmail.com> writes:
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.
Mar 17 2020
next sibling parent Denis Feklushkin <feklushkin.denis gmail.com> writes:
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/3115922a933b7a00a85e11
d1ebb18529f3919cb), 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.
Mar 17 2020
prev sibling parent Denis Feklushkin <feklushkin.denis gmail.com> writes:
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?
Mar 18 2020