- updated to 1.5.7
[packages/cronie.git] / cronie.spec
1 # TODO
2 # - update paths in manuals (create .in files and send upstream)
3 # - make /etc/pam.d independant of sysconfdir (configure-able option and send upstream)
4 # - syslog output (-s) writes two bytes of garbage to syslog instead of actual data:
5 #   Mar  3 09:30:01 ravenous CROND[2528]: 4ÿ
6 #
7 # Conditional build:
8 %bcond_without  inotify         # without inotify support
9 %bcond_without  selinux         # without SELinux support
10 %bcond_without  audit           # without audit support
11
12 Summary:        Cron daemon for executing programs at set times
13 Summary(pl.UTF-8):      Demon cron do uruchamiania programów o zadanym czasie
14 Name:           cronie
15 Version:        1.5.5
16 Release:        1
17 License:        MIT and BSD and GPL v2
18 Group:          Daemons
19 Source0:        https://github.com/cronie-crond/cronie/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz
20 # Source0-md5:  351a37d0b5bd0144816724b4482747ad
21 Source1:        %{name}.init
22 Source3:        cron.sysconfig
23 Source4:        %{name}.crontab
24 Source5:        %{name}.pam
25 Patch0:         inotify-nosys.patch
26 Patch1:         sendmail-path.patch
27 URL:            https://github.com/cronie-crond/cronie/
28 %{?with_audit:BuildRequires:    audit-libs-devel}
29 BuildRequires:  autoconf >= 2.60
30 BuildRequires:  automake
31 BuildRequires:  glibc-devel >= 6:2.21
32 %{?with_selinux:BuildRequires:  libselinux-devel}
33 BuildRequires:  pam-devel
34 BuildRequires:  rpm >= 4.4.9-56
35 BuildRequires:  rpmbuild(macros) >= 1.647
36 Requires(post): fileutils
37 Requires(post,preun):   /sbin/chkconfig
38 Requires(postun):       /usr/sbin/groupdel
39 Requires(pre):  /usr/bin/getgid
40 Requires(pre):  /usr/sbin/groupadd
41 Requires:       /bin/run-parts
42 Requires:       psmisc >= 20.1
43 Requires:       rc-scripts >= 0.4.3.0
44 %{?with_inotify:Requires:       uname(release) >= 2.6.13}
45 Provides:       crondaemon
46 Provides:       crontabs = 1.7
47 Provides:       cronjobs
48 Provides:       group(crontab)
49 Provides:       vixie-cron = 4.3-1
50 Obsoletes:      crondaemon
51 Obsoletes:      cronie-systemd
52 Obsoletes:      crontabs
53 Obsoletes:      cronjobs
54 Obsoletes:      vixie-cron < 4.3-1
55 Conflicts:      sysklogd < 1.5.1-2
56 Conflicts:      syslog-ng < 3.6.4-3
57 Conflicts:      rsyslog < 5.10.1-4
58 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
59
60 %description
61 Cronie contains the standard UNIX daemon crond that runs specified
62 programs at scheduled times and related tools. It is based on the
63 original cron and has security and configuration enhancements like the
64 ability to use PAM and SELinux.
65
66 %description -l pl.UTF-8
67 Cronie zawiera standardowego demona uniksowego crond, uruchamiającego
68 podane programy o zadanym czasie, oraz powiązane narzędzia. Jest
69 oparty na oryginalnym cronie i zawiera rozszerzenia bezpieczeństwa i
70 konfiguracji, takie jak możliwość wykorzystania mechanizmów PAM i
71 SELinux.
72
73 %package anacron
74 Summary:        Utility for running regular jobs
75 Summary(pl.UTF-8):      Narzędzie do uruchamiania regularnych zadań
76 Group:          Base
77 Provides:       anacron = 2.4
78 Obsoletes:      anacron <= 2.3
79
80 %description anacron
81 Anacron becames part of cronie. Anacron is used only for running
82 regular jobs. The default settings execute regular jobs by anacron,
83 however this could be overloaded in settings.
84
85 %description anacron -l pl.UTF-8
86 Anacron stał się częścią cronie. Służy tylko do uruchamiania
87 regularnych zadań. Domyślne ustawienia wykonują zadania przy użyciu
88 anacrona, ale może to być zmienione w ustawieniach.
89
90 %prep
91 %setup -q
92 %patch0 -p1
93 %patch1 -p1
94
95 %build
96 %{__aclocal}
97 %{__autoconf}
98 %{__autoheader}
99 %{__automake}
100 %configure \
101         SYSCRONTAB=/etc/crontab \
102         SYS_CROND_DIR=/etc/cron.d \
103         --sysconfdir=/etc/cron \
104         --with-editor=/bin/vi \
105         --with-audit%{!?with_audit:=no} \
106         --with-inotify%{!?with_inotify:=no} \
107         --with-pam \
108         --with-selinux%{!?with_selinux:=no} \
109         --disable-silent-rules \
110         --disable-syscrontab \
111         --enable-anacron \
112 %if "%{cc_version}" >= "3.4"
113         --enable-pie \
114 %endif
115         --enable-relro
116
117 %{__make}
118
119 %install
120 rm -rf $RPM_BUILD_ROOT
121 install -d $RPM_BUILD_ROOT{/var/{log,spool/{ana,}cron},%{_mandir}}\
122         $RPM_BUILD_ROOT/etc/{rc.d/init.d,logrotate.d,sysconfig} \
123         $RPM_BUILD_ROOT%{_sysconfdir}/{cron,cron.{d,hourly,daily,weekly,monthly},pam.d}
124
125 %{__make} install \
126         pamdir=/etc/pam.d \
127         DESTDIR=$RPM_BUILD_ROOT
128
129 cp -p %{SOURCE5} crond.pam
130
131 %if %{without audit}
132 # remove recording user's login uid to the process attribute
133 %{__sed} -i -e '/pam_loginuid.so/d' crond.pam
134 %endif
135
136 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/crond
137 cp -a contrib/0anacron $RPM_BUILD_ROOT/etc/cron.hourly/0anacron
138 cp -a contrib/anacrontab $RPM_BUILD_ROOT/etc/cron/anacrontab
139 cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/cron
140 cp -a %{SOURCE4} $RPM_BUILD_ROOT/etc/cron.d/crontab
141 cp -a crond.pam  $RPM_BUILD_ROOT/etc/pam.d/crond
142
143 cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.allow << 'EOF'
144 # cron.allow    This file describes the names of the users which are
145 #               allowed to use the local cron daemon
146 root
147 EOF
148
149 cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.deny << 'EOF'
150 # cron.deny     This file describes the names of the users which are
151 #               NOT allowed to use the local cron daemon
152 EOF
153
154 %clean
155 rm -rf $RPM_BUILD_ROOT
156
157 %pre
158 %groupadd -g 117 -r -f crontab
159
160 %post
161 /sbin/chkconfig --add crond
162 %service crond restart "Cron Daemon"
163
164 %preun
165 if [ "$1" = "0" ]; then
166         %service crond stop
167         /sbin/chkconfig --del crond
168 fi
169
170 %postun
171 if [ "$1" = "0" ]; then
172         %groupremove crontab
173 fi
174
175 %triggerpostun -- cronie < 1.4.8-13
176 if [ -f /etc/sysconfig/cron ]; then
177         . /etc/sysconfig/cron
178         __CROND_ARGS=
179         [ "$CROND_SYSLOG_RESULT" = "yes" ] && __CROND_ARGS="-s"
180         [ -n "$CROND_MAIL_PROG" ] && __CROND_ARGS="$__CROND_ARGS -m $CROND_MAIL_PROG"
181         if [ -n "$__CROND_ARGS" ]; then
182                 %{__cp} -f /etc/sysconfig/cron{,.rpmsave}
183                 echo >>/etc/sysconfig/cron
184                 echo "# Added by rpm trigger" >>/etc/sysconfig/cron
185                 echo "CROND_ARGS=\"$CROND_ARGS $__CROND_ARGS\"" >>/etc/sysconfig/cron
186         fi
187 fi
188
189 %triggerun -- hc-cron,fcron,vixie-cron < 4.3-1
190 # Prevent preun from crond from working
191 chmod a-x /etc/rc.d/init.d/crond
192
193 %triggerpostun -- hc-cron,fcron,vixie-cron < 4.3-1
194 # Restore what triggerun removed
195 chmod 754 /etc/rc.d/init.d/crond
196 # reinstall crond init.d links, which could be different
197 /sbin/chkconfig --del crond
198 /sbin/chkconfig --add crond
199
200 %files
201 %defattr(644,root,root,755)
202 %doc AUTHORS ChangeLog README
203 %attr(750,root,crontab) %dir /etc/cron
204 %attr(750,root,crontab) %dir /etc/cron.daily
205 %attr(750,root,crontab) %dir /etc/cron.hourly
206 %attr(750,root,crontab) %dir /etc/cron.monthly
207 %attr(750,root,crontab) %dir /etc/cron.weekly
208 %attr(640,root,crontab) %config(noreplace,missingok) /etc/cron.d/crontab
209 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.allow
210 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.deny
211 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/cron
212 %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/crond
213 %attr(754,root,root) /etc/rc.d/init.d/crond
214 %attr(755,root,root) %{_sbindir}/crond
215 %attr(2755,root,crontab) %{_bindir}/cronnext
216 %attr(2755,root,crontab) %{_bindir}/crontab
217
218 %{_mandir}/man8/crond.8*
219 %{_mandir}/man8/cron.8*
220 %{_mandir}/man5/crontab.5*
221 %{_mandir}/man1/cronnext.1*
222 %{_mandir}/man1/crontab.1*
223
224 %attr(1730,root,crontab) /var/spool/cron
225
226 %files anacron
227 %defattr(644,root,root,755)
228 %attr(755,root,root) %{_sbindir}/anacron
229 %attr(755,root,root) %{_sysconfdir}/cron.hourly/0anacron
230 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) /etc/cron/anacrontab
231 %{_mandir}/man5/anacrontab.5*
232 %{_mandir}/man8/anacron.8*
233
234 %attr(1730,root,crontab) /var/spool/anacron