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.