From 1979284362af4d35bb602e2175b5986df778729d Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Sat, 6 Mar 2021 21:17:28 +0100 Subject: [PATCH] ocamlPackages.ctypes: 0.17.1 -> 0.18.0 https://github.com/ocamllabs/ocaml-ctypes/blob/0.18.0/CHANGES.md#ctypes-0180 * ocamlPackages.async_ssl: fix compatibility with ctypes 0.18.0 by using ctypes.foreign instead of ctypes.foreign.threaded since the distinction between threaded and unthreaded has been removed in this release. * libbap: link with -thread so linking ctypes.foreign doesn't fail https://github.com/BinaryAnalysisPlatform/bap-bindings/issues/18 * ocaml-ng.ocamlPackages_4_07.sodium: patch lib_gen/_tags to also add the `package(bigarray)` directive since `ctypes.stubs` no longer propgates that, leading to module not found error. * ocaml-ng.ocamlPackages_4_{04,05,06,07}.async_ssl: mark as broken: due to the bigarray-compat dependency, we need dune 2 for ctypes which breaks compilation of the legacy async_ssl 0.11 version since we can't upgrade to dune 2 for it since that version doesn't support the legacy jbuild files. --- pkgs/development/libraries/libbap/default.nix | 5 +++++ pkgs/development/ocaml-modules/ctypes/default.nix | 8 ++++---- pkgs/development/ocaml-modules/janestreet/0.12.nix | 7 ++++++- pkgs/development/ocaml-modules/janestreet/0.14.nix | 5 +++++ pkgs/development/ocaml-modules/janestreet/default.nix | 7 ++++++- pkgs/development/ocaml-modules/sodium/default.nix | 5 +++++ .../ocaml-modules/sodium/lib-gen-link-bigarray.patch | 7 +++++++ 7 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 pkgs/development/ocaml-modules/sodium/lib-gen-link-bigarray.patch diff --git a/pkgs/development/libraries/libbap/default.nix b/pkgs/development/libraries/libbap/default.nix index b8e71c2dfd3..c15de88f6a7 100644 --- a/pkgs/development/libraries/libbap/default.nix +++ b/pkgs/development/libraries/libbap/default.nix @@ -12,6 +12,11 @@ stdenv.mkDerivation { sha256 = "0m4spva3z6fgbwlg4zq53l5p227dic893q2qq65pvzxyf7k7nmil"; }; + postPatch = '' + substituteInPlace Makefile.in \ + --replace "-linkpkg" "-thread -linkpkg" + ''; + nativeBuildInputs = [ autoreconfHook which ]; buildInputs = [ ocaml bap findlib ctypes ]; diff --git a/pkgs/development/ocaml-modules/ctypes/default.nix b/pkgs/development/ocaml-modules/ctypes/default.nix index 9cb3a3d4cb8..f8ccffcf217 100644 --- a/pkgs/development/ocaml-modules/ctypes/default.nix +++ b/pkgs/development/ocaml-modules/ctypes/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchzip, ocaml, findlib, libffi, pkg-config, ncurses, integers }: +{ lib, stdenv, fetchzip, ocaml, findlib, libffi, pkg-config, ncurses, integers, bigarray-compat }: if !lib.versionAtLeast ocaml.version "4.02" then throw "ctypes is not available for OCaml ${ocaml.version}" @@ -6,16 +6,16 @@ else stdenv.mkDerivation rec { name = "ocaml${ocaml.version}-ctypes-${version}"; - version = "0.17.1"; + version = "0.18.0"; src = fetchzip { url = "https://github.com/ocamllabs/ocaml-ctypes/archive/${version}.tar.gz"; - sha256 = "16brmdnz7wi2z25qqhd5s5blyq4app6jbv6g9pa4vyg6h0nzbcys"; + sha256 = "03zrbnl16m67ls0yfhq7a4k4238x6x6b3m456g4dw2yqwc153vks"; }; nativeBuildInputs = [ pkg-config ]; buildInputs = [ ocaml findlib ncurses ]; - propagatedBuildInputs = [ integers libffi ]; + propagatedBuildInputs = [ integers libffi bigarray-compat ]; buildPhase = '' make XEN=false libffi.config ctypes-base ctypes-stubs diff --git a/pkgs/development/ocaml-modules/janestreet/0.12.nix b/pkgs/development/ocaml-modules/janestreet/0.12.nix index 4585a3b8596..295960764dc 100644 --- a/pkgs/development/ocaml-modules/janestreet/0.12.nix +++ b/pkgs/development/ocaml-modules/janestreet/0.12.nix @@ -382,7 +382,12 @@ rec { async_ssl = janePackage { pname = "async_ssl"; hash = "02ard8x5q5c42d9jdqmyzfx624yjq8cxxmvq3zb82hf6p8cc57ml"; - meta.description = "An Async-pipe-based interface with OpenSSL"; + meta = { + description = "An Async-pipe-based interface with OpenSSL"; + # ctypes no longer works with dune 1 + # dune 2 no longer supports jbuild + broken = true; + }; propagatedBuildInputs = [ async ctypes openssl ]; }; diff --git a/pkgs/development/ocaml-modules/janestreet/0.14.nix b/pkgs/development/ocaml-modules/janestreet/0.14.nix index 79df8b7cb7c..1c9cdb1532f 100644 --- a/pkgs/development/ocaml-modules/janestreet/0.14.nix +++ b/pkgs/development/ocaml-modules/janestreet/0.14.nix @@ -147,6 +147,11 @@ rec { meta.description = "Async wrappers for SSL"; buildInputs = [ dune-configurator ]; propagatedBuildInputs = [ async ctypes openssl ]; + # in ctypes.foreign 0.18.0 threaded and unthreaded have been merged + postPatch = '' + substituteInPlace bindings/dune \ + --replace "ctypes.foreign.threaded" "ctypes.foreign" + ''; }; async_unix = janePackage { diff --git a/pkgs/development/ocaml-modules/janestreet/default.nix b/pkgs/development/ocaml-modules/janestreet/default.nix index 25b498bb7da..a4c026ffb8b 100644 --- a/pkgs/development/ocaml-modules/janestreet/default.nix +++ b/pkgs/development/ocaml-modules/janestreet/default.nix @@ -417,7 +417,12 @@ rec { pname = "async_ssl"; hash = "1p83fzfla4rb820irdrz3f2hp8kq5zrhw47rqmfv6qydlca1bq64"; propagatedBuildInputs = [ async ctypes openssl ]; - meta.description = "Async wrappers for SSL"; + meta = { + description = "Async wrappers for SSL"; + # ctypes no longer works with dune 1 + # dune 2 no longer supports jbuild + broken = true; + }; }; sexp_pretty = janePackage { diff --git a/pkgs/development/ocaml-modules/sodium/default.nix b/pkgs/development/ocaml-modules/sodium/default.nix index d0c203689e3..dc090e91743 100644 --- a/pkgs/development/ocaml-modules/sodium/default.nix +++ b/pkgs/development/ocaml-modules/sodium/default.nix @@ -15,6 +15,11 @@ stdenv.mkDerivation rec { sha256 = "124gpi1jhac46x05gp5viykyrafnlp03v1cmkl13c6pgcs8w04pv"; }; + patches = [ + # ctypes.stubs no longer pulls in bigarray automatically + ./lib-gen-link-bigarray.patch + ]; + buildInputs = [ ocaml findlib ocamlbuild ]; propagatedBuildInputs = [ ctypes libsodium ]; diff --git a/pkgs/development/ocaml-modules/sodium/lib-gen-link-bigarray.patch b/pkgs/development/ocaml-modules/sodium/lib-gen-link-bigarray.patch new file mode 100644 index 00000000000..f05f5332097 --- /dev/null +++ b/pkgs/development/ocaml-modules/sodium/lib-gen-link-bigarray.patch @@ -0,0 +1,7 @@ +diff --git a/lib_gen/_tags b/lib_gen/_tags +index 7a7e632..7a4e0b7 100644 +--- a/lib_gen/_tags ++++ b/lib_gen/_tags +@@ -1 +1 @@ +-<*.{ml,byte,native}>: package(ctypes.stubs) ++<*.{ml,byte,native}>: package(ctypes.stubs), package(bigarray)