ff1a94e523
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
79 lines
1.8 KiB
Nix
79 lines
1.8 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchFromGitHub
|
|
, clang
|
|
, bpftools
|
|
, docutils
|
|
, libbpf
|
|
, libcap
|
|
, libnl
|
|
, nixosTests
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "bpftune";
|
|
version = "unstable-2023-12-20";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "oracle";
|
|
repo = "bpftune";
|
|
rev = "0e6bca2e5880fcbaac6478c4042f5f9314e61463";
|
|
hash = "sha256-y9WQrQb9U5YdzKAR63FzC8V1+jZL027pzAmQPpgM3jM=";
|
|
};
|
|
|
|
postPatch = ''
|
|
# otherwise shrink rpath would drop $out/lib from rpath
|
|
substituteInPlace src/Makefile \
|
|
--replace /lib64 /lib \
|
|
--replace /sbin /bin \
|
|
--replace ldconfig true
|
|
substituteInPlace src/bpftune.service \
|
|
--replace /usr/sbin/bpftune "$out/bin/bpftune"
|
|
substituteInPlace include/bpftune/libbpftune.h \
|
|
--replace /usr/lib64/bpftune/ "$out/lib/bpftune/" \
|
|
--replace /usr/local/lib64/bpftune/ "$out/lib/bpftune/"
|
|
substituteInPlace src/libbpftune.c \
|
|
--replace /lib/modules /run/booted-system/kernel-modules/lib/modules
|
|
|
|
substituteInPlace src/Makefile sample_tuner/Makefile \
|
|
--replace 'BPF_INCLUDE := /usr/include' 'BPF_INCLUDE := ${lib.getDev libbpf}/include' \
|
|
'';
|
|
|
|
nativeBuildInputs = [
|
|
clang
|
|
bpftools
|
|
docutils # rst2man
|
|
];
|
|
|
|
buildInputs = [
|
|
libbpf
|
|
libcap
|
|
libnl
|
|
];
|
|
|
|
makeFlags = [
|
|
"prefix=${placeholder "out"}"
|
|
"confprefix=${placeholder "out"}/etc"
|
|
"BPFTUNE_VERSION=${version}"
|
|
"NL_INCLUDE=${lib.getDev libnl}/include/libnl3"
|
|
];
|
|
|
|
hardeningDisable = [
|
|
"stackprotector"
|
|
];
|
|
|
|
passthru.tests = {
|
|
inherit (nixosTests) bpftune;
|
|
};
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
meta = with lib; {
|
|
description = "BPF-based auto-tuning of Linux system parameters";
|
|
mainProgram = "bpftune";
|
|
homepage = "https://github.com/oracle-samples/bpftune";
|
|
license = licenses.gpl2Only;
|
|
maintainers = with maintainers; [ nickcao ];
|
|
};
|
|
}
|