+# 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
+Summary(pl.UTF-8): Demon cron do uruchamiania programów o zadanym czasie
Name: cronie
-Version: 1.4.1
+Version: 1.5.1
Release: 2
-License: MIT and BSD and GPLv2
+License: MIT and BSD and GPL v2
Group: Daemons
-Source0: %{name}-%{version}.tar.gz
-# Source0-md5: 9c089d2035b9fa8263bc71da3eb31cdd
+Source0: https://github.com/cronie-crond/cronie/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: 910e6effcc032998b0a49fbd46322e18
Source1: %{name}.init
-Source2: cron.logrotate
Source3: cron.sysconfig
Source4: %{name}.crontab
Source5: %{name}.pam
-URL: https://fedorahosted.org/cronie/
+Source6: crond.service
+Patch0: inotify-nosys.patch
+Patch1: sendmail-path.patch
+URL: https://github.com/cronie-crond/cronie/
%{?with_audit:BuildRequires: audit-libs-devel}
-BuildRequires: autoconf
+BuildRequires: autoconf >= 2.60
BuildRequires: automake
-%{?with_inotify:BuildRequires: glibc-devel >= 6:2.4}
+BuildRequires: glibc-devel >= 6:2.21
%{?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: cronjobs
Provides: group(crontab)
-Provides: vixie-cron = 4:4.4
+%if "%{pld_release}" == "th"
+Provides: vixie-cron = 4.3-1
+%endif
Obsoletes: crondaemon
+Obsoletes: cronie-systemd
Obsoletes: crontabs
-Obsoletes: vixie-cron <= 4:4.3
+Obsoletes: cronjobs
+%if "%{pld_release}" == "th"
+Obsoletes: vixie-cron < 4.3-1
+%endif
+Conflicts: sysklogd < 1.5.1-2
+Conflicts: syslog-ng < 3.6.4-3
+Conflicts: rsyslog < 5.10.1-4
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
Cronie contains the standard UNIX daemon crond that runs specified
programs at scheduled times and related tools. It is based on the
original cron and has security and configuration enhancements like the
-ability to use pam and SELinux.
+ability to use PAM and SELinux.
+
+%description -l pl.UTF-8
+Cronie zawiera standardowego demona uniksowego crond, uruchamiającego
+podane programy o zadanym czasie, oraz powiązane narzędzia. Jest
+oparty na oryginalnym cronie i zawiera rozszerzenia bezpieczeństwa i
+konfiguracji, takie jak możliwość wykorzystania mechanizmów PAM i
+SELinux.
%package anacron
Summary: Utility for running regular jobs
+Summary(pl.UTF-8): Narzędzie do uruchamiania regularnych zadań
Group: Base
Provides: anacron = 2.4
Obsoletes: anacron <= 2.3
regular jobs. The default settings execute regular jobs by anacron,
however this could be overloaded in settings.
+%description anacron -l pl.UTF-8
+Anacron stał się częścią cronie. Służy tylko do uruchamiania
+regularnych zadań. Domyślne ustawienia wykonują zadania przy użyciu
+anacrona, ale może to być zmienione w ustawieniach.
+
%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-audit%{!?with_audit:=no} \
+ --with-inotify%{!?with_inotify:=no} \
--with-pam \
- --with%{!?with_selinux:out}-selinux \
- --with%{!?with_audit:out}-audit \
- --with%{!?with_inotify:out}-inotify \
- --enable-anacron
+ --with-selinux%{!?with_selinux:=no} \
+ --disable-syscrontab \
+ --enable-anacron \
+%if "%{cc_version}" >= "3.4"
+ --enable-pie \
+%endif
+ --enable-relro
%{__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*