From 3e1acb0b44fbad845d27cdce987474f5eb4be912 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Thu, 8 Nov 2018 18:00:15 +0200 Subject: [PATCH] hyperscan: init at 5.0.0 --- .../libraries/hyperscan/default.nix | 69 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 71 insertions(+) create mode 100644 pkgs/development/libraries/hyperscan/default.nix diff --git a/pkgs/development/libraries/hyperscan/default.nix b/pkgs/development/libraries/hyperscan/default.nix new file mode 100644 index 00000000000..35966442da2 --- /dev/null +++ b/pkgs/development/libraries/hyperscan/default.nix @@ -0,0 +1,69 @@ +{ lib, stdenv, fetchFromGitHub, cmake, ragel, python27 +, boost +}: + +# NOTICE: pkgconfig, pcap and pcre intentionally omitted from build inputs +# pcap used only in examples, pkgconfig used only to check for pcre +# which is fixed 8.41 version requirement (nixpkgs have 8.42+, and +# I not see any reason (for now) to backport 8.41. + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "hyperscan"; + version = "5.0.0"; + + src = fetchFromGitHub { + owner = "intel"; + repo = "hyperscan"; + sha256 = "017dxg0n3gn9i4j27rcvpnp4rkqgycqni6x5d15dqpidl7zg7059"; + rev = "v${version}"; + }; + + outputs = [ "out" "dev" ]; + + buildInputs = [ boost ]; + nativeBuildInputs = [ cmake ragel python27 ]; + + cmakeFlags = [ + "-DFAT_RUNTIME=ON" + "-DBUILD_AVX512=ON" + "-DBUILD_STATIC_AND_SHARED=ON" + ]; + + prePatch = '' + sed -i '/examples/d' CMakeLists.txt + ''; + + postInstall = '' + mkdir -p $dev/lib + mv $out/lib/*.a $dev/lib/ + ln -sf $out/lib/libhs.so $dev/lib/ + ln -sf $out/lib/libhs_runtime.so $dev/lib/ + ''; + + postFixup = '' + sed -i "s,$out/include,$dev/include," $dev/lib/pkgconfig/libhs.pc + sed -i "s,$out/lib,$dev/lib," $dev/lib/pkgconfig/libhs.pc + ''; + + meta = { + description = "High-performance multiple regex matching library"; + longDescription = '' + Hyperscan is a high-performance multiple regex matching library. + It follows the regular expression syntax of the commonly-used + libpcre library, but is a standalone library with its own C API. + + Hyperscan uses hybrid automata techniques to allow simultaneous + matching of large numbers (up to tens of thousands) of regular + expressions and for the matching of regular expressions across + streams of data. + + Hyperscan is typically used in a DPI library stack. + ''; + + homepage = https://www.hyperscan.io/; + maintainers = with lib.maintainers; [ avnik ]; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; + license = lib.licenses.bsd3; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e52ed542982..a1635b5963c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10201,6 +10201,8 @@ with pkgs; hyena = callPackage ../development/libraries/hyena { mono = mono4; }; + hyperscan = callPackage ../development/libraries/hyperscan { }; + icu58 = callPackage (import ../development/libraries/icu/58.nix fetchurl) ({ nativeBuildRoot = buildPackages.icu58.override { buildRootOnly = true; }; } //