1{ stdenv, fetchurl, withoutInitTools ? false }:
2
3let version = "2.88dsf"; in
4
5stdenv.mkDerivation {
6 name = (if withoutInitTools then "sysvtools" else "sysvinit") + "-" + version;
7
8 src = fetchurl {
9 url = "mirror://savannah/sysvinit/sysvinit-${version}.tar.bz2";
10 sha256 = "068mvzaz808a673zigyaqb63xc8bndh2klk16zi5c83rw70wifv0";
11 };
12
13 prePatch = ''
14 # Patch some minimal hard references, so halt/shutdown work
15 sed -i -e "s,/sbin/,$out/sbin/," src/halt.c src/init.c src/paths.h
16 '';
17
18 makeFlags = "SULOGINLIBS=-lcrypt ROOT=$(out) MANDIR=/share/man";
19
20 crossAttrs = {
21 makeFlags = "SULOGINLIBS=-lcrypt ROOT=$(out) MANDIR=/share/man CC=${stdenv.cross.config}-gcc";
22 };
23
24 preInstall =
25 ''
26 substituteInPlace src/Makefile --replace /usr /
27 '';
28
29 postInstall = ''
30 mv $out/sbin/killall5 $out/bin
31 ln -sf killall5 $out/bin/pidof
32 ''
33 + stdenv.lib.optionalString withoutInitTools
34 ''
35 shopt -s extglob
36 rm -rf $out/sbin/!(sulogin)
37 rm -rf $out/include
38 rm -rf $out/share/man/man5
39 rm $(for i in $out/share/man/man8/*; do echo $i; done | grep -v 'pidof\|killall5')
40 rm $out/bin/{mountpoint,wall} $out/share/man/man1/{mountpoint.1,wall.1}
41 '';
42
43 meta = {
44 homepage = http://www.nongnu.org/sysvinit/;
45 description = "Utilities related to booting and shutdown";
46 platforms = stdenv.lib.platforms.linux;
47 };
48}