nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at netboot-syslinux-multiplatform 77 lines 2.7 kB view raw
1{ pkgs, lib, gccStdenv, callPackage, fetchFromGitHub }: 2# See ../gambit/build.nix regarding gccStdenv 3 4rec { 5 # Gerbil libraries 6 gerbilPackages-unstable = { 7 gerbil-libp2p = callPackage ./gerbil-libp2p.nix { }; 8 gerbil-utils = callPackage ./gerbil-utils.nix { }; 9 gerbil-crypto = callPackage ./gerbil-crypto.nix { }; 10 gerbil-poo = callPackage ./gerbil-poo.nix { }; 11 gerbil-persist = callPackage ./gerbil-persist.nix { }; 12 gerbil-ethereum = callPackage ./gerbil-ethereum.nix { }; 13 smug-gerbil = callPackage ./smug-gerbil.nix { }; 14 }; 15 16 # Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH. 17 gerbilLoadPath = 18 gerbilInputs : builtins.concatStringsSep ":" (map (x : x + "/gerbil/lib") gerbilInputs); 19 20 # Use this function to create a Gerbil library. See gerbil-utils as an example. 21 gerbilPackage = { 22 pname, version, src, meta, gerbil-package, 23 git-version ? "", version-path ? "", 24 gerbil ? pkgs.gerbil-unstable, 25 gambit-params ? pkgs.gambit-support.stable-params, 26 gerbilInputs ? [], 27 nativeBuildInputs ? [], 28 buildInputs ? [], 29 buildScript ? "./build.ss", 30 softwareName ? ""} : 31 let buildInputs_ = buildInputs; in 32 gccStdenv.mkDerivation rec { 33 inherit src meta pname version nativeBuildInputs; 34 passthru = { inherit gerbil-package version-path ;}; 35 buildInputs = [ gerbil ] ++ gerbilInputs ++ buildInputs_; 36 postPatch = '' 37 set -e ; 38 if [ -n "${version-path}.ss" ] ; then 39 echo -e '(import :clan/versioning${builtins.concatStringsSep "" 40 (map (x : lib.optionalString (x.passthru.version-path != "") 41 " :${x.passthru.gerbil-package}/${x.passthru.version-path}") 42 gerbilInputs) 43 })\n(register-software "${softwareName}" "v${git-version}")\n' > "${passthru.version-path}.ss" 44 fi 45 patchShebangs . ; 46 ''; 47 48 postConfigure = '' 49 export GERBIL_BUILD_CORES=$NIX_BUILD_CORES 50 export GERBIL_PATH=$PWD/.build 51 export GERBIL_LOADPATH=${gerbilLoadPath gerbilInputs} 52 ${pkgs.gambit-support.export-gambopt gambit-params} 53 ''; 54 55 buildPhase = '' 56 runHook preBuild 57 ${buildScript} 58 runHook postBuild 59 ''; 60 61 installPhase = '' 62 runHook preInstall 63 mkdir -p $out/gerbil/lib 64 cp -fa .build/lib $out/gerbil/ 65 bins=(.build/bin/*) 66 if [ 0 -lt ''${#bins} ] ; then 67 cp -fa .build/bin $out/gerbil/ 68 mkdir $out/bin 69 cd $out/bin 70 ln -s ../gerbil/bin/* . 71 fi 72 runHook postInstall 73 ''; 74 75 dontFixup = true; 76 }; 77}