diff options
Diffstat (limited to 'pkgs/development/compilers/gerbil/gerbil-support.nix')
-rw-r--r-- | pkgs/development/compilers/gerbil/gerbil-support.nix | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/pkgs/development/compilers/gerbil/gerbil-support.nix b/pkgs/development/compilers/gerbil/gerbil-support.nix new file mode 100644 index 00000000000..e3f4bb0e0d2 --- /dev/null +++ b/pkgs/development/compilers/gerbil/gerbil-support.nix @@ -0,0 +1,73 @@ +{ pkgs, gccStdenv, callPackage, fetchFromGitHub }: +# See ../gambit/build.nix regarding gccStdenv + +rec { + # Gerbil libraries + gerbilPackages-unstable = { + gerbil-utils = callPackage ./gerbil-utils.nix { }; + gerbil-crypto = callPackage ./gerbil-crypto.nix { }; + gerbil-poo = callPackage ./gerbil-poo.nix { }; + gerbil-persist = callPackage ./gerbil-persist.nix { }; + gerbil-ethereum = callPackage ./gerbil-ethereum.nix { }; + }; + + # Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH. + gerbilLoadPath = + gerbilInputs : builtins.concatStringsSep ":" (map (x : x + "/gerbil/lib") gerbilInputs); + + # Use this function to create a Gerbil library. See gerbil-utils as an example. + gerbilPackage = { + pname, version, src, meta, gerbil-package, + git-version ? "", version-path ? "", + gerbil ? pkgs.gerbil-unstable, + gambit-params ? pkgs.gambit-support.stable-params, + gerbilInputs ? [], + buildInputs ? [], + softwareName ? ""} : + let buildInputs_ = buildInputs; in + gccStdenv.mkDerivation rec { + inherit src meta pname version; + passthru = { inherit gerbil-package version-path ;}; + buildInputs = [ gerbil ] ++ gerbilInputs ++ buildInputs_; + postPatch = '' + set -e ; + if [ -n "${version-path}.ss" ] ; then + echo -e '(import :clan/versioning${builtins.concatStringsSep "" + (map (x : if x.passthru.version-path != "" + then " :${x.passthru.gerbil-package}/${x.passthru.version-path}" else "") + gerbilInputs) + })\n(register-software "${softwareName}" "v${git-version}")\n' > "${passthru.version-path}.ss" + fi + patchShebangs . ; + ''; + + postConfigure = '' + export GERBIL_BUILD_CORES=$NIX_BUILD_CORES + export GERBIL_PATH=$PWD/.build + export GERBIL_LOADPATH=${gerbilLoadPath gerbilInputs} + ${pkgs.gambit-support.export-gambopt gambit-params} + ''; + + buildPhase = '' + runHook preBuild + ./build.ss + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/gerbil/lib + cp -fa .build/lib $out/gerbil/ + bins=(.build/bin/*) + if [ 0 -lt ''${#bins} ] ; then + cp -fa .build/bin $out/gerbil/ + mkdir $out/bin + cd $out/bin + ln -s ../gerbil/bin/* . + fi + runHook postInstall + ''; + + dontFixup = true; + }; +} |