diff --git a/pkgs/development/tools/parsing/spicy/default.nix b/pkgs/development/tools/parsing/spicy/default.nix new file mode 100644 index 000000000000..f379a1ed0517 --- /dev/null +++ b/pkgs/development/tools/parsing/spicy/default.nix @@ -0,0 +1,67 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, makeWrapper +, python3 +, bison +, flex +, zlib +}: + +stdenv.mkDerivation rec { + pname = "spicy"; + version = "1.5.3"; + + strictDeps = true; + + src = fetchFromGitHub { + owner = "zeek"; + repo = "spicy"; + rev = "v${version}"; + hash = "sha256-eCF914QEBBqg3LfM3N22c7W0TMOhuHqLxncpAG+8FjU="; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ + cmake + makeWrapper + python3 + ]; + + buildInputs = [ + bison + flex + zlib + ]; + + postPatch = '' + patchShebangs scripts tests/scripts + ''; + + cmakeFlags = [ + "-DHILTI_DEV_PRECOMPILE_HEADERS=OFF" + ]; + + preFixup = '' + for b in $out/bin/* + do wrapProgram "$b" --prefix PATH : "${lib.makeBinPath [ bison flex ]}" + done + ''; + + meta = with lib; { + homepage = "https://github.com/zeek/spicy"; + description = "A C++ parser generator for dissecting protocols & files"; + longDescription = '' + Spicy is a parser generator that makes it easy to create robust C++ + parsers for network protocols, file formats, and more. Spicy is a bit + like a "yacc for protocols", but it's much more than that: It's an + all-in-one system enabling developers to write attributed grammars that + describe both syntax and semantics of an input format using a single, + unified language. Think of Spicy as a domain-specific scripting language + for all your parsing needs. + ''; + license = licenses.bsd3; + maintainers = with maintainers; [ tobim ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 934369c4a36d..19b1684f916c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18531,6 +18531,8 @@ with pkgs; speedtest-cli = with python3Packages; toPythonApplication speedtest-cli; + spicy-parser-generator = callPackage ../development/tools/parsing/spicy { }; + spin = callPackage ../development/tools/analysis/spin { }; spirv-headers = callPackage ../development/libraries/spirv-headers { };