Add in scope rebar version

This commit is contained in:
Justin Wood 2017-06-23 12:38:10 -04:00
parent 838956b179
commit 3595f8e8d6
2 changed files with 33 additions and 18 deletions

View File

@ -39,21 +39,17 @@ let
# BEAM-based languages. # BEAM-based languages.
elixir = defaultScope.elixir-1_4; elixir = defaultScope.elixir-1_4;
elixir-1_4 = if versionAtLeast (lib.getVersion erlang) "18" elixir-1_4 = lib.callElixir ../interpreters/elixir/1.4.nix "18" {
then
lib.callElixir ../interpreters/elixir/1.4.nix {
debugInfo = true; debugInfo = true;
erlang = erlang; erlang = erlang;
} rebar = defaultScope.rebar;
else throw "Elixir requires at least Erlang/OTP R18."; };
elixir-1_3 = if versionAtLeast (lib.getVersion erlang) "18" elixir-1_3 = lib.callElixir ../interpreters/elixir/1.3.nix "18" {
then
lib.callElixir ../interpreters/elixir/1.3.nix {
debugInfo = true; debugInfo = true;
erlang = erlang; erlang = erlang;
} rebar = defaultScope.rebar;
else throw "Elixir requires at least Erlang/OTP R18."; };
lfe = callPackage ../interpreters/lfe { }; lfe = callPackage ../interpreters/lfe { };

View File

@ -43,12 +43,31 @@ rec {
mkDerivation = pkgs.makeOverridable builder; mkDerivation = pkgs.makeOverridable builder;
}; };
callElixir = drv: args: /* Uses generic-builder to evaluate provided drv containing Elixir version
specific data.
drv: package containing version-specific args;
vsn: minimum OTP version that Elixir will build on;
builder: generic builder for all Erlang versions;
args: arguments merged into version-specific args, used mostly to customize
dependencies;
Arguments passed to the generic-builder are overridable.
Please note that "mkDerivation" defined here is the one called from 1.4.nix
and similar files.
*/
callElixir = drv: vsn: args:
let let
inherit (stdenv.lib) versionAtLeast;
builder = callPackage ../../development/interpreters/elixir/generic-builder.nix args; builder = callPackage ../../development/interpreters/elixir/generic-builder.nix args;
in in
if versionAtLeast (getVersion args.erlang) vsn
then
callPackage drv { callPackage drv {
mkDerivation = pkgs.makeOverridable builder; mkDerivation = pkgs.makeOverridable builder;
}; }
else
throw "Elixir requires at least Erlang/OTP R${vsn}.";
} }