Unverified Commit 9aee7fa8 authored by K900's avatar K900 Committed by GitHub
Browse files

scx: split C and Rust versions, Rust 1.0.20 -> 1.1.0, C 1.0.20 -> unstable (#500648)

parents 5fe357cf 74351caf
Loading
Loading
Loading
Loading
+2 −25
Original line number Diff line number Diff line
@@ -37,31 +37,7 @@ in
    };

    scheduler = lib.mkOption {
      type = lib.types.enum [
        "scx_beerland"
        "scx_bpfland"
        "scx_chaos"
        "scx_cosmos"
        "scx_central"
        "scx_flash"
        "scx_flatcg"
        "scx_lavd"
        "scx_layered"
        "scx_mitosis"
        "scx_nest"
        "scx_p2dq"
        "scx_pair"
        "scx_prev"
        "scx_qmap"
        "scx_rlfifo"
        "scx_rustland"
        "scx_rusty"
        "scx_sdt"
        "scx_simple"
        "scx_tickless"
        "scx_userland"
        "scx_wd40"
      ];
      type = lib.types.enum cfg.package.schedulers;
      default = "scx_rustland";
      example = "scx_bpfland";
      description = ''
@@ -126,5 +102,6 @@ in

  meta = {
    inherit (pkgs.scx.full.meta) maintainers;
    buildDocsInSandbox = false;
  };
}
+41 −7
Original line number Diff line number Diff line
{
  fetchFromGitHub,
  llvmPackages,
  libbpf,
  pkg-config,
@@ -10,9 +11,16 @@
  libseccomp,
}:

llvmPackages.stdenv.mkDerivation {
llvmPackages.stdenv.mkDerivation (finalAttrs: {
  pname = "scx_cscheds";
  inherit (scx.rustscheds) version src;
  version = "0-unstable-2026-01-13";

  src = fetchFromGitHub {
    owner = "sched-ext";
    repo = "scx-c-examples";
    rev = "82c692afe32ed4e79fd047a93d3ff316bf399287";
    hash = "sha256-buXwId/4TwDfo/5mApMAEWHri92bW9x3jLEE5rawS3w=";
  };

  postPatch = ''
    substituteInPlace ./scheds/c/Makefile \
@@ -40,17 +48,43 @@ llvmPackages.stdenv.mkDerivation {
    "zerocallusedregs"
  ];

  doCheck = true;
  __structuredAttrs = true;
  EXPECTED_SCHEDULERS = finalAttrs.passthru.schedulers;

  doInstallCheck = true;
  installCheckPhase = ''
    runHook preInstallCheck

    cd $out/bin
    found=(scx_*)
    if [[ "''${found[@]}" != "''${EXPECTED_SCHEDULERS[@]}" ]]; then
      echo "List of available schedulers changed, expected: ''${EXPECTED_SCHEDULERS[@]}, found: ''${found[@]}"
      exit 1
    fi

    runHook postInstallCheck
  '';

  passthru = {
    inherit (scx.rustscheds.passthru) tests;
    schedulers = [
      "scx_central"
      "scx_flatcg"
      "scx_nest"
      "scx_pair"
      "scx_prev"
      "scx_qmap"
      "scx_simple"
      "scx_userland"
    ];
  };

  meta = scx.rustscheds.meta // {
    description = "Sched-ext C userspace schedulers";
    description = "Sched-ext C example schedulers";
    longDescription = ''
      This includes C based schedulers such as scx_central, scx_flatcg,
      scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland.
      This includes C based example schedulers such as scx_central, scx_flatcg,
      scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland. These are examples,
      and generally not recommended for end users.

      ::: {.note}
      Sched-ext schedulers are only available on kernels version 6.12 or later.
@@ -59,4 +93,4 @@ llvmPackages.stdenv.mkDerivation {
    '';
    homepage = "https://github.com/sched-ext/scx/tree/main/scheds/c";
  };
}
})
+12 −7
Original line number Diff line number Diff line
{
  lib,
  buildEnv,
  scx,
}:
scx.cscheds.overrideAttrs (oldAttrs: {
buildEnv {
  pname = "scx_full";
  postInstall = (oldAttrs.postInstall or "") + ''
    cp ${lib.getBin scx.rustscheds}/bin/* ${placeholder "out"}/bin/
  '';
  inherit (scx.rustscheds) version;

  paths = [
    scx.cscheds
    scx.rustscheds
  ];

  passthru.schedulers = scx.cscheds.schedulers ++ scx.rustscheds.schedulers;

  meta = oldAttrs.meta // {
  meta = {
    description = "Sched-ext C and Rust userspace schedulers";
    longDescription = ''
      This includes C based schedulers such as scx_central, scx_flatcg,
@@ -22,4 +27,4 @@ scx.cscheds.overrideAttrs (oldAttrs: {
    '';
    homepage = "https://github.com/sched-ext/scx";
  };
})
}
+46 −14
Original line number Diff line number Diff line
@@ -14,16 +14,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
  pname = "scx_rustscheds";
  version = "1.0.20";
  version = "1.1.0";

  src = fetchFromGitHub {
    owner = "sched-ext";
    repo = "scx";
    tag = "v${finalAttrs.version}";
    hash = "sha256-MUWbNsxmbCRCOWB2dHpi5dEY2rNRrINxJSyl5SNSO9Y=";
    hash = "sha256-kPOAiy2siIKZ6/zz43qPW7bp27T98MOhwmZMxpVpito=";
  };

  cargoHash = "sha256-H58wschck+l41fQh9W5SNVb5g9lAnw90SOSd/RtGXyw=";
  cargoHash = "sha256-nXiprz5ryGJeTy9nnKaLSKE0FSl17YE88xFt9bUTTL8=";

  nativeBuildInputs = [
    pkg-config
@@ -51,20 +51,52 @@ rustPlatform.buildRustPackage (finalAttrs: {
    "zerocallusedregs"
  ];

  doCheck = true;
  checkFlags = [
    "--skip=compat::tests::test_ksym_exists"
    "--skip=compat::tests::test_read_enum"
    "--skip=compat::tests::test_struct_has_field"
    "--skip=cpumask"
    "--skip=topology"
    "--skip=proc_data::tests::test_thread_operations"
    "--skip=json::tests::test_with_resources"
    "--skip=json::tests::test_with_dir"
  ];
  # most of the tests rely on system CPU topology info,
  # which is not available in the sandbox
  doCheck = false;

  # we don't need these
  postInstall = ''
    rm $out/bin/{scx_arena_selftests,vmlinux_docify,xtask}
  '';

  __structuredAttrs = true;
  EXPECTED_SCHEDULERS = finalAttrs.passthru.schedulers;

  doInstallCheck = true;
  installCheckPhase = ''
    runHook preInstallCheck

    cd $out/bin
    found=(scx_*)
    if [[ "''${found[@]}" != "''${EXPECTED_SCHEDULERS[@]}" ]]; then
      echo "List of available schedulers changed, expected: ''${EXPECTED_SCHEDULERS[@]}, found: ''${found[@]}"
      exit 1
    fi

    runHook postInstallCheck
  '';

  passthru.tests.basic = nixosTests.scx;
  passthru.updateScript = nix-update-script { };
  passthru.schedulers = [
    "scx_beerland"
    "scx_bpfland"
    "scx_cake"
    "scx_chaos"
    "scx_cosmos"
    "scx_flash"
    "scx_lavd"
    "scx_layered"
    "scx_mitosis"
    "scx_p2dq"
    "scx_pandemonium"
    "scx_rlfifo"
    "scx_rustland"
    "scx_rusty"
    "scx_tickless"
    "scx_wd40"
  ];

  meta = {
    description = "Sched-ext Rust userspace schedulers";