NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.75k stars 13.86k forks source link

erlang/generic-builder.nix doesn't work for Erlang/OTP 22 #62775

Closed ehamberg closed 5 years ago

ehamberg commented 5 years ago

While attempting to add Erlang/OTP 22 to nixpkgs, I had to remove autoreconfHook and add autoconf to erlang/generic-builder.nix to get it to build.

Unfortunately I don't know enough about nix in order to say how support for Erlang/OTP 22 best should be handled. I have attached the patch that led to a successful build of erlangR22, but this will probably breaks other versions, since it modifies erlang/generic-builder.nix.

I would be happy to get suggestions on how to proceed – or have someone else with more nix knowledge finish this work. :)

diff --git a/pkgs/development/interpreters/erlang/R22.nix b/pkgs/development/interpreters/erlang/R22.nix
new file mode 100644
index 00000000000..40290afd2d8
--- /dev/null
+++ b/pkgs/development/interpreters/erlang/R22.nix
@@ -0,0 +1,6 @@
+{ mkDerivation }:
+
+mkDerivation rec {
+  version = "22.0.2";
+  sha256 = "0i0agp8jxldihym7klwwarpg3i61l9924mjwvx0am4w6k136dd5b";
+}
diff --git a/pkgs/development/interpreters/erlang/generic-builder.nix b/pkgs/development/interpreters/erlang/generic-builder.nix
index bc0b728ecce..914c3a0f5cf 100644
--- a/pkgs/development/interpreters/erlang/generic-builder.nix
+++ b/pkgs/development/interpreters/erlang/generic-builder.nix
@@ -1,5 +1,5 @@
 { pkgs, stdenv, fetchFromGitHub, makeWrapper, gawk, gnum4, gnused
-, libxml2, libxslt, ncurses, openssl, perl, autoreconfHook
+, libxml2, libxslt, ncurses, openssl, perl, autoconf
 , openjdk ? null # javacSupport
 , unixODBC ? null # odbcSupport
 , libGLU_combined ? null, wxGTK ? null, wxmac ? null, xorg ? null # wxSupport
@@ -48,7 +48,7 @@ in stdenv.mkDerivation ({

   inherit src version;

-  nativeBuildInputs = [ autoreconfHook makeWrapper perl gnum4 libxslt libxml2 ];
+  nativeBuildInputs = [ autoconf makeWrapper perl gnum4 libxslt libxml2 ];

   buildInputs = [ ncurses openssl ]
     ++ optionals wxSupport wxPackages2
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 04e880d9f10..70f1eec76c6 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8205,7 +8205,7 @@ in
   beam = callPackage ./beam-packages.nix { };

   inherit (beam.interpreters)
-    erlang erlangR18 erlangR19 erlangR20 erlangR21
+    erlang erlangR18 erlangR19 erlangR20 erlangR21 erlangR22
     erlang_odbc erlang_javac erlang_odbc_javac erlang_nox erlang_basho_R16B02
     elixir elixir_1_8 elixir_1_7 elixir_1_6 elixir_1_5 elixir_1_4
     lfe lfe_1_2;
diff --git a/pkgs/top-level/beam-packages.nix b/pkgs/top-level/beam-packages.nix
index f05cf3d9290..70a21c830f5 100644
--- a/pkgs/top-level/beam-packages.nix
+++ b/pkgs/top-level/beam-packages.nix
@@ -50,6 +50,15 @@ rec {
       javacSupport = true; odbcSupport = true;
     };
     erlangR21_nox = erlangR21.override { wxSupport = false; };
+    erlangR22 = lib.callErlang ../development/interpreters/erlang/R22.nix {
+      wxGTK = wxGTK30;
+    };
+    erlangR22_odbc = erlangR22.override { odbcSupport = true; };
+    erlangR22_javac = erlangR22.override { javacSupport = true; };
+    erlangR22_odbc_javac = erlangR22.override {
+      javacSupport = true; odbcSupport = true;
+    };
+    erlangR22_nox = erlangR22.override { wxSupport = false; };

     # Basho fork, using custom builder.
     erlang_basho_R16B02 = lib.callErlang ../development/interpreters/erlang/R16B02-basho.nix {
@@ -79,6 +88,7 @@ rec {
     erlangR19 = packagesWith interpreters.erlangR19;
     erlangR20 = packagesWith interpreters.erlangR20;
     erlangR21 = packagesWith interpreters.erlangR21;
+    erlangR22 = packagesWith interpreters.erlangR22;

   };
 }
ehamberg commented 5 years ago

Actually it looks like the modification to erlang/generic-builder.nix works for all supported, previous versions of Erlang (R18–R21) as well.

mogorman commented 5 years ago

I think it makes sense to open a pr with your changes.

ehamberg commented 5 years ago

Went ahead and did that now, @mogorman.