]> git.pld-linux.org Git - packages/cronie.git/blobdiff - cronie.spec
Rel 4; make cronie restart itself when PAM problems happen.
[packages/cronie.git] / cronie.spec
index 79b024a4f18898d8c8aae62f6880acf34f36b873..c7b5da6ce59f87b655d8a46b250c69b7331871db 100644 (file)
@@ -1,71 +1,92 @@
 # 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 inotify         # without inotify support
 %if "%{pld_release}" == "ac"
-%bcond_with            selinux         # without SELinux support
-%bcond_with            audit           # without audit support
+%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
-Release:       6
-License:       MIT and BSD and GPLv2
+Version:       1.5.7
+Release:       4
+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: 544f141aa4e34e0a176529be08441756
 Source1:       %{name}.init
-Source2:       cron.logrotate
 Source3:       cron.sysconfig
 Source4:       %{name}.crontab
 Source5:       %{name}.pam
+Source6:       crond.service
 Patch0:                inotify-nosys.patch
-URL:           https://fedorahosted.org/cronie/
+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
+BuildRequires: glibc-devel >= 6:2.21
 %{?with_selinux:BuildRequires: libselinux-devel}
 BuildRequires: pam-devel
 BuildRequires: rpm >= 4.4.9-56
-BuildRequires: rpmbuild(macros) >= 1.268
+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)
 %if "%{pld_release}" == "th"
-Provides:      vixie-cron = 4:4.4
+Provides:      vixie-cron = 4.3-1
 %endif
 Obsoletes:     crondaemon
+Obsoletes:     cronie-systemd
 Obsoletes:     crontabs
+Obsoletes:     cronjobs
 %if "%{pld_release}" == "th"
-Obsoletes:     vixie-cron <= 4:4.3
+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
@@ -75,9 +96,15 @@ Anacron becames part of cronie. Anacron is used only for running
 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}
@@ -88,17 +115,24 @@ however this could be overloaded in settings.
        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-silent-rules \
+       --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}
 
@@ -106,29 +140,20 @@ install -d $RPM_BUILD_ROOT{/var/{log,spool/{ana,}cron},%{_mandir}} \
        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
@@ -141,6 +166,18 @@ cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.deny << 'EOF'
 #              NOT allowed to use the local cron daemon
 EOF
 
+cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/check-crond << 'EOF'
+#!/bin/sh
+
+# ugly and limited hack. make cronie restart itself
+if [ -x /bin/awk -a -x /bin/grep -a -f /var/log/cron ]; then
+       LC_ALL=C /bin/awk -v d="$(LC_ALL=C date "+%b %e")" ' $1 " " $2 ~ d' /var/log/cron \
+               | /bin/grep -qE "PAM.*(Modu. jest nieznany|Module is unknown)" \
+               && echo "crond is failing on PAM, restarting ( https://github.com/cronie-crond/cronie/issues/87 )" >&2 \
+               && /sbin/service crond restart
+fi
+EOF
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -149,63 +186,81 @@ rm -rf $RPM_BUILD_ROOT
 
 %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 -- hc-cron
-# reinstall crond init.d links, which could be different
-/sbin/chkconfig --del crond
-/sbin/chkconfig --add crond
+%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
 
-%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,root) /etc/cron.daily/check-crond
+%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}/cronnext
 %attr(2755,root,crontab) %{_bindir}/crontab
 
 %{_mandir}/man8/crond.8*
 %{_mandir}/man8/cron.8*
 %{_mandir}/man5/crontab.5*
+%{_mandir}/man1/cronnext.1*
 %{_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*
 
This page took 0.113907 seconds and 4 git commands to generate.