python312Packages.fnllm: 0.0.11 -> 0.0.12 (#364582)
[NixPkgs.git] / pkgs / os-specific / darwin / apple-source-releases / shell_cmds / package.nix
blob98c83c1b6306b6f2ebd1bb85270aab77fc7737da
2   lib,
3   apple-sdk,
4   bison,
5   clang,
6   fetchurl,
7   libbsd,
8   libedit,
9   libresolv,
10   libsbuf,
11   libutil,
12   libxo,
13   pkg-config,
14   mkAppleDerivation,
17 let
18   # nohup requires vproc_priv.h from launchd
19   launchd = apple-sdk.sourceRelease "launchd";
21   oldTime_c = fetchurl {
22     url = "https://github.com/apple-oss-distributions/shell_cmds/raw/shell_cmds-207.11.1/time/time.c";
23     hash = "sha256-f7aRwIaKq6r37jpw0V+1Z/sZs5Rm7vy2S774HNBnwmY=";
24   };
25   oldTime_1 = fetchurl {
26     url = "https://github.com/apple-oss-distributions/shell_cmds/raw/shell_cmds-207.11.1/time/time.1";
27     hash = "sha256-ZIbNJPHLQVGq2tdUB6j0DEp9Hie+XUZkfuQm676Vpwc=";
28   };
30 mkAppleDerivation {
31   releaseName = "shell_cmds";
33   outputs = [
34     "out"
35     "man"
36   ];
38   xcodeHash = "sha256-26N7AZV/G+ryc2Nu1v91rEdb1a6jDpnj6t5rzEG2YA4=";
40   postPatch =
41     ''
42       # Fix `mktemp` templates
43       substituteInPlace sh/mkbuiltins \
44         --replace-fail '-t ka' '-t ka.XXXXXX'
45       substituteInPlace sh/mktokens \
46         --replace-fail '-t ka' '-t ka.XXXXXX'
48       # Update `/etc/locate.rc` paths to point to the store.
49       for path in locate/locate/locate.updatedb.8 locate/locate/locate.rc locate/locate/updatedb.sh; do
50         substituteInPlace $path --replace-fail '/etc/locate.rc' "$out/etc/locate.rc"
51       done
52     ''
53     # Use an older version of `time.c` that’s compatible with the 10.12 SDK.
54     + lib.optionalString (lib.versionOlder (lib.getVersion apple-sdk) "10.13") ''
55       cp '${oldTime_c}' time/time.c
56       cp '${oldTime_1}' time/time.1
57     ''
58     + lib.optionalString (lib.versionOlder (lib.getVersion apple-sdk) "11.0") ''
59       # `rpmatch` was added in 11.0, so revert it to a simpler check on older SDKs.
60       substituteInPlace find/misc.c \
61         --replace-fail 'return (rpmatch(resp) == 1);' "return (resp[0] == 'y');"
62       # Add missing header for older SDKs.
63       sed -e '1i #include <sys/time.h>' -i w/proc_compare.c
64     '';
66   env.NIX_CFLAGS_COMPILE = "-I${launchd}/liblaunch";
68   depsBuildBuild = [ clang ];
70   nativeBuildInputs = [
71     bison
72     pkg-config
73   ];
75   buildInputs =
76     [
77       libedit
78       libresolv
79       libsbuf
80       libutil
81       libxo
82     ]
83     # xargs needs `strtonum`, which was added in 11.0.
84     ++ lib.optionals (lib.versionOlder (lib.getVersion apple-sdk) "11.0") [ libbsd ];
86   postInstall = ''
87     # Patch the shebangs to use `sh` from shell_cmds.
88     HOST_PATH="$out/bin" patchShebangs --host "$out/bin" "$out/libexec"
89   '';
91   meta = {
92     description = "Darwin shell commands and the Almquist shell";
93     license = [
94       lib.licenses.bsd2
95       lib.licenses.bsd3
96     ];
97   };