# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-process/fcron/fcron-3.0.5-r2.ebuild,v 1.9 2011/09/08 14:24:03 ulm Exp $ inherit cron pam eutils MY_P=${P/_/-} DESCRIPTION="A command scheduler with extended capabilities over cron and anacron" HOMEPAGE="http://fcron.free.fr/" SRC_URI="http://fcron.free.fr/archives/${MY_P}.src.tar.gz" LICENSE="GPL-2" KEYWORDS="amd64 ~arm hppa ia64 ~mips ppc sparc x86 ~x86-fbsd" IUSE="debug pam selinux linguas_fr" DEPEND="selinux? ( sys-libs/libselinux ) pam? ( virtual/pam )" # see bug 282214 for the reason to depend on bash RDEPEND="${DEPEND} app-shells/bash >=app-misc/editor-wrapper-3 pam? ( >=sys-auth/pambase-20100310 )" S="${WORKDIR}/${MY_P}" pkg_setup() { enewgroup fcron enewuser fcron -1 -1 -1 fcron rootuser=$(egetent passwd 0 | cut -d ':' -f 1) rootgroup=$(egetent group 0 | cut -d ':' -f 1) } src_unpack() { unpack ${A} cd "${S}" # respect LDFLAGS sed -i "s:\(@LIBS@\):\$(LDFLAGS) \1:" Makefile.in || die "sed failed" # patch check_system_crontabs to support "-c /path/to/fcron.conf" epatch "${FILESDIR}"/check_system_crontabs.fcron-config-file.patch # bug #308799 epatch "${FILESDIR}"/${P}-gentoo.patch # the script contains bashism, so until upstream fixes it we're # going to simply require bash for this to work, sorry! # see also bug #282214 sed -i -e '1s:/bin/sh:/bin/bash:' script/check_system_crontabs \ || die "Unable to fix check_system_crontabs shebang." } src_compile() { local myconf # Don't try to pass --with-debug as it'll play with cflags as # well, and run foreground which is a _very_ nasty idea for # Gentoo. use debug && append-flags -DDEBUG [[ -n "${rootuser}" ]] && myconf="${myconf} --with-rootname=${rootuser}" [[ -n "${rootgroup}" ]] && myconf="${myconf} --with-rootgroup=${rootgroup}" econf \ --with-cflags="${CFLAGS}" \ $(use_with pam) \ $(use_with selinux) \ --sysconfdir=/etc/fcron \ --with-username=fcron \ --with-groupname=fcron \ --with-piddir=/var/run \ --with-spooldir=/var/spool/fcron \ --with-fifodir=/var/run \ --with-fcrondyn=yes \ --disable-checks \ --with-editor=/usr/libexec/editor \ --with-sendmail=/usr/sbin/sendmail \ --with-shell=/bin/sh \ --without-db2man --without-dsssl-dir \ ${myconf} \ || die "configure failed" emake || die "make failed" # bug #216460 sed -i \ -e 's:/usr/local/etc/fcron:/etc/fcron/fcron:g' \ -e 's:/usr/local/etc:/etc:g' \ -e 's:/usr/local/:/usr/:g' \ doc/*/*/*.{txt,1,5,8,html} \ || die "unable to fix documentation references" } src_install() { # create directories that don't have special permissions first so # that we can play with the permissions later dodir /usr/bin /etc /var/spool diropts -m6770 -o fcron -g fcron keepdir /var/spool/fcron # install fcron tools insinto /usr/bin dosbin fcron || die # fcronsighup needs to be suid root, because it sends a HUP # to the running fcron daemon insopts -m6755 -o ${rootuser:-root} -g fcron doins fcronsighup || die insopts -m6755 -o fcron -g fcron doins fcrondyn fcrontab || die # /etc stuff diropts -m0750 -o ${rootuser:-root} -g fcron dodir /etc/fcron insinto /etc/fcron insopts -m0640 -o ${rootuser:-root} -g fcron doins files/fcron.{allow,deny,conf} || die diropts -m0755 insopts -m0644 # install /etc/crontab and /etc/fcrontab insopts -m0640 -o ${rootuser:-root} -g ${rootgroup:-root} doins "${FILESDIR}"/crontab "${FILESDIR}"/fcrontab || die # install PAM files pamd_mimic system-services fcron auth account session cat - > "${T}"/fcrontab.pam <&/dev/null chown ${rootuser:-root}:fcron "${ROOT}"usr/bin/fcronsighup >&/dev/null chmod 6755 "${ROOT}"usr/bin/fcron{tab,dyn,sighup} >&/dev/null ewarn "Fixing permissions and ownership of ${ROOT}etc/{fcron,fcrontab,crontab}" chown -R ${rootuser:-root}:fcron "${ROOT}"etc/{fcron,fcrontab,crontab} >&/dev/null chmod -R g+rX,o= "${ROOT}"etc/fcron "${ROOT}"etc/{fcron,fcrontab,crontab} >&/dev/null ewarn ewarn ewarn "WARNING: fcron now uses a dedicated user and group" ewarn "'fcron' for the suid/sgid programs/files instead of" ewarn "the user and group 'cron' that were previously used." ewarn ewarn "fcron usage can now only be restricted by adding users" ewarn "to the following files instead of to the group 'cron':" ewarn ewarn " ${ROOT}etc/fcron/fcron.allow" ewarn " ${ROOT}etc/fcron/fcron.deny" ewarn if ls -1 "${ROOT}"var/spool/cron/fcrontabs/* >&/dev/null; then ewarn ewarn "WARNING: fcron now uses a dedicated fcron-specific" ewarn "spooldir ${ROOT}var/spool/fcron instead of the commonly" ewarn "used ${ROOT}var/spool/cron for several reasons." ewarn ewarn "Copying over existing crontabs from ${ROOT}var/spool/cron/fcrontabs" cp "${ROOT}"var/spool/cron/fcrontabs/* "${ROOT}"var/spool/fcron/ >&/dev/null \ || die "failed to migrate existing crontabs" ewarn "You should now remove ${ROOT}var/spool/cron/fcrontabs!" ewarn ewarn "Fixing permissions and ownership of ${ROOT}var/spool/fcron" chown root:root "${ROOT}"var/spool/fcron/* >&/dev/null chmod 0600 "${ROOT}"var/spool/fcron/* >&/dev/null chown fcron:fcron "${ROOT}"var/spool/fcron/*.orig >&/dev/null chmod 0640 "${ROOT}"var/spool/fcron/*.orig >&/dev/null ewarn ewarn "*** YOU SHOULD IMMEDIATELY UPDATE THE" ewarn "*** fcrontabs ENTRY IN ${ROOT}etc/fcron/fcron.conf" ewarn "*** AND RESTART YOUR FCRON DAEMON!" fi elog "" elog "Since version 3.0.5 the fcron init script will no longer wait for LDAP, MySQL" elog "or PostgreSQL before starting. If you need any of these for authentication or" elog "for jobs that are executed by fcron, please create a /etc/conf.d/fcron file to" elog "set the rc_need variable to the list of services you should be waiting for." elog "" }