diff --git a/pkgs/development/interpreters/cg3/default.nix b/pkgs/development/interpreters/cg3/default.nix new file mode 100644 index 000000000000..27db9bebcd0c --- /dev/null +++ b/pkgs/development/interpreters/cg3/default.nix @@ -0,0 +1,61 @@ +{ lib +, stdenv +, fetchFromGitHub +, runCommand +, dieHook +, cmake +, icu +, boost +}: + +let cg3 = stdenv.mkDerivation rec { + pname = "cg3"; + version = "1.3.7"; + + src = fetchFromGitHub { + owner = "GrammarSoft"; + repo = "${pname}"; + rev = "v${version}"; + sha256 = "Ena3dGoZsXOIY6mbvnfI0H7QqRifoxWIBKQrK3yQSmY="; + }; + + nativeBuildInputs = [ + cmake + ]; + + buildInputs = [ + icu + boost + ]; + + doCheck = true; + + passthru.tests.minimal = runCommand "${pname}-test" { + buildInputs = [ + cg3 + dieHook + ]; + } '' + echo 'DELIMITERS = "."; ADD (tag) (*);' >grammar.cg3 + printf '""\n\t"a" tag\n\n' >want.txt + printf '""\n\t"a"\n\n' | vislcg3 -g grammar.cg3 >got.txt + diff -s want.txt got.txt || die "Grammar application did not produce expected parse" + touch $out + ''; + + + # TODO, consider optionals: + # - Enable tcmalloc unless darwin? + # - Enable python bindings? + + meta = with lib; { + homepage = "https://github.com/GrammarSoft/cg3"; + description = "Constraint Grammar interpreter, compiler and applicator vislcg3"; + maintainers = with maintainers; [ unhammer ]; + license = licenses.gpl3Plus; + platforms = platforms.all; + }; +}; + +in + cg3 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 19d7b5f54c77..006c54fbb4b3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14587,6 +14587,8 @@ with pkgs; ceptre = callPackage ../development/interpreters/ceptre { }; + cg3 = callPackage ../development/interpreters/cg3 { }; + cling = callPackage ../development/interpreters/cling { }; clips = callPackage ../development/interpreters/clips { };