Distributed compilation with Icecream on Cygwin
Andreas Gungl
Andreas.Gungl at osp-dd.de
Tue Jul 26 11:10:38 CEST 2005
Hi,
I've discovered Icecream some time ago as a great tool to speed up
compilation by using several machines. I've been using it on Linux for quite
a while.
Now I have a case where I like to use it on Cygwin as well. I don't need the
monitor, so there was no need for me to care for X, Qt and KDE on Cygwin.
During the process to install and run Icecream on Cygwin, I've probably made
all errors one can make. Anyway, I have a running and working Icecream
daemon now which allows me to use the power of additional Linux boxes when
compiling.
To share the results from my work, I've attached my patches against svn
trunk (kdenonbeta/icecream/icecream) plus a short description of the
installation and potential problems.
If there is more interest (or even some help from more experienced
developers), it might be possible to make Icecream ready for a really easy
build, installation and usage on Cygwin.
Thanks for your attention,
Andreas
PS. Please Cc me when replying, I'm not subscribed to kde-cygwin.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: icecream-on-cygwin.diff
Type: text/x-diff
Size: 10158 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kde-cygwin/attachments/20050727/809f785a/icecream-on-cygwin-0001.bin
-------------- next part --------------
*** Getting Icecream to work on Cygwin w/o X-server ***
INSTALLATION AND RUNNING
You should get the icecream sources from svn trunk. Tarballs will need
Qt and KDE installed to be able to build the monitor. To go only with the
daemon, you won't need that.
The following steps let you build and install Icecream on Cygwin:
1) Go into the icecream directory holding the Makefile.cvs
2) Remove the monitor's sources "rm -rf mon"
3) Start the build "make -f Makefile.cvs ; configure --prefix=/opt/icecream ; make"
4) Solve any compilation problems (see explanation below)
5) Install the application "make && make install"
Then you can start your icecream daemon, but make sure to run it as root. (You may
want to use ssh to become root on Cygwin. It was a bit tricky for me to find out
how to make that work, but this is another story.)
Use a command line like this:
/opt/icecream/sbin/iceccd.exe -n <net-name> -l /opt/icecream/log/icecream.log
-s <scheduler-host> -vvv -u root
-b /opt/icecream/env
A daemon mode is possible as well, but I started it from command line so I could
easier start and stop (via Ctrl-C) the instance. You can watch the log file using
"tail -f /opt/icecream/log/icecream.log".
If you have problems when running icecream, it may well be that some packages
are not installed on your system. (package "file" in my case). So you may want
to check that.
BUILD PROBLEMS
There are several issues during the build if you use icecream from svn trunk.
I've found:
1) inconsequent uses of uint32_t and unsigned int
2) Missing declarations
3) special .exe handling on Cygwin
1) + 3) are completely fixed in the attached patch. For 2) you have to
adjust the sources manually. I've added comments in the files telling
you what to do on cygwin. If someone is better in autoconf, improvements
are certaily possible.
I've also added a "#define IFF_POINTOPOINT 0x10" to the file
/usr/include/cygwin/if.h because that one was missing.
OPEN ISSUES
I was able to use icecream on cygwin when building on that local machine.
All my other icecream instances in the net were recognized and used.
The cygwin icecream instance showed up properly in the icemon monitor
running on a Linux box.
The other way round (compiling a project on a Linux box and use the cygwin
instance additionally) hasn't worked so far due to problems with the /tmp
directory and permissions on that.
More information about the kde-cygwin
mailing list