![Jonathan Ringer](/assets/img/avatar_default.png)
continuation of #109595 pkgconfig was aliased in 2018, however, it remained in all-packages.nix due to its wide usage. This cleans up the remaining references to pkgs.pkgsconfig and moves the entry to aliases.nix. python3Packages.pkgconfig remained unchanged because it's the canonical name of the upstream package on pypi.
68 lines
2.3 KiB
Nix
68 lines
2.3 KiB
Nix
{ stdenv, fetchFromGitHub, cmake, ragel, python3
|
|
, coreutils, gnused, util-linux
|
|
, boost
|
|
, withStatic ? false # build only shared libs by default, build static+shared if true
|
|
}:
|
|
|
|
# NOTICE: pkg-config, pcap and pcre intentionally omitted from build inputs
|
|
# pcap used only in examples, pkg-config 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 {
|
|
pname = "hyperscan";
|
|
version = "5.3.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "intel";
|
|
repo = pname;
|
|
sha256 = "0psfkzmyhqfrs750b10d0xv37rcz6nwsw1mnc7zagijckwis2wvj";
|
|
rev = "v${version}";
|
|
};
|
|
|
|
outputs = [ "out" "dev" ];
|
|
|
|
buildInputs = [ boost ];
|
|
nativeBuildInputs = [
|
|
cmake ragel python3
|
|
# Consider simply using busybox for these
|
|
# Need at least: rev, sed, cut, nm
|
|
coreutils gnused util-linux
|
|
];
|
|
|
|
cmakeFlags = [
|
|
"-DFAT_RUNTIME=ON"
|
|
"-DBUILD_AVX512=ON"
|
|
]
|
|
++ stdenv.lib.optional (withStatic) "-DBUILD_STATIC_AND_SHARED=ON"
|
|
++ stdenv.lib.optional (!withStatic) "-DBUILD_SHARED_LIBS=ON";
|
|
|
|
postPatch = ''
|
|
sed -i '/examples/d' CMakeLists.txt
|
|
substituteInPlace libhs.pc.in \
|
|
--replace "libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@" "libdir=@CMAKE_INSTALL_LIBDIR@" \
|
|
--replace "includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@" "includedir=@CMAKE_INSTALL_INCLUDEDIR@"
|
|
'';
|
|
|
|
meta = with stdenv.lib; {
|
|
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 maintainers; [ avnik ];
|
|
platforms = [ "x86_64-linux" ]; # can't find nm on darwin ; might build on aarch64 but untested
|
|
license = licenses.bsd3;
|
|
};
|
|
}
|