Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vectorscan: 5.4.10.1 -> 5.4.11 #303207

Merged
merged 2 commits into from
May 18, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 41 additions & 9 deletions pkgs/development/libraries/vectorscan/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,71 @@
, stdenv
, fetchFromGitHub
, cmake
, pkg-config
, ragel
, util-linux
, python3
, boost
, boost184
, sqlite
, pcre
, enableShared ? !stdenv.hostPlatform.isStatic
}:

stdenv.mkDerivation rec {
pname = "vectorscan";
version = "5.4.10.1";
version = "5.4.11";

src = fetchFromGitHub {
owner = "VectorCamp";
repo = "vectorscan";
rev = "vectorscan/${version}";
hash = "sha256-x6FefOrUvpN/A4GXTd+3SGZEAQL6pXt83ufxRIY3Q9k=";
hash = "sha256-wz2oIhau/vjnri3LOyPZSCFAWg694FTLVt7+SZYEsL4=";
};

nativeBuildInputs = [
cmake
pkg-config
ragel
python3
] ++ lib.optional stdenv.isLinux util-linux;

buildInputs = [
boost
boost184
sqlite
pcre
];

cmakeFlags = lib.optional enableShared "-DBUILD_STATIC_AND_SHARED=ON"
++ [ "-DFAT_RUNTIME=${if stdenv.hostPlatform.isLinux then "ON" else "OFF"}" ]
++ lib.optional stdenv.hostPlatform.avx2Support "-DBUILD_AVX2=ON"
++ lib.optional stdenv.hostPlatform.avx512Support "-DBUILD_AVX512=ON"
;
# FAT_RUNTIME bundles optimized implementations for different CPU extensions and uses CPUID to
# transparently select the fastest for the current hardware.
# This feature is only available on linux for x86, x86_64, and aarch64.
#
# If FAT_RUNTIME is not available, we fall back to building for a single extension based
# on stdenv.hostPlatform.
#
# For generic builds (e.g. x86_64) this can mean using an implementation not optimized for the
# potentially available more modern hardware extensions (e.g. x86_64 with AVX512).
cmakeFlags = [ (if enableShared then "-DBUILD_SHARED_LIBS=ON" else "BUILD_STATIC_LIBS=ON") ]
++
(if lib.elem stdenv.hostPlatform.system [ "x86_64-linux" "i686-linux" ] then
[ "-DBUILD_AVX2=ON" "-DBUILD_AVX512=ON" "-DBUILD_AVX512VBMI=ON" "-DFAT_RUNTIME=ON" ]
else
(if (stdenv.isLinux && stdenv.isAarch64) then
[ "-DBUILD_SVE=ON" "-DBUILD_SVE2=ON" "-DBUILD_SVE2_BITPERM=ON" "-DFAT_RUNTIME=ON" ]
else
[ "-DFAT_RUNTIME=OFF" ]
++ lib.optional stdenv.hostPlatform.avx2Support "-DBUILD_AVX2=ON"
++ lib.optional stdenv.hostPlatform.avx512Support "-DBUILD_AVX512=ON"
)
);

doCheck = true;
checkPhase = ''
runHook preCheck

./bin/unit-hyperscan

runHook postCheck
'';

meta = with lib; {
description = "A portable fork of the high-performance regular expression matching library";
Expand Down