Common makefile (gasp) stuff

Rikki Cattermole via Digitalmars-d digitalmars-d at puremagic.com
Wed Jan 14 15:14:44 PST 2015


On Wednesday, 14 January 2015 at 20:07:12 UTC, Andrei 
Alexandrescu wrote:
> On 1/14/15 8:50 AM, Mathias LANG wrote:
>> IMO helpers (such as git helpers) are not part of the build 
>> process, so
>> they should not be part of the build files. Few people care 
>> about make
>> rebase. I'm not saying we should delete them (they obviously 
>> are useful
>> to you), but moving them to tools might be a good start.
>
> This is about scaling up and passing responsibility around. I 
> could write a script and then tell whoever maintains dlang.org 
> "first run that script then run make" etc.
>
> With make it turns out it's dead simple to get parallel rebase 
> going:
>
> REBASE = git pull upstream master --rebase
>
> rebase: rebase-dlang rebase-dmd rebase-druntime rebase-phobos
> rebase-dlang: ; $(REBASE)
> rebase-dmd: ; cd $(DMD_DIR) && $(REBASE)
> rebase-druntime: ; cd $(DRUNTIME_DIR) && $(REBASE)
> rebase-phobos: ; cd $(PHOBOS_DIR) && $(REBASE)
>
> So I'm done in 6 lines and it's parallel automatically, no code 
> needed. With zsh I'd probably go (untested)...
>
> ===========================
> #/bin/zsh
> set -e
>
> function rebase() {
>   ( cd $1 && git pull upstream master --rebase )
> }
>
> rebase . &&
> rebase ../dmd &&
> rebase ../druntime &&
> rebase ../phobos &&
>
> wait
> ===========================
>
> But wait, there's less. The script:
>
> * does not return nonzero if either subtask fails - and doing 
> so needs e.g. temporary files and takes extra code. So I need 
> to carefully look at the textual garbled output to make sure it 
> all works.
>
> * does not accept setting variables DMD_DIR etc. It can be made 
> to, but that's yet more code.
>
> * cannot run serially if I want to debug something, only 
> parallel. It can be made do, but that's again more code!
>
> So we're looking at an ideological response "don't use make, 
> make sucks" to a pragmatic matter - I want to get work done, 
> and we shouldn't use inferior/more intensive technical 
> solutions on an ideological basis alone. I agree make sucks! 
> But that doesn't suddenly eliminate my common sense.
>
>> For druntime / phobos build... That's really a shame we don't 
>> have a
>> standard D tool to build D code, cross platform.
>> If we had, not only would we promote an even saner image of 
>> our tooling
>> ('hey look, dogfooding'), we won't have to solve the same 
>> problems over
>> and over again, so both druntime / phobos and the tool would 
>> benefit
>> from this, but ofc it will require some initial work.
>> If someone wants to get this project started, I have a 
>> suggestion for
>> the name: dub
>>
>> Okay, sarcasms appart, would that be a possibility for us to 
>> switch to
>> dub in the long run ? I'm not sure dub is ready for that ATM, 
>> but I'm
>> confident it could be made ready without much work.
>
> I'd be glad to switch to dub but I confess at this time I can't 
> invest the time. I'm already spread too thin.
>
>
> Andrei

So a dub file for phobos is needed? And maybe druntime too? I'll 
see what I can do.


More information about the Digitalmars-d mailing list