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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
# 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.2.ebuild,v 1.1 2007/01/18 00:27:31 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="~amd64 ~hppa ~mips ~ppc ~sparc ~x86"
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
}
|