From ff5eba906ae727d7b1d08190b5b8b124a53998e6 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Tue, 6 Nov 2018 15:18:54 +0200 Subject: [PATCH 1/7] rspamd: drop gmime dependency, it is not used anymore --- pkgs/servers/mail/rspamd/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/mail/rspamd/default.nix b/pkgs/servers/mail/rspamd/default.nix index b9dd07adde9..9cbe0a65414 100644 --- a/pkgs/servers/mail/rspamd/default.nix +++ b/pkgs/servers/mail/rspamd/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub, cmake, perl -, file, glib, gmime, libevent, luajit, openssl, pcre, pkgconfig, sqlite, ragel, icu, libfann }: +, file, glib, libevent, luajit, openssl, pcre, pkgconfig, sqlite, ragel, icu, libfann }: let libmagic = file; # libmagic provided by file package ATM in @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ cmake pkgconfig perl ]; - buildInputs = [ glib gmime libevent libmagic luajit openssl pcre sqlite ragel icu libfann ]; + buildInputs = [ glib libevent libmagic luajit openssl pcre sqlite ragel icu libfann ]; cmakeFlags = [ "-DDEBIAN_BUILD=ON" From 1b59c4a6cca61411773c254570635fb74105889d Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Tue, 6 Nov 2018 16:44:40 +0200 Subject: [PATCH 2/7] rspamd: Make libfann and libgd optional GD is experimental and never-enabled-by-default. --- pkgs/servers/mail/rspamd/default.nix | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkgs/servers/mail/rspamd/default.nix b/pkgs/servers/mail/rspamd/default.nix index 9cbe0a65414..41109289531 100644 --- a/pkgs/servers/mail/rspamd/default.nix +++ b/pkgs/servers/mail/rspamd/default.nix @@ -1,5 +1,9 @@ -{ stdenv, fetchFromGitHub, cmake, perl -, file, glib, libevent, luajit, openssl, pcre, pkgconfig, sqlite, ragel, icu, libfann }: +{ stdenv, lib, fetchFromGitHub, cmake, perl +, file, glib, libevent, luajit, openssl, pcre, pkgconfig, sqlite, ragel, icu +, libfann, gd +, withFann ? true +, withGd ? false +}: let libmagic = file; # libmagic provided by file package ATM in @@ -16,7 +20,9 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ cmake pkgconfig perl ]; - buildInputs = [ glib libevent libmagic luajit openssl pcre sqlite ragel icu libfann ]; + buildInputs = [ glib libevent libmagic luajit openssl pcre sqlite ragel icu ] + ++ lib.optional withFann libfann + ++ lib.optional withGd gd; cmakeFlags = [ "-DDEBIAN_BUILD=ON" @@ -24,7 +30,8 @@ stdenv.mkDerivation rec { "-DDBDIR=/var/lib/rspamd" "-DLOGDIR=/var/log/rspamd" "-DLOCAL_CONFDIR=/etc/rspamd" - ]; + ] ++ lib.optional withFann "-DENABLE_FANN=ON" + ++ lib.optional withGd "-DENABLE_GD=ON"; meta = with stdenv.lib; { homepage = https://github.com/vstakhov/rspamd; From e77fa3682470d1e4cd3e42db72749dbc5777ea21 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Tue, 6 Nov 2018 16:50:04 +0200 Subject: [PATCH 3/7] rspamd: build with jemalloc (by upstream author's suggestion) --- pkgs/servers/mail/rspamd/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/mail/rspamd/default.nix b/pkgs/servers/mail/rspamd/default.nix index 41109289531..b101167a94d 100644 --- a/pkgs/servers/mail/rspamd/default.nix +++ b/pkgs/servers/mail/rspamd/default.nix @@ -1,6 +1,6 @@ { stdenv, lib, fetchFromGitHub, cmake, perl , file, glib, libevent, luajit, openssl, pcre, pkgconfig, sqlite, ragel, icu -, libfann, gd +, libfann, gd, jemalloc , withFann ? true , withGd ? false }: @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ cmake pkgconfig perl ]; - buildInputs = [ glib libevent libmagic luajit openssl pcre sqlite ragel icu ] + buildInputs = [ glib libevent libmagic luajit openssl pcre sqlite ragel icu jemalloc ] ++ lib.optional withFann libfann ++ lib.optional withGd gd; @@ -30,6 +30,7 @@ stdenv.mkDerivation rec { "-DDBDIR=/var/lib/rspamd" "-DLOGDIR=/var/log/rspamd" "-DLOCAL_CONFDIR=/etc/rspamd" + "-DENABLE_JEMALLOC=ON" ] ++ lib.optional withFann "-DENABLE_FANN=ON" ++ lib.optional withGd "-DENABLE_GD=ON"; From 12a5b53ce27851b9807b3eb7772f324229c7bc88 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Thu, 8 Nov 2018 18:01:46 +0200 Subject: [PATCH 4/7] rspamd: enable openblas support for neural networks --- pkgs/servers/mail/rspamd/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/mail/rspamd/default.nix b/pkgs/servers/mail/rspamd/default.nix index b101167a94d..12777eb49f0 100644 --- a/pkgs/servers/mail/rspamd/default.nix +++ b/pkgs/servers/mail/rspamd/default.nix @@ -1,8 +1,9 @@ { stdenv, lib, fetchFromGitHub, cmake, perl , file, glib, libevent, luajit, openssl, pcre, pkgconfig, sqlite, ragel, icu -, libfann, gd, jemalloc +, libfann, gd, jemalloc, openblas , withFann ? true , withGd ? false +, withBlas ? true }: let libmagic = file; # libmagic provided by file package ATM @@ -22,7 +23,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake pkgconfig perl ]; buildInputs = [ glib libevent libmagic luajit openssl pcre sqlite ragel icu jemalloc ] ++ lib.optional withFann libfann - ++ lib.optional withGd gd; + ++ lib.optional withGd gd + ++ lib.optional withBlas openblas; cmakeFlags = [ "-DDEBIAN_BUILD=ON" From 3e1acb0b44fbad845d27cdce987474f5eb4be912 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Thu, 8 Nov 2018 18:00:15 +0200 Subject: [PATCH 5/7] 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; }; } // From b73b02255edde30d9c4f21c2afd05c27ad266074 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Thu, 8 Nov 2018 04:04:08 +0200 Subject: [PATCH 6/7] rspamd: enable hyperscan --- pkgs/servers/mail/rspamd/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/mail/rspamd/default.nix b/pkgs/servers/mail/rspamd/default.nix index 12777eb49f0..ae1dc431263 100644 --- a/pkgs/servers/mail/rspamd/default.nix +++ b/pkgs/servers/mail/rspamd/default.nix @@ -1,11 +1,14 @@ { stdenv, lib, fetchFromGitHub, cmake, perl , file, glib, libevent, luajit, openssl, pcre, pkgconfig, sqlite, ragel, icu -, libfann, gd, jemalloc, openblas +, hyperscan, libfann, gd, jemalloc, openblas , withFann ? true , withGd ? false , withBlas ? true +, withHyperscan ? stdenv.isx86_64 }: +assert withHyperscan -> stdenv.isx86_64; + let libmagic = file; # libmagic provided by file package ATM in @@ -24,6 +27,7 @@ stdenv.mkDerivation rec { buildInputs = [ glib libevent libmagic luajit openssl pcre sqlite ragel icu jemalloc ] ++ lib.optional withFann libfann ++ lib.optional withGd gd + ++ lib.optional withHyperscan hyperscan ++ lib.optional withBlas openblas; cmakeFlags = [ @@ -34,6 +38,7 @@ stdenv.mkDerivation rec { "-DLOCAL_CONFDIR=/etc/rspamd" "-DENABLE_JEMALLOC=ON" ] ++ lib.optional withFann "-DENABLE_FANN=ON" + ++ lib.optional withHyperscan "-DENABLE_HYPERSCAN=ON" ++ lib.optional withGd "-DENABLE_GD=ON"; meta = with stdenv.lib; { From 2fd6de33509cd67f4930538cc9a63e35cd29856f Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Sat, 24 Nov 2018 01:37:20 +0200 Subject: [PATCH 7/7] rspamd: 1.8.1 -> 1.8.2 Also update homepage link, and fetch from org's github, instead author's private fork. --- pkgs/servers/mail/rspamd/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/servers/mail/rspamd/default.nix b/pkgs/servers/mail/rspamd/default.nix index ae1dc431263..c5dfc4a90fd 100644 --- a/pkgs/servers/mail/rspamd/default.nix +++ b/pkgs/servers/mail/rspamd/default.nix @@ -14,13 +14,13 @@ in stdenv.mkDerivation rec { name = "rspamd-${version}"; - version = "1.8.1"; + version = "1.8.2"; src = fetchFromGitHub { - owner = "vstakhov"; + owner = "rspamd"; repo = "rspamd"; rev = version; - sha256 = "1cgnychv8yz7a6mjg3b12nzs4gl0xqg9agl7m6faihnh7gqx4xld"; + sha256 = "0al4d8h3ssxcx191d4crywz7dsp61lklc9m5z36a90a8w97v76bv"; }; nativeBuildInputs = [ cmake pkgconfig perl ]; @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { ++ lib.optional withGd "-DENABLE_GD=ON"; meta = with stdenv.lib; { - homepage = https://github.com/vstakhov/rspamd; + homepage = https://rspamd.com; license = licenses.asl20; description = "Advanced spam filtering system"; maintainers = with maintainers; [ avnik fpletz ];