| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=5 |
| |
| PYTHON_COMPAT=( python2_7 ) |
| DISTUTILS_SINGLE_IMPL=1 |
| |
| inherit distutils-r1 user |
| |
| DESCRIPTION="Render farm managing software" |
| HOMEPAGE="http://www.drqueue.org/" |
| SRC_URI="http://drqueue.org/files/${PN}.${PV}.tgz" |
| |
| LICENSE="GPL-2" |
| SLOT="0" |
| KEYWORDS="~amd64 ~x86" |
| IUSE="X python ruby" |
| |
| RDEPEND="X? ( x11-libs/gtk+:2 ) |
| ruby? ( dev-lang/ruby ) |
| app-shells/tcsh" |
| |
| DEPEND="${RDEPEND} |
| python? ( dev-lang/swig ) |
| ruby? ( dev-lang/swig ) |
| python? ( dev-python/setuptools[${PYTHON_USEDEP}] ) |
| >=dev-util/scons-0.97" |
| |
| S=${WORKDIR}/DrQueue-${PV} |
| |
| PATCHES=( "${FILESDIR}"/${P}-fpic.patch |
| "${FILESDIR}"/${P}-git.patch ) |
| |
| pkg_setup() { |
| enewgroup drqueue |
| enewuser drqueue -1 /bin/bash /dev/null daemon,drqueue |
| |
| use python && python-single-r1_pkg_setup |
| } |
| |
| python_prepare() { |
| distutils-r1_python_prepare |
| # Workaround broken SWIG path |
| ln -s ../libdrqueue python/libdrqueue || die |
| } |
| |
| src_compile() { |
| if use X; then |
| scons ${MAKEOPTS} build_drman=yes || die "scons failed" |
| else |
| scons ${MAKEOPTS} build_drqman=no || die "scons failed" |
| fi |
| |
| if use python; then |
| einfo "compiling python bindings" |
| pushd "${S}"/python/ > /dev/null |
| distutils-r1_src_compile |
| popd > /dev/null |
| fi |
| |
| if use ruby; then |
| einfo "compiling ruby bindings" |
| cd "${S}"/ruby/ |
| ruby extconf.rb |
| emake || die "emake failed" |
| fi |
| } |
| |
| pkg_preinst() { |
| # stop daemons since script is being updated |
| [ -n "$(pidof drqsd)" -a -x /etc/init.d/drqsd ] && \ |
| /etc/init.d/drqsd stop |
| [ -n "$(pidof drqmd)" -a -x /etc/init.d/drqmd ] && \ |
| /etc/init.d/drqmd stop |
| } |
| |
| src_install() { |
| dodir /var/lib |
| scons PREFIX="${D}"/var/lib install || die "install failed" |
| |
| # not really needed |
| rm -R "${D}"/var/lib/drqueue/bin/viewcmd || die "rm failed" |
| |
| # install {conf,init,env}.d files |
| for i in drqmd drqsd ; do |
| newinitd "${FILESDIR}"/${PN}-0.64.3-etc-initd-${i} ${i} || die "newinitd failed" |
| newconfd "${FILESDIR}"/${PN}-0.64.3-etc-confd-${i} ${i} || die "newconfd failed" |
| done |
| newenvd "${FILESDIR}"/${PN}-0.64.3-etc-envd-02drqueue 02drqueue || die "newenvd failed" |
| |
| # create the drqueue pid directory |
| dodir /var/run/drqueue |
| keepdir /var/run/drqueue |
| |
| # move logs dir to /var/log |
| dodir /var/log |
| mv "${D}"/var/lib/drqueue/logs "${D}"/var/log/drqueue |
| |
| # fix bins and make links for /usr/bin |
| dodir /usr/bin |
| local commands=( blockhost cjob jobfinfo \ |
| jobinfo master requeue sendjob slave ) |
| if use X ; then |
| commands=( ${commands[@]} drqman ) |
| else |
| # Remove drqman leftovers |
| for i in etc/drqman.rc etc/drqman.conf bin/drqman ; do |
| rm -v "${D}"/var/lib/drqueue/$i || die "rm failed" |
| done |
| fi |
| for cmd in ${commands[@]} ; do |
| sed -e 's|SHLIB=\$DRQUEUE_ROOT/bin/shlib|SHLIB=/var/lib/drqueue/bin/shlib|' \ |
| -i "${D}"var/lib/drqueue/bin/${cmd} || die "sed failed" |
| dosym /var/lib/drqueue/bin/${cmd} /usr/bin/ \ |
| || die "dosym failed" |
| done |
| |
| # install documentation |
| dodoc AUTHORS ChangeLog INSTALL \ |
| NEWS README README.mentalray \ |
| README.python setenv || die "dodoc failed" |
| |
| if use python; then |
| cd "${S}"/python/ |
| distutils-r1_src_install |
| dodir /var/lib/${PN}/python |
| |
| # Install DRKeewee web service and example python scripts |
| insinto /var/lib/${PN}/python |
| doins -r DrKeewee examples || die "doins failed" |
| python_fix_shebang "${ED}var/lib/${PN}/python" |
| fi |
| |
| if use ruby; then |
| cd "${S}"/ruby/ |
| emake DESTDIR="${D}" install || die "emake failed" |
| fi |
| } |
| |
| pkg_postinst() { |
| einfo "Edit /etc/conf.d/drqsd /etc/env.d/02drqueue" |
| einfo "and /etc/conf.d/drqmd DRQUEUE_MASTER=\"hostname\"" |
| einfo "to reflect your master's hostname." |
| if use python ; then |
| einfo |
| einfo "DrKeewee can be found in /var/lib/drqueue/python" |
| fi |
| } |