about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJustin Wood <justin.k.wood@gmail.com>2017-06-22 20:34:32 -0400
committerJustin Wood <justin.k.wood@gmail.com>2017-06-26 23:13:58 -0400
commit019afb0c806301e03de764a77dcc11fcbc3fd77a (patch)
treefd0005a2500af4dd5259767df3b17cc625977842
parent32705450944254f3f49b09671efaadca31ed8a48 (diff)
downloadnixlib-019afb0c806301e03de764a77dcc11fcbc3fd77a.tar
nixlib-019afb0c806301e03de764a77dcc11fcbc3fd77a.tar.gz
nixlib-019afb0c806301e03de764a77dcc11fcbc3fd77a.tar.bz2
nixlib-019afb0c806301e03de764a77dcc11fcbc3fd77a.tar.lz
nixlib-019afb0c806301e03de764a77dcc11fcbc3fd77a.tar.xz
nixlib-019afb0c806301e03de764a77dcc11fcbc3fd77a.tar.zst
nixlib-019afb0c806301e03de764a77dcc11fcbc3fd77a.zip
Generalize building of Elixir interpreter
-rw-r--r--lib/maintainers.nix1
-rw-r--r--pkgs/development/beam-modules/default.nix13
-rw-r--r--pkgs/development/beam-modules/lib.nix8
-rw-r--r--pkgs/development/interpreters/elixir/1.3.nix6
-rw-r--r--pkgs/development/interpreters/elixir/1.4.nix6
-rw-r--r--pkgs/development/interpreters/elixir/generic-builder.nix (renamed from pkgs/development/interpreters/elixir/default.nix)33
-rw-r--r--pkgs/top-level/beam-packages.nix3
7 files changed, 50 insertions, 20 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index 328a5d772db3..2c56949229bd 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -42,6 +42,7 @@
   andrewrk = "Andrew Kelley <superjoe30@gmail.com>";
   andsild = "Anders Sildnes <andsild@gmail.com>";
   aneeshusa = "Aneesh Agrawal <aneeshusa@gmail.com>";
+  ankhers = "Justin Wood <justin.k.wood@gmail.com>";
   antono = "Antono Vasiljev <self@antono.info>";
   apeschar = "Albert Peschar <albert@peschar.net>";
   apeyroux = "Alexandre Peyroux <alex@px.io>";
diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix
index d1a2a785a9c9..26cba333c23d 100644
--- a/pkgs/development/beam-modules/default.nix
+++ b/pkgs/development/beam-modules/default.nix
@@ -37,9 +37,16 @@ let
         buildMix = callPackage ./build-mix.nix {};
 
         # BEAM-based languages.
-        elixir = if versionAtLeast (lib.getVersion erlang) "18"
-                 then callPackage ../interpreters/elixir { debugInfo = true; }
-                 else throw "Elixir requires at least Erlang/OTP R18.";
+        elixir = defaultScope.elixir-1_4;
+
+        elixir-1_4 = if versionAtLeast (lib.getVersion erlang) "18"
+                     then lib.callElixir ../interpreters/elixir/1.4.nix { debugInfo = true; }
+                     else throw "Elixir requires at least Erlang/OTP R18.";
+
+        elixir-1_3 = if versionAtLeast (lib.getVersion erlang) "18"
+                     then lib.callElixir ../interpreters/elixir/1.3.nix { debugInfo = true; }
+                     else throw "Elixir requires at least Erlang/OTP R18.";
+
         lfe = callPackage ../interpreters/lfe { };
 
         # Non hex packages
diff --git a/pkgs/development/beam-modules/lib.nix b/pkgs/development/beam-modules/lib.nix
index 009bfb4975b6..9d7a4bbd34ed 100644
--- a/pkgs/development/beam-modules/lib.nix
+++ b/pkgs/development/beam-modules/lib.nix
@@ -43,4 +43,12 @@ rec {
         mkDerivation = pkgs.makeOverridable builder;
       };
 
+  callElixir = drv: args:
+    let
+      builder = callPackage ../../development/interpreters/elixir/generic-builder.nix args;
+    in
+      callPackage drv {
+        mkDerivation = pkgs.makeOverridable builder;
+      };
+
 }
diff --git a/pkgs/development/interpreters/elixir/1.3.nix b/pkgs/development/interpreters/elixir/1.3.nix
new file mode 100644
index 000000000000..90d81ee0120b
--- /dev/null
+++ b/pkgs/development/interpreters/elixir/1.3.nix
@@ -0,0 +1,6 @@
+{ mkDerivation }:
+
+mkDerivation rec {
+  version = "1.3.4";
+  sha256 = "01qqv1ghvfadcwcr5p88w8j217cgaf094pmpqllij3l0q1yg104l";
+}
diff --git a/pkgs/development/interpreters/elixir/1.4.nix b/pkgs/development/interpreters/elixir/1.4.nix
new file mode 100644
index 000000000000..2729c9942208
--- /dev/null
+++ b/pkgs/development/interpreters/elixir/1.4.nix
@@ -0,0 +1,6 @@
+{ mkDerivation }:
+
+mkDerivation rec {
+  version = "1.4.5";
+  sha256 = "18ivcxmh5bak13k3rjy7jjzin57rgb2nffhwnqb2wl7bpi8mrarw";
+}
diff --git a/pkgs/development/interpreters/elixir/default.nix b/pkgs/development/interpreters/elixir/generic-builder.nix
index 0e77b2af2524..60f044e16d0f 100644
--- a/pkgs/development/interpreters/elixir/default.nix
+++ b/pkgs/development/interpreters/elixir/generic-builder.nix
@@ -1,21 +1,20 @@
-{ stdenv, fetchFromGitHub, erlang, rebar, makeWrapper, coreutils, curl, bash,
-  debugInfo ? false }:
-
-stdenv.mkDerivation rec {
-  name = "elixir-${version}";
-  version = "1.4.4";
-
-  src = fetchFromGitHub {
-    owner = "elixir-lang";
-    repo = "elixir";
-    rev = "v${version}";
-    sha256 = "0m51cirkv1dahw4z2jlmz58cwmpy0dya88myx4wykq0v5bh1xbq8";
-  };
+{ pkgs, stdenv, fetchFromGitHub, erlang, rebar, makeWrapper, coreutils, curl
+, bash, debugInfo ? false }:
+
+{ baseName ? "elixir"
+, version
+, sha256 ? null
+, rev ? "v${version}"
+, src ? fetchFromGitHub { inherit rev sha256; owner = "elixir-lang"; repo = "elixir"; }
+}:
+
+stdenv.mkDerivation ({
+  name = "${baseName}-${version}";
+
+  inherit src version;
 
   buildInputs = [ erlang rebar makeWrapper ];
 
-  # Elixir expects that UTF-8 locale to be set (see https://github.com/elixir-lang/elixir/issues/3548).
-  # In other cases there is warnings during compilation.
   LANG = "en_US.UTF-8";
   LC_TYPE = "en_US.UTF-8";
 
@@ -66,6 +65,6 @@ stdenv.mkDerivation rec {
 
     license = licenses.epl10;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ the-kenny havvy couchemar ];
+    maintainers = with maintainers; [ the-kenny havvy couchemar ankhers ];
   };
-}
+})
diff --git a/pkgs/top-level/beam-packages.nix b/pkgs/top-level/beam-packages.nix
index acdbea673328..877feaee8710 100644
--- a/pkgs/top-level/beam-packages.nix
+++ b/pkgs/top-level/beam-packages.nix
@@ -57,6 +57,9 @@ rec {
     # access for example elixir built with different version of Erlang, use
     # `beam.packages.erlangR19.elixir`.
     elixir = packages.erlang.elixir;
+    elixir-1_4 = packages.erlang.elixir-1_4;
+    elixir-1_3 = packages.erlang.elixir-1_3;
+
     lfe = packages.erlang.lfe;
   };