-# TODO:
-# - added support for selinux
-# - rewrite and correct %post, %pre
Summary: A periodical command scheduler which aims at replacing Vixie Cron
-Summary(pl): Serwer okresowego uruchamiania poleceñ zastepuj±cy Vixie Crona
+Summary(pl.UTF-8): Serwer okresowego uruchamiania poleceń zastępujący Vixie Crona
Name: fcron
-Version: 2.9.5
-Release: 0.3
+Version: 3.0.3
+Release: 1
License: GPL
Group: Daemons
Source0: http://fcron.free.fr/archives/%{name}-%{version}.src.tar.gz
-# Source0-md5: 73042f2666dff27444789d542bbcd607
+# Source0-md5: c85e6eecd0564f37658ae250a491fd31
Source1: %{name}.init
Source2: cron.logrotate
Source3: cron.sysconfig
Source4: %{name}.crontab
Source5: %{name}.pam
Source6: %{name}.conf
-Source7: fcrontab.pam
+Source7: %{name}tab.pam
+Source8: %{name}.systab
+Patch0: %{name}-mail_output_only_if_there_is_output.patch
+Patch1: %{name}-configure.patch
+Patch2: %{name}-Makefile.patch
URL: http://fcron.free.fr/
-#BuildRequires: libselinux-devel
+# configure tests -x (check can be removed, just like sendmail)
+BuildRequires: /bin/vi
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: libselinux-devel
BuildRequires: pam-devel
-BuildRequires: rpmbuild(macros) >= 1.159
-PreReq: rc-scripts
-Requires(pre): /usr/bin/getgid
-Requires(pre): /usr/sbin/groupadd
-Requires(post,preun): /sbin/chkconfig
+BuildRequires: rpmbuild(macros) >= 1.268
Requires(post): fileutils
+Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/groupdel
+Requires(pre): /bin/id
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires(pre): /usr/sbin/useradd
Requires: /bin/run-parts
Requires: psmisc >= 20.1
-Provides: crontabs >= 1.7
+Requires: rc-scripts
Provides: crondaemon
+Provides: crontabs >= 1.7
Provides: group(crontab)
Obsoletes: crontabs
-Obsoletes: crondaemon
Obsoletes: hc-cron
Obsoletes: mcron
Obsoletes: vixie-cron
interval of time. You can also set a nice value to a job, run it
depending on the system load average and much more !
-%description -l pl
-Fcron jest serwerem okresowego uruchamiania poleceñ maj±cym za cel
-zast±pienie Vixie Crona, posiadaj±cym zaimplementowane wiêkszo¶æ
-spo¶ród jego funkcji. Jednak¿e fcron nie zak³ada, ¿e system dzia³a
-ca³y czas, ani ¿e jest uruchamiany regularnie: mo¿na, na przyk³ad,
-kazaæ fcronowi uruchamiaæ zadanie co ka¿de x godzin y minut od
-uruchomienia systemu lub wykonywaæ zadanie dok³adnie raz w podanym
-okresie czasu. Umo¿liwia równie¿ ustawianie warto¶ci nice dla zadania,
-uruchamianie go w zale¿no¶ci od obci±¿enia systemu i du¿o wiêcej.
+%description -l pl.UTF-8
+Fcron jest serwerem okresowego uruchamiania poleceń mającym za cel
+zastąpienie Vixie Crona, posiadającym zaimplementowane większość
+spośród jego funkcji. Jednakże fcron nie zakłada, że system działa
+cały czas, ani że jest uruchamiany regularnie: można, na przykład,
+kazać fcronowi uruchamiać zadanie co każde x godzin y minut od
+uruchomienia systemu lub wykonywać zadanie dokładnie raz w podanym
+okresie czasu. Umożliwia również ustawianie wartości nice dla zadania,
+uruchamianie go w zależności od obciążenia systemu i dużo więcej.
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
%build
+%{__aclocal}
+%{__autoconf}
%configure \
+ --with-sendmail=/usr/sbin/sendmail \
+ --with-sysfcrontab=systab \
--with-spooldir=%{_var}/spool/cron \
--with-run-non-privileged=no \
--with-boot-install=no \
--with-username=crontab \
--with-groupname=crontab \
--with-pam=yes \
- --with-selinux=no \
- --with-boot-install=no
+ --with-selinux=yes \
+ --with-boot-install=no \
+ --with-editor=/bin/vi
-%{__make}
+%{__make} \
+ OPTION="%{rpmcflags}"
echo "#!/bin/sh" > script/user-group
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT \
- DESTSBIN=$RPM_BUILD_ROOT%{_sbindir} \
- DESTBIN=$RPM_BUILD_ROOT%{_bindir} \
- DESTMAN=$RPM_BUILD_ROOT%{_mandir} \
ROOTNAME=$(id -u) \
ROOTGROUP=$(id -g) \
USERNAME=$(id -u) \
GROUPNAME=$(id -g)
#fix premission for rpmbuild
-chmod +rw $RPM_BUILD_ROOT/usr/*bin/*
+chmod +rw $RPM_BUILD_ROOT%{_prefix}/*bin/*
ln -sf %{_bindir}/fcrontab $RPM_BUILD_ROOT%{_bindir}/crontab
mv -f $RPM_BUILD_ROOT%{_sbindir}/fcron $RPM_BUILD_ROOT%{_sbindir}/crond
install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/cron
install %{SOURCE4} $RPM_BUILD_ROOT/etc/cron.d/crontab
install %{SOURCE5} $RPM_BUILD_ROOT/etc/pam.d/fcron
-install %{SOURCE6} $RPM_BUILD_ROOT/etc/fcron.conf
+install %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/fcron.conf
install %{SOURCE7} $RPM_BUILD_ROOT/etc/pam.d/fcrontab
-
-#for a in fi fr id ja ko pl ; do
-# if test -f $a/man1/crontab.1 ; then
-# install -d $RPM_BUILD_ROOT%{_mandir}/$a/man1
-# install $a/man1/crontab.1 $RPM_BUILD_ROOT%{_mandir}/$a/man1
-# fi
-# if test -f $a/man5/crontab.5 ; then
-# install -d $RPM_BUILD_ROOT%{_mandir}/$a/man5
-# install $a/man5/crontab.5 $RPM_BUILD_ROOT%{_mandir}/$a/man5
-# fi
-# if test -f $a/man8/cron.8 ; then
-# install -d $RPM_BUILD_ROOT%{_mandir}/$a/man8
-# install $a/man8/cron.8 $RPM_BUILD_ROOT%{_mandir}/$a/man8
-# echo .so cron.8 > $RPM_BUILD_ROOT%{_mandir}/$a/man8/crond.8
-# fi
-#done
+install %{SOURCE8} $RPM_BUILD_ROOT/etc/cron.hourly/fcron.systab
touch $RPM_BUILD_ROOT/var/log/cron
cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.allow << EOF
-# cron.allow This file describes the names of the users which are
-# allowed to use the local cron daemon
+# cron.allow This file describes the names of the users which are
+# allowed to use the local cron daemon
root
EOF
cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.deny << EOF2
-# cron.deny This file describes the names of the users which are
-# NOT allowed to use the local cron daemon
+# cron.deny This file describes the names of the users which are
+# NOT allowed to use the local cron daemon
EOF2
%clean
rm -rf $RPM_BUILD_ROOT
%pre
-if [ -n "`/usr/bin/getgid crontab`" ]; then
- if [ "`/usr/bin/getgid crontab`" != "117" ]; then
- echo "Error: group crontab doesn't have gid=117. Correct this before installing cron." 1>&2
- exit 1
- fi
-else
- echo "Adding group crontab GID=117."
- /usr/sbin/groupadd -g 117 -r -f crontab
-fi
-
-if [ -n "`/bin/id -u crontab 2>/dev/null`" ]; then
- if [ "`/bin/id -u crontab`" != "134" ]; then
- echo "Error: user crontab doesn't have uid=134. Correct this before installing %{name}." 1>&2
- exit 1
- fi
-else
- /usr/sbin/useradd -u 134 -r -d /var/spool/cron -s /bin/false -c "crontab User" -g crontab crontab 1>&2
-fi
+%groupadd -g 117 -r -f crontab
+%useradd -u 134 -r -d /var/spool/cron -s /bin/false -c "crontab User" -g crontab crontab
%post
if [ "$1" = "1" ]; then
if [ -d /var/spool/cron ]; then
- for FILE in /var/spool/cron/*; do
+ FIND=`find /var/spool/cron -type f`
+ for FILE in $FIND; do
mv -f $FILE $FILE.orig
USER=`basename $FILE`
chown crontab:crontab $FILE.orig
fi
if [ "$1" = "2" ]; then
- for FILE in /var/spool/cron/*.orig; do
+ FIND=`find /var/spool/cron -name \*.orig`
+ for FILE in $FIND; do
BASENAME=`basename $FILE`
USER=`echo "$BASENAME"| sed 's/.orig//'`
[ ! -z "$USER" ] && fcrontab -u $USER -z > /dev/null 2>&1
fi
/sbin/chkconfig --add crond
-if [ -f /var/lock/subsys/crond ]; then
- /etc/rc.d/init.d/crond restart >&2
-else
- echo "Run \"/etc/rc.d/init.d/crond start\" to start cron daemon."
-fi
+%service crond restart "cron daemon"
umask 027
touch /var/log/cron
%preun
if [ "$1" = "0" ]; then
- if [ -f /var/lock/subsys/crond ]; then
- /etc/rc.d/init.d/crond stop >&2
- fi
+ %service crond stop
/sbin/chkconfig --del crond
-rm -f /var/spool/cron/systab*
-for FILE in /var/spool/cron/*.orig; do
- BASENAME=`basename $FILE`
- USER="`echo "$BASENAME"| sed 's/.orig//'`"
- mv -f $FILE /var/spool/cron/$USER >/dev/null 2>&1
- chown $USER:crontab /var/spool/cron/$USER >/dev/null 2>&1
- chmod 600 /var/spool/cron/$USER >/dev/null 2>&1
-done
+ rm -f /var/spool/cron/systab*
+
+ FIND=`find /var/spool/cron -name '*.orig'`
+ for FILE in $FIND; do
+ BASENAME=`basename $FILE`
+ USER="${BASENAME%.orig}"
+ mv -f $FILE /var/spool/cron/$USER >/dev/null 2>&1
+ chown $USER:crontab /var/spool/cron/$USER >/dev/null 2>&1
+ chmod 600 /var/spool/cron/$USER >/dev/null 2>&1
+ done
+ rm -f /var/spool/cron/rm\.*
+ rm -f /var/spool/cron/fcrontab.sig
+ rm -f /var/spool/cron/new\.*
fi
%postun
/sbin/chkconfig --add crond
%triggerpostun -- hc-cron <= 0.14-12
-for i in `/bin/ls /var/spool/cron 2>/dev/null`
-do
+for i in `/bin/ls /var/spool/cron 2>/dev/null`; do
chown ${i} /var/spool/cron/${i} 2>/dev/null || :
done
/bin/chmod 660 /var/log/cron
%files
%defattr(644,root,root,755)
-%doc doc/HTML doc/olddoc/{FAQ,CHANGES,README,THANKS,TODO}
-%attr(0750,root,crontab) %dir %{_sysconfdir}/cron*
-%attr(0644,root,crontab) %config(noreplace) /etc/cron.d/crontab
-%attr(0640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.allow
-%attr(0640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.deny
-%attr(0640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/cron
-%attr(0644,root,crontab) %config(noreplace) %verify(not md5 size mtime) /etc/pam.d/fcron
-%attr(0644,root,crontab) %config(noreplace) %verify(not md5 size mtime) /etc/pam.d/fcrontab
-%attr(0754,root,root) /etc/rc.d/init.d/crond
-%config(noreplace) %verify(not md5 size mtime) %attr(640,root,root) /etc/logrotate.d/cron
-%attr(0640,root,crontab) %config(noreplace) /etc/fcron.conf
-%attr(0755,root,root) %{_sbindir}/crond
+%doc doc/en/HTML doc/en/txt/{faq.txt,changes.txt,readme.txt,thanks.txt,todo.txt}
+%attr(750,root,crontab) %dir %{_sysconfdir}/cron*
+%attr(750,root,root) %{_sysconfdir}/cron.hourly/%{name}.systab
+%attr(640,root,crontab) %config(noreplace) /etc/cron.d/crontab
+%attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.allow
+%attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.deny
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/cron
+%attr(644,root,crontab) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/fcron
+%attr(644,root,crontab) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/fcrontab
+%attr(754,root,root) /etc/rc.d/init.d/crond
+%config(noreplace) %verify(not md5 mtime size) %attr(640,root,root) /etc/logrotate.d/cron
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fcron.*
+%attr(640,root,crontab) %config(noreplace) %{_sysconfdir}/fcron.conf
+%attr(755,root,root) %{_sbindir}/crond
%attr(6111,crontab,crontab) %{_bindir}/fcrontab
%attr(6111,crontab,crontab) %{_bindir}/crontab
%attr(4711,root,root) %{_bindir}/fcronsighup
%attr(6111,crontab,crontab) %{_bindir}/fcrondyn
-
-%{_mandir}/man*/*
-#%%lang(fi) %{_mandir}/fi/man*/*
-#%%lang(fr) %{_mandir}/fr/man*/*
-#%%lang(id) %{_mandir}/id/man*/*
-#%%lang(ja) %{_mandir}/ja/man*/*
-#%%lang(ko) %{_mandir}/ko/man*/*
-#%%lang(pl) %{_mandir}/pl/man*/*
-
+%{_mandir}/man1/fcrondyn.1*
+%{_mandir}/man1/fcrontab.1*
+%{_mandir}/man3/bitstring.3*
+%{_mandir}/man5/fcron.conf.5*
+%{_mandir}/man5/fcrontab.5*
+%{_mandir}/man8/fcron.8*
+%lang(fr) %{_mandir}/fr/man1/fcrondyn.1*
+%lang(fr) %{_mandir}/fr/man1/fcrontab.1*
+%lang(fr) %{_mandir}/fr/man3/bitstring.3*
+%lang(fr) %{_mandir}/fr/man5/fcron.conf.5*
+%lang(fr) %{_mandir}/fr/man5/fcrontab.5*
+%lang(fr) %{_mandir}/fr/man8/fcron.8*
%attr(1730,root,crontab) /var/spool/cron
-%attr(0660,root,crontab) %ghost /var/log/cron
+%attr(660,root,crontab) %ghost /var/log/cron