summary refs log tree commit diff
diff options
context:
space:
mode:
authorJustin Wood <justin.k.wood@gmail.com>2017-06-26 23:09:11 -0400
committerJustin Wood <justin.k.wood@gmail.com>2017-06-26 23:13:58 -0400
commit46faaa69b86ba0ef9d416358de0ab3929985a6b4 (patch)
tree132c0d320c14ab801c3b2f6c6fbdeeb830ac47a2
parent803797c6d6983ea2652247b8335aa1f96744d323 (diff)
downloadnixlib-46faaa69b86ba0ef9d416358de0ab3929985a6b4.tar
nixlib-46faaa69b86ba0ef9d416358de0ab3929985a6b4.tar.gz
nixlib-46faaa69b86ba0ef9d416358de0ab3929985a6b4.tar.bz2
nixlib-46faaa69b86ba0ef9d416358de0ab3929985a6b4.tar.lz
nixlib-46faaa69b86ba0ef9d416358de0ab3929985a6b4.tar.xz
nixlib-46faaa69b86ba0ef9d416358de0ab3929985a6b4.tar.zst
nixlib-46faaa69b86ba0ef9d416358de0ab3929985a6b4.zip
Make assertion for OTP version in the generic elixir builder
Changed Elixir 1.5 to include the fact it is an rc release
-rw-r--r--pkgs/development/beam-modules/lib.nix10
-rw-r--r--pkgs/development/interpreters/elixir/1.3.nix1
-rw-r--r--pkgs/development/interpreters/elixir/1.4.nix1
-rw-r--r--pkgs/development/interpreters/elixir/1.5.nix1
-rw-r--r--pkgs/development/interpreters/elixir/generic-builder.nix101
5 files changed, 60 insertions, 54 deletions
diff --git a/pkgs/development/beam-modules/lib.nix b/pkgs/development/beam-modules/lib.nix
index 8a93282d1ec4..43c1a3e45d52 100644
--- a/pkgs/development/beam-modules/lib.nix
+++ b/pkgs/development/beam-modules/lib.nix
@@ -62,12 +62,8 @@ rec {
       inherit (stdenv.lib) versionAtLeast;
       builder = callPackage ../interpreters/elixir/generic-builder.nix args;
     in
-      if versionAtLeast (getVersion args.erlang) vsn
-      then
-        callPackage drv {
-          mkDerivation = pkgs.makeOverridable builder;
-        }
-      else
-        throw "Elixir requires at least Erlang/OTP R${vsn}.";
+      callPackage drv {
+        mkDerivation = pkgs.makeOverridable builder;
+      };
 
 }
diff --git a/pkgs/development/interpreters/elixir/1.3.nix b/pkgs/development/interpreters/elixir/1.3.nix
index 90d81ee0120b..43d48e2cf7cd 100644
--- a/pkgs/development/interpreters/elixir/1.3.nix
+++ b/pkgs/development/interpreters/elixir/1.3.nix
@@ -3,4 +3,5 @@
 mkDerivation rec {
   version = "1.3.4";
   sha256 = "01qqv1ghvfadcwcr5p88w8j217cgaf094pmpqllij3l0q1yg104l";
+  minimumOTPVersion = "18";
 }
diff --git a/pkgs/development/interpreters/elixir/1.4.nix b/pkgs/development/interpreters/elixir/1.4.nix
index 2729c9942208..9ddd9062acd9 100644
--- a/pkgs/development/interpreters/elixir/1.4.nix
+++ b/pkgs/development/interpreters/elixir/1.4.nix
@@ -3,4 +3,5 @@
 mkDerivation rec {
   version = "1.4.5";
   sha256 = "18ivcxmh5bak13k3rjy7jjzin57rgb2nffhwnqb2wl7bpi8mrarw";
+  minimumOTPVersion = "18";
 }
diff --git a/pkgs/development/interpreters/elixir/1.5.nix b/pkgs/development/interpreters/elixir/1.5.nix
index 4ef30204ce31..d9e2e9c16c62 100644
--- a/pkgs/development/interpreters/elixir/1.5.nix
+++ b/pkgs/development/interpreters/elixir/1.5.nix
@@ -3,4 +3,5 @@
 mkDerivation rec {
   version = "1.5.0-rc.0";
   sha256 = "1p0sawz86w9na56c42ivdacqxzldjb9s9cvl2isj3sy4nwsa0l0j";
+  minimumOTPVersion = "18";
 }
diff --git a/pkgs/development/interpreters/elixir/generic-builder.nix b/pkgs/development/interpreters/elixir/generic-builder.nix
index 60f044e16d0f..a3f60a7f22e4 100644
--- a/pkgs/development/interpreters/elixir/generic-builder.nix
+++ b/pkgs/development/interpreters/elixir/generic-builder.nix
@@ -1,70 +1,77 @@
-{ pkgs, stdenv, fetchFromGitHub, erlang, rebar, makeWrapper, coreutils, curl
-, bash, debugInfo ? false }:
+{ pkgs, stdenv, fetchFromGitHub, erlang, rebar, makeWrapper,
+  coreutils, curl, bash, debugInfo ? false }:
 
 { baseName ? "elixir"
 , version
+, minimumOTPVersion
 , sha256 ? null
 , rev ? "v${version}"
 , src ? fetchFromGitHub { inherit rev sha256; owner = "elixir-lang"; repo = "elixir"; }
 }:
 
-stdenv.mkDerivation ({
-  name = "${baseName}-${version}";
+let
+  inherit (stdenv.lib) getVersion versionAtLeast;
 
-  inherit src version;
+in
+  assert versionAtLeast (getVersion erlang) minimumOTPVersion;
 
-  buildInputs = [ erlang rebar makeWrapper ];
+  stdenv.mkDerivation ({
+    name = "${baseName}-${version}";
 
-  LANG = "en_US.UTF-8";
-  LC_TYPE = "en_US.UTF-8";
+    inherit src version;
 
-  setupHook = ./setup-hook.sh;
+    buildInputs = [ erlang rebar makeWrapper ];
 
-  inherit debugInfo;
+    LANG = "en_US.UTF-8";
+    LC_TYPE = "en_US.UTF-8";
 
-  buildFlags = if debugInfo
-   then "ERL_COMPILER_OPTIONS=debug_info"
-   else "";
+    setupHook = ./setup-hook.sh;
 
-  preBuild = ''
-    # The build process uses ./rebar. Link it to the nixpkgs rebar
-    rm -v rebar
-    ln -s ${rebar}/bin/rebar rebar
+    inherit debugInfo;
 
-    substituteInPlace Makefile \
-      --replace "/usr/local" $out
-  '';
+    buildFlags = if debugInfo
+     then "ERL_COMPILER_OPTIONS=debug_info"
+     else "";
 
-  postFixup = ''
-    # Elixir binaries are shell scripts which run erl. Add some stuff
-    # to PATH so the scripts can run without problems.
+    preBuild = ''
+      # The build process uses ./rebar. Link it to the nixpkgs rebar
+      rm -v rebar
+      ln -s ${rebar}/bin/rebar rebar
 
-    for f in $out/bin/*; do
-     b=$(basename $f)
-      if [ $b == "mix" ]; then continue; fi
-      wrapProgram $f \
-        --prefix PATH ":" "${stdenv.lib.makeBinPath [ erlang coreutils curl bash ]}" \
-        --set CURL_CA_BUNDLE /etc/ssl/certs/ca-certificates.crt
-    done
+      substituteInPlace Makefile \
+        --replace "/usr/local" $out
+    '';
 
-    substituteInPlace $out/bin/mix \
-          --replace "/usr/bin/env elixir" "${coreutils}/bin/env elixir"
-  '';
+    postFixup = ''
+      # Elixir binaries are shell scripts which run erl. Add some stuff
+      # to PATH so the scripts can run without problems.
 
-  meta = with stdenv.lib; {
-    homepage = "http://elixir-lang.org/";
-    description = "A functional, meta-programming aware language built on top of the Erlang VM";
+      for f in $out/bin/*; do
+       b=$(basename $f)
+        if [ $b == "mix" ]; then continue; fi
+        wrapProgram $f \
+          --prefix PATH ":" "${stdenv.lib.makeBinPath [ erlang coreutils curl bash ]}" \
+          --set CURL_CA_BUNDLE /etc/ssl/certs/ca-certificates.crt
+      done
 
-    longDescription = ''
-      Elixir is a functional, meta-programming aware language built on
-      top of the Erlang VM. It is a dynamic language with flexible
-      syntax and macro support that leverages Erlang's abilities to
-      build concurrent, distributed and fault-tolerant applications
-      with hot code upgrades.
+      substituteInPlace $out/bin/mix \
+            --replace "/usr/bin/env elixir" "${coreutils}/bin/env elixir"
     '';
 
-    license = licenses.epl10;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ the-kenny havvy couchemar ankhers ];
-  };
-})
+    meta = with stdenv.lib; {
+      homepage = "http://elixir-lang.org/";
+      description = "A functional, meta-programming aware language built on top of the Erlang VM";
+
+      longDescription = ''
+        Elixir is a functional, meta-programming aware language built on
+        top of the Erlang VM. It is a dynamic language with flexible
+        syntax and macro support that leverages Erlang's abilities to
+        build concurrent, distributed and fault-tolerant applications
+        with hot code upgrades.
+      '';
+
+      license = licenses.epl10;
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ the-kenny havvy couchemar ankhers ];
+    };
+  })