%define _disable_source_fetch 0 %define _lto_cflags %{nil} %define libbpf_min_ver 1.4 %define llvm_min_ver 17 # Available profiles: “release”, “release-tiny”, “release-fast“ # See: https://github.com/sched-ext/scx/blob/main/Cargo.toml %global mode release Name: scx Version: 1.1.3 Release: 3 Summary: Sched_ext CPU schedulers License: GPL-2.0-only URL: https://github.com/sched-ext/scx Source0: %{URL}/archive/refs/tags/v%{version}.tar.gz # Hotfix PR#3755 for scx_cake. TODO: Remove on dot version bump. Patch0: %{URL}/commit/6624f0f178e233b2f733825e5e08549048ca3700.diff Patch1: %{URL}/commit/bdbf5eec541fdd48ed825d8e07cebdf5aad10e63.diff # Hotfix PR#3756 for scx_pandemonium. TODO: Remove on dot version bump. Patch2: %{URL}/commit/18dbe236217a907a4f165bb89e8f75a3fda9ab46.diff BuildRequires: bpftool >= 7.5.0 BuildRequires: clang >= %{llvm_min_ver} BuildRequires: jq BuildRequires: libbpf-devel >= %{libbpf_min_ver} BuildRequires: lld BuildRequires: llvm >= %{llvm_min_ver} BuildRequires: pkgconfig BuildRequires: rust+cargo >= 1.82 BuildRequires: zstd BuildRequires: pkgconfig(libbpf) >= %{libbpf_min_ver} BuildRequires: pkgconfig(libseccomp) BuildRequires: pkgconfig(protobuf) BuildRequires: pkgconfig(systemd) BuildRequires: openssl-devel Requires: scx-tools Conflicts: scx-git Conflicts: scx-dev-git %description sched_ext is a Linux kernel feature which enables implementing kernel thread schedulers in BPF and dynamically loading them. This package contains various scheduler implementations and support utilities. %prep %autosetup -n scx-%{version} -p1 %build export CARGO_HOME=%{_builddir}/.cargo cargo fetch --locked cargo build \ --profile=%{mode} \ --frozen \ --workspace \ --exclude scx_rlfifo \ --exclude xtask \ --exclude scx_characterize \ --exclude vmlinux_docify \ --exclude scx_arena_selftests %install # Install all built executables (skip .so and .d files) find target/%{mode} \ -maxdepth 1 -type f -executable ! -name '*.so' \ -exec install -Dm755 -t %{buildroot}%{_bindir} {} + %files # Binaries %{_bindir}/*