nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 89 lines 2.5 kB view raw
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