diff --git a/.cvsignore b/.cvsignore index e69de29..ca2dd85 100644 --- a/.cvsignore +++ b/.cvsignore @@ -0,0 +1 @@ +icecream-0.8.0.tar.gz diff --git a/icecream-add-initscripts.patch b/icecream-add-initscripts.patch new file mode 100644 index 0000000..a691166 --- /dev/null +++ b/icecream-add-initscripts.patch @@ -0,0 +1,252 @@ +--- /dev/null 2007-07-09 12:29:17.910501703 +0200 ++++ fedora/initscript-iceccd 2007-07-16 15:54:43.000000000 +0200 +@@ -0,0 +1,134 @@ ++#!/bin/sh ++# ++# iceccd: Distributed compiler daemon ++# ++# chkconfig: - 98 02 ++# description: This is a daemon for speeding up builds by \ ++# distributing compile jobs to several computers on a network. ++# ++ ++### BEGIN INIT INFO ++# Provides: iceccd ++# Required-Start: $local_fs $remote_fs $network $named ++# Required-Stop: $local_fs $remote_fs $network $named ++# Short-Description: Start/stop Icecream distributed compiler ++# Description: Start / stop the Icecream distributed compiler daemon ++### END INIT INFO ++ ++# Source function library. ++. /etc/rc.d/init.d/functions ++ ++exec=/usr/sbin/iceccd ++service=iceccd ++config=/etc/sysconfig/icecream ++ ++[ -e $config ] && . $config ++ ++lockfile=/var/lock/subsys/iceccd ++ ++start() { ++ [ -x $exec ] || exit 5 ++ [ -f $config ] || exit 6 ++ echo -n $"Starting distributed compiler daemon: " ++ params="" ++ if [ -n "$ICECREAM_NETNAME" ] ; then ++ params="$params -n $ICECREAM_NETNAME" ++ fi ++ if [ -n "$ICECREAM_LOG_FILE" ] ; then ++ touch $ICECREAM_LOG_FILE ++ chown icecream:icecream $ICECREAM_LOG_FILE ++ params="$params -l $ICECREAM_LOG_FILE" ++ else ++ touch /var/log/iceccd ++ chown icecream:icecream /var/log/iceccd ++ fi ++ if [ -n "$ICECREAM_NICE_LEVEL" ] ; then ++ params="$params --nice $ICECREAM_NICE_LEVEL" ++ fi ++ if [ -n "$ICECREAM_SCHEDULER_HOST" ] ; then ++ params="$params -s $ICECREAM_SCHEDULER_HOST" ++ fi ++ if [ "$ICECREAM_ALLOW_REMOTE" = "no" 2> /dev/null ] ; then ++ params="$params --no-remote" ++ fi ++ if [ -n "$ICECREAM_MAX_JOBS" ] ; then ++ if [ "$ICECREAM_MAX_JOBS" -eq 0 2> /dev/null ] ; then ++ params="$params -m 1" ++ params="$params --no-remote" ++ else ++ params="$params -m $ICECREAM_MAX_JOBS" ++ fi ++ fi ++ params="$params -b \"$ICECREAM_BASEDIR\"" ++ daemon --check $service $exec -d -u icecream $params ++ RETVAL=$? ++ echo ++ [ $RETVAL -eq 0 ] && touch $lockfile ++ return $RETVAL ++} ++ ++stop() { ++ echo -n $"Stopping distributed compiler daemon: " ++ ++ killproc $service ++ RETVAL=$? ++ echo ++ if [ $RETVAL -eq 0 ]; then ++ rm -f $lockfile ++ fi ++ return $RETVAL ++} ++ ++restart() { ++ stop ++ start ++} ++ ++reload() { ++ restart ++} ++ ++force_reload() { ++ restart ++} ++ ++rh_status() { ++ status $service ++} ++ ++rh_status_q() { ++ rh_status > /dev/null 2>&1 ++} ++ ++# See how we were called. ++case "$1" in ++ start) ++ rh_status_q && exit 0 ++ start ++ ;; ++ stop) ++ rh_status_q || exit 0 ++ stop ++ ;; ++ status) ++ rh_status ++ ;; ++ restart) ++ restart ++ ;; ++ reload) ++ rh_status_q || exit 7 ++ reload ++ ;; ++ force-reload) ++ force_reload ++ ;; ++ condrestart|try-restart) ++ rh_status_q || exit 0 ++ restart ++ ;; ++ *) ++ echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}" ++ exit 2 ++esac ++exit $? +--- /dev/null 2007-07-09 12:29:17.910501703 +0200 ++++ fedora/initscript-scheduler 2007-07-16 16:14:23.000000000 +0200 +@@ -0,0 +1,112 @@ ++#!/bin/sh ++# ++# icecc-scheduler: Distributed compiler scheduler ++# ++# chkconfig: - 98 02 ++# description: This is a daemon which schedules compilation jobs to \ ++# networked machines running iceccd. ++# ++ ++### BEGIN INIT INFO ++# Provides: icecc-scheduler ++# Required-Start: $local_fs $remote_fs $network ++# Required-Stop: $local_fs $remote_fs $network ++# Short-Description: Start/stop Icecream scheduler ++# Description: Start / stop the scheduler for Icecream distributed compilers ++### END INIT INFO ++ ++# Source function library. ++. /etc/rc.d/init.d/functions ++ ++exec=/usr/sbin/icecc-scheduler ++service=icecc-scheduler ++config=/etc/sysconfig/icecream ++ ++[ -e $config ] && . $config ++ ++lockfile=/var/lock/subsys/icecc-scheduler ++ ++start() { ++ [ -x $exec ] || exit 5 ++ [ -f $config ] || exit 6 ++ echo -n $"Starting distributed compiler scheduler: " ++ params="" ++ if [ -n "$ICECREAM_NETNAME" ] ; then ++ params="$params -n $ICECREAM_NETNAME" ++ fi ++ logfile=${ICECREAM_SCHEDULER_LOG_FILE:-/var/log/icecc-scheduler} ++ params="$params -l $logfile" ++ touch "$logfile" ++ chown icecream:icecream $logfile ++ daemon --user icecream --check $service $exec -d $params ++ RETVAL=$? ++ echo ++ [ $RETVAL -eq 0 ] && touch $lockfile ++ return $RETVAL ++} ++ ++stop() { ++ echo -n $"Stopping distributed compiler scheduler: " ++ ++ killproc $service ++ RETVAL=$? ++ echo ++ if [ $RETVAL -eq 0 ]; then ++ rm -f $lockfile ++ fi ++ return $RETVAL ++} ++ ++restart() { ++ stop ++ start ++} ++ ++reload() { ++ restart ++} ++ ++force_reload() { ++ restart ++} ++ ++rh_status() { ++ status $service ++} ++ ++rh_status_q() { ++ rh_status > /dev/null 2>&1 ++} ++ ++# See how we were called. ++case "$1" in ++ start) ++ rh_status_q && exit 0 ++ start ++ ;; ++ stop) ++ rh_status_q || exit 0 ++ stop ++ ;; ++ status) ++ rh_status ++ ;; ++ restart) ++ restart ++ ;; ++ reload) ++ rh_status_q || exit 7 ++ reload ++ ;; ++ force-reload) ++ force_reload ++ ;; ++ condrestart|try-restart) ++ rh_status_q || exit 0 ++ restart ++ ;; ++ *) ++ echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}" ++ exit 2 ++esac ++exit $? diff --git a/icecream-cleanup-conffile.patch b/icecream-cleanup-conffile.patch new file mode 100644 index 0000000..7bf7c9d --- /dev/null +++ b/icecream-cleanup-conffile.patch @@ -0,0 +1,100 @@ +--- suse/sysconfig.icecream.orig 2007-04-12 10:02:33.000000000 +0200 ++++ suse/sysconfig.icecream 2007-07-17 15:50:39.000000000 +0200 +@@ -1,69 +1,34 @@ + # +-## Type: integer(0:19) +-## Path: Applications/icecream +-## Description: Icecream settings +-## ServiceRestart: icecream +-## Default: 5 +-# + # Nice level of running compilers + # + ICECREAM_NICE_LEVEL="5" + + # +-## Type: string +-## Path: Applications/icecream +-## Defaut: /var/log/iceccd +-# + # icecream daemon log file + # + ICECREAM_LOG_FILE="/var/log/iceccd" + + # +-## Type: string +-## Path: Applications/icecream +-## Defaut: no +-# +-# Start also the scheduler? +-# +-ICECREAM_RUN_SCHEDULER="no" +- +-# +-## Type: string +-## Path: Applications/icecream +-## Defaut: /var/log/icecc_scheduler +-# + # icecream scheduler log file + # +-ICECREAM_SCHEDULER_LOG_FILE="/var/log/icecc_scheduler" ++ICECREAM_SCHEDULER_LOG_FILE="/var/log/icecc-scheduler" + + # +-## Type: string +-## Path: Applications/icecream +-## Defaut: "" +-# +-# Identification for the network the scheduler and daemon run on. ++# Identification for the network the scheduler and daemon run on. + # You can have several distinct icecream networks in the same LAN + # for whatever reason. + # + ICECREAM_NETNAME="" + + # +-## Type: string +-## Path: Applications/icecream +-## Defaut: "" +-# +-# If the daemon can't find the scheduler by broadcast (e.g. because ++# If the daemon can't find the scheduler by broadcast (e.g. because + # of a firewall) you can specify it. + # + ICECREAM_SCHEDULER_HOST="" + + # +-## Type: integer +-## Path: Applications/icecream +-## Defaut: "" +-# + # You can overwrite here the number of jobs to run in parallel. Per +-# default this depends on the number of (virtual) CPUs installed. ++# default this depends on the number of (virtual) CPUs installed. + # + # Note: a value of "0" is actually interpreted as "1", however it + # also sets ICECREAM_ALLOW_REMOTE="no". +@@ -71,22 +36,14 @@ ICECREAM_SCHEDULER_HOST="" + ICECREAM_MAX_JOBS="" + + # +-## Type: yesno +-## Path: Applications/icecream +-## Defaut: "yes" +-# + # Specifies whether jobs submitted by other nodes are allowed to run on + # this one. + # + ICECREAM_ALLOW_REMOTE="yes" + + # +-## Type: string +-## Path: Applications/icecream +-## Default: "/var/cache/icecream" +-# + # This is the directory where the icecream daemon stores the environments + # it compiles in. In a big network this can grow quite a bit, so use some + # path if your /tmp is small - but the user icecream has to write to it. +-# ++# + ICECREAM_BASEDIR="/var/cache/icecream" diff --git a/icecream-rename-scheduler.patch b/icecream-rename-scheduler.patch new file mode 100644 index 0000000..0f8c9bc --- /dev/null +++ b/icecream-rename-scheduler.patch @@ -0,0 +1,42 @@ +--- services/Makefile.am.orig 2007-05-08 21:09:41.000000000 +0200 ++++ services/Makefile.am 2007-07-15 19:18:41.000000000 +0200 +@@ -11,9 +11,9 @@ ice_HEADERS = job.h comm.h + noinst_HEADERS = bench.h exitcode.h getifaddrs.h logging.h tempfile.h platform.h + icedir = $(includedir)/icecc + +-sbin_PROGRAMS = scheduler +-scheduler_SOURCES = scheduler.cpp +-scheduler_LDADD = libicecc.la ++sbin_PROGRAMS = icecc-scheduler ++icecc_scheduler_SOURCES = scheduler.cpp ++icecc_scheduler_LDADD = libicecc.la + + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = icecc.pc +--- doc/man-scheduler.1.docbook.orig 2005-04-25 15:21:14.000000000 +0200 ++++ doc/man-scheduler.1.docbook 2007-07-16 13:53:44.000000000 +0200 +@@ -23,13 +23,13 @@ + + + +- scheduler ++ icecc-scheduler + Icecream scheduler + + + + +-scheduler ++icecc-scheduler + + + +@@ -151,7 +151,7 @@ need to run the scheduler with root righ + + + See Also +-icecream, scheduler, iceccd, icemon ++icecream, icecc-scheduler, iceccd, icemon + + + diff --git a/icecream.spec b/icecream.spec new file mode 100644 index 0000000..69d347c --- /dev/null +++ b/icecream.spec @@ -0,0 +1,160 @@ +Name: icecream +Version: 0.8.0 +Release: 2.20071101svn%{?dist} +Summary: Distributed compiler + +Group: Development/Tools +License: GPLv2 +URL: http://en.opensuse.org/Icecream +# The source was pulled from upstream's SVN repository: +# svn export -r 731514 svn://anonsvn.kde.org/home/kde/trunk/icecream icecream-0.8.0 +# tar -czvf icecream-0.8.0.tar.gz icecream-0.8.0 +Source0: icecream-0.8.0.tar.gz +Patch0: icecream-rename-scheduler.patch +Patch1: icecream-add-initscripts.patch +Patch2: icecream-cleanup-conffile.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +BuildRequires: automake autoconf libtool symlinks +# To build manpages from KDE-style Docbook sources: +BuildRequires: kdelibs kdelibs-devel + +%bcond_without fedora +BuildRequires: fedora-usermgmt-devel +%{?FE_USERADD_REQ} +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +Requires(postun): initscripts + +Provides: group(icecream) = 44 +Provides: user(icecream) = 44 + +# description copied from Debian icecc package +%description +Icecream is a distributed compile system. It allows parallel compiling by +distributing the compile jobs to several nodes of a compile network running the +icecc daemon. The icecc scheduler routes the jobs and provides status and +statistics information to the icecc monitor. Each compile node can accept one +or more compile jobs depending on the number of processors and the settings of +the daemon. Link jobs and other jobs which cannot be distributed are executed +locally on the node where the compilation is started. + +%package devel +Summary: Development files for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +This package contains development files for %{name}. + +%prep +%setup -q +%patch0 -p0 +%patch1 -p0 +%patch2 -p0 +make -f Makefile.cvs + +%build +%configure --disable-static --enable-shared +make %{?_smp_mflags} +pushd doc +for i in man-*.docbook; do + meinproc --stylesheet %{_datadir}/apps/ksgmltools2/customization/kde-man.xsl $i + manfile=${i#man-} + manfile=${manfile%.docbook} + mv manpage.troff $manfile +done +popd + +%install +rm -rf %{buildroot} +make install DESTDIR=%{buildroot} +rm -f %{buildroot}/%{_libdir}/libicecc.la + +# move the symlinks elsewhere +mkdir -p %{buildroot}/%{_libdir}/icecc/bin +for i in cc gcc c++ g++; do + ln -s %{buildroot}/%{_bindir}/icecc %{buildroot}/%{_libdir}/icecc/bin/$i + rm -f %{buildroot}/%{_bindir}/$i +done + +# relativize the symlinks +symlinks -cs %{buildroot}/%{_libdir}/icecc/bin + +# install manpages +mkdir -p %{buildroot}/%{_mandir}/man{1,7,8} +mv doc/scheduler.1 doc/icecc-scheduler.1 +for i in doc/*.1 doc/*.7; do + install -m 644 $i %{buildroot}/%{_mandir}/man${i##*.} +done + +# install config file and initscripts +install -D -m 644 suse/sysconfig.icecream %{buildroot}/%{_sysconfdir}/sysconfig/icecream +install -D -m 755 fedora/initscript-iceccd %{buildroot}/%{_sysconfdir}/rc.d/init.d/iceccd +install -D -m 755 fedora/initscript-scheduler \ + %{buildroot}/%{_sysconfdir}/rc.d/init.d/icecc-scheduler + +# create default working dir +mkdir -p %{buildroot}/%{_localstatedir}/cache/icecream + +%pre +# https://fedoraproject.org/wiki/PackageUserRegistry +%__fe_groupadd 44 -r icecream &>/dev/null || : +%__fe_useradd 44 -r -s /sbin/nologin -d %{_localstatedir}/cache/icecream -M \ + -c 'Icecream distributed compiler' -g icecream icecream &>/dev/null || : + +%post +/sbin/ldconfig +/sbin/chkconfig --add iceccd +/sbin/chkconfig --add icecc-scheduler + +%preun +if [ "$1" -eq 0 ] ; then + /sbin/service iceccd stop > /dev/null 2>&1 + /sbin/service icecc-scheduler stop > /dev/null 2>&1 + /sbin/chkconfig --del iceccd + /sbin/chkconfig --del icecc-scheduler +fi +exit 0 + +%postun +/sbin/ldconfig +if [ "$1" -ge 1 ]; then + /sbin/service iceccd condrestart > /dev/null 2>&1 + /sbin/service icecc-scheduler condrestart > /dev/null 2>&1 +fi +exit 0 + +%clean +rm -rf %{buildroot} + +%files +%defattr(-,root,root,-) +%doc COPYING ChangeLog README BENCH NEWS TODO +%{_bindir}/icecc +%{_libdir}/icecc/bin/cc +%{_libdir}/icecc/bin/gcc +%{_libdir}/icecc/bin/c++ +%{_libdir}/icecc/bin/g++ +%{_libdir}/icecc/icecc-create-env +%{_libdir}/libicecc.so.* +%{_sbindir}/iceccd +%{_sbindir}/icecc-scheduler +%{_mandir}/man*/* +%config(noreplace) %{_sysconfdir}/sysconfig/icecream +%{_sysconfdir}/rc.d/init.d/iceccd +%{_sysconfdir}/rc.d/init.d/icecc-scheduler +%{_localstatedir}/cache/icecream + +%files devel +%{_includedir}/icecc/*.h +%{_libdir}/libicecc.so +%{_libdir}/pkgconfig/icecc.pc + +%changelog +* Tue Nov 6 2007 Michal Schmidt - 0.8.0-2.20071101svn +- Use the _datadir macro instead of hardcoded /usr/share + +* Thu Nov 01 2007 Michal Schmidt - 0.8.0-1.20071101svn +- Initial package for Fedora. diff --git a/sources b/sources index e69de29..ab43331 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +1f2cd40b8efb646df7cd4bbd5f411308 icecream-0.8.0.tar.gz