Re: DUB build questions

2014-12-22 Thread uri via Digitalmars-d-learn
On Saturday, 20 December 2014 at 08:36:15 UTC, Russel Winder via 
Digitalmars-d-learn wrote:


On Sat, 2014-12-20 at 05:46 +, Dicebot via 
Digitalmars-d-learn wrote:
On Saturday, 20 December 2014 at 04:15:00 UTC, Rikki 
Cattermole wrote:
  b) Can I do parallel builds with dub. CMake gives me 
  Makefiles so I can

  make -j does dub have a similar option?
 
 No


Worth noting that it is not actually a dub problem as much, it 
is simply not worth adding parallel builds because separate
compilation is much much slower with existing D front-end 
implementation and even doing it in parallel is sub-optimal

compared to dump-it-all-at-once.



From previous rounds of this sort of question (for the SCons D
tooling), the consensus of the community appeared to be that 
the only
time separate module compilation was really useful was for 
mixed D, C,
C++, Fortran systems. For pure D systems, single call of the 
compiler
is deemed far better than traditional C, C++, Fortran 
compilation
strategy. This means the whole make -j thing is not an issue, 
it
just means that Dub is only really dealing with the all D 
situation.


The corollary to this is that DMD, LDC and GDC really need to 
make use
of all parallelism they can, which I suspect is more or less 
none.


Chapel has also gone the compile all modules with a single 
compiler
call strategy as this enables global optimization from source 
to

executable.



Thanks for the info everyone.


I've used dub for just on two days now and I'm hooked!

At first I was very unsure about giving up my Makefiles, being 
the build system control freak that I am, but it really shines at 
rapid development.


As for out of source builds, it is a non-issue really. I like 
running the build outside the project tree but I can use 
gitignore and targetPath. For larger projects where we need to 
manage dependencies, generate code, run SWIG etc. I'd still use 
both SCons or CMake.



Regarding parallel builds, make -j on CMake Makefiles and dub 
build feel about the same, and that's all I care about.


I'm still not sure how dub would scale for large projects with 
100s-1000s of source modules. DMD ran out of memory in the VM 
(1Gb) at around 70 modules but CMake works due to separate 
compilation of each module ... I think. However, I didn't 
investigate due to lack of time so I wouldn't score this against 
dub. I am sure it can do it if I take the time to figure it out 
properly.


Cheers,
uri


Re: DUB build questions

2014-12-22 Thread Rikki Cattermole via Digitalmars-d-learn

On 23/12/2014 1:39 a.m., uri wrote:

On Saturday, 20 December 2014 at 08:36:15 UTC, Russel Winder via
Digitalmars-d-learn wrote:


On Sat, 2014-12-20 at 05:46 +, Dicebot via Digitalmars-d-learn wrote:

On Saturday, 20 December 2014 at 04:15:00 UTC, Rikki Cattermole wrote:
  b) Can I do parallel builds with dub. CMake gives me  
Makefiles so I can
  make -j does dub have a similar option?
  No

Worth noting that it is not actually a dub problem as much, it is
simply not worth adding parallel builds because separate
compilation is much much slower with existing D front-end
implementation and even doing it in parallel is sub-optimal
compared to dump-it-all-at-once.



From previous rounds of this sort of question (for the SCons D

tooling), the consensus of the community appeared to be that the only
time separate module compilation was really useful was for mixed D, C,
C++, Fortran systems. For pure D systems, single call of the compiler
is deemed far better than traditional C, C++, Fortran compilation
strategy. This means the whole make -j thing is not an issue, it
just means that Dub is only really dealing with the all D situation.

The corollary to this is that DMD, LDC and GDC really need to make use
of all parallelism they can, which I suspect is more or less none.

Chapel has also gone the compile all modules with a single compiler
call strategy as this enables global optimization from source to
executable.



Thanks for the info everyone.


I've used dub for just on two days now and I'm hooked!

At first I was very unsure about giving up my Makefiles, being the build
system control freak that I am, but it really shines at rapid development.

As for out of source builds, it is a non-issue really. I like running
the build outside the project tree but I can use gitignore and
targetPath. For larger projects where we need to manage dependencies,
generate code, run SWIG etc. I'd still use both SCons or CMake.


Regarding parallel builds, make -j on CMake Makefiles and dub build
feel about the same, and that's all I care about.

I'm still not sure how dub would scale for large projects with
100s-1000s of source modules. DMD ran out of memory in the VM (1Gb) at
around 70 modules but CMake works due to separate compilation of each
module ... I think. However, I didn't investigate due to lack of time so
I wouldn't score this against dub. I am sure it can do it if I take the
time to figure it out properly.

Cheers,
uri


To build anything with dmd seriously you need about 2gb of ram 
available. Yes its a lot, but its fast.

Also use subpackages. They are your friend.


Re: DUB build questions

2014-12-20 Thread Russel Winder via Digitalmars-d-learn

On Sat, 2014-12-20 at 05:46 +, Dicebot via Digitalmars-d-learn wrote:
 On Saturday, 20 December 2014 at 04:15:00 UTC, Rikki Cattermole 
 wrote:
   b) Can I do parallel builds with dub. CMake gives me Makefiles 
   so I can
   make -j does dub have a similar option?
  
  No
 
 Worth noting that it is not actually a dub problem as much, it is 
 simply not worth adding parallel builds because separate
 compilation is much much slower with existing D front-end 
 implementation and even doing it in parallel is sub-optimal
 compared to dump-it-all-at-once.

From previous rounds of this sort of question (for the SCons D 
tooling), the consensus of the community appeared to be that the only 
time separate module compilation was really useful was for mixed D, C, 
C++, Fortran systems. For pure D systems, single call of the compiler 
is deemed far better than traditional C, C++, Fortran compilation 
strategy. This means the whole make -j thing is not an issue, it 
just means that Dub is only really dealing with the all D situation.

The corollary to this is that DMD, LDC and GDC really need to make use 
of all parallelism they can, which I suspect is more or less none.

Chapel has also gone the compile all modules with a single compiler 
call strategy as this enables global optimization from source to 
executable.
  
-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder



Re: DUB build questions

2014-12-19 Thread Rikki Cattermole via Digitalmars-d-learn

On 20/12/2014 11:14 a.m., uri wrote:

Hi All,

I'm very happy with CMakeD but thought I'd try dub because CMake script
is a PITA. So I have a couple of questions.

a) Can dub do out out of source builds and how would I set that up.

There is e.g. preBuildCommands.


b) Can I do parallel builds with dub. CMake gives me Makefiles so I can
make -j does dub have a similar option?


No


I looked around on the DUB registry website but couldn't find any info.

Thanks,
uri





Re: DUB build questions

2014-12-19 Thread uri via Digitalmars-d-learn
On Saturday, 20 December 2014 at 04:15:00 UTC, Rikki Cattermole 
wrote:

On 20/12/2014 11:14 a.m., uri wrote:

Hi All,

I'm very happy with CMakeD but thought I'd try dub because 
CMake script

is a PITA. So I have a couple of questions.

a) Can dub do out out of source builds and how would I set 
that up.

There is e.g. preBuildCommands.

b) Can I do parallel builds with dub. CMake gives me Makefiles 
so I can

make -j does dub have a similar option?


No

I looked around on the DUB registry website but couldn't find 
any info.


Thanks,
uri


OK thanks.


Re: DUB build questions

2014-12-19 Thread Dicebot via Digitalmars-d-learn
On Saturday, 20 December 2014 at 04:15:00 UTC, Rikki Cattermole 
wrote:
b) Can I do parallel builds with dub. CMake gives me Makefiles 
so I can

make -j does dub have a similar option?


No


Worth noting that it is not actually a dub problem as much, it is 
simply not worth adding parallel builds because separate 
compilation is much much slower with existing D front-end 
implementation and even doing it in parallel is sub-optimal 
compared to dump-it-all-at-once.