On Wed, Sep 24, 2014 at 09:03:11 +0200, Freddie Chopin wrote:
> On 09/24/2014 02:40 AM, Mike Shal wrote:
> > Build time increased by over 100% compared to what?
> 
> Full rebuild WITH ^c^ takes 69s / 63s (first / second run). The same 
> full rebuild without this flag takes half that time - 31s / 29s. This is 
> a very specific project - it has 724 commands to run, most of the source 
> files are really small (someone has strange vision about helping linker 
> with dead code removal), but on the other hand it is the project that 
> made me start using tup (; It uses recursive Makefiles and the build was 
> so bad that a no-op build on Windows took about 30s (I don't remember 
> exactly now), and a full rebuild - about 3 minutes. With tup a no-op 
> build was down to about 10s (some parts of the Makefile based build 
> ["context generation"] were left, as 10s was acceptable, and the amount 
> of work to full convert to tup would be huge... - from these 10s 99% was 
> Makefile, so no worries, tup is still fast (; ), and a full rebuild to 
> ~90s. Out of curiosity I tried the recursive Makefile build of this 
> project on Linux, and it's actually a bit faster in compilation than tup 
> with ^c^ enabled... Full rebuild takes about 55s, while the almost-no-op 
> build (the Makefiles are so damn wrong that the executable get's 
> re-linked every time) takes 3-5s.

I have a project for which there are 114 source files, 10k lines of C++
and 45 build trees worth of no-op builds took .5s with Ninja.

> The difference between non-chroot rebuild and chroot rebuild is not so 
> significant with a more "normal" (and a bit smaller) project:
> - with ^c^ - ~10s,
> - without ^c^ - ~8s.
> 
> In the first project most of the time is "wasted" on starting processes 
> (and doing chroots), as each compilation step takes about 0.1s, while in 
> the second one compilation of most files takes about 0.5s each (there 
> are 50 commands in total). And the second one has Tupfiles written in lua (;
> 
> Oh - while I still remember - I think that automatic dependency tracking 
> of tup ("correctness") and it's simplicity* should be emphasized more 
> than its speed - from several talks with people I think that not many of 
> them care about speed that much, as not many of us have projects with 
> several thousands of source files... As I understand that tup can get 
> popular when some major (and big) project adopts it, I guess that a 
> middle ground would be more appropriate - emphasize correctness, 
> simplicity and speed equally (; In my opinion tup's website puts the 
> most emphasis on the speed.

Would you mind testing Ninja (with CMake, gn, gyp, or hand-written) as
well? I'm curious (and it could give a good baseline for how fast the
build could be) as to the difference.

> * - for me tup's syntax (the original one) was super simple, especially 
> compared to other systems like make, cmake. The lua syntax in tup is not 
> that simple (especially with lack of good documentation), but still 
> pretty easy to use.
> 
> > Ahh, yeah - right now I think the tupjob number is just the tupid, 
> > which is essentially the row that gets added to the database. I don't 
> > see why we couldn't just use a job slot number (1 - #cpus) and map 
> > that to the tupid instead. Though if we end up just using a namespace 
> > the problem may go away anyway.
> 
> It seems that namespaces are enabled in Arch Linux now (last time 
> someone on this list mentioned that Arch didn't have them):

FWIW, Fedora 20 has them as well.

> > $ zgrep CONFIG_NAMESPACES /proc/config.gz
> > CONFIG_NAMESPACES=y
> 
> At least I hope that it's the feature, as there is some discussion about 
> "user namespaces" being explicitly NOT enabled...

The CONFIG_.*_NS options are also important. CONFIG_NAMESPACES is just
namespaces in general; there are multiple kinds.

> > $ zgrep CONFIG_USER_NS /proc/config.gz
> > # CONFIG_USER_NS is not set
> 
> https://bugs.archlinux.org/task/36969
> 
> Anyway - with "slot" number the problem of debugging would be solvable 
> within IDE (or GDB) by simple path mapping - adding as many entries as 
> there are CPUs available is reasonable - I would definetely go that way 
> instead of playing with suid (;

Yes, distro builders (I imagine) won't be happy with suid binaries being
necessary for a build on their build machines. Especially if Tup's
permissions dropping isn't airtight.

--Ben

-- 
-- 
tup-users mailing list
email: [email protected]
unsubscribe: [email protected]
options: http://groups.google.com/group/tup-users?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"tup-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to