# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-process/fcron/fcron-3.0.1-r2.ebuild,v 1.8 2007/01/18 18:58:45 jer Exp $ inherit cron pam eutils DESCRIPTION="A command scheduler with extended capabilities over cron and anacron" HOMEPAGE="http://fcron.free.fr/" SRC_URI="http://fcron.free.fr/archives/${P}.src.tar.gz" LICENSE="GPL-2" KEYWORDS="amd64 hppa ~mips ppc sparc x86 ~x86-fbsd" IUSE="debug doc pam selinux" DEPEND="app-editors/nano doc? ( >=app-text/docbook-dsssl-stylesheets-1.77 ) selinux? ( sys-libs/libselinux ) pam? ( virtual/pam )" pkg_setup() { ROOTUSER=$(egetent passwd 0 | cut -d ':' -f 1) ROOTGROUP=$(egetent group 0 | cut -d ':' -f 1) } src_unpack() { unpack ${A} cd ${S} epatch ${FILESDIR}/${PN}-2.0.0-configure.diff # respect LDFLAGS sed -i "s:\(@LIBS@\):\$(LDFLAGS) \1:" Makefile.in || die "sed failed" } src_compile() { local myconf autoconf || die "autoconf failed" use doc && \ myconf="${myconf} --with-dsssl-dir=/usr/share/sgml/stylesheets/dsssl/docbook" [[ -n "${ROOTUSER}" ]] && myconf="${myconf} --with-rootname=${ROOTUSER}" [[ -n "${ROOTGROUP}" ]] && myconf="${myconf} --with-rootgroup=${ROOTGROUP}" # QA security notice fix; see "[gentoo-core] Heads up changes in suid # handing with portage >=51_pre21" for more details. append-ldflags $(bindnow-flags) econf \ $(use_with pam) \ $(use_with selinux) \ $(use_with debug) \ --with-username=cron \ --with-groupname=cron \ --with-piddir=/var/run \ --with-etcdir=/etc/fcron \ --with-spooldir=/var/spool/cron \ --with-fifodir=/var/run \ --with-sendmail=/usr/sbin/sendmail \ --with-fcrondyn=yes \ --with-editor=/bin/nano \ --with-shell=/bin/sh \ ${myconf} \ || die "Configure problem" emake || die "Compile problem" } src_install() { # cron eclass stuff docrondir /var/spool/cron/fcrontabs -m0770 -o cron -g cron docron fcron -m0110 -o ${ROOTUSER:-root} -g ${ROOTGROUP:-root} docrontab fcrontab -m6110 -o cron -g cron # install fcron tools insinto /usr/bin insopts -o ${ROOTUSER:-root} -g cron -m6110 ; doins fcronsighup insopts -o cron -g cron -m6110 ; doins fcrondyn # /etc stuff insinto /etc/fcron insopts -m 640 -o ${ROOTUSER:-root} -g cron doins files/fcron.{allow,deny,conf} dosed 's:^\(fcrontabs.*=.*\)$:\1/fcrontabs:' /etc/fcron/fcron.conf \ || die "dosed fcron.conf failed" # install PAM files newpamd files/fcron.pam fcron newpamd files/fcrontab.pam fcrontab # install /etc/crontab and /etc/fcrontab insinto /etc doins ${FILESDIR}/crontab ${FILESDIR}/fcrontab # install init script newinitd ${FILESDIR}/fcron.init fcron || die "newinitd failed" # install the very handy check_system_crontabs script mv script/check_system_crontabs script/check_system_crontabs.orig sed -e 's:^FCRONTABS_DIR=.*$:FCRONTABS_DIR=/var/spool/cron/fcrontabs:' \ script/check_system_crontabs.orig > script/check_system_crontabs dosbin script/check_system_crontabs # doc stuff dodoc MANIFEST VERSION newdoc files/fcron.conf fcron.conf.sample dodoc ${FILESDIR}/crontab dodoc doc/en/txt/{readme,thanks,faq,todo,relnotes,changes}.txt doman doc/en/man/*.[0-9] use doc && dohtml doc/en/HTML/*.html # localized docs local LANGUAGES=$(sed -n 's:LANGUAGES =::p' doc/Makefile) LANGUAGES="${LANGUAGES/en/}" local lang for lang in ${LANGUAGES}; do hasq ${lang} ${LINGUAS} || continue doman -i18n=${lang} doc/${lang}/man/*.[0-9] use doc && docinto html/${lang} && dohtml doc/${lang}/HTML/*.html done } pkg_postinst() { einfo einfo "Each user who uses fcron should be added to the cron group" einfo "in /etc/group and also be added to /etc/fcron/fcron.allow" einfo einfo "fcron has some important differences compared to vixie-cron:" einfo einfo "1. fcron stores the crontabs in /var/spool/cron/fcrontabs" einfo einfo "2. fcron uses a special binary file format for storing the" einfo " crontabs in /var/spool/cron/fcrontabs/USERNAME," einfo " but the original plain text version is saved as" einfo " /var/spool/cron/fcrontabs/USERNAME.orig for your reference." einfo einfo "3. fcron does not feature a system crontab in exactly the" einfo " same way as vixie-cron does. This version of fcron" einfo " features a crontab for a pseudo-user 'systab' for use" einfo " as the system crontab. Running a command like" einfo einfo " fcrontab -u systab /etc/crontab" einfo einfo " will write /etc/crontab to the fcron crontabs directory as" einfo einfo " /var/spool/cron/fcrontabs/systab" einfo einfo " Please note that changes to /etc/crontab will not become" einfo " active automatically! fcron also does not use the directory" einfo " /etc/cron.d by default like vixie-cron does." einfo " Fortunately, it's possible to emulate vixie-cron's behavior" einfo " with regards to /etc/crontab and /etc/cron.d by using a" einfo " little helper script called 'check_system_crontabs'." einfo " The file /etc/fcrontab (not /etc/crontab!) has been set up" einfo " to run the script once a while to check whether" einfo " /etc/fcrontab, /etc/crontab or files in /etc/cron.d/ have" einfo " changed since the last generation of the systab and" einfo " regenerate it from those three locations as necessary." einfo " You should run 'check_system_crontabs' once now to properly" einfo " generate an initial systab:" einfo einfo " check_system_crontabs -v -i -f" einfo einfo " The file /etc/fcrontab should only be used to run that" einfo " script in order to ensure independence from the standard" einfo " system crontab file /etc/crontab." einfo " You may of course adjust the schedule for the script" einfo " 'check_system_crontabs' or any other setting in" einfo " /etc/fcrontab as you desire." einfo einfo "If you do NOT want to use 'check_system_crontabs', you" einfo "might still want to activate the use of the well known" einfo "directories /etc/cron.{hourly|daily|weekly|monthly} by" einfo "just generating a systab once from /etc/crontab:" einfo einfo " fcrontab -u systab /etc/crontab" einfo einfo "Happy fcron'ing!" einfo }