- PLD merge
[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.1
16 Release:        2
17 License:        MIT and BSD and GPL v2
18 Group:          Daemons
19 Source0:        https://fedorahosted.org/releases/c/r/cronie/%{name}-%{version}.tar.gz
20 # Source0-md5:  910e6effcc032998b0a49fbd46322e18
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://fedorahosted.org/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:      crontabs
52 Obsoletes:      cronjobs
53 Obsoletes:      vixie-cron < 4.3-1
54 Conflicts:      sysklogd < 1.5.1-2
55 Conflicts:      syslog-ng < 3.6.4-3
56 Conflicts:      rsyslog < 5.10.1-4
57 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
58
59 %description
60 Cronie contains the standard UNIX daemon crond that runs specified
61 programs at scheduled times and related tools. It is based on the
62 original cron and has security and configuration enhancements like the
63 ability to use PAM and SELinux.
64
65 %description -l pl.UTF-8
66 Cronie zawiera standardowego demona uniksowego crond, uruchamiającego
67 podane programy o zadanym czasie, oraz powiązane narzędzia. Jest
68 oparty na oryginalnym cronie i zawiera rozszerzenia bezpieczeństwa i
69 konfiguracji, takie jak możliwość wykorzystania mechanizmów PAM i
70 SELinux.
71
72 %package anacron
73 Summary:        Utility for running regular jobs
74 Summary(pl.UTF-8):      Narzędzie do uruchamiania regularnych zadań
75 Group:          Base
76 Provides:       anacron = 2.4
77 Obsoletes:      anacron <= 2.3
78
79 %description anacron
80 Anacron becames part of cronie. Anacron is used only for running
81 regular jobs. The default settings execute regular jobs by anacron,
82 however this could be overloaded in settings.
83
84 %description anacron -l pl.UTF-8
85 Anacron stał się częścią cronie. Służy tylko do uruchamiania
86 regularnych zadań. Domyślne ustawienia wykonują zadania przy użyciu
87 anacrona, ale może to być zmienione w ustawieniach.
88
89 %prep
90 %setup -q
91 %patch0 -p1
92 %patch1 -p1
93
94 %build
95 %{__aclocal}
96 %{__autoconf}
97 %{__autoheader}
98 %{__automake}
99 %configure \
100         SYSCRONTAB=/etc/crontab \
101         SYS_CROND_DIR=/etc/cron.d \
102         --sysconfdir=/etc/cron \
103         --with-editor=/bin/vi \
104         --with-audit%{!?with_audit:=no} \
105         --with-inotify%{!?with_inotify:=no} \
106         --with-pam \
107         --with-selinux%{!?with_selinux:=no} \
108         --disable-syscrontab \
109         --enable-anacron \
110 %if "%{cc_version}" >= "3.4"
111         --enable-pie \
112 %endif
113         --enable-relro
114
115 %{__make}
116
117 %install
118 rm -rf $RPM_BUILD_ROOT
119 install -d $RPM_BUILD_ROOT{/var/{log,spool/{ana,}cron},%{_mandir}}\
120         $RPM_BUILD_ROOT/etc/{rc.d/init.d,logrotate.d,sysconfig} \
121         $RPM_BUILD_ROOT%{_sysconfdir}/{cron,cron.{d,hourly,daily,weekly,monthly},pam.d}
122
123 %{__make} install \
124         pamdir=/etc/pam.d \
125         DESTDIR=$RPM_BUILD_ROOT
126
127 cp -p %{SOURCE5} crond.pam
128
129 %if %{without audit}
130 # remove recording user's login uid to the process attribute
131 %{__sed} -i -e '/pam_loginuid.so/d' crond.pam
132 %endif
133
134 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/crond
135 cp -a contrib/0anacron $RPM_BUILD_ROOT/etc/cron.hourly/0anacron
136 cp -a contrib/anacrontab $RPM_BUILD_ROOT/etc/cron/anacrontab
137 cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/cron
138 cp -a %{SOURCE4} $RPM_BUILD_ROOT/etc/cron.d/crontab
139 cp -a crond.pam  $RPM_BUILD_ROOT/etc/pam.d/crond
140
141 cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.allow << 'EOF'
142 # cron.allow    This file describes the names of the users which are
143 #               allowed to use the local cron daemon
144 root
145 EOF
146
147 cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.deny << 'EOF'
148 # cron.deny     This file describes the names of the users which are
149 #               NOT allowed to use the local cron daemon
150 EOF
151
152 %clean
153 rm -rf $RPM_BUILD_ROOT
154
155 %pre
156 %groupadd -g 117 -r -f crontab
157
158 %post
159 /sbin/chkconfig --add crond
160 %service crond restart "Cron Daemon"
161
162 %preun
163 if [ "$1" = "0" ]; then
164         %service crond stop
165         /sbin/chkconfig --del crond
166 fi
167
168 %postun
169 if [ "$1" = "0" ]; then
170         %groupremove crontab
171 fi
172
173 %triggerpostun -- cronie < 1.4.8-13
174 if [ -f /etc/sysconfig/cron ]; then
175         . /etc/sysconfig/cron
176         __CROND_ARGS=
177         [ "$CROND_SYSLOG_RESULT" = "yes" ] && __CROND_ARGS="-s"
178         [ -n "$CROND_MAIL_PROG" ] && __CROND_ARGS="$__CROND_ARGS -m $CROND_MAIL_PROG"
179         if [ -n "$__CROND_ARGS" ]; then
180                 %{__cp} -f /etc/sysconfig/cron{,.rpmsave}
181                 echo >>/etc/sysconfig/cron
182                 echo "# Added by rpm trigger" >>/etc/sysconfig/cron
183                 echo "CROND_ARGS=\"$CROND_ARGS $__CROND_ARGS\"" >>/etc/sysconfig/cron
184         fi
185 fi
186
187 %triggerun -- hc-cron,fcron,vixie-cron < 4.3-1
188 # Prevent preun from crond from working
189 chmod a-x /etc/rc.d/init.d/crond
190
191 %triggerpostun -- hc-cron,fcron,vixie-cron < 4.3-1
192 # Restore what triggerun removed
193 chmod 754 /etc/rc.d/init.d/crond
194 # reinstall crond init.d links, which could be different
195 /sbin/chkconfig --del crond
196 /sbin/chkconfig --add crond
197
198 %files
199 %defattr(644,root,root,755)
200 %doc AUTHORS ChangeLog README
201 %attr(750,root,crontab) %dir /etc/cron
202 %attr(750,root,crontab) %dir /etc/cron.daily
203 %attr(750,root,crontab) %dir /etc/cron.hourly
204 %attr(750,root,crontab) %dir /etc/cron.monthly
205 %attr(750,root,crontab) %dir /etc/cron.weekly
206 %attr(640,root,crontab) %config(noreplace,missingok) /etc/cron.d/crontab
207 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.allow
208 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.deny
209 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/cron
210 %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/crond
211 %attr(754,root,root) /etc/rc.d/init.d/crond
212 %attr(755,root,root) %{_sbindir}/crond
213 %attr(2755,root,crontab) %{_bindir}/crontab
214
215 %{_mandir}/man8/crond.8*
216 %{_mandir}/man8/cron.8*
217 %{_mandir}/man5/crontab.5*
218 %{_mandir}/man1/crontab.1*
219
220 %attr(1730,root,crontab) /var/spool/cron
221
222 %files anacron
223 %defattr(644,root,root,755)
224 %attr(755,root,root) %{_sbindir}/anacron
225 %attr(755,root,root) %{_sysconfdir}/cron.hourly/0anacron
226 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) /etc/cron/anacrontab
227 %{_mandir}/man5/anacrontab.5*
228 %{_mandir}/man8/anacron.8*
229
230 %attr(1730,root,crontab) /var/spool/anacron