1{
2 fetchurl,
3 bash,
4 glibc,
5 lib,
6 stdenv,
7 installShellFiles,
8}:
9
10let
11 man-pages = fetchurl {
12 url = "https://salsa.debian.org/debian/daemontools/-/archive/debian/1%250.76-8/daemontools-debian-1%250.76-8.tar.gz?path=debian/daemontools-man";
13 sha256 = "sha256-om5r1ddUx1uObp9LR+SwCLLtm+rRuLoq28OLbhWhdzU=";
14 };
15in
16stdenv.mkDerivation rec {
17 pname = "daemontools";
18 version = "0.76";
19
20 src = fetchurl {
21 url = "https://cr.yp.to/daemontools/daemontools-${version}.tar.gz";
22 sha256 = "07scvw88faxkscxi91031pjkpccql6wspk4yrlnsbrrb5c0kamd5";
23 };
24
25 patches = [
26 (fetchurl {
27 url = "https://salsa.debian.org/debian/daemontools/-/raw/1844f0e704ab66844da14354a16ea068eba0403f/debian/patches/0005-fix-ftbfs.patch";
28 hash = "sha256-Q7t0kwajjTW2Ms5m44E4spBwHi5Xi6Y39FQVsawr8LA=";
29 })
30 ./fix-nix-usernamespace-build.patch
31 ];
32
33 outputs = [
34 "out"
35 "man"
36 ];
37
38 nativeBuildInputs = [ installShellFiles ];
39
40 configurePhase = ''
41 runHook preConfigure
42
43 cd daemontools-${version}
44
45 sed -i -e '1 s_$_ -include ${glibc.dev}/include/errno.h_' src/conf-cc
46
47 substituteInPlace src/Makefile \
48 --replace-fail '/bin/sh' '${bash}/bin/bash -oxtrace'
49
50 sed -i -e "s_^PATH=.*_PATH=$src/daemontools-${version}/compile:''${PATH}_" src/rts.tests
51
52 cat ${glibc.dev}/include/errno.h
53
54 runHook postConfigure
55 '';
56
57 buildPhase = ''
58 package/compile
59 '';
60
61 installPhase = ''
62 for cmd in $(cat package/commands); do
63 install -Dm755 "command/$cmd" "$out/bin/$cmd"
64 done
65
66 tar -xz --strip-components=2 -f ${man-pages}
67 installManPage daemontools-man/*.8
68 install -v -Dm644 daemontools-man/README $man/share/doc/daemontools/README.man
69 # fix svscanboot
70 sed -i "s_/command/__" "$out/bin/svscanboot"
71 sed -i "s_/service_/var/service_g" "$out/bin/svscanboot"
72 sed -i "s_^PATH=.*_PATH=$out/bin:\$PATH_" "$out/bin/svscanboot"
73 '';
74
75 # Keep README.man in the man output (see _multioutDocs())
76 outputDoc = "man";
77
78 meta = {
79 license = lib.licenses.publicDomain;
80 homepage = "https://cr.yp.to/daemontools.html";
81 description = "Collection of tools for managing UNIX services";
82
83 maintainers = with lib.maintainers; [ kevincox ];
84 platforms = lib.platforms.unix;
85 };
86}