Add license file into rpm package
[external/sysvinit.git] / packaging / sysvinit.spec
1 Summary: Programs which control basic system processes
2 Name: sysvinit
3 Version: 2.87
4 Release: 6
5 License: GPLv2+
6 Group: System/Base
7 Url: http://savannah.nongnu.org/projects/sysvinit
8
9 Requires: /bin/cp
10
11 Source: %{name}-%{version}dsf.tar.gz
12 Source1: inittab
13 Source2: update-rc.d
14 Source3: service
15 Source1001:     %{name}.manifest
16
17 Patch0: 21_ifdown_kfreebsd.patch
18 Patch1: 50_bootlogd_devsubdir.patch
19 Patch2: 54_bootlogd_findptyfail.patch
20 Patch3: 55_bootlogd_flush.patch
21 Patch4: 60_init_selinux_ifdef.patch
22 Patch5: 62_init_freebsdterm.patch
23 Patch6: 63_init_keep_utf8_ttyflag.patch
24 Patch7: 70_compiler_warnings.patch
25 Patch8: 91_sulogin_lockedpw.patch
26 Patch9: 94_fstab-decode.patch
27 Patch10: 96_shutdown_acctoff.patch
28 Patch11: 97_init_starttest.patch
29 Patch12: 98_installtarget.patch
30 Patch13: startpar.patch
31 Patch14: always_use_lcrypt.patch
32 Patch15: dont_set_ownership.patch
33 Patch16: add_initscripts.patch
34 Patch18: 64_init_add_cmd_for_reboot.dpatch
35 Patch19: 0001-Fixing-syntax-error-in-start-stop-daemon.c.patch
36 Patch20: systemd_param.patch
37 Patch21: 99_ftbfs_define_enoioctlcmd.patch
38
39 %description
40 The sysvinit package contains a group of processes that control
41 the very basic functions of your system. sysvinit includes the init
42 program, the first program started by the Linux kernel when the
43 system boots. Init then controls the startup, running, and shutdown
44 of all other programs.
45
46 %package utils
47 Summary: System-V-like utilities
48 Group: System/Base
49 Provides: /usr/sbin/service
50 Provides: /bin/pidof
51
52 %description utils
53  This package contains the important System-V-like utilities.
54  Specifically, this package includes:
55  killall5, last, lastb, mesg, pidof, service, sulogin
56
57 %package -n initscripts
58 Summary: scripts for initializing the system
59 Group: System/Base
60 Requires: /lib/lsb/init-functions
61
62 %description -n initscripts
63  scripts for initializing and shutting down the system
64  The scripts in this package initialize a system at boot time
65  and shut it down at halt or reboot time.
66
67 %doc_package
68
69 %prep
70 %setup -q -n %{name}-%{version}dsf
71
72 %patch0 -p1 -b .ifdown_kfreebsd
73 %patch1 -p1 -b .bootlogd_devsubdir
74 %patch2 -p1 -b .bootlogd_findptyfail
75 %patch3 -p1 -b .bootlogd_flush
76 %patch4 -p1 -b .init_selinux_ifdef
77 %patch5 -p1 -b .init_freebsdterm
78 %patch6 -p1 -b .init_keep_utf8_ttyflag
79 %patch7 -p1 -b .compiler_warnings
80 %patch8 -p1 -b .sulogin_lockedpw
81 %patch9 -p1 -b .fstab-decode
82 %patch10 -p1 -b .shutdown_acctoff
83 %patch11 -p1 -b .init_starttest
84 %patch12 -p1 -b .installtarget
85 %patch13 -p1 -b .startpar
86 %patch14 -p1 -b .always_use_lcrypt
87 %patch15 -p1 -b .dont_set_ownership
88 %patch16 -p1
89 %patch18 -p1
90 %patch19 -p1
91 %patch20 -p1
92 %patch21 -p1
93
94 %build
95 cp %{SOURCE1001} .
96 make -C src
97 make -C startpar
98
99 export CFLAGS='-ansi -W -Wall -O2 -fomit-frame-pointer -D_GNU_SOURCE'
100 export LDFLAGS='-s'
101 gcc $LDFLAGS -o start-stop-daemon contrib/start-stop-daemon.c
102
103 %install
104 make -C src ROOT=$RPM_BUILD_ROOT install
105 make -C startpar DESTDIR=$RPM_BUILD_ROOT install
106 make -C initscripts DESTDIR=$RPM_BUILD_ROOT install
107
108 install -d $RPM_BUILD_ROOT/%{_datadir}/%{name}/
109 install %SOURCE1 $RPM_BUILD_ROOT/%{_datadir}/%{name}/
110 install %SOURCE2 $RPM_BUILD_ROOT/%{_datadir}/%{name}/
111 install -d $RPM_BUILD_ROOT/usr/sbin/
112 install %SOURCE3 $RPM_BUILD_ROOT/usr/sbin/
113
114 install start-stop-daemon $RPM_BUILD_ROOT/usr/sbin/
115
116 rm -f $RPM_BUILD_ROOT/usr/bin/wall
117 rm -f $RPM_BUILD_ROOT/usr/bin/lastb
118 rm -f $RPM_BUILD_ROOT/usr/bin/utmpdump
119 rm -f $RPM_BUILD_ROOT/usr/share/man/man1/wall.1*
120 rm -f $RPM_BUILD_ROOT%{_includedir}/initreq.h
121
122 rm -rf %{buildroot}/%{_docdir}
123
124 mkdir -p $RPM_BUILD_ROOT%{_datadir}/license
125 for keyword in LICENSE COPYING COPYRIGHT;
126 do
127         for file in `find %{_builddir} -name $keyword`;
128         do
129                 cat $file >> $RPM_BUILD_ROOT%{_datadir}/license/%{name};
130                 echo "";
131         done;
132 done
133
134 # license
135 mkdir -p %{buildroot}/usr/share/license
136 cp LICENSE %{buildroot}/usr/share/license/%{name}
137
138 %post
139 echo ".... sysvinit post ....."
140 [ -f /etc/inittab ] || /bin/cp -p /usr/share/sysvinit/inittab /etc/inittab
141 exit 0
142
143 %post -n initscripts
144
145 set -e
146 umask 022
147 #
148 # Initialize rcS default file.
149 #
150 if [ ! -f /etc/default/rcS ]
151 then
152         cp -p /usr/share/initscripts/default.rcS /etc/default/rcS
153 fi
154
155 #
156 # When installing for the first time or upgrading from version before
157 # 2.86.ds1-27, a reboot is needed to make the /lib/init/rw/ tmpfs
158 # available.  Flag this using notify-reboot-required.  Not mounting it
159 # here as it creates problem for debootstrap, vservers, pbuilder and
160 # cowbuilder.
161 #
162 if [ -x /usr/share/update-notifier/notify-reboot-required ]; then
163         /usr/share/update-notifier/notify-reboot-required
164 fi
165
166 #
167 # Create initial log files
168 #
169 for F in /var/log/dmesg /var/log/boot /var/log/fsck/checkroot /var/log/fsck/checkfs
170 do
171         if [ ! -f "$F" ] && touch "$F" >/dev/null 2>&1
172         then
173                 echo "(Nothing has been logged yet.)" >| "$F"
174                 # root UID is 0, adm GID is ordinary 4
175                 chown 0:4 "$F"
176                 chmod 640 "$F"
177         fi
178 done
179
180 #
181 # Set up nologin symlink so that dynamic-login-disabling will work
182 # (when DELAYLOGIN is set to "yes")
183 #
184 if [ ! -L /etc/nologin ] && [ ! -e /etc/nologin ]
185 then
186         rm -f /var/lib/initscripts/nologin
187         ln -s /var/lib/initscripts/nologin /etc/nologin
188 fi
189
190 #
191 # Set up motd stuff, putting variable file in /var/run/
192 #
193 if [ ! -f /etc/motd.tail ]
194 then
195         if [ -f /etc/motd ]
196         then
197                 sed 1d /etc/motd > /etc/motd.tail
198                 [ -s /etc/motd.tail ] || rm -f /etc/motd.tail
199         fi
200 fi
201 if [ ! -f /var/run/motd ]
202 then
203         if [ -f /etc/motd ]
204         then
205                 cat /etc/motd > /var/run/motd
206         else
207                 :>/var/run/motd
208         fi
209 fi
210 if [ ! -L /etc/motd ]
211 then
212         [ -f /etc/default/rcS ] && . /etc/default/rcS
213         if [ "$EDITMOTD" = no ]
214         then
215                 cat /var/run/motd > /etc/motd.static
216                 ln -sf motd.static /etc/motd
217         else
218                 ln -sf /var/run/motd /etc/motd
219         fi
220 fi
221
222 #
223 # Mount kernel virtual filesystems...not.
224 # This causes problems in pbuilder.
225 #
226 #
227 #if [ -x /etc/init.d/mountkernfs.sh ]
228 #then
229 #       if which invoke-rc.d >/dev/null 2>&1
230 #       then
231 #               invoke-rc.d mountkernfs.sh start || :
232 #       else
233 #               /etc/init.d/mountkernfs.sh start
234 #       fi
235 #fi
236
237 #
238 # Create /dev/pts, /dev/shm directories
239 #
240 if [ "$(uname -s)" = Linux ]
241 then
242         #
243         # Only create /dev/{pts,shm} if /dev is on the
244         # root file system. If some package has mounted a
245         # seperate /dev (ramfs from udev, devfs) it is
246         # responsible for the presence of those subdirs.
247         # (it is OK for these to fail under fakechroot)
248         #
249         if ! mountpoint -q /dev
250         then
251                 # root UID is 0
252                 [ -d /dev/pts ] || { mkdir --mode=755 /dev/pts ; chown 0:0 /dev/pts || [ "$FAKECHROOT" = true ]; }
253                 [ -d /dev/shm ] || { mkdir --mode=755 /dev/shm ; chown 0:0 /dev/shm || [ "$FAKECHROOT" = true ]; }
254         fi
255 fi
256
257 #
258 # Create /etc/rc.local on first time install and when upgrading from
259 # versions before "2.86.ds1-16"
260 #
261 if [ ! -e /etc/rc.local ]; then
262         cat << EOF > /etc/rc.local
263 #!/bin/sh -e
264 #
265 # rc.local
266 #
267 # This script is executed at the end of each multiuser runlevel.
268 # Make sure that the script will "exit 0" on success or any other
269 # value on error.
270 #
271 # In order to enable or disable this script just change the execution
272 # bits.
273 #
274 # By default this script does nothing.
275
276 exit 0
277 EOF
278                 # make sure it's enabled by default.
279                 chmod 755 /etc/rc.local
280 fi
281
282 %clean
283 rm -rf $RPM_BUILD_ROOT
284
285
286 %docs_package
287
288 %files
289 %manifest %{name}.manifest
290 %defattr(-,root,root)
291 %{_datadir}/license/%{name}
292 /sbin/init
293 /sbin/runlevel
294 /sbin/shutdown
295 %if 0%{?simulator}
296 %exclude /sbin/halt
297 %exclude /sbin/poweroff
298 %exclude /sbin/reboot
299 %else
300 /sbin/halt
301 /sbin/poweroff
302 /sbin/reboot
303 %endif
304 /sbin/telinit
305 %{_datadir}/%{name}/inittab
306 %{_datadir}/%{name}/update-rc.d
307 #%{_includedir}/initreq.h
308
309 %files utils
310 %manifest %{name}.manifest
311 /bin/pidof
312 /sbin/bootlogd
313 /sbin/fstab-decode
314 /sbin/killall5
315 /sbin/sulogin
316 /sbin/startpar
317 /usr/sbin/start-stop-daemon
318 %attr(755,root,root)/usr/sbin/service
319 /usr/bin/last
320 /usr/bin/mesg
321 /usr/share/license/%{name}
322
323 %files -n initscripts
324 %manifest %{name}.manifest
325 %{_sysconfdir}/init.d/*
326 %{_sysconfdir}/init.d/.slp
327 %{_sysconfdir}/default/*
328 %{_datadir}/initscripts/default.rcS
329 /etc/network/if-up.d/mountnfs
330 /sbin/fsck.nfs
331 /lib/init/*
332 /bin/mountpoint
333