1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
# Copyright 1999-2006 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-r1.ebuild,v 1.1 2006/06/20 19:44:58 wschlich 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="~x86 ~ppc ~sparc ~mips ~hppa ~amd64"
IUSE="debug doc pam selinux"
DEPEND="virtual/editor
doc? ( >=app-text/docbook-dsssl-stylesheets-1.77 )
selinux? ( sys-libs/libselinux )
pam? ( >=sys-libs/pam-0.77 )"
pkg_setup() {
# sudo unsets EDITOR
if [[ -z "${EDITOR}" ]] ; then
eerror "EDITOR seems to be unset. If you use sudo, it may be the cause."
eerror "Try using 'sudo env EDITOR=\${EDITOR} emerge' instead."
die "Please set the EDITOR env variable to the path of a valid executable."
fi
# bug #65263
# fcron's ./configure complains if EDITOR is not set to an absolute path,
# so try to set it to the abs path if it isn't
if [[ "${EDITOR}" != */* ]] ; then
einfo "Attempting to deduce absolute path of ${EDITOR}"
EDITOR=$(which ${EDITOR} 2>/dev/null)
[[ -x "${EDITOR}" ]] || \
die "Please set the EDITOR env variable to the path of a valid executable."
fi
ROOTUSER=$(egetent passwd 0 | cut -d':' -f1)
ROOTGROUP=$(egetent group 0 | cut -d':' -f1)
}
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=${EDITOR} \
--with-shell=/bin/sh \
${myconf} \
|| die "Configure problem"
emake || die "Compile problem"
}
src_install() {
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
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"
newpamd files/fcron.pam fcron
newpamd files/fcrontab.pam fcrontab
insinto /etc
doins ${FILESDIR}/crontab
newinitd ${FILESDIR}/fcron.init fcron || die "newinitd failed"
# doc stuff
dodoc MANIFEST VERSION script/check_system_crontabs
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 "Each user who uses fcron should be added to the cron group"
einfo "in /etc/group and also be added in /etc/fcron/fcron.allow"
einfo
einfo "It is possible to emulate vixie-cron's behavior with regards to /etc/crontab"
einfo "and /etc/cron.d. To do so, read the directions provided in the script,"
einfo "/usr/share/doc/${PF}/check_system_crontabs.gz."
cron_pkg_postinst
}
|