Name: icecream Version: 0.8.0 Release: 7.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 Source1: icecream.sh.in Source2: icecream.csh.in Source3: icecream.fc Source4: icecream.te Source5: icecream.if Source6: initscript-iceccd Source7: initscript-scheduler Patch0: icecream-rename-scheduler.patch Patch1: 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: kdelibs3 kdelibs3-devel # For SELinux protection: BuildRequires: checkpolicy selinux-policy-devel hardlink %define selinux_policyver %(sed -e 's,.*selinux-policy-\\([^/]*\\)/.*,\\1,' /usr/share/selinux/devel/policyhelp) %if "%{selinux_policyver}" != "" Requires: selinux-policy >= %{selinux_policyver} %endif %define selinux_variants mls strict targeted %bcond_without fedora BuildRequires: fedora-usermgmt-devel %{?FE_USERADD_REQ} Requires(post): chkconfig policycoreutils Requires(preun): chkconfig initscripts policycoreutils Requires(postun): initscripts policycoreutils 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 make -f Makefile.cvs sed -e 's|@LIBDIR@|%{_libdir}|g' %{SOURCE1} > icecream.sh sed -e 's|@LIBDIR@|%{_libdir}|g' %{SOURCE2} > icecream.csh mkdir SELinux cp -p %{SOURCE3} %{SOURCE4} %{SOURCE5} SELinux mkdir fedora cp -p %{SOURCE6} %{SOURCE7} fedora %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 pushd SELinux for selinuxvariant in %{selinux_variants}; do make NAME=${selinuxvariant} -f %{_datadir}/selinux/devel/Makefile mv icecream.pp icecream.pp.${selinuxvariant} make NAME=${selinuxvariant} -f %{_datadir}/selinux/devel/Makefile clean 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 install -d -m 755 %{buildroot}/%{_sysconfdir}/profile.d install -p -m 644 icecream.sh icecream.csh %{buildroot}/%{_sysconfdir}/profile.d # create default working dir mkdir -p %{buildroot}/%{_localstatedir}/cache/icecream for selinuxvariant in %{selinux_variants}; do install -d %{buildroot}/%{_datadir}/selinux/${selinuxvariant} install -p -m 644 -D SELinux/icecream.pp.${selinuxvariant} \ %{buildroot}/%{_datadir}/selinux/${selinuxvariant}/icecream.pp done # Hardlink identical policy module packages together /usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux %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 # if [ "$1" -le 1 ]; then # First install for selinuxvariant in %{selinux_variants}; do semodule -s ${selinuxvariant} -i \ %{_datadir}/selinux/${selinuxvariant}/icecream.pp 2>/dev/null ||: done fixfiles -R %{name} restore ||: restorecon -R %{_localstatedir}/cache/icecream ||: restorecon %{_localstatedir}/log/iceccd ||: semanage port -a -t iceccd_port_t -p tcp 10245 2>/dev/null ||: semanage port -a -t icecc_scheduler_port_t -p tcp 8765 2>/dev/null ||: semanage port -a -t icecc_scheduler_port_t -p udp 8765 2>/dev/null ||: # fi /sbin/chkconfig --add iceccd /sbin/chkconfig --add icecc-scheduler exit 0 %preun if [ "$1" -eq 0 ]; then # Final removal /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 # rm -rf %{_localstatedir}/cache/icecream semanage port -d -t iceccd_port_t -p tcp 10245 2>/dev/null ||: semanage port -d -t icecc_scheduler_port_t -p tcp 8765 2>/dev/null ||: semanage port -d -t icecc_scheduler_port_t -p udp 8765 2>/dev/null ||: for selinuxvariant in %{selinux_variants}; do semodule -s ${selinuxvariant} -r icecream 2>/dev/null ||: done fi exit 0 %postun /sbin/ldconfig if [ "$1" -ge 1 ]; then # Upgrade /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 %config(noreplace) %{_sysconfdir}/profile.d/icecream.*sh %{_sysconfdir}/rc.d/init.d/iceccd %{_sysconfdir}/rc.d/init.d/icecc-scheduler %{_localstatedir}/cache/icecream %{_datadir}/selinux/*/icecream.pp %files devel %{_includedir}/icecc/*.h %{_libdir}/libicecc.so %{_libdir}/pkgconfig/icecc.pc %changelog * Tue Jan 8 2008 Michal Schmidt - 0.8.0-7.20071101svn - Build fix. meinproc is now in kdelibs3. BuildRequire that instead of kdelibs. * Thu Nov 29 2007 Michal Schmidt - 0.8.0-6.20071101svn - Rewritten the profile scripts to make icecream work together with ccache. * Tue Nov 27 2007 Michal Schmidt - 0.8.0-5.20071101svn - SELinux: Allow iceccd to contact the scheduler via UDP. - Don't add icecream to PATH in the profile scripts if ccache is installed to avoid recursive invocations (bz #377761). * Tue Nov 20 2007 Michal Schmidt - 0.8.0-4.20071101svn - Add a SELinux policy for iceccd - Initscripts as sources instead of patches in the .spec file - Don't touch /var/log/iceccd in the initscript. Let iceccd create it. * Mon Nov 12 2007 Michal Schmidt - 0.8.0-3.20071101svn - Add icecc to $PATH using scripts in profile.d * 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.