nixpkgs/pkgs/tools/networking/maxscale/default.nix
2021-04-04 03:18:56 +02:00

89 lines
2.5 KiB
Nix

{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, glibc
, bison, curl, flex, gperftools, jansson, jemalloc, libkrb5, lua, libmysqlclient
, ncurses, openssl, pcre, pcre2, perl, rabbitmq-c, sqlite, tcl
, libaio, libedit, libtool, libui, libuuid, zlib
}:
stdenv.mkDerivation rec {
pname = "maxscale";
version = "2.1.17";
src = fetchFromGitHub {
owner = "mariadb-corporation";
repo = "MaxScale";
rev = "${pname}-${version}";
sha256 = "161kc6aqqj3z509q4qwvsd86h06hlyzdask4gawn2ij0h3ca58q6";
};
nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [
bison curl flex gperftools jansson jemalloc libkrb5 lua libmysqlclient
ncurses openssl pcre pcre2 perl rabbitmq-c sqlite tcl
libaio libedit libtool libui libuuid zlib
];
patches = [ ./getopt.patch ];
preConfigure = ''
for i in `grep -l -R '#include <getopt.h>' .`; do
substituteInPlace $i --replace "#include <getopt.h>" "#include <${glibc.dev}/include/getopt.h>"
done
'';
cmakeFlags = [
"-DUSE_C99=YES"
"-DDEFAULT_ADMIN_USER=root"
"-DWITH_MAXSCALE_CNF=YES"
"-DSTATIC_EMBEDDED=YES"
"-DBUILD_RABBITMQ=YES"
"-DBUILD_BINLOG=YES"
"-DBUILD_CDC=NO"
"-DBUILD_MMMON=YES"
"-DBUILD_LUAFILTER=YES"
"-DLUA_LIBRARIES=${lua}/lib"
"-DLUA_INCLUDE_DIR=${lua}/include"
"-DGCOV=NO"
"-DWITH_SCRIPTS=OFF"
"-DBUILD_TESTS=NO"
"-DBUILD_TOOLS=NO"
"-DPROFILE=NO"
"-DWITH_TCMALLOC=YES"
"-DWITH_JEMALLOC=YES"
"-DINSTALL_EXPERIMENTAL=YES"
"-DTARGET_COMPONENT=all"
];
CFLAGS = "-std=gnu99";
enableParallelBuilding = false;
dontStrip = true;
postInstall = ''
find $out/bin -type f -perm -0100 | while read f1; do
patchelf \
--set-rpath "$(patchelf --print-rpath $f1):${libmysqlclient}/lib/mariadb:$out/lib/maxscale" \
--set-interpreter "$(cat ${stdenv.cc}/nix-support/dynamic-linker)" $f1 \
&& patchelf --shrink-rpath $f1
done
find $out/lib/maxscale -type f -perm -0100 | while read f2; do
patchelf \
--set-rpath "$(patchelf --print-rpath $f2)":$out/lib/maxscale $f2
done
mv $out/share/maxscale/create_grants $out/bin
rm -rf $out/{etc,var}
'';
meta = with lib; {
description = "MaxScale database proxy extends MariaDB Server's high availability";
homepage = "https://mariadb.com/products/technology/maxscale";
license = licenses.bsl11;
platforms = platforms.linux;
maintainers = with maintainers; [ izorkin ];
broken = true;
};
}