Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Haxe Version to 4.1.3 #95638

Closed
waynee95 opened this issue Aug 17, 2020 · 4 comments · Fixed by #118112
Closed

Update Haxe Version to 4.1.3 #95638

waynee95 opened this issue Aug 17, 2020 · 4 comments · Fixed by #118112
Assignees

Comments

@waynee95
Copy link

There was a new release on Haxe not too long ago. It's now on 4.1.3

https://github.com/HaxeFoundation/haxe/releases/tag/4.1.3

The version in nixpkgs is pretty old, it's still on 3.4.6

Would be cool if this could be updated.

Maintainer: @MarcWeber

@kvtb
Copy link
Contributor

kvtb commented Feb 10, 2021

Not well tested, at least it builds and passes installCheckPhase:
It includes #110374 because haxe-4.2.0 (but not 4.0.x or4.1.x) needs extlib 1.7.8 (HaxeFoundation/haxe#10086)

diff --git a/pkgs/development/compilers/haxe/default.nix b/pkgs/development/compilers/haxe/default.nix
index a3110c0c1af1..9dc8e304d0e3 100644
--- a/pkgs/development/compilers/haxe/default.nix
+++ b/pkgs/development/compilers/haxe/default.nix
@@ -1,14 +1,11 @@
-{ stdenv, fetchgit, coreutils, ocamlPackages, zlib, pcre, neko }:
+{ lib, stdenv, fetchgit, coreutils, ocaml-ng, zlib, pcre, neko, mbedtls }:
 
-let inherit (ocamlPackages) ocaml camlp4; in
 
 let
-  generic = { version, sha256, prePatch }:
+  generic = { version, sha256, buildInputs, prePatch }:
     stdenv.mkDerivation {
       pname = "haxe";
-      inherit version;
-
-      buildInputs = [ocaml zlib pcre neko camlp4];
+      inherit version buildInputs prePatch;
 
       src = fetchgit {
         url = "https://github.com/HaxeFoundation/haxe.git";
@@ -17,8 +14,6 @@ let
         rev = "refs/tags/${version}";
       };
 
-      inherit prePatch;
-
       buildFlags = [ "all" "tools" ];
 
       installPhase = ''
@@ -74,7 +69,7 @@ let
         popd > /dev/null
       '';
 
-      meta = with stdenv.lib; {
+      meta = with lib; {
         description = "Programming language targeting JavaScript, Flash, NekoVM, PHP, C++";
         homepage = "https://haxe.org";
         license = with licenses; [ gpl2 bsd2 /*?*/ ];  # -> docs/license.txt
@@ -87,17 +82,43 @@ in {
   haxe_3_2 = generic {
     version = "3.2.1";
     sha256 = "1x9ay5a2llq46fww3k07jxx8h1vfpyxb522snc6702a050ki5vz3";
+    buildInputs = [zlib pcre neko] ++ (with ocaml-ng.ocamlPackages_4_05; [ocaml camlp4]);
     prePatch = ''
       sed -i -e 's|"/usr/lib/haxe/std/";|"'"$out/lib/haxe/std/"'";\n&|g' main.ml
       sed -i -e 's|"neko"|"${neko}/bin/neko"|g' extra/haxelib_src/src/tools/haxelib/Main.hx
     '';
   };
   haxe_3_4 = generic {
-    version = "3.4.6";
-    sha256 = "1myc4b8fwp0f9vky17wv45n34a583f5sjvajsc93f5gm1wanp4if";
+    version = "3.4.7";
+    sha256 = "1pwi66bskfr0nr6l326d171b4xb7xvasahlq5y3rwd36k5hpf19b";
+    buildInputs = [zlib pcre neko] ++ (with ocaml-ng.ocamlPackages_4_05; [ocaml camlp4]);
     prePatch = ''
       sed -i -re 's!(let +prefix_path += +).*( +in)!\1"'"$out/"'"\2!' src/main.ml
       sed -i -e 's|"neko"|"${neko}/bin/neko"|g' extra/haxelib_src/src/haxelib/client/Main.hx
     '';
   };
+  haxe_4_0 = generic {
+    version = "4.0.5";
+    sha256 = "0f534pchdx0m057ixnk07ab4s518ica958pvpd0vfjsrxg5yjkqa";
+    buildInputs = [zlib pcre neko] ++ (with ocaml-ng.ocamlPackages_4_10; [ocaml findlib sedlex_2 xml-light ptmap camlp5 sha ocaml_extlib_1_7_7]);
+    prePatch = ''
+      sed -i -e 's|"neko"|"${neko}/bin/neko"|g' extra/haxelib_src/src/haxelib/client/Main.hx
+    '';
+  };
+  haxe_4_1 = generic {
+    version = "4.1.5";
+    sha256 = "0rns6d28qzkbai6yyws08yzbyvxfn848nj0fsji7chdi0y7pzzj0";
+    buildInputs = [zlib pcre neko mbedtls] ++ (with ocaml-ng.ocamlPackages_4_10; [ocaml findlib sedlex_2 xml-light ptmap camlp5 sha ocaml_extlib_1_7_7 dune_2]);
+    prePatch = ''
+      sed -i -e 's|"neko"|"${neko}/bin/neko"|g' extra/haxelib_src/src/haxelib/client/Main.hx
+    '';
+  };
+  haxe_4_2 = generic {
+    version = "4.2.0";
+    sha256 = "0am13q5aad30nddzjab3yh39z0gy5y78vbdd2fahs7nb812hqkf7";
+    buildInputs = [zlib pcre neko mbedtls] ++ (with ocaml-ng.ocamlPackages_4_10; [ocaml findlib sedlex_2 xml-light ptmap camlp5 sha ocaml_extlib_1_7_8 dune_2 luv]);
+    prePatch = ''
+      sed -i -e 's|"neko"|"${neko}/bin/neko"|g' extra/haxelib_src/src/haxelib/client/Main.hx
+    '';
+  };
 }
diff --git a/pkgs/development/compilers/neko/default.nix b/pkgs/development/compilers/neko/default.nix
index 705b222a86cb..c10a61084764 100644
--- a/pkgs/development/compilers/neko/default.nix
+++ b/pkgs/development/compilers/neko/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "neko";
-  version = "2.2.0";
+  version = "2.3.0";
 
   src = fetchurl {
-    url = "https://nekovm.org/media/neko-${version}-src.tar.gz";
-    sha256 = "1qv47zaa0vzhjlq5wb71627n7dbsxpc1gqpg0hsngjxnbnh1q46g";
+    url = "https://github.com/HaxeFoundation/neko/archive/v2-3-0.tar.gz";
+    sha256 = "15g99snnnky8jsi6h3pj375804xj3jfgivzgabb4xwnsgcqpw3l5";
   };
 
   nativeBuildInputs = [ cmake pkgconfig git ];
diff --git a/pkgs/development/ocaml-modules/extlib/default.nix b/pkgs/development/ocaml-modules/extlib/1_7_7.nix
similarity index 91%
rename from pkgs/development/ocaml-modules/extlib/default.nix
rename to pkgs/development/ocaml-modules/extlib/1_7_7.nix
index a8b1810e51f1..6d0535cdbaeb 100644
--- a/pkgs/development/ocaml-modules/extlib/default.nix
+++ b/pkgs/development/ocaml-modules/extlib/1_7_7.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation {
   name = "ocaml${ocaml.version}-extlib-1.7.7";
 
   src = fetchurl {
-    url = "http://ygrek.org.ua/p/release/ocaml-extlib/extlib-1.7.7.tar.gz";
+    url = "https://ygrek.org/p/release/ocaml-extlib/extlib-1.7.7.tar.gz";
     sha256 = "1sxmzc1mx3kg62j8kbk0dxkx8mkf1rn70h542cjzrziflznap0s1";
   };
 
diff --git a/pkgs/development/ocaml-modules/extlib/1_7_8.nix b/pkgs/development/ocaml-modules/extlib/1_7_8.nix
new file mode 100644
index 000000000000..878042fa2d97
--- /dev/null
+++ b/pkgs/development/ocaml-modules/extlib/1_7_8.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, fetchurl, ocaml, findlib, cppo, minimal ? true }:
+
+assert lib.versionAtLeast (lib.getVersion ocaml) "3.11";
+
+stdenv.mkDerivation {
+  name = "ocaml${ocaml.version}-extlib-1.7.8";
+
+  src = fetchurl {
+    url = "https://ygrek.org/p/release/ocaml-extlib/extlib-1.7.8.tar.gz";
+    sha256 = "0npq4hq3zym8nmlyji7l5cqk6drx2rkcx73d60rxqh5g8dla8p4k";
+  };
+
+  buildInputs = [ ocaml findlib cppo ];
+
+  createFindlibDestdir = true;
+
+  dontConfigure = true;      # Skip configure
+  # De facto, option minimal=1 seems to be the default.  See the README.
+  buildPhase     = "make ${if minimal then "minimal=1" else ""} build";
+  installPhase   = "make ${if minimal then "minimal=1" else ""} install";
+
+  meta = {
+    homepage = "https://github.com/ygrek/ocaml-extlib";
+    description = "Enhancements to the OCaml Standard Library modules";
+    license = lib.licenses.lgpl21;
+    platforms = ocaml.meta.platforms or [];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/luv/default.nix b/pkgs/development/ocaml-modules/luv/default.nix
new file mode 100644
index 000000000000..30491fb0782f
--- /dev/null
+++ b/pkgs/development/ocaml-modules/luv/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildDunePackage, fetchurl, ctypes }:
+
+buildDunePackage rec {
+  pname = "luv";
+  version = "0.5.6";
+  useDune2 = true;
+
+  src = fetchurl {
+    url = "https://github.com/aantron/luv/releases/download/0.5.6/luv-0.5.6.tar.gz";
+    sha256 = "119nv250fsadvrs94nwzk7qvlwr0kvcpkbwcmfkh13byg8nhkn1m";
+  };
+
+  propagatedBuildInputs = [ ctypes ];
+
+  meta = {
+    homepage = "https://github.com/aantron/luv";
+    description = "Binding to libuv: cross-platform asynchronous I/O";
+    license = lib.licenses.lgpl21;
+    maintainers = [ lib.maintainers.vbgl ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/sha/default.nix b/pkgs/development/ocaml-modules/sha/default.nix
new file mode 100644
index 000000000000..f6cea15662a1
--- /dev/null
+++ b/pkgs/development/ocaml-modules/sha/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildDunePackage, fetchurl }:
+
+buildDunePackage rec {
+  pname = "sha";
+  version = "1.13";
+  useDune2 = true;
+
+  src = fetchurl {
+    url = "https://github.com/djs55/ocaml-sha/releases/download/v1.13/sha-v1.13.tbz";
+    sha256 = "00z2s4fsv9i1h09rj5dy3nd9hhcn79b75sn2ljj5wihlf4y4g304";
+  };
+
+  meta = {
+    homepage = "https://github.com/djs55/ocaml-sha";
+    description = "Binding to the SHA cryptographic functions";
+    license = lib.licenses.lgpl21;
+    maintainers = [ lib.maintainers.vbgl ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c32b9ce6b044..a656c0fd5052 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8316,10 +8316,9 @@ in
       graphviz = graphviz-nox;
     });
 
-  inherit (callPackage ../development/compilers/haxe {
-    ocamlPackages = ocaml-ng.ocamlPackages_4_05;
-  }) haxe_3_2 haxe_3_4;
-  haxe = haxe_3_4;
+  inherit (callPackage ../development/compilers/haxe { })
+    haxe_3_2 haxe_3_4 haxe_4_0 haxe_4_1 haxe_4_2;
+  haxe = haxe_4_2;
   haxePackages = recurseIntoAttrs (callPackage ./haxe-packages.nix { });
   inherit (haxePackages) hxcpp;
 
diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix
index c0faba640a26..1fd86d0a0859 100644
--- a/pkgs/top-level/ocaml-packages.nix
+++ b/pkgs/top-level/ocaml-packages.nix
@@ -552,6 +552,8 @@ let
 
     lua-ml = callPackage ../development/ocaml-modules/lua-ml { };
 
+    luv = callPackage ../development/ocaml-modules/luv { };
+
     lwt = callPackage ../development/ocaml-modules/lwt {
       ocaml-migrate-parsetree = ocaml-migrate-parsetree-2-1;
     };
@@ -959,7 +961,9 @@ let
 
     ocaml-protoc = callPackage ../development/ocaml-modules/ocaml-protoc { };
 
-    ocaml_extlib = callPackage ../development/ocaml-modules/extlib { };
+    ocaml_extlib = ocaml_extlib_1_7_7;
+    ocaml_extlib_1_7_7 = callPackage ../development/ocaml-modules/extlib/1_7_7.nix { };
+    ocaml_extlib_1_7_8 = callPackage ../development/ocaml-modules/extlib/1_7_8.nix { };
 
     ocb-stubblr = callPackage ../development/ocaml-modules/ocb-stubblr { };
 
@@ -1057,6 +1061,8 @@ let
 
     semaphore-compat = callPackage ../development/ocaml-modules/semaphore-compat { };
 
+    sha = callPackage ../development/ocaml-modules/sha { };
+
     sodium = callPackage ../development/ocaml-modules/sodium { };
 
     spelll = callPackage ../development/ocaml-modules/spelll { };

@locallycompact
Copy link
Contributor

locallycompact commented Mar 14, 2021

Hi what's the state of this? Can I help?

@sternenseemann
Copy link
Member

#116953

@sternenseemann
Copy link
Member

We have 4.2.1 now, 4.1.5 and 4.0.5 are still pending.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants