Luke Granger-Brown
57725ef3ec
git-subtree-dir: third_party/nixpkgs git-subtree-split: 76612b17c0ce71689921ca12d9ffdc9c23ce40b2
79 lines
2.5 KiB
Nix
79 lines
2.5 KiB
Nix
{
|
|
lib,
|
|
callPackage,
|
|
pkg-config,
|
|
rustPlatform,
|
|
llvmPackages,
|
|
elfutils,
|
|
zlib,
|
|
fetchFromGitHub,
|
|
}:
|
|
let
|
|
versionInfo = lib.importJSON ./version.json;
|
|
|
|
# Useful function for packaging schedulers, should be used unless the build system is too complex
|
|
# passes some default values like src, version (all of which can be overridden)
|
|
mkScxScheduler =
|
|
packageType:
|
|
args@{ schedulerName, ... }:
|
|
(if packageType == "rust" then rustPlatform.buildRustPackage else llvmPackages.stdenv.mkDerivation)
|
|
(
|
|
args
|
|
// {
|
|
pname = "${schedulerName}";
|
|
version = args.version or versionInfo.scx.version;
|
|
|
|
src = args.src or fetchFromGitHub {
|
|
owner = "sched-ext";
|
|
repo = "scx";
|
|
rev = "refs/tags/v${versionInfo.scx.version}";
|
|
inherit (versionInfo.scx) hash;
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
llvmPackages.clang
|
|
] ++ (args.nativeBuildInputs or [ ]);
|
|
buildInputs = [
|
|
elfutils
|
|
zlib
|
|
] ++ (args.buildInputs or [ ]);
|
|
|
|
env.LIBCLANG_PATH = args.env.LIBCLANG_PATH or "${lib.getLib llvmPackages.libclang}/lib";
|
|
|
|
# Needs to be disabled in BPF builds
|
|
hardeningDisable = [
|
|
"zerocallusedregs"
|
|
] ++ (args.hardeningDisable or [ ]);
|
|
|
|
meta = (args.meta or { }) // {
|
|
description = args.meta.description or "";
|
|
longDescription =
|
|
(args.meta.longDescription or "")
|
|
+ ''
|
|
\n\nSched-ext schedulers are only available on supported kernels
|
|
(6.12 and above or any kernel with the scx patchset applied).'';
|
|
|
|
homepage = args.meta.homepage or "https://github.com/sched-ext/scx";
|
|
license = args.meta.license or lib.licenses.gpl2Only;
|
|
platforms = args.meta.platforms or lib.platforms.linux;
|
|
maintainers = (args.meta.maintainers or [ ]) ++ (with lib.maintainers; [ johnrtitor ]);
|
|
};
|
|
}
|
|
);
|
|
|
|
schedulers = lib.mergeAttrsList [
|
|
{ bpfland = import ./scx_bpfland; }
|
|
{ lavd = import ./scx_lavd; }
|
|
{ layered = import ./scx_layered; }
|
|
{ rlfifo = import ./scx_rlfifo; }
|
|
{ rustland = import ./scx_rustland; }
|
|
{ rusty = import ./scx_rusty; }
|
|
{ cscheds = import ./scx_cscheds.nix; }
|
|
{ full = import ./scx_full.nix; }
|
|
];
|
|
in
|
|
(lib.mapAttrs (name: scheduler: callPackage scheduler { inherit mkScxScheduler; }) schedulers)
|
|
// {
|
|
inherit mkScxScheduler;
|
|
}
|