+# TODO
+# - update paths in manuals (create .in files and send upstream)
+# - make /etc/pam.d independant of sysconfdir (configure-able option and send upstream)
+# - syslog output (-s) writes two bytes of garbage to syslog instead of actual data:
+# Mar 3 09:30:01 ravenous CROND[2528]: 4ΓΏ
#
# Conditional build:
-%bcond_without selinux # without SELinux support
%bcond_without inotify # without inotify support
+%if "%{pld_release}" == "ac"
+%bcond_with selinux # with SELinux support
+%bcond_with audit # with audit support
+%else
+%bcond_without selinux # without SELinux support
%bcond_without audit # without audit support
-#
+%endif
+
Summary: Cron daemon for executing programs at set times
Name: cronie
-Version: 1.4.1
-Release: 3
-License: MIT and BSD and GPLv2
+Version: 1.5.0
+Release: 2
+License: MIT and BSD and GPL v2
Group: Daemons
-Source0: %{name}-%{version}.tar.gz
-# Source0-md5: 9c089d2035b9fa8263bc71da3eb31cdd
+Source0: https://fedorahosted.org/releases/c/r/cronie/%{name}-%{version}.tar.gz
+# Source0-md5: 9db75e1884d83a45e002d145c6c54d45
Source1: %{name}.init
-Source2: cron.logrotate
Source3: cron.sysconfig
Source4: %{name}.crontab
Source5: %{name}.pam
+Source6: crond.service
Patch0: inotify-nosys.patch
+Patch1: sendmail-path.patch
URL: https://fedorahosted.org/cronie/
%{?with_audit:BuildRequires: audit-libs-devel}
BuildRequires: autoconf
BuildRequires: automake
%{?with_selinux:BuildRequires: libselinux-devel}
BuildRequires: pam-devel
-BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: rpm >= 4.4.9-56
+BuildRequires: rpmbuild(macros) >= 1.647
Requires(post): fileutils
Requires(post,preun): /sbin/chkconfig
-Requires(post,preun): rc-scripts
Requires(postun): /usr/sbin/groupdel
Requires(pre): /usr/bin/getgid
Requires(pre): /usr/sbin/groupadd
Requires: /bin/run-parts
-Requires: /sbin/chkconfig
Requires: psmisc >= 20.1
-Requires: rc-scripts
+Requires: rc-scripts >= 0.4.3.0
+%if "%{pld_release}" != "ac"
+Requires(post,preun,postun): systemd-units >= 38
+Requires: systemd-units >= 38}
+%endif
%{?with_inotify:Requires: uname(release) >= 2.6.13}
Provides: crondaemon
Provides: crontabs = 1.7
Provides: group(crontab)
-%if "%{pld_release}" != "ti"
-Provides: vixie-cron = 4:4.4
+%if "%{pld_release}" == "th"
+Provides: vixie-cron = 4.3-1
%endif
Obsoletes: crondaemon
+Obsoletes: cronie-systemd
Obsoletes: crontabs
-%if "%{pld_release}" != "ti"
-Obsoletes: vixie-cron <= 4:4.3
+%if "%{pld_release}" == "th"
+Obsoletes: vixie-cron < 4.3-1
%endif
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%prep
%setup -q
%patch0 -p1
+%patch1 -p1
%build
%{__aclocal}
%{__autoheader}
%{__automake}
%configure \
- SYSCRONTAB=/etc/cron.d/crontab \
+ SYSCRONTAB=/etc/crontab \
SYS_CROND_DIR=/etc/cron.d \
--sysconfdir=/etc/cron \
+ --with-editor=/bin/vi \
--with-pam \
--with%{!?with_selinux:out}-selinux \
--with%{!?with_audit:out}-audit \
--with%{!?with_inotify:out}-inotify \
+ --disable-syscrontab \
+%if "%{cc_version}" >= "3.4"
+ --enable-pie \
+%endif
+ --enable-relro \
--enable-anacron
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/var/{log,spool/{ana,}cron},%{_mandir}} \
+install -d $RPM_BUILD_ROOT{/var/{log,spool/{ana,}cron},%{_mandir},%{systemdunitdir}}\
$RPM_BUILD_ROOT/etc/{rc.d/init.d,logrotate.d,sysconfig} \
$RPM_BUILD_ROOT%{_sysconfdir}/{cron,cron.{d,hourly,daily,weekly,monthly},pam.d}
%{__make} install \
+ pamdir=/etc/pam.d \
DESTDIR=$RPM_BUILD_ROOT
-install contrib/0anacron $RPM_BUILD_ROOT/etc/cron.hourly/0anacron
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/crond
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/logrotate.d/cron
-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/crond
-
-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
- fi
-done
+cp -p %{SOURCE5} crond.pam
-touch $RPM_BUILD_ROOT/var/log/cron
+%if %{without audit}
+# remove recording user's login uid to the process attribute
+%{__sed} -i -e '/pam_loginuid.so/d' crond.pam
+%endif
+
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/crond
+cp -a contrib/0anacron $RPM_BUILD_ROOT/etc/cron.hourly/0anacron
+cp -a contrib/anacrontab $RPM_BUILD_ROOT/etc/cron/anacrontab
+cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/cron
+cp -a %{SOURCE4} $RPM_BUILD_ROOT/etc/cron.d/crontab
+cp -a crond.pam $RPM_BUILD_ROOT/etc/pam.d/crond
+cp -a %{SOURCE6} $RPM_BUILD_ROOT%{systemdunitdir}/crond.service
cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.allow << 'EOF'
# cron.allow This file describes the names of the users which are
%post
/sbin/chkconfig --add crond
-umask 027
-touch /var/log/cron
-chgrp crontab /var/log/cron
-chmod 660 /var/log/cron
%service crond restart "Cron Daemon"
+%systemd_post crond.service
%preun
if [ "$1" = "0" ]; then
%service crond stop
/sbin/chkconfig --del crond
fi
+%systemd_preun crond.service
%postun
if [ "$1" = "0" ]; then
%groupremove crontab
fi
+%systemd_reload
+
+%triggerpostun -- cronie < 1.4.8-13
+if [ -f /etc/sysconfig/cron ]; then
+ . /etc/sysconfig/cron
+ __CROND_ARGS=
+ [ "$CROND_SYSLOG_RESULT" = "yes" ] && __CROND_ARGS="-s"
+ [ -n "$CROND_MAIL_PROG" ] && __CROND_ARGS="$__CROND_ARGS -m $CROND_MAIL_PROG"
+ if [ -n "$__CROND_ARGS" ]; then
+ %{__cp} -f /etc/sysconfig/cron{,.rpmsave}
+ echo >>/etc/sysconfig/cron
+ echo "# Added by rpm trigger" >>/etc/sysconfig/cron
+ echo "CROND_ARGS=\"$CROND_ARGS $__CROND_ARGS\"" >>/etc/sysconfig/cron
+ fi
+fi
+%systemd_trigger crond.service
-%triggerpostun -- hc-cron
-# reinstall crond init.d links, which could be different
-/sbin/chkconfig --del crond
-/sbin/chkconfig --add crond
-
-%triggerun -- vixie-cron
+%triggerun -- hc-cron,fcron,vixie-cron < 4.3-1
# Prevent preun from crond from working
chmod a-x /etc/rc.d/init.d/crond
-%triggerpostun -- vixie-cron
+%triggerpostun -- hc-cron,fcron,vixie-cron < 4.3-1
# Restore what triggerun removed
chmod 754 /etc/rc.d/init.d/crond
+# reinstall crond init.d links, which could be different
+/sbin/chkconfig --del crond
/sbin/chkconfig --add crond
%files
%defattr(644,root,root,755)
%doc AUTHORS ChangeLog README
-%attr(750,root,crontab) %dir %{_sysconfdir}/cron*
+%attr(750,root,crontab) %dir /etc/cron
+%attr(750,root,crontab) %dir /etc/cron.daily
+%attr(750,root,crontab) %dir /etc/cron.hourly
+%attr(750,root,crontab) %dir /etc/cron.monthly
+%attr(750,root,crontab) %dir /etc/cron.weekly
%attr(640,root,crontab) %config(noreplace,missingok) /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
%config(noreplace) %verify(not md5 mtime size) /etc/pam.d/crond
%attr(754,root,root) /etc/rc.d/init.d/crond
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/cron
+%{systemdunitdir}/crond.service
%attr(755,root,root) %{_sbindir}/crond
%attr(2755,root,crontab) %{_bindir}/crontab
%{_mandir}/man1/crontab.1*
%attr(1730,root,crontab) /var/spool/cron
-%attr(660,root,crontab) %ghost /var/log/cron
%files anacron
%defattr(644,root,root,755)
%attr(755,root,root) %{_sbindir}/anacron
%attr(755,root,root) %{_sysconfdir}/cron.hourly/0anacron
+%attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) /etc/cron/anacrontab
%{_mandir}/man5/anacrontab.5*
%{_mandir}/man8/anacron.8*