nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 callPackage,
3 lib,
4 stdenv,
5 chicken,
6 makeWrapper,
7}:
8{
9 src,
10 buildInputs ? [ ],
11 chickenInstallFlags ? [ ],
12 cscOptions ? [ ],
13 ...
14}@args:
15
16let
17 nameVersionAssertion =
18 pred: lib.assertMsg pred "either name or both pname and version must be given";
19 pname =
20 if args ? pname then
21 assert nameVersionAssertion (!args ? name && args ? version);
22 args.pname
23 else
24 assert nameVersionAssertion (args ? name && !args ? version);
25 lib.getName args.name;
26 version = if args ? version then args.version else lib.getVersion args.name;
27 name = if args ? name then args.name else "${args.pname}-${args.version}";
28 overrides = callPackage ./overrides.nix { };
29 override = if builtins.hasAttr pname overrides then builtins.getAttr pname overrides else lib.id;
30in
31(stdenv.mkDerivation (
32 {
33 pname = "chicken-${pname}";
34 inherit version;
35 propagatedBuildInputs = buildInputs;
36 nativeBuildInputs = [
37 chicken
38 makeWrapper
39 ];
40 buildInputs = [ chicken ];
41
42 strictDeps = true;
43
44 CSC_OPTIONS = lib.concatStringsSep " " cscOptions;
45
46 buildPhase = ''
47 runHook preBuild
48 chicken-install -cached -no-install -host ${lib.escapeShellArgs chickenInstallFlags}
49 runHook postBuild
50 '';
51
52 installPhase = ''
53 runHook preInstall
54
55 export CHICKEN_INSTALL_PREFIX=$out
56 export CHICKEN_INSTALL_REPOSITORY=$out/lib/chicken/${toString chicken.binaryVersion}
57 chicken-install -cached -host ${lib.escapeShellArgs chickenInstallFlags}
58
59 # Patching generated .egg-info instead of original .egg to work around https://bugs.call-cc.org/ticket/1855
60 csi -e "(write (cons '(version \"${version}\") (read)))" < "$CHICKEN_INSTALL_REPOSITORY/${pname}.egg-info" > "${pname}.egg-info.new"
61 mv "${pname}.egg-info.new" "$CHICKEN_INSTALL_REPOSITORY/${pname}.egg-info"
62
63 for f in $out/bin/*
64 do
65 wrapProgram $f \
66 --prefix CHICKEN_REPOSITORY_PATH : "$out/lib/chicken/${toString chicken.binaryVersion}:$CHICKEN_REPOSITORY_PATH" \
67 --prefix CHICKEN_INCLUDE_PATH : "$CHICKEN_INCLUDE_PATH:$out/share" \
68 --prefix PATH : "$out/bin:${chicken}/bin:$CHICKEN_REPOSITORY_PATH"
69 done
70
71 runHook postInstall
72 '';
73
74 dontConfigure = true;
75
76 meta = {
77 inherit (chicken.meta) platforms;
78 }
79 // args.meta or { };
80 }
81 // removeAttrs args [
82 "name"
83 "pname"
84 "version"
85 "buildInputs"
86 "meta"
87 ]
88)).overrideAttrs
89 override