56e7073bc000baa71b6242ed483f2fad7476378e
[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 %if "%{pld_release}" == "ac"
10 %bcond_with             selinux         # with SELinux support
11 %bcond_with             audit           # with audit support
12 %else
13 %bcond_without  selinux         # without SELinux support
14 %bcond_without  audit           # without audit support
15 %endif
16
17 Summary:        Cron daemon for executing programs at set times
18 Name:           cronie
19 Version:        1.4.12
20 Release:        5
21 License:        MIT and BSD and GPL v2
22 Group:          Daemons
23 Source0:        https://fedorahosted.org/releases/c/r/cronie/%{name}-%{version}.tar.gz
24 # Source0-md5:  199db91e514a4d75e3222d69874b132f
25 Source1:        %{name}.init
26 Source2:        cron.logrotate
27 Source3:        cron.sysconfig
28 Source4:        %{name}.crontab
29 Source5:        %{name}.pam
30 Source6:        crond.service
31 Patch0:         inotify-nosys.patch
32 Patch1:         sendmail-path.patch
33 URL:            https://fedorahosted.org/cronie/
34 %{?with_audit:BuildRequires:    audit-libs-devel}
35 BuildRequires:  autoconf
36 BuildRequires:  automake
37 %{?with_selinux:BuildRequires:  libselinux-devel}
38 BuildRequires:  pam-devel
39 BuildRequires:  rpm >= 4.4.9-56
40 BuildRequires:  rpmbuild(macros) >= 1.647
41 Requires(post): fileutils
42 Requires(post,preun):   /sbin/chkconfig
43 Requires(postun):       /usr/sbin/groupdel
44 Requires(pre):  /usr/bin/getgid
45 Requires(pre):  /usr/sbin/groupadd
46 Requires:       /bin/run-parts
47 Requires:       psmisc >= 20.1
48 Requires:       rc-scripts >= 0.4.3.0
49 %if "%{pld_release}" != "ac"
50 Requires(post,preun,postun):    systemd-units >= 38
51 Requires:       systemd-units >= 38}
52 %endif
53 %{?with_inotify:Requires:       uname(release) >= 2.6.13}
54 Provides:       crondaemon
55 Provides:       crontabs = 1.7
56 Provides:       group(crontab)
57 %if "%{pld_release}" == "th"
58 Provides:       vixie-cron = 4.3-1
59 %endif
60 Obsoletes:      crondaemon
61 Obsoletes:      cronie-systemd
62 Obsoletes:      crontabs
63 %if "%{pld_release}" == "th"
64 Obsoletes:      vixie-cron < 4.3-1
65 %endif
66 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
67
68 %description
69 Cronie contains the standard UNIX daemon crond that runs specified
70 programs at scheduled times and related tools. It is based on the
71 original cron and has security and configuration enhancements like the
72 ability to use pam and SELinux.
73
74 %package anacron
75 Summary:        Utility for running regular jobs
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 %prep
86 %setup -q
87 %patch0 -p1
88 %patch1 -p1
89
90 %build
91 %{__aclocal}
92 %{__autoconf}
93 %{__autoheader}
94 %{__automake}
95 %configure \
96         SYSCRONTAB=/etc/crontab \
97         SYS_CROND_DIR=/etc/cron.d \
98         --sysconfdir=/etc/cron \
99         --with-editor=/bin/vi \
100         --with-pam \
101         --with%{!?with_selinux:out}-selinux \
102         --with%{!?with_audit:out}-audit \
103         --with%{!?with_inotify:out}-inotify \
104         --disable-syscrontab \
105 %if "%{cc_version}" >= "3.4"
106         --enable-pie \
107 %endif
108         --enable-relro \
109         --enable-anacron
110
111 %{__make}
112
113 %install
114 rm -rf $RPM_BUILD_ROOT
115 install -d $RPM_BUILD_ROOT{/var/{log,spool/{ana,}cron},%{_mandir},%{systemdunitdir}}\
116         $RPM_BUILD_ROOT/etc/{rc.d/init.d,logrotate.d,sysconfig} \
117         $RPM_BUILD_ROOT%{_sysconfdir}/{cron,cron.{d,hourly,daily,weekly,monthly},pam.d}
118
119 %{__make} install \
120         pamdir=/etc/pam.d \
121         DESTDIR=$RPM_BUILD_ROOT
122
123 cp -p %{SOURCE5} crond.pam
124
125 %if %{without audit}
126 # remove recording user's login uid to the process attribute
127 %{__sed} -i -e '/pam_loginuid.so/d' crond.pam
128 %endif
129
130 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/crond
131 cp -a contrib/0anacron $RPM_BUILD_ROOT/etc/cron.hourly/0anacron
132 cp -a contrib/anacrontab $RPM_BUILD_ROOT/etc/cron/anacrontab
133 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/logrotate.d/cron
134 cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/cron
135 cp -a %{SOURCE4} $RPM_BUILD_ROOT/etc/cron.d/crontab
136 cp -a crond.pam  $RPM_BUILD_ROOT/etc/pam.d/crond
137 cp -a %{SOURCE6} $RPM_BUILD_ROOT%{systemdunitdir}/crond.service
138
139 touch $RPM_BUILD_ROOT/var/log/cron
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 if [ ! -f /var/log/cron ]; then
160         install -m 660 -g crontab /dev/null /var/log/cron
161 fi
162 /sbin/chkconfig --add crond
163 %service crond restart "Cron Daemon"
164 %systemd_post crond.service
165
166 %preun
167 if [ "$1" = "0" ]; then
168         %service crond stop
169         /sbin/chkconfig --del crond
170 fi
171 %systemd_preun crond.service
172
173 %postun
174 if [ "$1" = "0" ]; then
175         %groupremove crontab
176 fi
177 %systemd_reload
178
179 %triggerpostun -- cronie < 1.4.8-13
180 if [ -f /etc/sysconfig/cron ]; then
181         . /etc/sysconfig/cron
182         __CROND_ARGS=
183         [ "$CROND_SYSLOG_RESULT" = "yes" ] && __CROND_ARGS="-s"
184         [ -n "$CROND_MAIL_PROG" ] && __CROND_ARGS="$__CROND_ARGS -m $CROND_MAIL_PROG"
185         if [ -n "$__CROND_ARGS" ]; then
186                 %{__cp} -f /etc/sysconfig/cron{,.rpmsave}
187                 echo >>/etc/sysconfig/cron
188                 echo "# Added by rpm trigger" >>/etc/sysconfig/cron
189                 echo "CROND_ARGS=\"$CROND_ARGS $__CROND_ARGS\"" >>/etc/sysconfig/cron
190         fi
191 fi
192 %systemd_trigger crond.service
193
194 %triggerun -- hc-cron,fcron,vixie-cron < 4.3-1
195 # Prevent preun from crond from working
196 chmod a-x /etc/rc.d/init.d/crond
197
198 %triggerpostun -- hc-cron,fcron,vixie-cron < 4.3-1
199 # Restore what triggerun removed
200 chmod 754 /etc/rc.d/init.d/crond
201 # reinstall crond init.d links, which could be different
202 /sbin/chkconfig --del crond
203 /sbin/chkconfig --add crond
204
205 %files
206 %defattr(644,root,root,755)
207 %doc AUTHORS ChangeLog README
208 %attr(750,root,crontab) %dir /etc/cron
209 %attr(750,root,crontab) %dir /etc/cron.daily
210 %attr(750,root,crontab) %dir /etc/cron.hourly
211 %attr(750,root,crontab) %dir /etc/cron.monthly
212 %attr(750,root,crontab) %dir /etc/cron.weekly
213 %attr(640,root,crontab) %config(noreplace,missingok) /etc/cron.d/crontab
214 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.allow
215 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.deny
216 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/cron
217 %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/crond
218 %attr(754,root,root) /etc/rc.d/init.d/crond
219 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/cron
220 %{systemdunitdir}/crond.service
221 %attr(755,root,root) %{_sbindir}/crond
222 %attr(2755,root,crontab) %{_bindir}/crontab
223
224 %{_mandir}/man8/crond.8*
225 %{_mandir}/man8/cron.8*
226 %{_mandir}/man5/crontab.5*
227 %{_mandir}/man1/crontab.1*
228
229 %attr(1730,root,crontab) /var/spool/cron
230 %attr(660,root,crontab) %ghost /var/log/cron
231
232 %files anacron
233 %defattr(644,root,root,755)
234 %attr(755,root,root) %{_sbindir}/anacron
235 %attr(755,root,root) %{_sysconfdir}/cron.hourly/0anacron
236 %attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) /etc/cron/anacrontab
237 %{_mandir}/man5/anacrontab.5*
238 %{_mandir}/man8/anacron.8*
239
240 %attr(1730,root,crontab) /var/spool/anacron
This page took 0.08292 seconds and 2 git commands to generate.