Workaround build failure on -fno-common toolchains like upstream gcc-10. Otherwise build fails as: ld: CMakeFiles/prom.dir/src/prom_process_stat.c.o:(.bss+0x0): multiple definition of `prom_process_start_time_seconds'; CMakeFiles/prom.dir/src/prom_collector.c.o:(.bss+0x0): first defined here
79 lines
2.3 KiB
Nix
79 lines
2.3 KiB
Nix
{ lib, stdenv
|
|
, fetchFromGitHub
|
|
, fetchpatch
|
|
, cmake
|
|
, libmicrohttpd
|
|
}:
|
|
let
|
|
build =
|
|
{ pname
|
|
, subdir
|
|
, buildInputs ? [ ]
|
|
, description
|
|
}:
|
|
stdenv.mkDerivation rec {
|
|
inherit pname;
|
|
version = "0.1.1";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "digitalocean";
|
|
repo = "prometheus-client-c";
|
|
rev = "v${version}";
|
|
sha256 = "0g69s24xwrv5974acshrhnp6i8rpby8c6bhz15m3d8kpgjw3cm8f";
|
|
};
|
|
|
|
nativeBuildInputs = [ cmake ];
|
|
inherit buildInputs;
|
|
|
|
# These patches will be in 0.1.2
|
|
patches = [
|
|
# Required so CMAKE_INSTALL_PREFIX is honored, otherwise it
|
|
# installs headers in /usr/include (absolute)
|
|
(
|
|
fetchpatch {
|
|
url = "https://github.com/digitalocean/prometheus-client-c/commit/5fcedeb506b7d47dd7bab35797f2c3f23db6fe10.patch";
|
|
sha256 = "10hzg8v5jcgxz224kdq0nha9vs78wz098b0ys7gig2iwgrg018fy";
|
|
}
|
|
)
|
|
(
|
|
fetchpatch {
|
|
url = "https://github.com/digitalocean/prometheus-client-c/commit/0c15e7e45ad0c3726593591fdd7d8f2fde845fe3.patch";
|
|
sha256 = "06899v1xz3lpsdxww4p3q7pv8nrymnibncdc472056znr5fidlp0";
|
|
}
|
|
)
|
|
];
|
|
|
|
# Workaround build failure on -fno-common toolchains like upstream
|
|
# gcc-10. Otherwise build fails as:
|
|
# ld: CMakeFiles/prom.dir/src/prom_process_stat.c.o:(.bss+0x0): multiple definition of
|
|
# `prom_process_start_time_seconds'; CMakeFiles/prom.dir/src/prom_collector.c.o:(.bss+0x0): first defined here
|
|
# Should be fixed in 1.2.0 and later: https://github.com/digitalocean/prometheus-client-c/pull/25
|
|
NIX_CFLAGS_COMPILE = "-fcommon";
|
|
|
|
preConfigure = ''
|
|
cd ${subdir}
|
|
'';
|
|
|
|
meta = {
|
|
homepage = "https://github.com/digitalocean/prometheus-client-c/";
|
|
inherit description;
|
|
platforms = lib.platforms.unix;
|
|
license = lib.licenses.asl20;
|
|
maintainers = [ lib.maintainers.cfsmp3 ];
|
|
};
|
|
};
|
|
in
|
|
rec {
|
|
libprom = build {
|
|
pname = "libprom";
|
|
subdir = "prom";
|
|
description = "A Prometheus Client in C";
|
|
};
|
|
libpromhttp = build {
|
|
pname = "libpromhttp";
|
|
subdir = "promhttp";
|
|
buildInputs = [ libmicrohttpd libprom ];
|
|
description = "A Prometheus HTTP Endpoint in C";
|
|
};
|
|
}
|