diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index f0a049bb4b2..b48abb34611 100644 --- a/pkgs/development/beam-modules/default.nix +++ b/pkgs/development/beam-modules/default.nix @@ -54,7 +54,8 @@ let debugInfo = true; }; - lfe = callPackage ../interpreters/lfe { }; + lfe = lfe_1_2; + lfe_1_2 = lib.callLFE ../interpreters/lfe/1.2.nix { inherit erlang buildRebar3; }; # Non hex packages hex = callPackage ./hex {}; diff --git a/pkgs/development/beam-modules/lib.nix b/pkgs/development/beam-modules/lib.nix index dd4ed5e1bbf..26d868a8e7c 100644 --- a/pkgs/development/beam-modules/lib.nix +++ b/pkgs/development/beam-modules/lib.nix @@ -56,4 +56,26 @@ rec { mkDerivation = pkgs.makeOverridable builder; }; + /* Uses generic-builder to evaluate provided drv containing Elixir version + specific data. + + drv: package containing version-specific args; + 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.2.nix + and similar files. + */ + callLFE = drv: args: + let + inherit (stdenv.lib) versionAtLeast; + builder = callPackage ../interpreters/lfe/generic-builder.nix args; + in + callPackage drv { + mkDerivation = pkgs.makeOverridable builder; + }; + } diff --git a/pkgs/development/interpreters/lfe/1.2.nix b/pkgs/development/interpreters/lfe/1.2.nix new file mode 100644 index 00000000000..2bd1df41fb6 --- /dev/null +++ b/pkgs/development/interpreters/lfe/1.2.nix @@ -0,0 +1,6 @@ +{ mkDerivation }: + +mkDerivation { + version = "1.2.1"; + sha256 = "0j5gjlsk92y14kxgvd80q9vwyhmjkphpzadcswyjxikgahwg1avz"; +} diff --git a/pkgs/development/interpreters/lfe/default.nix b/pkgs/development/interpreters/lfe/generic-builder.nix similarity index 68% rename from pkgs/development/interpreters/lfe/default.nix rename to pkgs/development/interpreters/lfe/generic-builder.nix index cafcc4c28ee..c55872afbfb 100644 --- a/pkgs/development/interpreters/lfe/default.nix +++ b/pkgs/development/interpreters/lfe/generic-builder.nix @@ -1,33 +1,19 @@ -{ stdenv, fetchFromGitHub, erlang, makeWrapper, coreutils, bash, beamPackages }: +{ stdenv, fetchFromGitHub, erlang, makeWrapper, coreutils, bash, buildRebar3 }: -let - inherit (beamPackages) buildRebar3 buildHex; - proper = buildHex rec { - name = "proper"; - version = "1.1.1-beta"; - sha256 = "0hnkhs761yjynw9382w8wm4j3x0r7lllzavaq2kh9n7qy3zc1rdx"; +{ baseName ? "lfe" +, version +, sha256 ? null +, rev ? version +, src ? fetchFromGitHub { inherit rev sha256; owner = "rvirding"; repo = "lfe"; } +}: - configurePhase = '' - ${erlang}/bin/escript write_compile_flags include/compile_flags.hrl - ''; - }; -in -buildRebar3 rec { - name = "lfe"; - version = "1.2.1"; +buildRebar3 { + name = "${baseName}"; - src = fetchFromGitHub { - owner = "rvirding"; - repo = name; - rev = version; - sha256 = "0j5gjlsk92y14kxgvd80q9vwyhmjkphpzadcswyjxikgahwg1avz"; - }; + inherit src version; - buildInputs = [ makeWrapper ]; - beamDeps = [ proper ]; + buildInputs = [ erlang makeWrapper ]; patches = [ ./no-test-deps.patch ]; - doCheck = true; - checkTarget = "travis"; # These installPhase tricks are based on Elixir's Makefile. # TODO: Make, upload, and apply a patch. @@ -41,6 +27,7 @@ buildRebar3 rec { install -m644 _build/default/lib/lfe/ebin/* $ebindir install -m755 -d $bindir + for bin in bin/lfe{,c,doc,script}; do install -m755 $bin $bindir; done install -m755 -d $out/bin @@ -70,7 +57,7 @@ buildRebar3 rec { downloadPage = "https://github.com/rvirding/lfe/releases"; license = licenses.asl20; - maintainers = with maintainers; [ yurrriq ]; + maintainers = with maintainers; [ yurrriq ankhers ]; platforms = platforms.unix; }; } diff --git a/pkgs/top-level/beam-packages.nix b/pkgs/top-level/beam-packages.nix index 8d01ad36139..62ffaec26f3 100644 --- a/pkgs/top-level/beam-packages.nix +++ b/pkgs/top-level/beam-packages.nix @@ -58,7 +58,7 @@ rec { # `beam.packages.erlangR19.elixir`. inherit (packages.erlang) elixir elixir_1_5_rc elixir_1_4 elixir_1_3; - lfe = packages.erlang.lfe; + inherit (packages.erlang) lfe lfe_1_2; }; # Helper function to generate package set with a specific Erlang version.