--- a/sys-devel/icecream/files/confd-icecc-scheduler +++ a/sys-devel/icecream/files/confd-icecc-scheduler @@ -0,0 +1,28 @@ +# +## Type: string +## Path: Applications/icecream +## Default: /var/log/icecream/scheduler +# +# icecream scheduler log file +# +ICECREAM_SCHEDULER_LOG_FILE="/var/log/icecream/scheduler" + +# +## Type: string +## Path: Applications/icecream +## Default: "" +# +# 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 +## Default: "" +# +# Verbosity level -v to -vvv +# +ICECREAM_VERBOSITY="-vv" --- a/sys-devel/icecream/files/confd-iceccd +++ a/sys-devel/icecream/files/confd-iceccd @@ -0,0 +1,83 @@ +# +## 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 +## Default: /var/log/icecream/iceccd +# +# icecream daemon log file +# +ICECREAM_LOG_FILE="/var/log/icecream/iceccd" + +# +## Type: string +## Path: Applications/icecream +## Default: "" +# +# 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 +## Default: "" +# +# 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 +## Default: "" +# +# You can overwrite here the number of jobs to run in parallel. Per +# 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". +# +ICECREAM_MAX_JOBS="" + +# +## Type: yesno +## Path: Applications/icecream +## Default: "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" + +# +## Type: string +## Path: Applications/icecream +## Default: "" +# +# Verbosity level -v to -vvv +# +ICECREAM_VERBOSITY="-vv" --- a/sys-devel/icecream/files/initd-icecc-scheduler +++ a/sys-devel/icecream/files/initd-icecc-scheduler @@ -0,0 +1,27 @@ +#!/sbin/openrc-run +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +depend() { + need net +} + +start() { + local netname=${ICECREAM_NETNAME:+"-n ${ICECREAM_NETNAME}"} + local verbosity=${ICECREAM_VERBOSITY:-"-v"} + local slogfile=${ICECREAM_SCHEDULER_LOG_FILE:-"/var/log/icecc_scheduler"} + + [[ ! -d /var/log/icecream/ ]] && mkdir -p /var/log/icecream/ && chown icecream:icecream /var/log/icecream/ + + touch ${slogfile} && chown icecream:icecream ${slogfile} + slogfile=${slogfile:+"-l ${slogfile}"} + ebegin "Starting Distributed Compiler Scheduler" + start-stop-daemon -u icecream --start --quiet --exec /usr/sbin/icecc-scheduler -- -d ${slogfile} ${netname} ${verbosity} + eend ${?} +} + +stop() { + ebegin "Stopping Distributed Compiler Scheduler" + start-stop-daemon --stop --quiet --name icecc-scheduler + eend ${?} +} --- a/sys-devel/icecream/files/initd-iceccd +++ a/sys-devel/icecream/files/initd-iceccd @@ -0,0 +1,29 @@ +#!/sbin/openrc-run +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +depend() { + need net +} + +start() { + local basedir=${ICECREAM_BASEDIR:-"/var/cache/icecream"} + local netname=${ICECREAM_NETNAME:+"-n ${ICECREAM_NETNAME}"} + local logfile=${ICECREAM_LOG_FILE:+"-l ${ICECREAM_LOG_FILE}"} + local nice=${ICECREAM_NICE_LEVEL:+"--nice ${ICECREAM_NICE_LEVEL}"} + local maxjobs=${ICECREAM_MAX_JOBS:+"-m ${ICECREAM_MAX_JOBS}"} + local verbosity=${ICECREAM_VERBOSITY:-"-v"} + + [[ ! -d /var/log/icecream/ ]] && mkdir -p /var/log/icecream/ && chown icecream:icecream /var/log/icecream/ + + [[ ! -d ${basedir} ]] && mkdir -p ${basedir} && chown icecream:icecream ${basedir} + ebegin "Starting Distributed Compiler Daemon" + start-stop-daemon --start --quiet --exec /usr/sbin/iceccd -- -d ${logfile} ${nice} ${scheduler} ${netname} -u icecream -b "${basedir}" ${maxjobs} ${verbosity} + eend ${?} +} + +stop() { + ebegin "Stopping Distributed Compiler Daemon" + start-stop-daemon --stop --quiet --name iceccd + eend ${?} +} --- a/sys-devel/icecream/icecream-9999.ebuild +++ a/sys-devel/icecream/icecream-9999.ebuild @@ -0,0 +1,79 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit eutils user autotools +[[ "${PV}" == 9999* ]] && inherit git-r3 + +DESCRIPTION="Distributed compiling of C(++) code across several machines; based on distcc" +HOMEPAGE="https://github.com/icecc/icecream" + +[[ "${PV}" != 9999* ]] && SRC_URI="https://github.com/icecc/icecream/archive/${PV}.tar.gz -> ${P}.tar.gz" +EGIT_REPO_URI="https://github.com/icecc/icecream.git" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+man" + +DEPEND=" + sys-libs/libcap-ng + dev-libs/lzo + man? ( app-text/docbook2X ) +" +RDEPEND=" + ${DEPEND} + dev-util/shadowman +" + +#PATCHES=( +# "${FILESDIR}/${P}-gentoo-multilib.patch" +#) + +pkg_setup() { + enewgroup icecream + enewuser icecream -1 -1 /var/cache/icecream icecream +} + +src_prepare() { +# [[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}" + eapply_user + eautoreconf +} + +src_configure() { + econf \ + --enable-shared --disable-static \ + --enable-clang-wrappers \ + --enable-clang-rewrite-includes \ + $(use_with man) +} + +src_install() { + default + find "${D}" -name '*.la' -delete || die + + newconfd "${FILESDIR}"/confd-iceccd iceccd + newconfd "${FILESDIR}"/confd-icecc-scheduler icecc-scheduler + newinitd "${FILESDIR}"/initd-iceccd iceccd + newinitd "${FILESDIR}"/initd-icecc-scheduler icecc-scheduler + + insinto /etc/logrotate.d + newins suse/logrotate icecream + + insinto /usr/share/shadowman/tools + newins - icecc <<<'/usr/libexec/icecc/bin' +} + +pkg_prerm() { + if [[ -z ${REPLACED_BY_VERSION} && ${ROOT} == / ]]; then + eselect compiler-shadow remove icecc + fi +} + +pkg_postinst() { + if [[ ${ROOT} == / ]]; then + eselect compiler-shadow update icecc + fi +}