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