depot/third_party/nixpkgs/pkgs/by-name/pr/proxysql/package.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;
};
})