From 8c640a262969ef44cd8bc0e0abe95e2a54f4c3f5 Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Thu, 5 Mar 2026 23:42:15 -0300 Subject: ocaml re-migration --- deps/libressl.nix | 13 +++++++++++++ deps/merklecpp.nix | 19 +++++++++++++++++++ deps/ppx_protocol_conv.nix | 27 +++++++++++++++++++++++++++ deps/ppx_protocol_conv_xml_light.nix | 27 +++++++++++++++++++++++++++ deps/relational_engine_lib.nix | 28 ++++++++++++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 deps/libressl.nix create mode 100644 deps/merklecpp.nix create mode 100644 deps/ppx_protocol_conv.nix create mode 100644 deps/ppx_protocol_conv_xml_light.nix create mode 100644 deps/relational_engine_lib.nix (limited to 'deps') diff --git a/deps/libressl.nix b/deps/libressl.nix new file mode 100644 index 0000000..a517dab --- /dev/null +++ b/deps/libressl.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: +pkgs.stdenv.mkDerivation { + name = "libressl-lib"; + src = ./.; + buildInputs = with pkgs; [ libressl.dev pkg-config ]; + installPhase = '' + mkdir -p $out/lib + mkdir -p $out/include + libressl_path=$(${pkgs.pkg-config}/bin/pkg-config --libs ${pkgs.libressl.dev}/lib/pkgconfig/libssl.pc | awk '{sub(/^-L/, ""); sub(/ -lssl$/, ""); print}') + cp -r $libressl_path/* $out/lib + cp -r ${pkgs.libressl.dev}/include/* $out/include + ''; +} diff --git a/deps/merklecpp.nix b/deps/merklecpp.nix new file mode 100644 index 0000000..d130be6 --- /dev/null +++ b/deps/merklecpp.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: +pkgs.stdenv.mkDerivation rec { + name = "merklecpp"; + + src = pkgs.fetchFromGitHub { + owner = "microsoft"; + repo = "merklecpp"; + rev = "master"; + sha256 = "jJJ6FEn+AkMknqun0GkXh5DSXsJnFbdE7U8BQ7Dd/Fw="; + }; + + prePatch = ""; + configurePhase = ""; + buildPhase = ""; + installPhase = '' + mkdir -p $out/include + mv merklecpp.h $out/include/merklecpp.h + ''; +} diff --git a/deps/ppx_protocol_conv.nix b/deps/ppx_protocol_conv.nix new file mode 100644 index 0000000..856904e --- /dev/null +++ b/deps/ppx_protocol_conv.nix @@ -0,0 +1,27 @@ +{ lib, ocamlPackages, fetchFromGitHub, defaultVersion ? "5.2.3" }: +ocamlPackages.buildDunePackage { + duneVersion = "3"; + + pname = "ppx_protocol_conv"; + version = defaultVersion; + + minimalOCamlVersion = "4.07"; + + src = fetchFromGitHub { + owner = "andersfugmann"; + repo = "ppx_protocol_conv"; + rev = "425a7a1a26c26fcb740e5574e252043fd03eff46"; + sha256 = "sha256-G6zMgHioPUCh2i50cjQ6talN8CYO6UhEaWgi0xe3CWA="; + }; + + buildInputs = [ocamlPackages.ppxlib ocamlPackages.ppx_sexp_conv ocamlPackages.sexplib ocamlPackages.alcotest ]; + + propagatedBuildInputs = [ ocamlPackages.ppxlib ocamlPackages.ppx_sexp_conv ocamlPackages.sexplib ocamlPackages.alcotest ]; + + doCheck = true; + + meta = { + license = lib.licenses.bsd3; + homepage = "https://github.com/andersfugmann/ppx_protocol_conv"; + }; +} diff --git a/deps/ppx_protocol_conv_xml_light.nix b/deps/ppx_protocol_conv_xml_light.nix new file mode 100644 index 0000000..a1f3e35 --- /dev/null +++ b/deps/ppx_protocol_conv_xml_light.nix @@ -0,0 +1,27 @@ +{ lib, ppx_protocol_conv, ocamlPackages, fetchFromGitHub, defaultVersion ? "5.2.3" }: +ocamlPackages.buildDunePackage { + duneVersion = "3"; + + pname = "ppx_protocol_conv_xml_light"; + version = defaultVersion; + + minimalOCamlVersion = "4.08"; + + src = fetchFromGitHub { + owner = "andersfugmann"; + repo = "ppx_protocol_conv"; + rev = "425a7a1a26c26fcb740e5574e252043fd03eff46"; + sha256 = "sha256-G6zMgHioPUCh2i50cjQ6talN8CYO6UhEaWgi0xe3CWA="; + }; + + buildInputs = [ppx_protocol_conv ocamlPackages.xml-light ocamlPackages.ppx_sexp_conv ocamlPackages.sexplib ocamlPackages.alcotest ]; + + propagatedBuildInputs = [ ocamlPackages.xml-light ocamlPackages.ppxlib ocamlPackages.ppx_sexp_conv ocamlPackages.sexplib ocamlPackages.alcotest ]; + + doCheck = true; + + meta = { + license = lib.licenses.bsd3; + homepage = "https://github.com/andersfugmann/ppx_protocol_conv"; + }; +} diff --git a/deps/relational_engine_lib.nix b/deps/relational_engine_lib.nix new file mode 100644 index 0000000..475ce00 --- /dev/null +++ b/deps/relational_engine_lib.nix @@ -0,0 +1,28 @@ +{ pkgs, libressl ? pkgs.callPackage ./libressl.nix { } +# , merklecpp ? pkgs.callPackage ./merklecpp.nix { } +, ... }: +let shared_lib_extension = if pkgs.stdenv.isDarwin then "dylib" else "so"; +in pkgs.stdenv.mkDerivation { + name = "librelational_engine"; + src = ../shared/librelational_engine; + nativeBuildInputs = [ pkgs.cmake pkgs.gcc ]; + buildInputs = [ + libressl + # merklecpp + ]; + env = { + # MERKLECPP_INCLUDE_PATH = "${merklecpp}/include"; + LIBRESSL_INCLUDE_PATH = "${libressl}/include"; + LIBRESSL_LIB_PATH = "${libressl}/lib"; + OS_LIB_EXTENSION = shared_lib_extension; + }; + buildPhase = '' + mkdir -p $out/lib + mkdir -p $out/include + cmake --build . --target relational_engine + ''; + installPhase = '' + mv librelational_engine.${shared_lib_extension} $out/lib/librelational_engine.${shared_lib_extension} + cp $src/library.h $out/include/library.h + ''; +} -- cgit v1.2.3