216 lines
4 KiB
Nix
216 lines
4 KiB
Nix
{
|
|
stdenv,
|
|
lib,
|
|
applyPatches,
|
|
fetchFromGitHub,
|
|
autoconf,
|
|
automake,
|
|
bison,
|
|
cmake,
|
|
libtool,
|
|
civetweb,
|
|
coreutils,
|
|
curl,
|
|
flex,
|
|
gnutls,
|
|
libconfig,
|
|
libdaemon,
|
|
libev,
|
|
libgcrypt,
|
|
libinjection,
|
|
libmicrohttpd,
|
|
libuuid,
|
|
lz4,
|
|
nlohmann_json,
|
|
openssl,
|
|
pcre,
|
|
perl,
|
|
python3,
|
|
prometheus-cpp,
|
|
zlib,
|
|
texinfo,
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "proxysql";
|
|
version = "2.6.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "sysown";
|
|
repo = "proxysql";
|
|
rev = finalAttrs.version;
|
|
hash = "sha256-vFPTBSp5DPNRuhtSD34ah2074almS+jiYxBE1L9Pz6g=";
|
|
};
|
|
|
|
patches = [
|
|
./makefiles.patch
|
|
./dont-phone-home.patch
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
autoconf
|
|
automake
|
|
cmake
|
|
libtool
|
|
perl
|
|
python3
|
|
texinfo # for makeinfo
|
|
];
|
|
|
|
buildInputs = [
|
|
bison
|
|
curl
|
|
flex
|
|
gnutls
|
|
libgcrypt
|
|
libuuid
|
|
zlib
|
|
];
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
GIT_VERSION = finalAttrs.version;
|
|
|
|
dontConfigure = true;
|
|
|
|
# replace and fix some vendored dependencies
|
|
preBuild = # sh
|
|
''
|
|
pushd deps
|
|
|
|
function replace_dep() {
|
|
local folder="$1"
|
|
local src="$2"
|
|
local symlink="$3"
|
|
local name="$4"
|
|
|
|
pushd "$folder"
|
|
|
|
rm -rf "$symlink"
|
|
if [ -d "$src" ]; then
|
|
cp -R "$src"/. "$symlink"
|
|
chmod -R u+w "$symlink"
|
|
else
|
|
tar xf "$src"
|
|
ln -s "$name" "$symlink"
|
|
fi
|
|
|
|
popd
|
|
}
|
|
|
|
${lib.concatMapStringsSep "\n"
|
|
(
|
|
x:
|
|
''replace_dep "${x.f}" "${x.p.src}" "${
|
|
x.p.pname or (builtins.parseDrvName x.p.name).name
|
|
}" "${x.p.name}"''
|
|
)
|
|
(
|
|
map
|
|
(x: {
|
|
inherit (x) f;
|
|
p = x.p // {
|
|
src = applyPatches {
|
|
inherit (x.p) src patches;
|
|
};
|
|
};
|
|
})
|
|
[
|
|
{
|
|
f = "curl";
|
|
p = curl;
|
|
}
|
|
{
|
|
f = "libconfig";
|
|
p = libconfig;
|
|
}
|
|
{
|
|
f = "libdaemon";
|
|
p = libdaemon;
|
|
}
|
|
{
|
|
f = "libev";
|
|
p = libev;
|
|
}
|
|
{
|
|
f = "libinjection";
|
|
p = libinjection;
|
|
}
|
|
{
|
|
f = "libmicrohttpd";
|
|
p = libmicrohttpd;
|
|
}
|
|
{
|
|
f = "libssl";
|
|
p = openssl;
|
|
}
|
|
{
|
|
f = "lz4";
|
|
p = lz4;
|
|
}
|
|
{
|
|
f = "pcre";
|
|
p = pcre;
|
|
}
|
|
{
|
|
f = "prometheus-cpp";
|
|
p = prometheus-cpp;
|
|
}
|
|
]
|
|
)
|
|
}
|
|
|
|
pushd libhttpserver
|
|
tar xf libhttpserver-*.tar.gz
|
|
sed -i s_/bin/pwd_${coreutils}/bin/pwd_g libhttpserver/configure.ac
|
|
popd
|
|
|
|
pushd json
|
|
rm json.hpp
|
|
ln -s ${nlohmann_json.src}/single_include/nlohmann/json.hpp .
|
|
popd
|
|
|
|
pushd prometheus-cpp/prometheus-cpp/3rdparty
|
|
replace_dep . "${civetweb.src}" civetweb
|
|
popd
|
|
|
|
sed -i s_/usr/bin/env_${coreutils}/bin/env_g libssl/openssl/config
|
|
|
|
pushd libmicrohttpd/libmicrohttpd
|
|
autoreconf
|
|
popd
|
|
|
|
pushd libconfig/libconfig
|
|
autoreconf
|
|
popd
|
|
|
|
pushd libdaemon/libdaemon
|
|
autoreconf
|
|
popd
|
|
|
|
pushd pcre/pcre
|
|
autoreconf
|
|
popd
|
|
|
|
popd
|
|
patchShebangs .
|
|
'';
|
|
|
|
preInstall = ''
|
|
mkdir -p $out/{etc,bin,lib/systemd/system}
|
|
'';
|
|
|
|
postInstall = ''
|
|
sed -i s_/usr/bin/proxysql_$out/bin/proxysql_ $out/lib/systemd/system/*.service
|
|
'';
|
|
|
|
meta = with lib; {
|
|
broken = stdenv.hostPlatform.isDarwin;
|
|
description = "High-performance MySQL proxy";
|
|
mainProgram = "proxysql";
|
|
homepage = "https://proxysql.com/";
|
|
license = with licenses; [ gpl3Only ];
|
|
maintainers = teams.helsinki-systems.members;
|
|
platforms = platforms.unix;
|
|
};
|
|
})
|