From 8dbcb4e35ecc2513dab1ed8cb6052f68ab0a6537 Mon Sep 17 00:00:00 2001 From: Eric Merritt Date: Mon, 28 Mar 2016 14:14:13 -0700 Subject: beamPackages: Add support for Mix and Erlang.mk --- pkgs/development/beam-modules/build-mix.nix | 86 +++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 pkgs/development/beam-modules/build-mix.nix (limited to 'pkgs/development/beam-modules/build-mix.nix') diff --git a/pkgs/development/beam-modules/build-mix.nix b/pkgs/development/beam-modules/build-mix.nix new file mode 100644 index 000000000000..12efc00b0509 --- /dev/null +++ b/pkgs/development/beam-modules/build-mix.nix @@ -0,0 +1,86 @@ +{ stdenv, writeText, elixir, erlang, hexRegistrySnapshot, hex }: + +{ name +, version +, src +, setupHook ? null +, buildInputs ? [] +, beamDeps ? [] +, postPatch ? "" +, compilePorts ? false +, installPhase ? null +, meta ? {} +, ... }@attrs: + +with stdenv.lib; + +let + shell = drv: stdenv.mkDerivation { + name = "interactive-shell-${drv.name}"; + buildInputs = [ drv ]; + }; + + bootstrapper = ./mix-bootstrap; + + pkg = self: stdenv.mkDerivation ( attrs // { + name = "${name}-${version}"; + inherit version; + + dontStrip = true; + + inherit src; + + setupHook = if setupHook == null + then writeText "setupHook.sh" '' + addToSearchPath ERL_LIBS "$1/lib/erlang/lib" + '' + else setupHook; + + inherit buildInputs; + propagatedBuildInputs = [ hexRegistrySnapshot hex elixir ] ++ beamDeps; + + configurePhase = '' + runHook preConfigure + ${erlang}/bin/escript ${bootstrapper} + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + + export HEX_OFFLINE=1 + export HEX_HOME=`pwd` + export MIX_ENV=prod + + MIX_ENV=prod mix compile --debug-info --no-deps-check + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + MIXENV=prod + + if [ -d "_build/shared" ]; then + MIXENV=shared + fi + + mkdir -p "$out/lib/erlang/lib/${name}-${version}" + for reldir in src ebin priv include; do + fd="_build/$MIXENV/lib/${name}/$reldir" + [ -d "$fd" ] || continue + cp -Hrt "$out/lib/erlang/lib/${name}-${version}" "$fd" + success=1 + done + + runHook postInstall + ''; + + passthru = { + packageName = name; + env = shell self; + inherit beamDeps; + }; +}); +in fix pkg -- cgit 1.4.1