diff --git a/pkgs/development/compilers/heptagon/default.nix b/pkgs/development/compilers/heptagon/default.nix new file mode 100644 index 000000000000..e7a9360a6467 --- /dev/null +++ b/pkgs/development/compilers/heptagon/default.nix @@ -0,0 +1,52 @@ +{ lib +, stdenv +, fetchFromGitLab +, makeWrapper +, ocamlPackages +}: + +stdenv.mkDerivation rec { + pname = "heptagon"; + version = "1.05.00"; + + src = fetchFromGitLab { + domain = "gitlab.inria.fr"; + owner = "synchrone"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-b4O48MQT3Neh8a1Z5wRgS701w6XrwpsbSMprlqTT+CE="; + }; + + nativeBuildInputs = [ + makeWrapper + ]; + + buildInputs = with ocamlPackages; [ + ocaml + findlib + menhir + menhirLib + ocamlgraph + camlp4 + ocamlbuild + lablgtk + ]; + + # the heptagon library in lib/heptagon is not executable + postInstall = '' + find $out/lib/heptagon -type f -exec chmod -x {} \; + ''; + + postFixup = with ocamlPackages; '' + wrapProgram $out/bin/hepts \ + --prefix CAML_LD_LIBRARY_PATH : "${lablgtk}/lib/ocaml/${ocaml.version}/site-lib/lablgtk2" + ''; + + meta = with lib; { + description = "Compiler for the Heptagon/BZR synchronous programming language"; + homepage = "https://gitlab.inria.fr/synchrone/heptagon"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ wegank ]; + mainProgram = "heptc"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0da2d62627be..2e009a281a98 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14101,6 +14101,8 @@ with pkgs; inherit (emacs.pkgs.melpaStablePackages) irony; }; + heptagon = callPackage ../development/compilers/heptagon { }; + holo-build = callPackage ../tools/package-management/holo-build { }; hugs = callPackage ../development/interpreters/hugs { };