Johannes Winkelmann wrote:
Hi there,
My qt4 port triggered an error [1] when using distcc to build it. After some investigation, I realized that Qt4 by default uses precompiled headers [2], which break when the compilation is done on a different machine since the precompiled headers are not transfered automatically.
Currently, this means that any package using PCH will break when trying to compile it with distcc.
There are a couple of ways to address that:
1. let it break on distcc machines, since we expect users of distcc to understand the problem 2. force the packages to not use PCH at all (= longer compile times for non distributed builds) 3. make the Pkgfiles aware that they're build with distcc, so they can react (might need a more generic solution than just distcc, since other tools doing the same would suffer from the same problem) 4. make the port aware (i.e. using a ".pch" file) that it will break, and make the distcc code in pkgmk.conf smart enough to not select distcc if it's there
I think #4 would be the cleanest solution, however #3 would be faster if a user has a compile farm, at the cost of some detection code build() function
I like option 3, it's not that hard to detect although distcc and ccach functionality should be apart of pkgutils.
At this point in time, distcc is not maintained in core/opt, so I'm not sure if there's a general interest to fix that problem; I used to maintain distcc before my "sabbatical leave" so I have a personal interest in it and believe that distcc is quite interesting for a source based distribution, YMMV though :-).
Just because Tilman took over distcc then later dropped it and I was using it so I picked it up and put it in contrib. Then you return and I'm sure you would grab distcc at the first chance you got. I would consider puting a number of my ports in opt that i thnk beling there but Tilman wont allow me in opt so thats not going to happen. I'm forced to give away my ports, and you saying in IRC that most would be happy to give a port away. Yes and no depends how much I use it, Clustering is an area that interests me. I would guard my ports but it seems I'll lose some ports like mpfr later since gcc will require it in later versions.
If you have other ideas or any preferences, please tell the world :-). Best wishes, Johannes
References: 1. http://crux.nu/bugs/index.php?do=details&task_id=275 2. http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html
Regards, Danny Rawlins <Romster>